[ /b/ /u/ /rf/ /dt/ /vg/ /r/ /cr/ /lor/ /mu/ /oe/ /s/ /w/ /hr/ ] [ /a/ /ma/ /sw/ /hau/ /azu/ ] [ /tv/ /cp/ /gf/ /bo/ /di/ /vn/ /ve/ /wh/ /fur/ /to/ /bg/ /wn/ /slow/ /mad/ ] [ /d/ /news/ ] [ Главная | Настройки | Закладки | Плеер ]

 [ Скрыть форму ]
Имя
Не поднимать тред 
Тема
Сообщение
Капча Капча
Пароль
Файл
Вернуться к
  • Публикация сообщения означает согласие с условиями предоставления сервиса
  • В сообщениях можно использовать разметку wakabamark
  • На данной доске отображаются исходные имена файлов!
  • Разрешенные типы файлов: pdf, music, text, code, vector, image, archive, flash, video
  • Тред перестает подниматься после 500 сообщений.
  • Треды с числом ответов более 100 не могут быть удалены.
  • Старые треды перемещаются в архив после 40 страницы.

No.46835 Ответ [Открыть тред]
Файл: Cw02i0IUsAAdYJK.jpg
Jpg, 107.89 KB, 915×803 - Нажмите на картинку для увеличения
edit Find source with google Find source with iqdb
Cw02i0IUsAAdYJK.jpg
Хочу сделать такую тему:

1. Скачать весь твиттер или большую его часть.
2. Загнать всё это дело в Elasticsearch.
3. Прогнать это всё дело через классификаторы, анализаторы кейвордов, сентимента и т. д.
4. Предоставлять API для выборок любой сложности.

Зачем?

Например, я хочу выбрать твиты, в которых иностранцы, будучи в путешествии по России положительно отзываются о достопримечательностях СПБ и узнать, о каких конкретно достопримечательностях они пишут, а так же, какие категории достопримечательностей их интересуют. Вот для этого.

Кому?

Маркетологам, аналитикам, исследователям.

Хочу сделать такую тему:

1. Скачать весь твиттер или большую его часть.
2. Загнать всё это дело в Elasticsearch.
3. Прогнать это всё дело через классификаторы, анализаторы кейвордов, сентимента и т. д.
4. Предоставлять API для выборок любой сложности.

Зачем?

Например, я хочу выбрать твиты, в которых иностранцы, будучи в путешествии по России положительно отзываются о достопримечательностях СПБ и узнать, о каких конкретно достопримечательностях они пишут, а так же, какие категории достопримечательностей их интересуют. Вот для этого.

Кому?

Маркетологам, аналитикам, исследователям.

----

Так вот, как думаешь, имеет шансы взлететь? Есть ли аналогичные решения?
Сообщение слишком длинное. Полная версия.
>> No.46837 Ответ
>>46835
Обычный стриминг апи очень лимитирован. Есть вариант присосаться к сырому потоку, но он стоит очень дохуя, и чтобы его обработать в рилтайме надо тоже очень дохуя дури в железе. В общем, это для топовых корпораций вариант, а не для ололо-стартапа.
О скачивании всего твиттора речи вообще не идет, там какие-то сотни миллионов в день и никто тебе не даст в них копаться.
>> No.46841 Ответ
>>46837
Ну, в общем, посидели с пацанами и пришли к тому же мнению. А ещё это вроде как нарушает TOS, так что ну его в пень, даже если бы были (ну, чисто гипотетически) ресурсы.
>> No.49107 Ответ
>>46837
Можно just for fun использовать spark, он работает распределенно. Есть spark-streaming.
>> No.49131 Ответ
Оооо^H^H^H^H


No.37854 Ответ [Открыть тред]
Файл: aadhhaaeo.jpg
Jpg, 15.55 KB, 300×300 - Нажмите на картинку для увеличения
edit Find source with google Find source with iqdb
aadhhaaeo.jpg
Не нашел перлотреда.
Листал пиратбей и наткнулся на книжку "Beginning Perl". Стоит ли читать?
Спрашиваю, потому что давно уже ничего не кодил, с линукса перелез на шинду, многое уже подзабыл.
109 posts are omitted, из них 6 с файлами. Развернуть тред.
>> No.48959 Ответ
>>48957
Спасибо, теперь немного понятнее.

И тем не менее, а как запустить этих потоков сразу несколько? Когда я пишу async{ ... }, ничего не происходит же.

И примеры такой логики всё-таки хотелось бы. Там что-то сложнее какого-нибудь `cede if !$sem->try`?
>> No.48961 Ответ
>>48959
> И тем не менее, а как запустить этих потоков сразу несколько?
Никак, это кооперативная многозадачность, надо вручную передавать контекст.
> Когда я пишу async{ ... }, ничего не происходит же.
Становится в очередь.

Почитай документацию, штоле.
https://metacpan.org/pod/distribution/Coro/Coro/Intro.pod
https://metacpan.org/pod/Coro
>> No.48962 Ответ
>>48961
Я читал это всё, и про очередь, и про ручную передачу контекста, о чём уже и писал >>48954 здесь. Может, плохо написал, нет таланта, да.
Речь именно об одновременном запуске нескольких потоков и необходимости семафоров для этой цели (иначе наличие возможности установки им значения больше двух я объяснить не могу).

> Никак
Прям вот совсем никак? Может, придумали способ, пусть даже странноватый. Других либ для мультитрединга нет, их в перле всего две и вторая делает то же самое, только хуже, насколько мне известно.
Давай только без толстоты типа ./proga.pl &
>> No.48963 Ответ
>>48962
Всякие более-менее современные я не особо знаю, тащемта. Но как минимум искаробочный threads. https://perldoc.perl.org/perlthrtut.html
А что за задача у тебя?
>> No.48964 Ответ
>>48963
> Но как минимум искаробочный threads
Ну вот про него я и говорил — либо он, либо Коро. И под тредами в перле обычно понимается Коро, нативные же треды использовать не рекомендуют. Они умеют то, о чём я говорил выше?

> А что за задача у тебя?
Писать вайпилки и набигать на капчу в 9000 потоков, как у пистуха было!!1
Шутка.
Но в каждой шутке есть доля правды: суть того, что я хочу, чем-то похожа. Уточнять не буду пока, потому что пока сделано ничего. Впрочем, помощь мне ещё наверняка будет нужна, а перлотредов больше и нет нигде особо. На стаковерфлоу не хочу.

Знаю, что есть модуль Coro::LWP, где что-то похожее вроде как уже сделано, но мне не интересно LWP, я хочу именно libcurl и придётся писать свои велосипеды.
>> No.48967 Ответ
>>48964
> нативные же треды использовать не рекомендуют. Они умеют то, о чём я говорил выше?
Не рекомендуют по причине тяжеловесности. Умеют.

> но мне не интересно LWP, я хочу именно libcurl и придётся писать свои велосипеды.
А какая разница? Суть одна и та же.
Многопоточный хттп я делал на AnyEvent::HTTP, это неблокирующие реквесты + коллбеки, результат неплохой.
>> No.48970 Ответ
>>48967
> Суть одна и та же.
В смысле?
Не помню весь список полезных фичей кёрла, отсутствующих у LWP, но одну довольно важную называю сходу — он умеет в socks5 с проксированием днс. LWP этого не умеет, и если мне нужно будет, чтобы всё работало через тор и работало наверняка, придётся помещать это в обёрнутый в тор контейнер/vm и запускать оттуда.
Или ты о чём?

