[ /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.36161 Ответ [Открыть тред]
Файл: 125860969610249.jpg
Jpg, 39.86 KB, 300×100 - Нажмите на картинку для увеличения
edit Find source with google Find source with iqdb
125860969610249.jpg
Доска посвящена созданию программ и всему, что с ним связано. Для обсуждения готовых программ, железа, устройств есть доска >>/lor/

Простые реквесты для ньюфагов >>28288
Помощь начинающим >>44688 (новый)
Оффициальный™ Лунного Сахара тред >>43581

Языки программирования:
Haskell >>35693
Lisp >>29402
Assembler >>32929
C++ >>43511
Java >>46281
C# и .Net >>27510
Perl >>37854
Python >>46029
Доска посвящена созданию программ и всему, что с ним связано. Для обсуждения готовых программ, железа, устройств есть доска >>/lor/

Простые реквесты для ньюфагов >>28288
Помощь начинающим >>44688 (новый)
Оффициальный™ Лунного Сахара тред >>43581

Языки программирования:
Haskell >>35693
Lisp >>29402
Assembler >>32929
C++ >>43511
Java >>46281
C# и .Net >>27510
Perl >>37854
Python >>46029
PHP >>23225
JavaScript >>40541
Pascal/Delphi >>37645
Golang >>48143

Фреймворки и библиотеки:
Ruby on Rails >>31319
Qt >>31597

Инструменты:
Vim >>33881
Emacs >>36714
Системы контроля версий >>28005

Прочие технологии:
SQL >>29820

Информатика:
Стеганография >>35350

"Кафедра сайтостроя": тред тут в /s >>31137 и тред в /u >>u/104773
Game Development тред тут >>39943 "Кафедра гейм-девелопмента" в /u: >>u/60525
Сообщение слишком длинное. Полная версия. Post was modified last time at 2017-09-26 21:53:58


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.33881 Ответ [Открыть тред]
Файл: vim-shortcuts-dar...
Png, 116.56 KB, 2560×1600
edit Find source with google Find source with iqdb
vim-shortcuts-dark_2560x1600.png
Файл: vim_cheat_sheet_f...
Png, 1791.61 KB, 3301×2550
edit Find source with google Find source with iqdb
vim_cheat_sheet_for_programmers_print.png

Обещал про Vim написать. Ну вот собсна и написал.

Итак. Для начала поговорим о том, кому он не нужен. Ненужен он в самую первую очередь тем, кто не умеет в слепую десятипальцевую печать. Для таких людей vim буде каторгой. Посему данной категории людей советую либо забить на это дело, либо начать развивать слепую печать. Благо навык полезный. Можно гуглить например очевидную stamina и т.д. Вторая категория людей, которым не нужен сабж, это фанаты emacs по очевидным причинам. Кроме того не очень желательно изучать для виндопользователей. Ибо может быть черевато переходом на linux в конечном итоге, лол.

Ну а теперь собсна о vim и о том, что он из себя представляет. Если кратко, то это текстовый редактор, оптимизированный под слепую печать. Т.е. в нём можно делать всё не снимая рук с клавиатуры. Ну а ещё он мощный, расширяемый, бла-бла-бла.

Ок. Где взять? Для линупсов достаточно установить из пакетного менеджера очевидный пакет под именем vim sudo apt-install vim для бубунты, а остальные и сами разберутся. Для винды можно пользовать ссылочку ftp://ftp.vim.org/pub/vim/pc/gvim74.exe

Скачали, запустили. Ну и? Где вся няшнота то?
Объясняю только самые основы:
  • выход без сохранения точнее закрытие файла при помощи :q!
  • есть несколько режимов работы. Основные: "нормальный", редактирование, командный, выделение.
  • передвижение по файлу при помощи клавиш h j k l это соответственно влево, вниз, вверх, вправо.
  • для собсна редактирования можно нажать например i
Далее находим vimtutor и проходим его. Он ответит на остальные вопросы. Для линупсов vimtutor ru в консольке. Для винды должно быть гхдетоу в районе меню пуск. Хотя шут его знает. Потом изучаем и печатаем на бумажку или ставим в качестве обойки воон те картинки, что в комплекте с постом идут.
Обещал про Vim написать. Ну вот собсна и написал.

Итак. Для начала поговорим о том, кому он не нужен. Ненужен он в самую первую очередь тем, кто не умеет в слепую десятипальцевую печать. Для таких людей vim буде каторгой. Посему данной категории людей советую либо забить на это дело, либо начать развивать слепую печать. Благо навык полезный. Можно гуглить например очевидную stamina и т.д. Вторая категория людей, которым не нужен сабж, это фанаты emacs по очевидным причинам. Кроме того не очень желательно изучать для виндопользователей. Ибо может быть черевато переходом на linux в конечном итоге, лол.

Ну а теперь собсна о vim и о том, что он из себя представляет. Если кратко, то это текстовый редактор, оптимизированный под слепую печать. Т.е. в нём можно делать всё не снимая рук с клавиатуры. Ну а ещё он мощный, расширяемый, бла-бла-бла.

Ок. Где взять? Для линупсов достаточно установить из пакетного менеджера очевидный пакет под именем vim sudo apt-install vim для бубунты, а остальные и сами разберутся. Для винды можно пользовать ссылочку ftp://ftp.vim.org/pub/vim/pc/gvim74.exe

Скачали, запустили. Ну и? Где вся няшнота то?
Объясняю только самые основы:
  • выход без сохранения точнее закрытие файла при помощи :q!
  • есть несколько режимов работы. Основные: "нормальный", редактирование, командный, выделение.
  • передвижение по файлу при помощи клавиш h j k l это соответственно влево, вниз, вверх, вправо.
  • для собсна редактирования можно нажать например i
Далее находим vimtutor и проходим его. Он ответит на остальные вопросы. Для линупсов vimtutor ru в консольке. Для винды должно быть гхдетоу в районе меню пуск. Хотя шут его знает. Потом изучаем и печатаем на бумажку или ставим в качестве обойки воон те картинки, что в комплекте с постом идут.

Это было сверхкраткое введение. А теперь мы будем обмазыватся плугинками и всячески допиливать редактор до удобоваримого состояния. Для начала открываем .vimrc или _vimrc (для венды). Это конфигурационный файлег. Да, да, господа виндузятники. Ни каких окошечек с настроечками. Только хардкор.
По поводу настроечек рекомендую загуглить самомуа лучше почитать маны. Примеры: http://dimio.org/cgi-bin/bps/hlghtsrc/sourcehl.cgi?d=conf&s=vimrc&l=vim http://pastebin.com/jy4a3pE5 http://pastebin.com/paPWQ5fE http://pastebin.com/V3GdD38s Тысячи их.

Однако мы переходим к самому интересному. Доведём до ума сабж при помощи плугинок. Ибо без них vim уныл. Для начала нужно установить пакетный менеджер. Рекомендую либо Vundle либо NeoBundle. Думаю сами сможете загуглить их. К ним идут инструкции. Тож сами читнёте.

Самые полезниньки плагины можно найти там http://vim.wikia.com/wiki/Use_Vim_like_an_IDE

Отдельно упомяну следующие:
NERDTree добавляет древо файлов.
bufexplorer даёт удобную навигацию по буферам.
Вот кстати о буферах, окнах и табах в виме. Вот открыли вы один файлег, а потом, не закрывая первый, открыли второй. Можно потом переключаться между этими файлами. А можно их в одном окне одновременно открыть. Подробнее об том читнуть в справке или например в http://habrahabr.ru/post/28572/ http://habrahabr.ru/post/102373/
Vim Powerline раскрашивает статусную строку.
ColorSamplerPack набор тем оформления.

Вообще лучше самому подбирать плугинки. Их дофига, но не каждому все из них нужны. Да и изучать каждую плугинку тож время отнимает.

Можно ещё читнуть напоследок http://habrahabr.ru/post/176187/

Ну пока всё. Спрашивайте свои ответы. Ато может я чего забыл ненароком.
Сообщение слишком длинное. Полная версия. 221 posts are omitted, из них 42 с файлами. Развернуть тред.
>> No.49052 Ответ
>>49044
Ещё рекомендую заклеить буквы на клаве на период обучения (пока не начнёшь уверенно вслепую находить нужную клавишу нужным пальцем), иначе взгляд будет по привычке всё время сползать на клаву. А раскладку распечатать на листочке и держать рядом с монитором первую неделю-две.
>> No.49054 Ответ
>>49051
>>49052
Спасибо, почитаю.
Нашел для практики https://www.ratatype.com/
Без гайдов, но с ачивками и спидометром.

В слепую печать я привык, но я печатаю примерно четырьмя пальцами и очень неточно, решил переучиться. Тем более, когда пытаешься печатать как можно быстрее, ты полностью сконцентрирован на строке — некогда смотреть на клавиатуру.
>> No.49055 Ответ
>>49054
> Нашел для практики
Найди лучше такой сайт/прогу, где есть специальные упражнения, заточенные именно на постепенное освоение выбранной тобой раскладки. Там они выстроены от простого к сложному. В том же gtypist'е есть.
> Без гайдов
Гайд простой: каждому пальцу назначается свой набор клавиш, которые только он может нажимать. Плюс в состояни ожидания пальцы возвращаются на свои клавиши в центральном ряду. А дальше упражнения и тренировки, соблюдая это правило. В википедии есть:
https://en.wikipedia.org/wiki/Touch_typing
>> No.49056 Ответ
>>49055
> Найди лучше такой сайт/прогу, где есть специальные упражнения, заточенные именно на постепенное освоение выбранной тобой раскладки. Там они выстроены от простого к сложному
Так так там и есть.
>> No.49058 Ответ
>>49056
Не нашёл, но я не очень пристально искал. Должны быть упражнения типа того, что сначала печатаем только слова/псевдослова, состоящие из букв центрального ряда. Потом постепенно добавляем другие буквы.

Если есть, то ок.
>> No.49060 Ответ
>>33881
Анон, как эти вашим ВИМом овладеть? Туториал пройден, плагины поставлены, настроен под себя. Десятипальцевой слепой печатью владею, но печатаю всё равно медленнее чем в IDE или любом другом редакторе, особенно когда нужно заниматься рефакторингом, да и вообще по коду перемещаться.
>> No.49061 Ответ
>>49060
Ищи решения для всяких утомительных для тебя операций, сведи использование hjkl до минимума.
>> No.49062 Ответ
>>49060
Почитай вот это:
http://www.moolenaar.net/habits.html
Это оригинал. Вроде бы русский перевод тоже где-то есть.
>> No.49082 Ответ
>>48854
> Я, когда вимом пользовался, вообще выработал у себя привычку любой законченный кусок ввода на автомате завершать нажатием на Esc (конечно, Esc надо перебиндить поближе для этого).
Я хоть и пока не очень много пользовался вимом, но уже выработал привычку долбить постоянно долбить по эскейпу. Хорошо, что он обычно ничего не делает, но вот если перебиндить его на капслок... печатать не в виме станет невозможно.
>> No.49106 Ответ
>>49060
Я поставил vim-плагин для intellij idea и совмещаю vim с ide.

Ну и еще добавил разные плагины в сам vim, что он тоже стал похож на ide, так что разные небольшие проекты можно править прямо в vim-е. Когда бывает нужно автодополнение, переключаюсь на intellij idea.

Лично мне удобны в vim-е:
- перемещение по тексту
- поиск
- повторение последней операции через нажатие на "."
- сложные замены с регулярными выражениями

Мне стало легче с vim-ом после того, как я узнал, что можно выделять несколько строк, нажав "Shift-V".
Кастомизацию vim-а через добавление плагинов облегчает Vundle.vim.

Я создал git-репозиторий, в котором храню свой .vimrc-файл.


No.47927 Ответ [Открыть тред]
Файл: tumblr_oppvh6XMAq1w6k0rko1_540.gif
Gif, 231.52 KB, 540×304 - Нажмите на картинку для увеличения
edit Find source with google Find source with iqdb
tumblr_oppvh6XMAq1w6k0rko1_540.gif
Тред помощи начинающим свой долгий и тернистый путь в дебри программирования. А также необузданных оленей, код-мартышек, выбора ЯП и иных платиновых вещей.
Но в первую очередь всё-таки помощи новичкам. Всё, чтобы зашедший сюда в первый раз мог почувствовать себя как дома.
Главное - без фанатизма.

Предыдущий: >>46762
373 posts are omitted, из них 57 с файлами. Развернуть тред.
>> No.49090 Ответ
>>49089
> нейросети и МЛ сейчас в тренде
Вот именно, они в тренде сейчас, но по большей части это попытки натянуть новую технологию куда придется и посмотреть, что получится. Ничего конкретного нет, самые хитрые пытаются вытянуть деньги из плебеев, используя слово "нейросеть" наряду с "блокчейн".
>> No.49091 Ответ
Файл: maxresdefault.jpg
Jpg, 67.04 KB, 1280×720 - Нажмите на картинку для увеличения
edit Find source with google Find source with iqdb
maxresdefault.jpg
https://viewsourcecode.org/snaptoken/kilo/index.html

> Welcome! This is an instruction booklet that shows you how to build a text editor in C.

> It’s about 1000 lines of C in a single file with no dependencies, and it implements all the basic features you expect in a minimal editor, as well as syntax highlighting and a search feature.
>> No.49093 Ответ
>>49091
> with no dependencies
> highlighting
Вот это интересно.
Алсо, нам на первом курсе препод по С в качестве примера писал просмотрщик текстовых файлов. Мелом на доске.
>> No.49094 Ответ
>>49091
> highlighting
> ANSI colors
Закопайте.
>> No.49095 Ответ
>>49094
Ну ты лалка.
Рендерь хоть в триде, суть же не меняется.
>> No.49096 Ответ
Я совершенно завис, нужна помощь. Есть два двумерных массива необходимо получить третий (можно одномерный), содержащий общие элементы первых двух. Совершенно не знаю что делать. Сравниваю их, хорошо, но в первом массиве могут повторяться элементы что даёт двойное сравнивание и, как результат, дважды записывается "общий" элемент. Тоже самое если элемент встречается дважды во втором массиве. Чего делать непридумывается.
>> No.49097 Ответ
>>49096
Если тебе нужны только уникальные элементы в третьем массиве, можешь пройтись по нему в конце и удалить дубликаты.
>> No.49098 Ответ
>>49097
Или использовать множество, а потом перевести его к массиву.
>> No.49104 Ответ
Файл: 1296726392268.jpg
Jpg, 16.40 KB, 430×376 - Нажмите на картинку для увеличения
edit Find source with google Find source with iqdb
1296726392268.jpg
Зачастую в всяких обучающих материалах делают примитивный костяк, а потом наращивают мясо.
Мне же нужно сначала всё хорошенько продумать до мелочей, а потом можно тупо записывать.
Можно как-то переключиться на первое? Или это именно обучающий подход с намеренным упрощением?
>> No.49105 Ответ
>>49104
Не могу себе представить, чтобы человеку дали более-менее сложную задачу (на много строк кода) и он продумал бы все до мелочей. Если это не какой-нибудь Эйнштейн.

Это же естественно, начинать с чего-то более простого, с какого-то грубого приближения, как рисунки начинают с набросков и тексты так же создают. Разве нет?

Приведи пример задачи, для которой ты все продумал заранее, не упрощая задачу.

Просто оставлю это здесь: 277f414f-d82c-4ca4-89a7-1febc1ce9e2e


No.27510 Ответ [Открыть тред]
Файл: 200px-NET_h_rgb_2...
Png, 17.12 KB, 200×49
edit Find source with google Find source with iqdb
200px-NET_h_rgb_2.png
Файл: 371px-C_sharp.svg...
Png, 6.26 KB, 371×254
edit Find source with google Find source with iqdb
371px-C_sharp.svg.png

Здесь будет ветка обсуждения .net и C#.
И сразу вопрос: какой встроенный класс в C# реализует массив с обращением по индексу за О(1), в котором при этом можно было бы добовлять в конец элементы(аналог vector из С++), и какой соответственно реализует связный список с вставкой элемента в середину и начало и удалением элемента за О(1)(аналог list в С++).
465 posts are omitted, из них 69 с файлами. Развернуть тред.
>> No.48581 Ответ
Как в Asp.Net MVC добавить генерацию ID в HTML?
Например, у меня в базе данных есть книги с ID, мне бы хотелось, чтобы при генерации HTML у div'а, который служит для представления информации о книге, в id было что-то типа "Book"+ID, где это ID берется из БД.
Например:
<div id="Book1"></div>
<div id="Book2"></div>
...
<div id="Book999"></div>
>> No.48598 Ответ
Файл: 1471815666195025723.jpg
Jpg, 47.98 KB, 517×517 - Нажмите на картинку для увеличения
edit Find source with google Find source with iqdb
1471815666195025723.jpg
>> No.48745 Ответ
Файл: 785px-Inheritance.svg.png
Png, 10.33 KB, 785×487 - Нажмите на картинку для увеличения
edit Find source with google Find source with iqdb
785px-Inheritance.svg.png
Имеется абстрактный класс и 4 производных от него.
Всё вместе представляет собой 60 строчек кода.
По-моему, вся эта кучка классов удобнее для восприятия в виде одного файла.
Стоит ли выносить каждый производный класс в отдельный файл?
Даже не представляю, как гуглить подобные стандарты.
>> No.48746 Ответ
>>48745
Стоит.
Классы имеют привычку разрастаться.
>> No.48748 Ответ
>>48746
Спасибо.
Учту.
>> No.48816 Ответ
Що про эф сярп сказать можете, комрады?
>> No.48820 Ответ
Файл: shirai-kuroko.jpg
Jpg, 204.48 KB, 1050×1400 - Нажмите на картинку для увеличения
edit Find source with google Find source with iqdb
shirai-kuroko.jpg
>>48816
Вакансий море, в отрасли — жуткий кадровый голод, выбирайте эф сярп, комрады.
>> No.49071 Ответ
Файл: konachan-com-63238-sample.jpg
Jpg, 157.81 KB, 1800×1013 - Нажмите на картинку для увеличения
edit Find source with google Find source with iqdb
konachan-com-63238-sample.jpg
Расскажите про .net core.
Я правильно понимаю, что можно сделать что-то под шиндовс на шарпе, а потом отпилить гуи, сконпелять под эту кору и запускать на линупс сервере?
Насколько трудоемка установка этих зависимостей и смогу ли я юзать все доступные стандартные либы или кастомные?
>> No.49073 Ответ
>>49071
> Я правильно понимаю, что можно сделать что-то под шиндовс на шарпе, а потом отпилить гуи, сконпелять под эту кору и запускать на линупс сервере?
Так ведь это можно было и до .NET Core делать, через Mono. Кстати, если использовать Mono и если гуи написано на Windows Forms, его можно не отпиливать, в Mono нет поддержки WPF, но Windows Forms поддерживается. А в .NET Core нет ни того, ни другого, но можно использовать например Avalonia, Electron.NET, ASP.NET Core или какие-нибудь привязки к Qt например
>> No.49103 Ответ
Файл: 91180856.jpg
Jpg, 11.42 KB, 165×232
edit Find source with google Find source with iqdb
91180856.jpg
Файл: 1386054315513.gif
Gif, 403.03 KB, 408×462
edit Find source with google Find source with iqdb
1386054315513.gif

Нет у кого этой книги в скане? https://www.piter.com/product/otladka-prilozheniy-dlya-microsoft-net-master-klass
У меня была бумажная много лет назад, а потом вроде цветная дежавюха, но теперь не найти.
В гуглях встречается только какая-то предыдущая версия, это не то.


No.46029 Ответ [Открыть тред]
Файл: pylogo0.png
Png, 126.61 KB, 800×642 - Нажмите на картинку для увеличения
edit Find source with google Find source with iqdb
pylogo0.png
Предыдущий >>37139 ушёл в бамплимит.

Краткая справка для новичков:
Официальный сайт: http://python.org/
Документация по стандартной библиотеке и разнообразные Tips & Tricks: http://docs.python.org/
неСвежая тема для священной войны, или руководство по выбору между версиями: http://wiki.python.org/moin/Python2orPython3
Ссылка для вопящих про дикие тормоза: http://speed.pypy.org/
Python для микроконтроллеров http://micropython.org или http://www.github.com/micropython
286 posts are omitted, из них 47 с файлами. Развернуть тред.
>> No.48723 Ответ
Можно ли в питоне поменять кусок файла не переписывая его полностью.
>> No.48726 Ответ
>> No.48728 Ответ
>>48718
переосмыслил и переписал:
https://pastebin.com/FSPq3GLh
>> No.48738 Ответ
Файл: 14440559092710.jpg
Jpg, 62.80 KB, 640×632 - Нажмите на картинку для увеличения
edit Find source with google Find source with iqdb
14440559092710.jpg
>>48728
мнение другого вкатывальщика без какого-либо реального опыта. скажу о твоем коде то же, что сказали в первый раз о моем
1) Весь код - одно большое нарушение PEP8. Есть строки больше 80 символов, пустых строк между определениями функций 1, а не 2. Может ещё че есть, это просто в глаза бросилось.
2) цитата того анона, что обосрал мой первый код"декомпозировать, разделить обязанности, предусмотреть варианты возможных изменений в текущем коде и инкапсулировать их, предусмотреть возможные варианты развития и не усложнять их." Более подробно я описать эту проблему не особо могу. У тебя и логика игры (таблица чисел с пустым местом), и само графическое выведение, и перестановка этих чисел - все в одном месте. Это плохо. Вот что бы мне пришлось делать, если бы я хотел вывести твои пятнашки в консоль, а не в gui? Пришлось бы вообще все переделывать. Нихуя не maintaiability код.

Это общие замечания были. Теперь о самом коде.

3)Не знаю как другие программисты, но я не люблю, когда функции изменяют переменные за пределами своего скоупа. Считать какую-то глобальную для всей программы переменную - ок, изменить - хуйня. Так что global стэйтмэнты я не люблю. Опять же, импортирую твой код для использования в своей графической программке например, а у меня original_seq и другие отвечают за мои собственные последовательности, с которыми я работают ну например у меня вычисляется 100000000 член последовательности фиббоначи через рекурсивные вызовы, я решил в это время пятнашки сложить. И че произойдет? Все обвалиться нахуй из-за global.
>>48728
мнение другого вкатывальщика без какого-либо реального опыта. скажу о твоем коде то же, что сказали в первый раз о моем
1) Весь код - одно большое нарушение PEP8. Есть строки больше 80 символов, пустых строк между определениями функций 1, а не 2. Может ещё че есть, это просто в глаза бросилось.
2) цитата того анона, что обосрал мой первый код"декомпозировать, разделить обязанности, предусмотреть варианты возможных изменений в текущем коде и инкапсулировать их, предусмотреть возможные варианты развития и не усложнять их." Более подробно я описать эту проблему не особо могу. У тебя и логика игры (таблица чисел с пустым местом), и само графическое выведение, и перестановка этих чисел - все в одном месте. Это плохо. Вот что бы мне пришлось делать, если бы я хотел вывести твои пятнашки в консоль, а не в gui? Пришлось бы вообще все переделывать. Нихуя не maintaiability код.