> AnyEvent
Совсем забыл про это, да.
Можешь сказать, что ещё ты использовал?

Про треды - спасибо, буду иметь в виду.
>> No.48971 Ответ
>>48970
> Или ты о чём?
О либах для хттп. Как-то не случалось найти отсутствие фич, хотя при модульности LWP туда всяко можно вклиниться и докостылять. Потом HTTP::Tiny добавили в core и можно вообще обойтись без жирного LWP, для большинства задач его достаточно.

> Можешь сказать, что ещё ты использовал?
В каком смысле ещё? В основном на перле делал всяких бэкендовые сервисы и автоматизации, потом помаленьку перекатился на ноду для такого, но как подручную тулзу ещё пользую.
>> No.49040 Ответ
Зачем сабам и переменным атрибуты? locked, method, lvalue.

> http://www.perltutorial.org/perl-subroutine/
> sub NAME PROTOTYPES ATTRIBUTES BLOCK
> The ATTRIBUTES gives subroutine additional semantics. Perl provides three standard attributes including locked, method and lvalue.
Больше ничего не нашёл.
>> No.49041 Ответ
>>49040
lvalue позволяет присваивать функции. Как тот же substr -
substr($str, 0, 10) = 123;
Не пользовался таким, так что хз, в чем может быть профит. Можно обойтись без временных переменных при всяких манипуляциях, наверное.

Остальные без понятия, какие-то забытые ооп-шные костыли скорее всего.