Это общие замечания были. Теперь о самом коде.

3)Не знаю как другие программисты, но я не люблю, когда функции изменяют переменные за пределами своего скоупа. Считать какую-то глобальную для всей программы переменную - ок, изменить - хуйня. Так что global стэйтмэнты я не люблю. Опять же, импортирую твой код для использования в своей графической программке например, а у меня original_seq и другие отвечают за мои собственные последовательности, с которыми я работают ну например у меня вычисляется 100000000 член последовательности фиббоначи через рекурсивные вызовы, я решил в это время пятнашки сложить. И че произойдет? Все обвалиться нахуй из-за global.
4)Че ты бля делаешь в bones_shufle? Меняешь по две косточки 100 раз? Это можно сделать намного проще, подумай как. Да и сам while со счетчиком прекрасно заменяется на for i in range(100), если тебе он очень нужен.
4.5) Так же я не нашел проверки на то, что составленная тобой игра вообще решаема. Хотя может если ты меняешь по 2 косточки, то всегда получишь решаемую таблицу. Но мой вариант реализации все равно кажется мне проще.возможно это не так
5) 52 и 53 строки можно заменить одной с помощью divmod().
6) В каждый момент времени из всех кнопок нажатие как минимум 75% ни приведет ни к чему. Это не очень.

В общем все надо нахуй выкидывать и переделыватьили нет, опять же, я сам только вкатываюсь. Если решишь прислушаться к моему мнению, то после того как все переделаешь можешь посмотреть мою реализациюможешь и до, но я настоятельно советую после, у меня вышло в 190 строк.
Сообщение слишком длинное. Полная версия.
>> No.49074 Ответ
Дорогие питонисты, помогите советом. С python.org скачал установочник 3.7 для x64, поставил, запускаю – открывается чёрный IDLE без командной строки – точь-в-точь командная строка винды. Если через контекстное меню открыть файл *.py в IDLE для редактирования, там уже всё как раньше у меня было в Python 3.3. И вот теперь вопрос: какого чёрта?
Да, вот такой я ламер.
>> No.49076 Ответ
Файл: IDLE-Python.png
Png, 62.73 KB, 507×625 - Нажмите на картинку для увеличения
edit Find source with google Find source with iqdb
IDLE-Python.png
>>49074
Эврика. Нашёл правильный ярлык для запуска. До этого запускал не тот. Просто после установки на рабочий стол был помещён "не тот" ярлык.
>> No.49099 Ответ
>>49076
Вечера, господа питоньеро. Есть внезапный вопрос, в связи с вот ЭТИМ:
https://www.opennet.ru/opennews/art.shtml?num=49256
Какие еще лексемы могут начать шатать в ближайшем будущем от оскорбленных анонимок? Как подстелить соломку (ну кроме очевидного и неправильного "собирай статичное питоновское окружение" или "юзай ветку 2.х") для софта, который будет введен в продакшн по самым пессимистичным меркам на 7-8 лет и на работу которого не должен влиять никто?
>> No.49100 Ответ
>>48738
> 1) Весь код - одно большое нарушение PEP8.
Почему в Питоне придумали какой-то там PEP8 и все его стараются соблюдать, а в других языках ничего такого нет?
Понятно что есть какие-то договоренности на тему кодинг стайла, но у разных проектов/огранизаций они разные.
>> No.49101 Ответ
>>49100
Потому, что сначала Гвидо соговнокодеры не смог в нормальный интерпретатор, хотя бы уровня пёрла но со своим ЧИТАЕМЫМ тимоди, а потом этот баг с отступами был превращен в охуеть какую фичу. Защитники Гвидо могут идти лесом со своим "это было by design".
>> No.49102 Ответ
>>49099
> на 7-8 лет
Не используй питон.


No.48143 Ответ [Открыть тред]
Файл: 14737788001931.png
Png, 31.18 KB, 400×296 - Нажмите на картинку для увеличения
edit Find source with google Find source with iqdb
14737788001931.png
Почему до сих пор нет треда, посвящённому божественному языку Go или Golang?

Поделюсь своими ссылочками
http://golang-book.ru/
Очень хорошая книга, отлично подходит для начинающих, приводится подробное разъяснение основ
https://www.dropbox.com/s/pe7v02epirzzpat/intro_in_golang.7z?dl=1
То же, но в pdf формате

https://www.youtube.com/playlist?list=PLBOo6DBmP5V9CAXxxl6EZxZpMmT_4ZOca
Канал на ютубе. К сожалению порекомендовать его не могу, потому что много воды, то что можно я бы даже сказал нужно уместить в одно видео, растягивается на несколько

https://golangshow.com/
Подкаст по Golang

Реквестирую больше литературы, желательно на русском
Почему до сих пор нет треда, посвящённому божественному языку Go или Golang?

Поделюсь своими ссылочками
http://golang-book.ru/
Очень хорошая книга, отлично подходит для начинающих, приводится подробное разъяснение основ
https://www.dropbox.com/s/pe7v02epirzzpat/intro_in_golang.7z?dl=1
То же, но в pdf формате

https://www.youtube.com/playlist?list=PLBOo6DBmP5V9CAXxxl6EZxZpMmT_4ZOca
Канал на ютубе. К сожалению порекомендовать его не могу, потому что много воды, то что можно я бы даже сказал нужно уместить в одно видео, растягивается на несколько

https://golangshow.com/
Подкаст по Golang

Реквестирую больше литературы, желательно на русском
Если кто-то решится писать свои уроки- то совсем хорошо

postScriptum сам я изучаю golang с нуля, то есть вообще ни с какими языками программирования до этого дела не имел
Сообщение слишком длинное. Полная версия. 6 posts are omitted. Развернуть тред.
>> No.48590 Ответ
>>48145
Увидел тред и решил вместо унылого написания очередного скриптика на питоне вкатиться в го. И я прозрел - он шикарен.
>> No.48997 Ответ
>>48590
кажется, тред скорее мертв,чем жив
а так я занимаюсь коммерческой разработкой на голанге, могу подсказать, если что-то нужно
>> No.49001 Ответ
Файл: 0UfebEHWhsAa6CyTc...
Jpg, 81.46 KB, 640×913
edit Find source with google Find source with iqdb
0UfebEHWhsAa6CyTcxXnHzSnVdaw3x2TRFJjdT_-CGw.jpg
Файл: qGxliQk3J5iaw-vTQ...
Png, 419.09 KB, 722×609
edit Find source with google Find source with iqdb
qGxliQk3J5iaw-vTQeqM9CCj2O94TT-_-3LyWqg24TY.png