No.49030 Ответ [Открыть тред]
Привет, /s/. Есть у меня дачтик, который цепляется к компу последовательному порту через USB, в винде используется драйвер Prolific версии 3.2.0, который маскирует USB порт в COM порт. К датчику есть программа платная от производителя, которая общаетя с этим датчиком и позволяет его конфигурировать. Хочу не платить производителю и сделать свою программу хотя бы для считывания показаний датчика. Поставил себе программу, которая мониторит обмен данными с датчиком, т.е. я вижу все байты, которые пишутся в порт программой и которые возвращает датчик.
Попробовал на линуксе с помощью программы jpnevulator посылать в датчик те же самые байты, но ответа от датчика не получаю. Подскажи, /s/, как быть, куда копать?
>> No.49031 Ответ
>>49030
Снимаешь дамп мусора который там гонется.
Раз это RS232, значит контроль что там гонится - полностью на том кто разрабатывал протокол.
Значит, как минимум, можно попробовать полученный байтомусор разбить на отдельные пакеты (100% вначале каждого пакета есть или ID, или длина, или 0xC0).
После этого пытаться понять отличаются ли пакеты для одних и тех-же действий.
Если отличаются, то, есть не нулевая вероятность, что данные шифруются каким-нибудь AES/RSA. Тогда придется ковыряться в их программе и разбираться где достать ключи...
>> No.49033 Ответ
>>49031
Пока мне до этого далеко, т.к. затык на данном этапе в том, чтобы хотя бы послать в датчик те же самые первые байты, которые посылает программа производителя и получить ответ тот же самый. Я написал вот такой код чтобы проверить функциональность (файл exchange.c), обмен данными с портом через виндовскую программу представлен в файле exchange.csv (ссылки https://drive.google.com/drive/folders/0B-YxVplzBNLTRWRSV0lYMWN6UVU?usp=sharing) почему-то к посту не могу прикрепить. В файле exchange.c я пытаюсь записать 56 байт в порт, которые записывает виндовская программа и получить ответ от нее. Запись проходит нормально, а чтение нет - выдает ошибку 11. Скорее всего, что это из-за того, что неправильно настроена структура termios, я пытался также устанавливать поля, как это сделано в виндовской программе, но не помогло. /s/, может ты сможешь помочь мне?
>> No.49034 Ответ
>>49033
Попробуй сперва просто подключиться какой-нибудь терминальной программой и послать эти байты. Под виндой есть старый хрюшный гипертерминал, под линух не знаю. разве что собственный древний велосипед на кутях скомпилить
>> No.49036 Ответ
>>49034
пробовал на линухе с помощью jpnevulator - не вышло. Байты как будто посылаются, но на чтение ничего не приходит. Под виндой подключался с помощью "serial port monotor" для мониторинга обмена данными между устройством и программой производителя, по выводам программы "serial port monitor" и написал свой код, но он не работает


No.48984 Ответ [Открыть тред]
Файл: omega.png
Png, 7.18 KB, 400×400 - Нажмите на картинку для увеличения
edit Find source with google Find source with iqdb
omega.png
Привет. Это тред для пиара pfpmd: http://pfpmd7dd5ijt4add2sfi4djsaij4u3ebvnwvyvuj6aeipe2f5llptkid.onion/
pfpmd - это тесно сплетенные в одно целое анонимный чат и текстовые борды. Тематика: computer science, математика, программирование, технологии, криптоанархизм, софт и т.п.

pfpmd существует с 2015 года. Изначально он был попыткой воскресить один ресурс, который назывался лолкс, но теперь это в прошлом. Населен небольшим количеством людей и имеет низкую активность, что и хотелось бы изменить. Из-за того, что pfpmd это tor hidden service, периодически туда заходят люди ищущие цп, гуро и т.п., но, ничего не найдя, быстро уходят. pfpmd не модерируется, бан невозможен, как и цензура. Логотипом pfpmd является символ Ω, в честь Chaitin omega number https://en.wikipedia.org/wiki/Chaitin%27s_constant

Фичи pfpmd:
-Борды не фиксированы, в форме создания поста можно указать имя новой борды и она будет создана динамически в момент создания поста.
-Можно менять описание борды, это может делать любой пользователь сколько угодно раз;
-На странице с чатом по дефолту отображаются сообщение не только из чата, но и со всех борд. Это поведение можно изменить в настройках.
-На станице чана отображаются треды со всех борд (у нас это было еще до нульчана). Но можно отобразить только треды какой-то одной борды, просто перейдя по ссылке этой борды.
-Картинки отображатся с некоторых ресурсов, например, imgur, twitter. Также показываются превьюшки видео с youtube и некоторых имиджборд. Список будет пополняться в будущем.
Привет. Это тред для пиара pfpmd: http://pfpmd7dd5ijt4add2sfi4djsaij4u3ebvnwvyvuj6aeipe2f5llptkid.onion/
pfpmd - это тесно сплетенные в одно целое анонимный чат и текстовые борды. Тематика: computer science, математика, программирование, технологии, криптоанархизм, софт и т.п.

pfpmd существует с 2015 года. Изначально он был попыткой воскресить один ресурс, который назывался лолкс, но теперь это в прошлом. Населен небольшим количеством людей и имеет низкую активность, что и хотелось бы изменить. Из-за того, что pfpmd это tor hidden service, периодически туда заходят люди ищущие цп, гуро и т.п., но, ничего не найдя, быстро уходят. pfpmd не модерируется, бан невозможен, как и цензура. Логотипом pfpmd является символ Ω, в честь Chaitin omega number https://en.wikipedia.org/wiki/Chaitin%27s_constant

Фичи pfpmd:
-Борды не фиксированы, в форме создания поста можно указать имя новой борды и она будет создана динамически в момент создания поста.
-Можно менять описание борды, это может делать любой пользователь сколько угодно раз;
-На странице с чатом по дефолту отображаются сообщение не только из чата, но и со всех борд. Это поведение можно изменить в настройках.
-На станице чана отображаются треды со всех борд (у нас это было еще до нульчана). Но можно отобразить только треды какой-то одной борды, просто перейдя по ссылке этой борды.
-Картинки отображатся с некоторых ресурсов, например, imgur, twitter. Также показываются превьюшки видео с youtube и некоторых имиджборд. Список будет пополняться в будущем.
-Текстовое поле ввода чата поддерживает подобие командной строки. Есть команды для создания тредов, ответа в тред, изменения описания борды.
-Можно скрыть отображение всех сообщений с кириллицей.
-Поддерживается форматирование блоков кода. Подсветка синтаксиса реализована через highlight.js и выключена по дефолту, но ее можно влючить в настройках.
-Поддерживается форматирование математических формул через KaTeX. Но эта фича тоже выключена по дефолту.
-Есть страница с логами всех сообщений (включая борды) в обратном по дате порядке.

Основные принципы:
-Максимальное облегчение сервера, весь (кроме статического) html генерится на клиенте, сервер отправляет клиенту только сырые данные;
-Минимум зависимостей у клиентского кода. Всё, за исключение подсветки синтаксиса и математических формул, реализовано на голом javascript, без использования всяких jquery, vue.js и прочих фреймворков. Исходный код KaTeX и highlightjs подгружается только когда фичи включены в настройках.
-Отсутствие цензуры.

Планы развития:
-Децентрализация на уровне серверов. Будет множество инстансов pfpmd, которые синхронизируются между собой. Юзер сможет подключаться к любому из серверов, сможет поднять свой.
-Сделать клиентское приложение с консольным интерфейсом и веб интерфейсом. Чтобы юзер мог без запуска торбраузера заходить на pfpmd или вообще без гуйни, а также чтобы иметь свою локальную базу сообщений, по которой можно делать поиск и что угодно.
-Допилить дизайн.

Следующим постом будет FAQ. Но, в любом случае, я буду отвечать в тред.
Сообщение слишком длинное. Полная версия.
>> No.48985 Ответ
FAQ
> По ссылке пустая страница без сообщений. Ничего не работает?
Надо включить js для pfpmd в настройках noscript. Исходный код не обфусцирован.

> А что если вайпер все завайпает или даже уронит сервер?
Ничего страшного, есть бэкапы, переподнимем, если что.

> Я не могу терпеть спам. Почему бы не чистить говно?
1. У меня нет на это времени. 2. Понятие спама у каждого свое. 3. Будущее клиентское приложение должно будет поддерживать пользовательские фильтры, каждый сам себе будет модератор. 4. Это нарушает один из основных принципов.

> Есть ссылка в клирнете?
Нету, pfpmd доступен только через тор.

> Что означает pfpmd?
Ничего, это просто первые пять символом рандомного хостнейма, который сгенерил тор.
FAQ
> По ссылке пустая страница без сообщений. Ничего не работает?
Надо включить js для pfpmd в настройках noscript. Исходный код не обфусцирован.

> А что если вайпер все завайпает или даже уронит сервер?
Ничего страшного, есть бэкапы, переподнимем, если что.

> Я не могу терпеть спам. Почему бы не чистить говно?
1. У меня нет на это времени. 2. Понятие спама у каждого свое. 3. Будущее клиентское приложение должно будет поддерживать пользовательские фильтры, каждый сам себе будет модератор. 4. Это нарушает один из основных принципов.

> Есть ссылка в клирнете?
Нету, pfpmd доступен только через тор.

> Что означает pfpmd?
Ничего, это просто первые пять символом рандомного хостнейма, который сгенерил тор.

> Что за лолкс?
https://lurkmore.to/%D0%9B%D0%BE%D0%BB%D0%BA%D1%81
Сообщение слишком длинное. Полная версия.
>> No.48986 Ответ
Файл: 1464748799129979470_1.gif
Gif, 8812.08 KB, 291×291 - Нажмите на картинку для увеличения
edit Find source with google Find source with iqdb
1464748799129979470_1.gif
> pfpmd - это тесно сплетенные в одно целое анонимный чат и текстовые борды
> У меня нет на это времени
>> No.48988 Ответ
>>48986
Есть логи и тред со всеми сообщениями из чата. Можно раз в день на все ответить и дальше заниматься своими делами, например.
>> No.49023 Ответ
Оп, тематика заинтересовала, но я нихуя не понял. Есть гайд для самых маленьких? Захожу, вижу бессмысленный чат,вижу кучу по-видимому зашифрованной херни в разделе Chan. Как всем этим пользоваться?
>> No.49024 Ответ
>>49023
> Есть гайд для самых маленьких?
В chat - собственно чат. Если перейти в chan, то там будут треды со всех разделов с тремя последними ответами. У каждого треда там есть ссылка в борду, если по ней перейти, то отобразятся только треды этой борды. Ну, короче, очевидно же.
В чате отображаются сообщения со всех разделов. Когда тред не из чата, справа будет, например, /pr/123/ на зеленом фоне, т.е. имя борды и номер треда этого сообщения. Также это ссылки в эту борду и тред соответственно. Алсо, можно применить фильтр для скрытия сообщений не из чата.
У чата есть своя борда, которая называется /cht/ и в ней единственный тред, где отображаются сообщения всего чата (только чата).
Есть еще логи вообще всех сообщений, которые отображаются в обратном порядке, по 200 сообщений на страницу. Там тоже можно применить фильтр и оставить только сообщения чата.
Также есть фильтр кириллицы и много других фич, смотри ОП. И будет еще больше фильтров в будущем.
> Захожу, вижу бессмысленный чат
Побочный эффект отсутствия модерации и цензуры.
> вижу кучу по-видимому зашифрованной херни в разделе Chan
Это недавний вайп, мусор из /dev/random.
> Как всем этим пользоваться?
Просто пишешь, что тебя интересует на обозначенную тематику. В борды, в чат, куда угодно.


No.28005 Ответ [Открыть тред]
Файл: git.jpg
Jpg, 80.27 KB, 750×600 - Нажмите на картинку для увеличения
edit Find source with google Find source with iqdb
git.jpg
Собственно вопрос про гит например.

Есть некоторая удаленная репа, до которой имеем ssh-доступ. Когда я пушаю в нее с локальной, то запускается скрипт .git/hooks/post-receive, в котором там что-нибудь делается с проектом (чистится кэш, компилируются шаблоны, запускаются миграции и прочая херота).
#!/bin/sh
GIT_WORK_TREE=.. git checkout -f
echo "Something pushed to server. Yay!"
../scripts/update.sh
# например
Возможно ли запускать на удаленном сервере этот мой update.sh не один раз на пуш, а на каждый коммит (даже на те коммиты, которые во вмерженых в основную ветку бранчах)?
64 posts are omitted, из них 10 с файлами. Развернуть тред.
>> No.47844 Ответ
>>47843
Я пользовался и гитом и ртутью, они плюс-минус одинаковы по функционалу. Божественности в ртути не увидел.
>> No.47845 Ответ
>>47844
Говорят, она быстрее. Какой по величине репа была на ртути? Маленькая или большая?
>> No.47847 Ответ
>>47845
Небольшая репа на ртути. Около сотни коммитов, емнип. С огромными репами под гиг размером приходилось работать, не сказать что прями пиздос медленно становится.
>> No.47848 Ответ
Можно ли сделать так, чтобы git не запоминал логин и пароль на github. Сбрасываю на работе всякие маленькие фрагменты кода на свой гитхаб, не хотелось бы светить там свои данные.
Обычно все наоборот хотят эту фичу. Почитал вот здесь:
https://git-scm.com/docs/gitcredentials
https://git-scm.com/docs/git-credential-store
http://support.beanstalkapp.com/article/856-how-do-i-make-git-remember-my-credentials
Включить просто, да и по умолчанию она включена, а вот как отключить - не понятно.
>> No.47849 Ответ
>>47848
Есть два способа склонировать репу: по протоколу https или по git.
В первом случае в файле .git/config в разделе [remote "origin"] будет строка вида url = https://github.com/юзернаме/репонаме и доступ на запись к этой репе будет по логину и паролю, которые будут всегда спрашиваться.
Во втором случае будет url = git@github.com:юзернаме/репонаме.git и для доступа нужно будет залить в настройках гитхаб-акка публичную часть rsa-ключа, пароль спрашиваться не будет.

Так что сделай до этого своего проекта доступ по https, а для всех остальных по git.
>> No.48011 Ответ
Кто-нибудь юзал CVSNT? Расскажите о разграничении прав доступа в папке репозитория или киньте ссылкой по администрированию.
>> No.48025 Ответ
>>48011
http://circe.univ-fcomte.fr/Docs/CVS/cvs.html — кинул.
> note that users must have write access to the CVSROOT/val-tags file
Если этого не сделать, клиент просто подвиснет.
>> No.48075 Ответ
fossil отличнейшая vcs.
>> No.48968 Ответ
Файл: New-Mind-Map.jpg
Jpg, 64.98 KB, 1434×710 - Нажмите на картинку для увеличения
edit Find source with google Find source with iqdb
New-Mind-Map.jpg
Здравствуй, медленно/s/.
Использую в проекте alembic для миграций. Само собой решил добавить миграции в проект, но не все.
Хочу чтобы в dev ветке были все миграции базы, со всеми экспериментами и промежуточными вариантами, а в master ветке были только миграции, необходимые для переката с прошлого релиза, а миграции dev ветки туда не попадали.
Как это можно сделать правильнее?

Капча пытается что-то подсказать: момента настала версий сдвинулась
>> No.48969 Ответ
>>48968
> добавить миграции в git
fix


No.48777 Ответ [Открыть тред]
Файл: Leezonka.jpg
Jpg, 593.57 KB, 1920×1080 - Нажмите на картинку для увеличения
edit Find source with google Find source with iqdb
Leezonka.jpg
Кое-как выучил Python по книге Мэтиза и разобрался с ООП по статьям из сети. Недавно начал читать книгу по алгоритмам и параллельно почитывать "C++. Базовый курс". Так же пытаюсь разобраться с Lua и фреймворком LÖVE2D, получается пока что не очень, скорее всего придётся читать книгу по Lua, чтобы лучше вникнуть.
Но знаете что? Я не написал ещё ни одной программы, ни одной. Я писал различные формулы и недокалькуляторы в консоли, заливал фон синим цветом в LÖVE и всё.
Я не понимаю что делать дальше. Продолжать читать книги по языкам, алгоритмам и CS или же идти что-то писать? Помогите, аноны.
24 posts are omitted, из них 5 с файлами. Развернуть тред.
>> No.48946 Ответ
>>48944
У меня мозг от любой тех.литературы кипит. Мне проще сразу погружаться по книгам, которые описывают C++11, стандартную библиотеку и основы ООП.

>>48945
Чтобы работать за 300 долларов в месяц и говорить какие веб-девы тупые, очевидно ведь.
>> No.48947 Ответ
>>48946
> и основы ООП
коза.ебись(онегин);
>> No.48948 Ответ
>>48947
А в скобках что такое? Это мы записываем метод ебись класса коза, а аргумент просто так? Пытаюсь в нём найти какое-то скрытое послание.
А вообще, под основами я имел ввиду именнно синтаксис для определённого языка, а то в этом вашем пистоне я до сих пор в стане от этого ООП-синтаксиса, благо разобрался быстро, хоть и болезненно. По ООП, полагаю, лучше книги почитать, которые заточены именно под эту тему и не берут какой-то язык в качестве среды для показа этого объектного говна. Скорее всего я неправ, так как хуй с горы.
>> No.48949 Ответ
Файл: 15055769674640.jpg
Jpg, 54.64 KB, 604×454 - Нажмите на картинку для увеличения
edit Find source with google Find source with iqdb
15055769674640.jpg
>>48948
Долбоёб? Нахуя читать книги про ООП, если ООП - простейшая парадигма. Попробуй применить объекты реального мира и сразу всё станет понятно. какой объект, какие свойства есть у объекта, что может делать объект.
>> No.48950 Ответ
>>48948
Автор комментария хотел сказать, что коза ебет онегина.
>> No.48951 Ответ
Файл: IMG_20180130_164334.jpg
Jpg, 85.69 KB, 447×526 - Нажмите на картинку для увеличения
edit Find source with google Find source with iqdb
IMG_20180130_164334.jpg
>>48950
Нет девочка. Онегин меняет внутреннее состояние козы.
>> No.48952 Ответ
>>48951
Нет ты.

Из названия функции это не понятно.
Стоит переименовать в
коза.сношается_бай(онегин);
В случае с
коза.ебись(онегин);
более очевидно, что коза ебет онегина.

Не прошел ревью твой код

Ну или надо было объявление класса козы выкатывать, из него бы было понятно, что онегин - константный, а метод - нет.
>> No.48953 Ответ
>>48949
И чего мне с этого? На примерах из реального мира всё действительно просто, а в этом вашем коде эту ебатню нужно реализовать, ещё и грамотно реализовать. Иначе если оно не будет эффективно в моей программе, то зачем мне вообще её применять? Я в связи с этим и не сую ООП в свои недопроекты, потому что он там нахуй не нужен, а писать с ООП ради ООП это говно какое-то. Как только перейду черту, когда буду писать на 1000+ строк, тогда буду применять ООП. Ну или когда наконец начну хоть что-то писать на плюсах, но пока что я их только учить пытаюсь.
>> No.48958 Ответ
>>48953
> а писать с ООП ради ООП это говно какое-то
Как раз таки так и нужно делать. Ты можешь написать один и тот же функционал разными подходами. Можешь подсовывать аргументом функцию обработчик, а можешь подсовывать объект который умеет обрабатывать
>> No.48960 Ответ
>>48953
> писать с ООП ради ООП это говно какое-то
Нет. Так и стоит делать. Ты можешь реализовать какой либо функционал подсовывая функцию обработки или подсовывая объект который умеет обрабатывать. ООП - это один из подходов к решению задачи, а не инструмент решения каких-то конкретных задач


No.48895 Ответ [Открыть тред]
Делимся годными гайдами, либами, примерами etc.
Вот например либа, которая очень помогает в работе с реалмом: https://github.com/vicpinm/Kotlin-Realm-Extensions

Также сейчас постигаю dependency injection. Кое-как освоил надеюсь Dagger 2, но в интернетах уже есть инструменты поинтереснее - Kodein (инфы мало) и KOIN (ещё меньше). Собсно стоит пытаться на них перелезать с Dagger'a?
>> No.48896 Ответ
Зачем ты так спойлеры используешь?


No.36714 Ответ [Открыть тред]
Файл: 20z_ZW7lnTw.jpg
Jpg, 47.63 KB, 820×325 - Нажмите на картинку для увеличения
edit Find source with google Find source with iqdb
20z_ZW7lnTw.jpg
У нас есть Vim-тред, пусть будет и Emacs.
176 posts are omitted, из них 26 с файлами. Развернуть тред.
>> No.47220 Ответ
>>47216
Нет, это совсем не то.
>> No.47221 Ответ
>>47215
Я думал тут за пол часа набросать тебе решение, но понял что задача нетривиальная ввиду того, что путешествуя по истории регионов (выделений) ты будешь создавать новые выделения. В любом случае, публикую свои наработки:
http://pastebin.com/W321qZwe
>> No.47318 Ответ
Файл: -.png
Png, 3.51 KB, 235×49
edit Find source with google Find source with iqdb
-.png
Файл: -.png
Png, 9.83 KB, 900×92
edit Find source with google Find source with iqdb
-.png

Есть одна проблема. Использую емаксклиент, так вот если им попытаться открыть файл который нельзя читать, то вместо ошибки, происходит пик 1, дальше я жму ^C и терминал ломается до перезапуска, перестает отображаться вводимый текст и перевод каретки, весь вывод отображается в одну строку, можно ли это исправить?
>> No.47468 Ответ
>>47318
У меня выводится сообщение об ошибке в таком случае. Какая версия emacs, открываются ли файлы которые можно читать?
>> No.47469 Ответ
>>47468
Читаемые файлы открываются. Если emacsclient -c, то ошибка выводится, а если emacsclient -t, то ломается терминал.
Версия 24.5.1
>> No.47470 Ответ
>> No.48089 Ответ
Файл: magit-400x400px.png
Png, 10.03 KB, 400×400 - Нажмите на картинку для увеличения
edit Find source with google Find source with iqdb
magit-400x400px.png
Подайте автору магита, кто сколько может.
https://www.kickstarter.com/projects/1681258897/its-magit-the-magical-git-client
>> No.48855 Ответ
Не осталось ли у кого книги Д.Бушенко по elisp? В гугле нихрена нет...
>> No.48885 Ответ
>> No.48893 Ответ
>>48885
Спасибо.


No.31137 Ответ [Открыть тред]
Файл: 07_009.jpg
Jpg, 62.06 KB, 1024×573 - Нажмите на картинку для увеличения
edit Find source with google Find source with iqdb
07_009.jpg
В рамках треда предлагаю обсуждать веб как он есть, задавать ответы по темам верстки и серверново программирования, да и просто обсуждать всякие рющечки веба и пить чаек с печеньками.

>>u/62144 Собсно кафедра в университете. Полезные ссылочки >>u/91168 >>u/91394

Алсо PHP-тред >>23225 SQL-тред >>29820 Python-тред >>28158

Тред создан во имя поисковой оптимизации.
280 posts are omitted, из них 48 с файлами. Развернуть тред.
>> No.48505 Ответ
>>48504
Это техническая литература, а не художественная, она намного проще.
>> No.48506 Ответ
Файл: 1420693858-79f71fb0c0155621db3674c0338b08e1.jpg
Jpg, 161.77 KB, 850×637 - Нажмите на картинку для увеличения
edit Find source with google Find source with iqdb
1420693858-79f71fb0c0155621db3674c0338b08e1.jpg
>>48505
Я, конечно, попробую, но реквест русскоязычных источников оставлю в силе.
>> No.48526 Ответ
>>48501
А насколько он вообще нужен и распространён?
>> No.48527 Ответ
>>48526
Весьма удобен, когда надо накидать аккуратную вебморду, а ты не понимаешь в этих всех цссах и верстках.
>> No.48528 Ответ
>>48527
А как мне самому прикинуть уровень своих знаний и умений? И заодно узнать как выглядит вёрстка со стороны разработчика.
>> No.48560 Ответ
Насколько я понял, есть два пути: путь ложной простотыphp+sql и путь явной сложностиhtml+css+javascript +php+sql || +python+sql. Ох уж эта веб-разработка, я-то думал, что за год на базовом уровне всё освою.
>> No.48564 Ответ
>>48560
Всегда начинали изучение с простого. Возьми книгу «JavaScript for Kids», потом «Understanding ECMAScript 6» и с них начинай.
>> No.48568 Ответ
>>48564
> «JavaScript for Kids»
Слишком сложно, пробую пока http://jsforcats.com/
>> No.48682 Ответ
Анон, выручай.
Сбацал, значится, на коленке сайт, чтобы текст выводить, поднял на Апаче, да столкнулся с проблемой - жабаскрипт не работает!
Конкретно: через PHP реализована "сборка" веб-страницы (из шаблонов, плюс параметры), с помощью которой я добавил тэг <script> и вызвал функцию из файла. Сам файл лежит в папке scripts, которая в корне.
В консоль выводит следующее:
`Uncaught SyntaxError: Unexpected token <`
Причём эта ошибка перенаправляет почему-то на вообще левый файл.
А вот это:
`Uncaught ReferenceError: getWork is not defined`
говорит о том, что функцию оно почему-то вообще не воспринимает как уже объявленную.
ЧЯДНТ? И как вообще правильно встраивать через пыху жабаскрипт?
>> No.48811 Ответ
Файл: 79-Slowpoke.png
Png, 95.98 KB, 800×647 - Нажмите на картинку для увеличения
edit Find source with google Find source with iqdb
79-Slowpoke.png
>>48682
Просто руками перепиши места, на которые ругается консоль. Мне обычно помогает, если я сразу не вижу ошибку.


No.48457 Ответ [Открыть тред]
Файл: 1-soPiTsrgWsHZO2Z...
Png, 1468.07 KB, 2000×958
edit Find source with google Find source with iqdb
1-soPiTsrgWsHZO2ZHCQA_IA.png
Файл: vdfs.png
Png, 37.74 KB, 1207×826
edit Find source with google Find source with iqdb
vdfs.png
Файл: rustacean-error.png
Png, 37.41 KB, 573×300
edit Find source with google Find source with iqdb
rustacean-error.png

Зачем нужен? Во имя закапывания няшного и крестов. По крайней мере там, где можно избежать легаси и хочется писать как белый человек. Embedded пока с парой костылей вроде xargo, операционки, браузеры, всякий тяжелый код. Язык, где ты можешь отстрелить себе конечности, но ружья выдают только по карточкам. Компилятор в основном занимается твоим унижением.

Что тут есть? Рак вместо маскота. Самая новая концепция: управление временем жизни без сборки мусора. Всякие рюшечки вроде паттернматчинга, вывода типов, наконец-то нормальной реализации строк, гарантии безопасности, элементы функциональщины без потери производительности и всё остальное в таком духе.

Чего нет или ещё нет? Типов высшего порядка, константных генериков, alloca и ещё парочки похожих штук. Но работы ведутся. Ещё нет библиотек на все случаи жизни. За те несколько лет существования не успели. 1.5 вакансии уже есть, но их только 1.5. Использование нестабильной версии всё ещё актуально.

Оффициальный сайт: https://www.rust-lang.org/
Мануал: https://doc.rust-lang.org/book/second-edition/
Пакеты: https://crates.io/
18 posts are omitted, из них 3 с файлами. Развернуть тред.
>> No.48695 Ответ
Файл: King_sombra-s_eyes_at_the_top_of_the_shadow_S3E1.png
Png, 470.40 KB, 1280×720 - Нажмите на картинку для увеличения
edit Find source with google Find source with iqdb
King_sombra-s_eyes_at_the_top_of_the_shadow_S3E1.png
>>48694
> попробуй сначала доучить язык
у меня ограничено время на эту ересь
> Глава "Время жизни" и глава "Изменяемость (mutability)"
займемся
> Форматируй код нормально
это моя извечная проблема, ее решить мне так и не удается, но если не понятно, то есть двумерный список структур, у структуры есть функция, которая анализирует элименты вокруг него и если понадобится передвигает себя в один из этих элиментов. вообщем я думаю ты уже запутаешься на этом моменте, поэтому буду страдать.
> Heresy::lock()
это действительно ересь. надо было Obj::lock()
> Так ещё хуже, чем скриншотами
вот это обидно, я старался, хотя понимаю. лучше свич сделал, но все делалось на коленках и мозги были в отпустке
> И глобальные функции/переменные не используй. СОВСЕМ не используй
кстати на заметку. у меня такие есть и их даже 3...
>> No.48705 Ответ
Файл: Sombra_mouth_wide...
Png, 56.89 KB, 300×169
edit Find source with google Find source with iqdb
Sombra_mouth_wide_open_S3E2.png
Файл: helpneed.png
Png, 9.06 KB, 467×443
edit Find source with google Find source with iqdb
helpneed.png

я конечно туплю, но не знаю что делать. не подключается
>> No.48706 Ответ
Файл: 342-12.02.13-sombra_by_sajira-d5ko3xr.png
Png, 103.50 KB, 322×531 - Нажмите на картинку для увеличения
edit Find source with google Find source with iqdb
342-12.02.13-sombra_by_sajira-d5ko3xr.png
>>48705
проблема решена
>> No.48716 Ответ
Файл: sombra1.jpg
Jpg, 48.90 KB, 1280×720 - Нажмите на картинку для увеличения
edit Find source with google Find source with iqdb
sombra1.jpg
ну что, новая проблема. программа запускается, работает, но в определенный момент виснет. без ошибок и всякого такого. мне хотелось бы узнать. почему? как удалось выяснить?

если кто захочет по мучаться, то опишу константы. HEIGHT,WIDTH- высота и ширина соответственно, N= колличество ячеек по ширине и высоте, должно быть равно константе в inf, RANDEA- шанс появления еды, RENDMUда-да, знаю что неправильно, исправлять лень,- шанс мутаций. Vtp- схема отображения 0- пищевая, 1- защитная, 2- энергетическая. с остольным разбобраться можно, благо я даже названя нормальные давал а если не удастся то не судьба

extern crate sdl2;
extern crate rand;
//use sdl2::pixels::PixelFormatEnum;
use sdl2::event::Event;
use sdl2::keyboard::Keycode;
use sdl2::pixels::Color;
use sdl2::gfx::primitives::DrawRenderer;
use sdl2::render::Canvas;
use sdl2::video::Window;
use std::f64;
//use std::mem;
ну что, новая проблема. программа запускается, работает, но в определенный момент виснет. без ошибок и всякого такого. мне хотелось бы узнать. почему? как удалось выяснить?

если кто захочет по мучаться, то опишу константы. HEIGHT,WIDTH- высота и ширина соответственно, N= колличество ячеек по ширине и высоте, должно быть равно константе в inf, RANDEA- шанс появления еды, RENDMUда-да, знаю что неправильно, исправлять лень,- шанс мутаций. Vtp- схема отображения 0- пищевая, 1- защитная, 2- энергетическая. с остольным разбобраться можно, благо я даже названя нормальные давал а если не удастся то не судьба

extern crate sdl2;
extern crate rand;
//use sdl2::pixels::PixelFormatEnum;
use sdl2::event::Event;
use sdl2::keyboard::Keycode;
use sdl2::pixels::Color;
use sdl2::gfx::primitives::DrawRenderer;
use sdl2::render::Canvas;
use sdl2::video::Window;
use std::f64;
//use std::mem;
//use std::ptr;
use rand::{Rng,thread_rng};
use std::time::Duration;
const Vtp:i16 = 2;
static HEIGHT:u32 = 600;
static WIDTH:u32 = 800;
const N:u32 = 40;
const RANDEA:u32 = 1;
pub fn main() {
let context = sdl2::init().unwrap();
let video = context.video().unwrap();
let mut rng = rand::thread_rng();
let window = video.window("rust-sdl2 demo: Video", WIDTH, HEIGHT)
.position_centered()
.opengl()
.build()
.unwrap();
let mut canvas = window.into_canvas().build().unwrap();
let tc = canvas.texture_creator();
let mut tex = tc.createtexturestatic(tc.defaultpixelformat(), 150,
150).unwrap();
canvas.clear();
canvas.setdrawcolor(Color::RGB(255, 210, 0));
let mut a:[[inf::Obj;N as usize];N as usize] =
unsafe{std::mem::uninitialized()};
for i in a.iter_mut(){
for j in i.iter_mut(){
unsafe{::std::ptr::write(j,inf::Obj::newNu())}
}
}
a[10][10]=inf::Obj::newPl(100,0,0);
let mut eventpump = context.eventpump().unwrap();
let mut run = true;
while run {
for event in eventpump.polliter() {
match event {
Event::Quit {..} | Event::KeyDown { keycode:
Some(Keycode::Escape), .. } => {
run = false;
},
_ => {}
}
}
for i in a.iter_mut(){
for j in i.iter_mut(){
if j.otp() == 2 {
*j= j.mkcour();
} else if (j.otp() == 0) &(rng.gen_range(0,100) < RANDEA) {*j =
inf::Obj::newEa();}
}
}
for i in 0..((N) as usize){
for j in 0..((N) as usize){
let a0 = a[i][j].copy();
if (a[i][j].otp() == 2) & (a0.getcour()){a[i][j]= a0.itr(&mut
a,i,j);}
}
}
fild(&canvas,&a);
canvas.present();
// std::thread::sleep(Duration::from_millis(2000));
}
// let mut eventpump = context.eventpump().unwrap();
// 'running: loop {
// for event in eventpump.polliter() {
// match event {
// Event::Quit {..}
// | Event::KeyDown { keycode: Some(Keycode::Escape), .. } => {
// break 'running
// },
// _ => {}
// }
// }
// }
}
fn fild(canvas:&Canvas,arr:&[[inf::Obj;N as usize];N as usize]){
let r = (if HEIGHT/(2 + 3(N-1)/2) < (((WIDTH as f64)/(((2N+1) as
f64)(( f64::consts::PI/3.0).sin()))) as u32) {HEIGHT/(2+3(N-1)/2)} else
{((WIDTH as f64)/(((2N+1) as f64)(( f64::consts::PI/3.0).sin()))) as u32}) as
i16;
let a =(( f64::consts::PI/3.0).sin() * (r as f64)) as i16;
let mut x;
let mut c;
let mut y = r;
let mut f = true;
for i in (&arr).iter(){
if f {
x=a;
f=false;
} else {
x=2*a;
f=true;
};
for j in i.iter(){
c=j.col(Vtp);
hex(&canvas,x,y,r,Color::RGB(c.0,c.1,c.2));
x+=2*a;
}
y+=(3*r/2);
}
}
fn hex(c:&Canvas,x:i16,y:i16,r:i16,color:Color){
let a =(( f64::consts::PI/3.0).sin() * (r as f64)) as i16;
&c.filled_polygon(&[x,x+a,x+a,x,x-a,x-a],&[y-r,y-r/2,y+r/2,y+r,y+r/2,y-
r/2],color);
}
mod inf {
extern crate rand;
use rand::{Rng,thread_rng};
const N:usize = 40;
const RENDMU:i32 = 0;
pub struct Obj {
course:bool,
cond:i16,
side:i16,
tp:i16,
hp:i16,
def:i16,
off:i16,
liveiter:i16,
livebreed:i16,
liveancestor:i16,
table:Vec< [(i16,i16);4]>
}
impl Obj{
pub fn newPl(hp:i16,lb:i16,la:i16) -> Obj {
Obj
{course:false,cond:0,side:0,tp:2,hp:hp,def:0,off:0,liveiter:0,livebreed:lb,livea
ncestor:la,table:vec![Obj::vecstr()]}
}
pub fn newEa() -> Obj{
Obj
{course:false,cond:0,side:0,tp:1,hp:10,def:0,off:0,liveiter:0,livebreed:0,livean
cestor:0,table:vec![]}
}
pub fn newNu() -> Obj{
Obj
{course:false,cond:0,side:0,tp:0,hp:0,def:0,off:0,liveiter:0,livebreed:0,liveanc
estor:0,table:vec![]}
}
pub fn lock() -> Obj{
Obj
{course:false,cond:0,side:0,tp:3,hp:0,def:0,off:0,liveiter:0,livebreed:0,liveanc
estor:0,table:vec![]}
}
pub fn col(&self,t:i16) -> (u8,u8,u8){
match t {
0 => if self.tp == 0 {(255,255,255)} else if self.tp == 1
{(0,255,0)}else if self.tp==2 {((self.off255/2) as u8,0,((2-self.off)255/2) as
u8)} else {(0,0,0)},
1 => if self.tp == 0 {(255,255,255)} else if self.tp == 1
{(0,255,0)}else if self.tp==2 {if self.def == 0 {(244,205,138)} else if self.def
== 1 {(114,130,87)} else {(66,13,74)} } else {(0,0,0)},
2 => if self.tp == 0 {(255,255,255)} else if self.tp == 1
{(0,255,0)}else if self.tp==2 {((self.hp*255/100) as u8,0,0)} else {(0,0,0)}
_ => (0,0,0),
}
}
fn vecstr() -> [(i16,i16);4] {
[(0,0),(0,0),(1,0),(1,0)]
}
pub fn otp(&self) -> i16{
self.tp
}
fn war(&self,a:&mut Obj) -> bool{
((self.off == 0) & ((a.tp == 0)|(a.tp == 1))) | ((a.tp == 2) &
(self.off > a.def))
}
pub fn mkcour(&self ) -> Obj {
Obj
{course:true,cond:self.cond,side:self.side,tp:2,hp:self.hp,def:self.def,off:self
.off,liveiter:self.liveiter,livebreed:self.livebreed,liveancestor:self.liveances
tor,table:self.table.clone()}
}
pub fn getcour(&self) -> bool {
self.course
}
pub fn itr(&self,a1:&mut [[Obj;N];N],i:usize,j:usize) -> Obj{
println!("{},{} - {} -{}",i,j,self.hp,self.side);
for i0 in self.table.iter(){
print!("({},{}),({},{}),({},{}),({},{})",
i0[0].0,i0[0].1,i0[1].0,i0[1].1,i0[2].0,i0[2].1,i0[3].0,i0[3].1);
}
println!("");
if self.hp > 100{
self.division(a1,i,j)
} else {
let mut lock = Obj::lock();
let a =match (self.side) {
0 => if j+1 < N {&mut a1[i][j+1]} else {&mut lock},
1 => if i%2 == 0 {
if i+1 < N {&mut a1[i+1][j]} else {&mut lock}
}else{
if (i+1 < N) & (j+1 < N) {&mut a1[i+1][j+1]} else
{&mut lock}
},
2 => if i%2 == 0 {
if (i+1 < N) & (j >0) {&mut a1[i+1][j-1]} else {&mut
lock}
} else {
if i+1
},
3 => if j > 0 {&mut a1[i][j-1]} else {&mut lock},
4 => if i%2 == 0 {
if (i > 0) & (j >0) {&mut a1[i-1][j-1]} else {&mut
lock}
} else {
if i > 0 {&mut a1[i-1][j]} else {&mut lock}
},
5 => if i%2 == 0 {
if i > 0 {&mut a1[i-1][j]} else {&mut lock}
} else {
if (i > 0) & (j+1 < N) {&mut a1[i-1][j+1]} else
{&mut lock}
},
_ => &mut lock,
};
let (l,ncond) = self.table[self.cond as usize][a.tp as usize];
let nhp = self.hp - (1 + (self.table.len() as i16)/5) - (if l ==
3 {0} else {1})*(self.def +1)/(if (l==1) |(l==2){2} else {1});
if nhp <= 0{
Obj::newNu()
} else {
match l {
0 => {
if self.war(a){
*a = Obj
{course:false,cond:ncond,side:self.side,tp:2,hp:(nhp + a.hp -
3*self.off),def:self.def,off:self.off,liveiter:
(self.liveiter+1),livebreed:self.livebreed,liveancestor:self.liveancestor,table:
self.table.clone()};
Obj::newNu()
} else {
Obj
{course:false,cond:ncond,side:self.side,tp:2,hp:nhp,def:self.def,off:self.off,li
veiter:
(self.liveiter+1),livebreed:self.livebreed,liveancestor:self.liveancestor,table:
self.table.clone()}
}
},
1 => Obj {course:false,cond:ncond,side:(if self.side ==
5 {0} else {self.side +1}),tp:2,hp:nhp,def:self.def,off:self.off,liveiter:
(self.liveiter+1),livebreed:self.livebreed,liveancestor:self.liveancestor,table:
self.table.clone()},
2 => Obj {course:false,cond:ncond,side:(if self.side ==
0 {5} else {self.side -1}),tp:2,hp:nhp,def:self.def,off:self.off,liveiter:
(self.liveiter+1),livebreed:self.livebreed,liveancestor:self.liveancestor,table:
self.table.clone()},
3 => Obj
{course:false,cond:ncond,side:self.side,tp:2,hp:nhp,def:self.def,off:self.off,li
veiter:
(self.liveiter+1),livebreed:self.livebreed,liveancestor:self.liveancestor,table:
self.table.clone()},
_ => Obj::lock(),
}
}
}
}
fn division(&self,a1:&mut [[Obj;N];N],i:usize,j:usize) -> Obj{
let hp = (self.hp -20)/2;
let inc:[(i16,i16);6] = [(i as i16,(j as i16)+1),if i%2 == 0 {((i as
i16)+1,j as i16)} else{((i as i16)+1,(j as i16)+1)},if i%2 == 0 {((i as i16)+1,
(j as i16)-1)} else {((i as i16)+1,j as i16)},(i as i16,(j as i16)-1),if i%2 ==
0 {((i as i16)-1,(j as i16)-1)}else {((i as i16)-1,j as i16)},if i%2 == 0 {((i
as i16)-1,j as i16)} else {((i as i16)-1,(j as i16)+1)}];
let mut i1=self.side as usize;
if ((inc[i1].0 >=0) & (inc[i1].1>=0) & (inc[i1].0 <(N as i16)) &
(inc[i1].1 < (N as i16))){
if (a1[inc[i1].0 as usize][inc[i1].1 as usize].tp == 0) {
a1[inc[i1].0 as usize][inc[i1].1 as usize] = self.baby((i1
as i16),hp);
}
} else {
while {
if i1 == 0 {i1 = 5} else {i1-=1};
if (inc[i1].0 >=0) & (inc[i1].1>=0) & (inc[i1].0 < N as
i16 ) & (inc[i1].1 < N as i16){
a1[inc[i1].0 as usize][inc[i1].1 as usize].tp == 0
} else {i1 == (self.side as usize)}
} {}
if((i1==(self.side as usize)) & (inc[i1].0 >=0) & (inc[i1].1>=0)
& (inc[i1].0
if (a1[inc[i1].0 as usize][inc[i1].1 as usize].tp == 0) {
a1[inc[i1].0 as usize][inc[i1].1 as usize] =
self.baby((i1 as i16),hp);
}
}
}
self.baby((i1 as i16),hp)
}
fn baby (&self,side:i16,nhp:i16) -> Obj{
let mut rng = rand::thread_rng();
if (rng.gen_range(0,100) < RENDMU){
println!("mutation!");
let mut ndef= self.def;
let mut noff= self.off;
let mut ntable = self.table.clone();
if rng.gen() {
if rng.gen() {
ndef = match ndef {
0 => 1,
1 => if rng.gen() {0} else {2},
2 => 1,
_ => 0,
};
} else {
noff = match noff {
0 => 1,
1 => if rng.gen() {0} else {2},
2 => 1,
_ => 0,
};
}
} else {
let i = rng.gen_range(0,self.table.len());
let j = rng.gen_range(0,4);
if rng.gen() {
ntable[i][j] = (rng.gen_range(0,4),ntable[i][j].1);
} else {
let k = ntable[i][j].1;
let nk = rng.gen_range(0,ntable.len()+1);
ntable[i][j] = (ntable[i][j].0,nk as i16);
if nk == ntable.len(){ntable.push(Obj::vecstr());}
let mut f =true;
for i1 in 0..(ntable.len()){
for j1 in 0..4 {
if ((ntable[i1][j1].1 == k) & (i1 != (k as
usize))) {f=false;}
}
}
if f & (k != 0){
for i1 in 0..(ntable.len() -1){
if (i1 >= (k as usize)){
ntable[i1] = ntable[i1+1];}
for j1 in 0..4{
if ntable[i1][j1].1 > k {
ntable[i1][j1] = (ntable[i1]
[j1].0,ntable[i1][j1].1-1);
}
}
}
ntable.pop();
}
}
}
Obj {course:false,cond:0,side:rng.gen_range(0,
6),tp:self.tp,hp:nhp,def:ndef,off:noff,liveiter:0,livebreed:0,liveancestor:self.
liveiter,table:ntable.clone()}
} else {
Obj {course:self.course,cond:self.cond,side:rng.gen_range(0,
6),tp:self.tp,hp:nhp,def:self.def,off:self.off,liveiter:0,livebreed:self.livebre
ed+1,liveancestor:self.liveiter,table:self.table.clone()}
}
}
pub fn copy(&self) ->Obj {
Obj
{course:self.course,cond:self.cond,side:self.side,tp:self.tp,hp:self.hp,def:self
.def,off:self.off,liveiter:self.liveiter,livebreed:self.livebreed,liveancestor:s
elf.liveancestor,table:self.table.clone()}
}
}
}

>>48694
> Форматируй код нормально
> Так ещё хуже, чем скриншотами
братишка, я тебе покушать принес
Сообщение слишком длинное. Полная версия.
>> No.48717 Ответ
>>48716
> братишка, я тебе покушать принес
А, ну ясно. Значит моя помощь не требуется.
>> No.48719 Ответ
Файл: sombra1.png
Png, 3599.93 KB, 1278×1406 - Нажмите на картинку для увеличения
edit Find source with google Find source with iqdb
sombra1.png
>>48717
да не, нужна
>> No.48724 Ответ
>> No.48740 Ответ
Файл: _mlp__king_sombra_by_gloriajoy-daim11i.png
Png, 898.20 KB, 1024×882 - Нажмите на картинку для увеличения
edit Find source with google Find source with iqdb
_mlp__king_sombra_by_gloriajoy-daim11i.png
я так и не получил ответ на свой вопрос, но все же задам новый. как с помошью Arc ну или без него передать переменную в поток событие, что-бы значение изменилось в основнм потоке. причем надо сделать 3 потокасобытия в начинающиеся в одном.

кстати, с того момента моя программа получила еще пару багов: иногода она не запускается, а еще изредка вообще из-за нее виснут иксы
>> No.48742 Ответ
Файл: Sombra_mouth_wide_open_S3E2.png
Png, 56.89 KB, 300×169 - Нажмите на картинку для увеличения
edit Find source with google Find source with iqdb
Sombra_mouth_wide_open_S3E2.png
>>48740
https://kgv.gitbooks.io/rust_book_ru/content/src/concurrency.html
вроди как тут. надо не просто объявлять а с мьютексом
>> No.48756 Ответ
Файл: talking_captcha.png
Png, 0.97 KB, 300×20
edit Find source with google Find source with iqdb
talking_captcha.png
Файл: comp-1.gif
Gif, 128.33 KB, 320×240
edit Find source with google Find source with iqdb
comp-1.gif

Упс. Забыл про последнюю часть: https://habr.com/post/354784/


[0] [1] [2] [3] [4] [5] ... [51] [52] [53]
Пароль:

[ /b/ /u/ /rf/ /dt/ /vg/ /r/ /cr/ /lor/ /mu/ /oe/ /s/ /w/ /hr/ ] [ /a/ /ma/ /sw/ /hau/ /azu/ ] [ /tv/ /cp/ /gf/ /bo/ /di/ /vn/ /ve/ /wh/ /fur/ /to/ /bg/ /wn/ /slow/ /mad/ ] [ /d/ /news/ ] [ Главная | Настройки | Закладки | Плеер ]