Можно мемов накинуть
>> No.49017 Ответ
>>49001
> generics
Да ну, зачем? Всегда же можно нагенерить копипасты при помощи `go generate`.
>> No.49032 Ответ
О, привет второй голанг тред, где-то там далеко плавает твой предшественник.

Го - основной язык. дженерики не нужны но я скорее сисадмин которому нужен недо-с потому что я ленивая балда.
>> No.49053 Ответ
>>49032
> но я скорее сисадмин которому нужен недо-с потому что я ленивая балда
А чем твою ленивую балду не устрил тот же питон, например. Я без агитации спрашиваю, просто интересно.
>> No.49068 Ответ
>>49053
Без агитации, отвечу. :3

1) Я очень не люблю пробелы как разделитель кода.
2) Структуры мне легче идут в го.
3) Го - более ограниченый язык, и мне легче его запомнить.
4) Статично скомпиленый код - ня. На серверах каждый раз устанавливать pip install huyeta-v.01 лень.
5) gofmt - ня.
>> No.49070 Ответ
>>49068
Кстати, дополню, я работаю на питоне, ибо овердохрена утилитов (и почти все интерфейсы и апи к нейросетям/нейросетесервисам) на питоне.

Он у меня не вызывает лютой НЕНАВИСТИ, но и любви тоже мало.
>> No.49072 Ответ
>>49068
Спасибо за ответ.
Поддерживаю тебя по всем пунктам.

Го, конечно, довольно убог (не как что-то хорошее или плохое, просто констатация факта), но если уж мне нужен будет богатый возможностями язык, то я возьму лисп или хаскелл (а никак не питон). А если всё это богатство не нужно, то я в любой день предпочту голанг питону.
>> No.49081 Ответ
Между тем, в черновом варианте, завезли как раз поддержку "более нормального" выкидывания ошибок, и дженериков.


No.48832 Ответ [Открыть тред]
Файл: pg087.png
Png, 23.35 KB, 475×349
edit Find source with google Find source with iqdb
pg087.png
Файл: pg072.png
Png, 56.58 KB, 515×709
edit Find source with google Find source with iqdb
pg072.png
Файл: 14686072547160.png
Png, 44.08 KB, 1024×450
edit Find source with google Find source with iqdb
14686072547160.png

Как понять ООП? Я просто вот не понимаю, зачем это нужно. Безотносительно языка программирования

Вот допустим есть некие классы, классы как в плюсах. Есть методы, которые к этим классам привязаны. Зачем это вообще нужно, если можно просто сделать структуру и набор функций, которые могут с этими структурами нечто осмысленное делать?

Вот допустим есть public private protected модификаторы доступа т.е. ограничения на то, откуда какой метод можно вызывать. public можно вызывать отовсюду, private только для методов из числа public, а protected ... protected становится private при наследовании, притом наследований может быть 3 вида - тоже public, private, protected... Зачем всё это? Чем это лучше просто кучи функций, которые могут просто вызывать другие функции и работать с какими-то структурами?

Или вот методы, методы это функции, которые привязаны к конкретной структуре, но что если мне нужны методы, которые связывают два разных класса? Например это может код, переводящий из вектора в растровую картинку. Этот код должен быть методом класса для растровой или векторной картинки?
23 posts are omitted, из них 1 с файлами. Развернуть тред.
>> No.49021 Ответ
>>48978
> Чтобы понять ООП надо писать код который его требует.
Какой именно код его требует? Есть вообще в природе код, который без ООП написать невозможно?
И где конкретно кончается ООП и начинается не-ООП? Если в чистом Си писать функции, которые принимают указатели на структуры и что-то с ними делают, ну там аллоцируют память, меняют какие-то значения полей структур, это уже ООП или еще нет?
Или вот если просто использовать классы, но не использовать наследования и полиморфизмов, это ООП?
>> No.49022 Ответ
>>49021
> > Какой именно код его требует?
Тот, который его требует.
В общем виде эта задача не решается. Но так или иначе иногда удобно использовать ООП. Когда - сердце подскажет.

> > это уже ООП или еще нет?
> > Или вот если просто использовать классы, но не использовать наследования и полиморфизмов, это ООП?
Ты задаешь пустые вопросы уровня курица или яйцо.
Ну допустим ООП.
>> No.49042 Ответ
>>49022
> В общем виде эта задача не решается. Но так или иначе иногда удобно использовать ООП. Когда - сердце подскажет.
У меня сердце (и другие органы) пока ничего подсказать не может т.к. я не совсем понимаю это ООП.
> Ты задаешь пустые вопросы уровня курица или яйцо.
> Ну допустим ООП.
Допустим. Но такой код может написать человек, который вообше ничего про ООП не слышал. Как-то это слишком размыто

Давайте вот лучше наследование подробно разберем. На примере аналитической геометрии на плоскости.
Вот например точка. Точку можно записывать в декартовых координатах (y, x) и в полярных (r-радиус, f-угол). Т.е. если без ООП то можно объявить две структуры, в одной координаты x, y, в другой радиус r, угол f.
Мы хотим иметь функцию, которой передаем две точки, и она возвращает true если точки в одном месте находятся (накладываются друг на друга) и false если нет. Методом какого класса такая функция должна быть?
>>49022
> В общем виде эта задача не решается. Но так или иначе иногда удобно использовать ООП. Когда - сердце подскажет.
У меня сердце (и другие органы) пока ничего подсказать не может т.к. я не совсем понимаю это ООП.
> Ты задаешь пустые вопросы уровня курица или яйцо.
> Ну допустим ООП.
Допустим. Но такой код может написать человек, который вообше ничего про ООП не слышал. Как-то это слишком размыто

Давайте вот лучше наследование подробно разберем. На примере аналитической геометрии на плоскости.
Вот например точка. Точку можно записывать в декартовых координатах (y, x) и в полярных (r-радиус, f-угол). Т.е. если без ООП то можно объявить две структуры, в одной координаты x, y, в другой радиус r, угол f.
Мы хотим иметь функцию, которой передаем две точки, и она возвращает true если точки в одном месте находятся (накладываются друг на друга) и false если нет. Методом какого класса такая функция должна быть?
Ок, допустим мы ходим сделать еще и отрезки, прямые и лучи при этом надо чтоб отрезок можно было задавать двумя точками, при этом одна точка может быть в полярных координатах, другая в декартовых, или обе в декартовых или обе в полярных, а еще прямые и лучи могут задаваться через одну единственную точку (хоть в полярных, хоть в декартовых координатах) и угол, и должны быть функции, которые бы позволяли находить точки пересечения луча с прямой, луча с лучом, прямой с прямой, отрезка с отрезком, независимо от того, каким образом какую прямую мы задали, проверять параллельность, проверять принадлежность какой-то точки какому-то отрезку... А еще можно добавить векторов, и им там проверять коллениарность... Пока остановимся на этом.

Так вот, как это все будет выглядеть в ООП, что из чего унаследуется, методами каких классов будут функции, сравнивающие отрезки/прямые и пр. и возвращающие точку пересечения, проверяющие параллельность?
Сообщение слишком длинное. Полная версия.
>> No.49050 Ответ
>>49042
> Так вот, как это все будет выглядеть в ООП, что из чего унаследуется, методами каких классов будут функции, сравнивающие отрезки/прямые и пр. и возвращающие точку пересечения, проверяющие параллельность?
Начнем с начала. Имеются классы "координаты в декартовой системе" и "координаты в полярной системе", плюс в них методы конверсии друг в/из друга.
Иметь одновременно две системы координат и хуячить каждому классу дублирующие методы - слишком криво. Так что берется опорная система координат, и кому надо, юзает функции конверсии классов "координата". Пусть опорной будет декартова, так как полярные - хуета.
Класс точка хранит в себе один объект класса "декартовы координаты". Этот класс также имеет операторы == и !=, внутри одного из них сравниваются координаты этой точки и параметра. Это дает приятный сахар if (pointA != pointB) вместо сишного аутизма !isEqual(pointA, pointB).
Отрезок - еще один класс, имеет внутри два объекта класса "декартовы координаты" - концы отрезка. Прямые и лучи точно также имеют две координаты внутри, плюс для особо извращенных имеют конструкторы не только из двух точек, но и точки и угла - внутри этих конструкторов попросту высчитывается вторая dummy точка исходя из параметра угла.
>>49042
> Так вот, как это все будет выглядеть в ООП, что из чего унаследуется, методами каких классов будут функции, сравнивающие отрезки/прямые и пр. и возвращающие точку пересечения, проверяющие параллельность?
Начнем с начала. Имеются классы "координаты в декартовой системе" и "координаты в полярной системе", плюс в них методы конверсии друг в/из друга.
Иметь одновременно две системы координат и хуячить каждому классу дублирующие методы - слишком криво. Так что берется опорная система координат, и кому надо, юзает функции конверсии классов "координата". Пусть опорной будет декартова, так как полярные - хуета.
Класс точка хранит в себе один объект класса "декартовы координаты". Этот класс также имеет операторы == и !=, внутри одного из них сравниваются координаты этой точки и параметра. Это дает приятный сахар if (pointA != pointB) вместо сишного аутизма !isEqual(pointA, pointB).
Отрезок - еще один класс, имеет внутри два объекта класса "декартовы координаты" - концы отрезка. Прямые и лучи точно также имеют две координаты внутри, плюс для особо извращенных имеют конструкторы не только из двух точек, но и точки и угла - внутри этих конструкторов попросту высчитывается вторая dummy точка исходя из параметра угла.
Так как ты хочешь найти параллельности и прочая, то имеет смысл унаследовать отрезок, прямую и луч от базового класса. Это будет класс с двумя координатами, для каждой координаты булевый флаг "конец", скажем, с методом пересчета угла в dummy-точку, методами проверки на параллельность и т.д. Профит: вместо аутичного сишного копипаста функций ты сразу имеешь универсальные методы проверки на принадлежность точки и прочая.
Для добавления векторов достаточно унаследовать его от класса отрезка (с добавлением какой-нибудь ссылки, указывающей на одну из двух координат как на начальную).
Сообщение слишком длинное. Полная версия.
>> No.49059 Ответ
>>49050
> Иметь одновременно две системы координат и хуячить каждому классу дублирующие методы - слишком криво. Так что берется опорная система координат, и кому надо, юзает функции конверсии классов "координата". Пусть опорной будет декартова, так как полярные - хуета.
> Отрезок - еще один класс, имеет внутри два объекта класса "декартовы координаты" - концы отрезка.
Нет, это плохо. Если мы задаем координаты двух точек отрезка в полярных координатах, и нам надо повернуть этот отрезок на угол X относительно начала координат, мы просто этот угол прибавляем или отнимаем (в зависимости от того, по или против часовой) от углов тех двух точек, ну и если угол измеряется в обычных градусах, то если он перевалил за 360 или ушел в минуса, сделать соответствующую коррекцию. Ну и аналогично для других единиц измерения угла (радианы, грады).
Если то же самое мы захотим сделать с отрезком, точки которого заданы в декартовых координатах, работы у нас будет уже значительно больше.
> Класс точка хранит в себе один объект класса "декартовы координаты". Этот класс также имеет операторы == и !=, внутри одного из них сравниваются координаты этой точки и параметра. Это дает приятный сахар if (pointA != pointB) вместо сишного аутизма !isEqual(pointA, pointB).
>>49050
> Иметь одновременно две системы координат и хуячить каждому классу дублирующие методы - слишком криво. Так что берется опорная система координат, и кому надо, юзает функции конверсии классов "координата". Пусть опорной будет декартова, так как полярные - хуета.
> Отрезок - еще один класс, имеет внутри два объекта класса "декартовы координаты" - концы отрезка.
Нет, это плохо. Если мы задаем координаты двух точек отрезка в полярных координатах, и нам надо повернуть этот отрезок на угол X относительно начала координат, мы просто этот угол прибавляем или отнимаем (в зависимости от того, по или против часовой) от углов тех двух точек, ну и если угол измеряется в обычных градусах, то если он перевалил за 360 или ушел в минуса, сделать соответствующую коррекцию. Ну и аналогично для других единиц измерения угла (радианы, грады).
Если то же самое мы захотим сделать с отрезком, точки которого заданы в декартовых координатах, работы у нас будет уже значительно больше.
> Класс точка хранит в себе один объект класса "декартовы координаты". Этот класс также имеет операторы == и !=, внутри одного из них сравниваются координаты этой точки и параметра. Это дает приятный сахар if (pointA != pointB) вместо сишного аутизма !isEqual(pointA, pointB).
Да это вообще не важно. К ООП это не имеет никакого отношения. Можно конечно отдельно обсудить проблемы всех этих перегрузок операторов в контексте языка C++, например невозможность для перегруженных операторов менять приоритеты, ассоциативность и коммутативность, невозможность сделать short-circuit evaluation для && и || при их перегрузке, невозможность вводить свои новые операторы. Притом в том же хаскеле можно вводить свои операторы, и задавать им приоритет и ассоциативность https://progra-lang.blogspot.com/2016/02/Operatory-v-yazyke-programmirovaniya-Haskell.html
> Прямые и лучи точно также имеют две координаты внутри, плюс для особо извращенных имеют конструкторы не только из двух точек, но и точки и угла - внутри этих конструкторов попросту высчитывается вторая dummy точка исходя из параметра угла.
> Так как ты хочешь найти параллельности и прочая, то имеет смысл унаследовать отрезок, прямую и луч от базового класса. Это будет класс с двумя координатами, для каждой координаты булевый флаг "конец", скажем, с методом пересчета угла в dummy-точку, методами проверки на параллельность и т.д. Профит: вместо аутичного сишного копипаста функций ты сразу имеешь универсальные методы проверки на принадлежность точки и прочая.
Представь что тебе надо проверить параллельность двух прямых или двух лучей, или прямой и луча. У тебя есть точка и угол. Если угол и там и там одинаков (или одинаков если развернуть на 180 градусов) то эти прямые/лучи или лежат на одной прямой, или параллельны. Осталось только проверить, лежат ли прямые/лучи на одной прямой (накладываются ли).
Если же у тебя прямые и лучи хранят две точки, тебе нужно будет выполнять дополнительную работу по определению угла, что неэффективно.

А еще если у тебя две прямые заданы одной точкой и углом, будет очень легко находить угол в точке пересечения
> Для добавления векторов достаточно унаследовать его от класса отрезка (с добавлением какой-нибудь ссылки, указывающей на одну из двух координат как на начальную).
Может быть проще договориться, что первая точка это всегда начальная, вторая - всегда конечная?
Сообщение слишком длинное. Полная версия.
>> No.49063 Ответ
Файл: co.jpg
Jpg, 66.25 KB, 751×499 - Нажмите на картинку для увеличения
edit Find source with google Find source with iqdb
co.jpg
>>49059
> Нет, это плохо. Если мы задаем координаты двух точек отрезка в полярных координатах, и нам надо повернуть этот отрезок на угол X относительно начала координат, мы просто этот угол прибавляем или отнимаем (в зависимости от того, по или против часовой) от углов тех двух точек
Нет, это хорошо. Хоть ты и про повороты ничего не говорил, но это элементарно добавляется одним методом, в котором координаты концов конвертятся в полярные, поворачиваются и конвертятся обратно в декартовы.
А вообще это надо по задаче смотреть, что выгоднее: хранить декартовы или полярные.
> Если то же самое мы захотим сделать с отрезком, точки которого заданы в декартовых координатах, работы у нас будет уже значительно больше.
Лолнет, вся дополнительная работа - конвертация туда и обратно.
> Да это вообще не важно. К ООП это не имеет никакого отношения.
Имеет. Это в сишке есть только тупые структуры без операторов, а в ООП есть классы, которые могут инкапсулировать в себе что угодно и предоставлять API, в том числе и Foo::operator ==. То, что у класса могут быть кастомные операторы, вытекает из парадигмы класса.
> например невозможность для перегруженных операторов менять приоритеты
Да оно и не надо в реальной жизни. Если ты пишешь код сразу с кучей разных операторов в одну строку да еще и с нестандартными приоритетами, то ты пишешь говнокод, и любой поддерживающий его потом программист будет заслуженно проклинать себя самыми нехорошими словами.
> невозможность сделать short-circuit evaluation для && и || при их перегрузке
Чо? (пикрелейтед)
> невозможность вводить свои новые операторы
Нинужно
>>49059
> Нет, это плохо. Если мы задаем координаты двух точек отрезка в полярных координатах, и нам надо повернуть этот отрезок на угол X относительно начала координат, мы просто этот угол прибавляем или отнимаем (в зависимости от того, по или против часовой) от углов тех двух точек
Нет, это хорошо. Хоть ты и про повороты ничего не говорил, но это элементарно добавляется одним методом, в котором координаты концов конвертятся в полярные, поворачиваются и конвертятся обратно в декартовы.
А вообще это надо по задаче смотреть, что выгоднее: хранить декартовы или полярные.
> Если то же самое мы захотим сделать с отрезком, точки которого заданы в декартовых координатах, работы у нас будет уже значительно больше.
Лолнет, вся дополнительная работа - конвертация туда и обратно.
> Да это вообще не важно. К ООП это не имеет никакого отношения.
Имеет. Это в сишке есть только тупые структуры без операторов, а в ООП есть классы, которые могут инкапсулировать в себе что угодно и предоставлять API, в том числе и Foo::operator ==. То, что у класса могут быть кастомные операторы, вытекает из парадигмы класса.
> например невозможность для перегруженных операторов менять приоритеты
Да оно и не надо в реальной жизни. Если ты пишешь код сразу с кучей разных операторов в одну строку да еще и с нестандартными приоритетами, то ты пишешь говнокод, и любой поддерживающий его потом программист будет заслуженно проклинать себя самыми нехорошими словами.
> невозможность сделать short-circuit evaluation для && и || при их перегрузке
Чо? (пикрелейтед)
> невозможность вводить свои новые операторы
Нинужно
> Притом в том же хаскеле можно вводить свои операторы, и задавать им приоритет и ассоциативность
Вот поэтому хачкелем кроме полутора отмороженных никто не пользуется. Играются в свои игрушки, а нахрена - непонятно.
> Если же у тебя прямые и лучи хранят две точки, тебе нужно будет выполнять дополнительную работу по определению угла, что неэффективно.
Это несущественно, в каких координатах хранить - определяется по задачам. Если на сотню задач с декартовыми координатами придется одна задача по высчитыванию угла, то и хрен бы с ним. Да и подсчитать угловой коэффициент - раз плюнуть.
> Может быть проще договориться, что первая точка это всегда начальная, вторая - всегда конечная?
Можно и так, но это может быть не удобно при некоторых гуях, например.
Сообщение слишком длинное. Полная версия.
>> No.49064 Ответ
>>49063
> Чо? (пикрелейтед)
> (a1 && a2) && (a3 && a4)

Лол, ты продемонстрировал короткозамкнутость bool && bool, а не A && A.

>>48918

> Да можно вообще макросы MAX(a, b) ((a > b) ? a : b) использовать. Почему это небезопасно и не один нежопорукий программист так не делает, интересно.

Oh really?

https://github.com/mpv-player/mpv/blob/7dd69ef77c6aa80067c13f76aa0b78d63fbc4eda/common/common.h#L36
>> No.49065 Ответ
>>48832
> Вот допустим есть public private protected модификаторы доступа т.е. ограничения на то, откуда какой метод можно вызывать. public можно вызывать отовсюду, private только для методов из числа public, а protected ... protected становится private при наследовании, притом наследований может быть 3 вида - тоже public, private, protected... Зачем всё это? Чем это лучше просто кучи функций, которые могут просто вызывать другие функции и работать с какими-то структурами?
>

Модификаторы доступа нужны для удобства. Когда у тебя в проекте будет сотня классов с тысячами переменных и методов ты поймешь
>> No.49067 Ответ
>>49063
> Нет, это хорошо. Хоть ты и про повороты ничего не говорил, но это элементарно добавляется одним методом, в котором координаты концов конвертятся в полярные, поворачиваются и конвертятся обратно в декартовы.
Если я сказал что нужны декартовы и полярные, это значит что нужны декартовы и полярные. Если ты говоришь "нет, полярные ненужны, будем все делать в декартовых. Пусть опорной будет декартова, так как полярные - хуета." то ты провалил задание.
> Лолнет, вся дополнительная работа - конвертация туда и обратно.
Иногда эта дополнительная работа может очень много времени занимать, если надо повернуть кучу точек относительно начала координат.
> Имеет. Это в сишке есть только тупые структуры без операторов, а в ООП есть классы, которые могут инкапсулировать в себе что угодно и предоставлять API, в том числе и Foo::operator ==. То, что у класса могут быть кастомные операторы, вытекает из парадигмы класса.
Причем тут сишка и плюсы вообще? Я говорю об ООП. Если очень хочется поговорить о сишке и плюсах, могу создать новый тред. Вон в хаскеле можно вообще свои новые операторы добавлять и выставлять им приоритеты, где там ООП?
> > невозможность сделать short-circuit evaluation для && и || при их перегрузке
> Чо? (пикрелейтед)
https://stackoverflow.com/questions/25913237/is-there-actually-a-reason-why-overloaded-and-dont-short-circuit
> > невозможность вводить свои новые операторы
> Нинужно
Очень аргументированно. Я так тоже могу, смотри: ООП - нинужно.
> Вот поэтому хачкелем кроме полутора отмороженных никто не пользуется. Играются в свои игрушки, а нахрена - непонятно.
>>49063
> Нет, это хорошо. Хоть ты и про повороты ничего не говорил, но это элементарно добавляется одним методом, в котором координаты концов конвертятся в полярные, поворачиваются и конвертятся обратно в декартовы.
Если я сказал что нужны декартовы и полярные, это значит что нужны декартовы и полярные. Если ты говоришь "нет, полярные ненужны, будем все делать в декартовых. Пусть опорной будет декартова, так как полярные - хуета." то ты провалил задание.
> Лолнет, вся дополнительная работа - конвертация туда и обратно.
Иногда эта дополнительная работа может очень много времени занимать, если надо повернуть кучу точек относительно начала координат.
> Имеет. Это в сишке есть только тупые структуры без операторов, а в ООП есть классы, которые могут инкапсулировать в себе что угодно и предоставлять API, в том числе и Foo::operator ==. То, что у класса могут быть кастомные операторы, вытекает из парадигмы класса.
Причем тут сишка и плюсы вообще? Я говорю об ООП. Если очень хочется поговорить о сишке и плюсах, могу создать новый тред. Вон в хаскеле можно вообще свои новые операторы добавлять и выставлять им приоритеты, где там ООП?
> > невозможность сделать short-circuit evaluation для && и || при их перегрузке
> Чо? (пикрелейтед)
https://stackoverflow.com/questions/25913237/is-there-actually-a-reason-why-overloaded-and-dont-short-circuit
> > невозможность вводить свои новые операторы
> Нинужно
Очень аргументированно. Я так тоже могу, смотри: ООП - нинужно.
> Вот поэтому хачкелем кроме полутора отмороженных никто не пользуется. Играются в свои игрушки, а нахрена - непонятно.
Вообще-то у хаскеля и прочих ФП языков есть своя ниша, в которой они востребованы.
> > Если же у тебя прямые и лучи хранят две точки, тебе нужно будет выполнять дополнительную работу по определению угла, что неэффективно.
> Это несущественно, в каких координатах хранить - определяется по задачам. Если на сотню задач с декартовыми координатами придется одна задача по высчитыванию угла, то и хрен бы с ним. Да и подсчитать угловой коэффициент - раз плюнуть.
Это существенно. Я написал что нужны декартовы и полярные координаты. Я ж не написал "нужны декартовы, а полярные там как-нибудь через декартовы можно сделать, типа инициализировать их как порярные, но хранить как декартовы". А еще кроме полярных и декартовых есть много чего еще, например биполярные, параболические, эллиптические... И определенный способ представления координат может быть выгоден для проведения определенных преобразований над точками, заданными в такой системе координат, так что тупо хранить все в декартовых и потом каждый раз конвертить туда-сюда может быть просто глупо.
Сообщение слишком длинное. Полная версия.
>> No.49069 Ответ
>>49064
> Лол, ты продемонстрировал короткозамкнутость bool && bool, а не A && A.
Это ты серьезно сейчас предлагаешь писать говнокодище, где && возвращает не bool?
> Oh really?
Собственно, сразу видно сишный говнокод. За одно только
#define CONTROL_OK 1
#define CONTROL_TRUE 1
#define CONTROL_FALSE 0
#define CONTROL_UNKNOWN -1
#define CONTROL_ERROR -2
#define CONTROL_NA -3
автора надо выебать шваброй. Так даже на сях пишут только джуны.


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.43511 Ответ [Открыть тред]
Файл: 599716131.png
Png, 77.78 KB, 317×372 - Нажмите на картинку для увеличения
edit Find source with google Find source with iqdb
599716131.png
Предыдущий тред: >>39226
374 posts are omitted, из них 36 с файлами. Развернуть тред.
>> No.48989 Ответ
>>48982
Не слушай >>48987, он неадекват, как-то много тут их завелось.
Юзанье unique_ptr - хорошая практика, помогает избежать утечек памяти и обращений к уже удаленным объектам, трахоебенья с делитами при выходе из зоны видимости и пр.
Если возникает необходимость использовать shared_ptr, то, скорее всего, косяк в архитектуре программы. При шаред птрах становится нихрена не понятно кто владеет объектом~, и кого за него пиздить~.
weak_ptr - не встречал ни одного оправданного использования, на ум приходят только крайне специфические и костыльные варианты.

Насчет быстродействия - да, unique_ptr быть может чутка медленнее, вообще будет зависеть от компилятора и звезд на небе, и тормозить софтина будет точно не из-за них. Но если тебя это смущает, то нахер плюсы, переходи на асм, там такого точно не будет.
>> No.48990 Ответ
>>48989
48982кун
> Не слушай >>48987, он неадекват, как-то много тут их завелось.
чилл плиз

> Если возникает необходимость использовать shared_ptr, то, скорее всего, косяк в архитектуре программы.
я вообще не пользуюсь shared_ptr, я пользуюсь классическими указателями. Тут я спрашиваю чтобы выяснить зачем они собственно нужны кроме как для того чтобы лишний раз не писать free or delete.

> Но если тебя это смущает, то нахер плюсы, переходи на асм, там такого точно не будет.
Собственно я и так плюсами не пользуюсь, в основном С , иногда asm.

ps:и вообще профессионально не занимаюсь программированием, для меня это скорее хобби, и поэтому особо практичность в разработке не интересует(хотя от лекции бы не отказался), а интересует принципы и механизмы как сделать чтобы работало хорошо, а не как сделать быстро чтобы работало нормально.
>> No.48991 Ответ
>>48990
> Тут я спрашиваю чтобы выяснить зачем они собственно нужны кроме как для того чтобы лишний раз не писать free or delete.
Ускорение разработки, уменьшение количества ошибок, лучший контроль памяти, etc.
>> No.48992 Ответ
>>48991
понято,сяп
>> No.49019 Ответ
>>48990
> Собственно я и так плюсами не пользуюсь, в основном С
Осторожно интересуюсь: а ты еще здесь?
>> No.49025 Ответ
>> No.49027 Ответ
>>49025
Посовету че-нить по Вин АПИ для чистой сишки, чтобы и почитать, и "скачать-бесплатно-без-смс-и-регистрации". И оптимальный конпелятор для 32-битных приложений, GCC под венду идет в пакете MinGW, а там интернет-инсталлятор, и он не хочет ставиться на 32-битные некромашины.
>> No.49029 Ответ
>>49027
> Посовету че-нить по Вин АПИ для чистой сишки, чтобы и почитать, и "скачать-бесплатно-без-смс-и-регистрации".
MSDN
> И оптимальный конпелятор для 32-битных приложений, GCC под венду идет в пакете MinGW, а там интернет-инсталлятор, и он не хочет ставиться на 32-битные некромашины.
https://mingw-w64.org/doku.php у меня нормально ставится и работает на 32-битной XP. Или у тебя там что-то древнее XP?
>> No.49035 Ответ
>>49027
> Вин АПИ
Нинужна
> GCC под венду идет в пакете MinGW, а там интернет-инсталлятор, и он не хочет ставиться на 32-битные некромашины.
Вместе с QtCreator вполне ставится же. Про другие IDE см. п. 1.
>> No.49039 Ответ
>>49027
ну винапи я изучал по интернетам + как сказал >>49029 MSDN. с проблемой установки mingw не сталкивался, хотя вроде бы ставил на 32x win7.
>>49035
> Нинужна
ну хз


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" и написал свой код, но он не работает


[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/ ] [ Главная | Настройки | Закладки | Плеер ]