[ /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, code, flash, video, text, archive, image, vector, music
  • Тред перестает подниматься после 500 сообщений.
  • Треды с числом ответов более 100 не могут быть удалены.
  • Старые треды перемещаются в архив после 40 страницы.

No.42650 Ответ [Открыть тред]
Файл: hellodob.pas.png
Png, 17.52 KB, 646×428 - Нажмите на картинку для увеличения
edit Find source with google Find source with iqdb
hellodob.pas.png
В этом треде мы будем помогать новичкам с решением элементарных задач.
Говорить о том, что %названиеЯзыка1% лучше %названиеЯзыка2%, мы здесь не будем, для этого есть другие треды.
Предыдущий: >>28288
254 posts are omitted, из них 38 с файлами. Развернуть тред.
>> No.49295 Ответ
>>49294
Я разгребаю кучку после 300-400 строк в разные файлы вне зависимости от языка, после 300 строк становится очень трудно читать.
По той же причине разбиваю функции больше одного экрана.

Когда писал на scheme, идеальная функция держала в себе 5-7 строчек, неидеальная - 15-20.
Возможно, именно поэтому я не могу по-хорошему ни в Си, ни в большие проекты.
Как вы вообще держите в голове огромные кодообъёмы?
>> No.49305 Ответ
>>49295
Никак не держим. Ты примерно знаешь, что у тебя происходит, а с конкретикой разбираешься на месте. Для навигации есть Ctrl+F и Code Folding.
> Когда писал на scheme, идеальная функция держала в себе 5-7 строчек, неидеальная - 15-20
Это вот ересь. Все вот эти мартины с дядябобами кормят вас говном с ложечки. Надо помнить, что они энтерпрайзники, и стандарты хорошего кода у них энтерпрайзные.

Эти двадцать строчек на бумаге выглядят хорошо. Открываешь ты файл - а у тебя там вместо функции на двести строк одна на двадцать, которая полностью состоит из вызовов функций помельче. И всё вроде бы хорошо и красиво - у тебя есть куча мелких функций, которые "делают одно дело и делают его хорошо" - пока что-то в этой функции не ломается. А вот когда оно ломается, то оказывается, что взять и прочитать одну функцию на двести последовательных строчек - это проще, чем сделать то же самое, но когда эти двести строчек размазаны по всему файлу. Зато на первый взгляд, конечно, не страшно - все функции маленькие же, легко разобраться будет же.

В общем, надо меньше надрачивать на красоту кода и больше кода, собственно, писать. Удивительно, но это в итоге приводит к более лучшему коду, чем когда ты "думаешь над архитектурой", но это тема для другого раза.
>> No.49317 Ответ
>>49305
Нет, я не знаю ни примерно, ни конкретно. А Code Folding вообще слишком страшная штука, чтобы её использовать, потому что всё время, как её используешь, противоестественным образом хочется посмотреть под спойлер я думаю, таких людей много.

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

Не пони.

Просто на Scheme оно так натурально и выглядит — больше 5-20 строк особо писать не хочется и смысла нет, хотя в исходниках можно было спокойно увидеть функции на 100 и больше строк. Но мне много не приходилось писать. Но макросы на 40 строк вполне себе были со всеми зависимостями внутри.

Трейсбэков на много вызовов у меня пока не было, в любом случае.

Что-то в функции поломаться не может, если пишешь чистую функцию. А уж когда сломается верхний ряд — это, ясное дело, придётся лезть внутрь, но не особо глубоко. И ты примерно понимаешь, что по отношению к верхнему рядо могло поломаться.
>> No.49319 Ответ
>>49305
> Ты примерно знаешь, что у тебя происходит
А коллега, которого попросили править твой код, понятия не имеет. Да ты и сам через полгода не помнишь.
> Надо помнить, что они энтерпрайзники, и стандарты хорошего кода у них энтерпрайзные.
То есть тебя интересуют только маленькие проекты-однодневки, которые ты будешь писать один и никого к ним не подпустишь? Как лабы в универе?
> А вот когда оно ломается, то
То ты проверяешь результаты выполнения отдельных функций, не читая их. А потом уже переходишь к той, которая неверно работает. А прочтёшь ты 300 строк и с ходу не сможешь уложить всё в голове.
> В общем, надо меньше надрачивать на красоту кода и больше кода, собственно, писать. Удивительно, но это в итоге приводит к более лучшему коду, чем когда ты "думаешь над архитектурой", но это тема для другого раза.
Мой опыт говорит об обратном.
>> No.49320 Ответ
>>49317
> Не пони.
Что ты не пони? Работа за деньги -- это для быдла. Ты должен сидеть дома, двачевать капчу и писать минипрограммы только ради своего удовольствия. Денег у мамы попроси лучше.
>> No.49321 Ответ
>>49317
> я не знаю ни примерно, ни конкретно
Под "примерно" я имею в виду, что ты знаешь, что в список элемент тебе добавляет функция listinsert, поэтому когда тебе надо, ты делаешь ctrl+f listin[enter], а там на месте ориентируешься.
> больше 5-20 строк особо писать не хочется
А это, уважаемый, потому что Вы пишете на, простите, нечитаемом скобкопоносе - потому и не хочется. Я вот книжку сейчас читаю про схемку, и там есть эксерсайзы с тремя звёздочками (звёздочки - сложность, выше трёх я ещё ни разу за пять с половиной глав не видел), которые делаются в одну строчку на окамле. Схемщики - это вообще особая порода забавных зверушек, но я про них сейчас не хочу.
>>49319
Энтерпрайзный "красивый код" - это абсолютно стандартный код (отсюда и все эти паттерны, даже там, где они не нужны; отсюда же архитектурные астронавты и т.д.), который тебя надрачивают писать в колледже/университете (и твоему работодателю не нужно тратить время на обучения тебя). Это такой код, который только что нанятая макака сразу же начнёт расширять и дописывать, не тратя деньги на его понимание. Делается это всё затем, чтобы можно было вместо повышения зарплаты просто уволить старых макак, набрать новых (за полцены от старых) и не потерять прибыли в процессе. Была где-то метрика: энтерпрайзный программист пишет в год три тысячи пятьсот строк кода. Джонатан Блоу где-то писал, что типичная 2д инди-игра имеет примерно 90000 (нет, я не добавил лишний нолик) строк кода. Сделай математику и посчитай, когда ты с такими стандартами придёшь к успеху.
> коллега
>>49317
> я не знаю ни примерно, ни конкретно
Под "примерно" я имею в виду, что ты знаешь, что в список элемент тебе добавляет функция listinsert, поэтому когда тебе надо, ты делаешь ctrl+f listin[enter], а там на месте ориентируешься.
> больше 5-20 строк особо писать не хочется
А это, уважаемый, потому что Вы пишете на, простите, нечитаемом скобкопоносе - потому и не хочется. Я вот книжку сейчас читаю про схемку, и там есть эксерсайзы с тремя звёздочками (звёздочки - сложность, выше трёх я ещё ни разу за пять с половиной глав не видел), которые делаются в одну строчку на окамле. Схемщики - это вообще особая порода забавных зверушек, но я про них сейчас не хочу.
>>49319
Энтерпрайзный "красивый код" - это абсолютно стандартный код (отсюда и все эти паттерны, даже там, где они не нужны; отсюда же архитектурные астронавты и т.д.), который тебя надрачивают писать в колледже/университете (и твоему работодателю не нужно тратить время на обучения тебя). Это такой код, который только что нанятая макака сразу же начнёт расширять и дописывать, не тратя деньги на его понимание. Делается это всё затем, чтобы можно было вместо повышения зарплаты просто уволить старых макак, набрать новых (за полцены от старых) и не потерять прибыли в процессе. Была где-то метрика: энтерпрайзный программист пишет в год три тысячи пятьсот строк кода. Джонатан Блоу где-то писал, что типичная 2д инди-игра имеет примерно 90000 (нет, я не добавил лишний нолик) строк кода. Сделай математику и посчитай, когда ты с такими стандартами придёшь к успеху.
> коллега
Разберётся - не маленький. Собственно, вся разница тут лишь в том, что функции находятся в одном файле, а не в десяти. А я? Ну, мне вот понадобилось перед новым годом посмотреть, как я летом одну штуку написал - я открыл файл в 4.5к строк кода, нашёл, скопировал. На всё ушло минуты три-четыре. А вот был бы у меня проект разбит на файлы - я бы в них копался в поисках, где эта функция находится, в два раза дольше. Это, возможно, был сарказм. Или нет. Как мы знаем, в каждой шутке есть доля шутки.
> То ты проверяешь результаты выполнения отдельных функций, не читая их.
Вот только оно так не работает за пределами лаб, задачек из книг/курсов по программированию и, может быть, веба. Обычно в реальных программах логика сложная, и случается, что функции все вроде бы работают правильно, а вот результат выходит не тот. Я, правда мало писал реальных программ (в основном игры, поэтому моё восприятие может быть немного смещено в ту сторону), но в тех, которые писал, так и получалось. Возможно, в вебе можно просто сделать композицию из набора чистых функций - и пущай оно тормозит, - но там свой мирок, и я туда не хочу даже лезть.
> Мой опыт говорит об обратном.
Я мог бы тут написать свой опыт (и немного из подсмотренного от других программёров), но это получится немаленький такой пост в бложик, и я не уверен, что я хочу это сейчас делать. Так что давай просто согласимся, что ты неправ, и закончим на этом?
Сообщение слишком длинное. Полная версия.
>> No.49323 Ответ
>>49321
> сразу же начнёт расширять и дописывать, не тратя деньги на его понимание
Ну вот видишь! Ты всё понимаешь прекрасно! А если бы и не деньги, так слово "деньги" на слово "время" замени. Ну если ни деньги, ни время значения не имеют, то конечно практики красиво кода не нужны становятся, это ежу понятно должно быть.
> просто уволить старых макак, набрать новых (за полцены от старых) и не потерять прибыли в процессе
А если макака не будет уволена а сама свалит? Да или просто сдохнет. Или в отпуск/на больничный отправится. Почему это заменяемость кодеров не нужна?
Мне тебе ничего доказывать не надо, всё ты сам сказал нормально.

> Была где-то метрика: энтерпрайзный программист пишет в год три тысячи пятьсот строк код
Чет маловато, честно говоря не верится.
> что функции все вроде бы работают правильно, а вот результат выходит не тот
У меня в голове не укладывается, как это. Как-то ты их не так дробишь. Ну если они логически настолько связны, что они не разбиваются, то тогда и впрямь бы я их не стал разбивать. Разбивать надо так, чтоб они на самом деле были отделены, иначе нет смысла.
>> No.49324 Ответ
>>49323
Дополнение: вот не понимаю я. Я поискал мельком в Гугле, как торвальдс пишет. Написано, что он тоже пишет короткие функции. Даже на Си. Да, там есть goto(правильно уместно и понятно использованные) и всякие нужные для Сишного кода странности. Но всё равно функции короткие! Что-то ты мне тут загоняешь.
>> No.49325 Ответ
>>49321
> я имею в виду, что ты знаешь
Нет. Поиск я и так могу делать тогда, когда мне надо. Ты привёл только один пример понимания большого куска кода. Их чуть больше. Я не могу уложить в голову большую картину. Поиск по мере вопросов накоплению большой картины в голове не способствует. Кажется, вот это всё (описание базовых вещей) должно лежать комментарием наверху, но мне лень. Поделом мне.

> А это, уважаемый, потому что Вы пишете на, простите, нечитаемом скобкопоносе
Что же, уважаемый, вы сейчас читаете книжку про нечитаемый скобкопонос и пишете на нём. Добро пожаловать в схемеры, вам не отмыться.
> эксерсайзы с тремя звёздочками (звёздочки - сложность, выше трёх я ещё ни разу за пять с половиной глав не видел), которые делаются в одну строчку на окамле
Окамл и схема немного разные задачи выполняют. Где-то в предисловии вашей книжки (или в другом месте) есть рассказ про двух людей, делавших интерпретаторы лиспа на лиспе, которые займут меньше строчек, чем аналог для OCaml. Вы вот сейчас теми же словами говорите: мой язык лучше, потому что «вот это вот» на нём делается в одну строчку. Идите тогда на JS, там для всего нужно меньше строчек.
Да и, честно говоря, мне и на окамле особо не хочется писать больше чем на 20-40 строчек. Выше было то же самое про Си. Вы же нашли себе красную тряпку и полезли с ней бодаться. Вы молодец. Бодайтесь дальше.

Ещё хотелось бы спросить, как связан энтерпрайз и scheme, но как-то смысла особого нет. И кто такие мартины с дядябобами.
>> No.49331 Ответ
>>49323
> так слово "деньги" на слово "время" замени
Тут оно немного не так. Речь не о том, что деньги не тратятся, речь о том, что деньги работодателя не тратятся. Это немного разные вещи. Деньги на это уже уплачены той самой макакой, потому что колледжи, которые этому учат, у них все платные. Плюс этот код надо ещё написать. Работодатель готов потратить немного данег вначале, но сэкономить in the long run. Ты? Ну, тут решай сам. Лично я предпочитаю выдать три тысячи строк осмысленного кода, а не две тысячи пятьсот бойлерплейта и пятьсот логики.
>>49324
Суть не в том, чтобы писать длинные функции. Суть в том, что если у тебя есть функция, которая делает пять вещей последовательно, то часто лучше написать эту функцию так, чтобы в ней делались эти пять вещей последовательно, а не разбивать её на пять мелких функций. Суть в том, чтобы не выносить код в функции, пока тебе это не нужно. Я сейчас даже пришёл к тому, что пока код три-четыре раза не скопипащу, то функцию из него не делаю. Потому что до того, как ты наделаешь копипастов, ты не можешь предусмотреть все возможные использования этой функции. Иногда получается, что вынести какой-то кусок кода в функцию можно, но это получится хайерордерная функция в шесть строк, принимающая ещё четыре функции, которые её кастомизируют. Если ты сделал этот код функцией изначально, то тебе при каждой правке надо будет её рефакторить, потом идти в места вызова и смотреть, чтобы там ничего не сломалось, а в конце всё всё равно закончится копипастой. Усилия потраченные вникуда.
>>49323
> так слово "деньги" на слово "время" замени
Тут оно немного не так. Речь не о том, что деньги не тратятся, речь о том, что деньги работодателя не тратятся. Это немного разные вещи. Деньги на это уже уплачены той самой макакой, потому что колледжи, которые этому учат, у них все платные. Плюс этот код надо ещё написать. Работодатель готов потратить немного данег вначале, но сэкономить in the long run. Ты? Ну, тут решай сам. Лично я предпочитаю выдать три тысячи строк осмысленного кода, а не две тысячи пятьсот бойлерплейта и пятьсот логики.
>>49324
Суть не в том, чтобы писать длинные функции. Суть в том, что если у тебя есть функция, которая делает пять вещей последовательно, то часто лучше написать эту функцию так, чтобы в ней делались эти пять вещей последовательно, а не разбивать её на пять мелких функций. Суть в том, чтобы не выносить код в функции, пока тебе это не нужно. Я сейчас даже пришёл к тому, что пока код три-четыре раза не скопипащу, то функцию из него не делаю. Потому что до того, как ты наделаешь копипастов, ты не можешь предусмотреть все возможные использования этой функции. Иногда получается, что вынести какой-то кусок кода в функцию можно, но это получится хайерордерная функция в шесть строк, принимающая ещё четыре функции, которые её кастомизируют. Если ты сделал этот код функцией изначально, то тебе при каждой правке надо будет её рефакторить, потом идти в места вызова и смотреть, чтобы там ничего не сломалось, а в конце всё всё равно закончится копипастой. Усилия потраченные вникуда.
По большому счёту, то что я тут пропагандирую - это всем известный древний YAGNI (если не вдаваться в подробности).
Про линукс не знаю, но если ты посмотришь на продуктивных программистов, которые ведут несколько проектов, имеют огромные гитхабы, работают на работе, а по выходным ещё и на людумдары игры пишут, то ты увидишь, что если пользоваться стандартами из книжек, то их код можно легко назвать говнокодом. Нотч - хороший пример. Даже уровень говнокодерства измеряется в милли-нотчах, а тем временем он пишет код, который решает задачи; он способен написать майнкрафт за неделю и какую-то хрень на псевдо3д движке за два дня. А адепты красивой архитектуры не способны. Вот и весь аргумент.
>>49325
> Я не могу уложить в голову большую картину
Погоди. Ты знаешь, что твоя программа должна делать? Ну, вот это и есть твоя большая картина.
> вы сейчас читаете книжку про нечитаемый скобкопонос и пишете на нём
А я на нём не пишу. А читаю потому, что кто-то когда-то решил, что использовать нечитаемый скобкопонос для обучения студентов - это хорошая идея. С тех пор и повелось, что почти все книжки про языки, функциональщину, конпеляторы и интерпретаторы используют скобки. Я бы хотел себе другую вселенную, но щито поделать.
> займут меньше строчек, чем аналог для OCaml
Только если парсинг считать. Да и то, я не уверен. А уж если говорить про читабельность окамла против схемовского жонглирования кадддрами и кадаврами...
И дело тут не в том, что в одну строчку, а в том, что эксерсайз с рейтингом "максимальная сложность" и в одну строчку. И это когда они должны были бы учить выбирать инструмент под задачу.
Алсо, мл - синтаксический сахарок с типами над лиспом, но я вам этого не говорил.
Сообщение слишком длинное. Полная версия.


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

2. https://metacpan.org/pod/distribution/Coro/Coro/Intro.pod#The-Real-World-Event-Loops
Почему в первом примере join не блокирует? Вернее, все три join успевают вызваться ещё до завершения первого потока. Стейтменты типа print должны блокировать, даже если Coro::Socket асинхронен сам по себе. Но они даже не выполняются.
2.1 Если Coro::Socket таки асинхронен (не блокирует), почему после него идут принты (те, которые печатают в stdout)? Они же ничего не должны вывести.

3. Рассмотрим следующую лапшу:
use Coro;
use Mojo::Base -strict;

my $thr1 = async {
  my $this = $Coro::current;
  $$this{desc} = "First thread";

  my $i = 0;
1. Coro::rouse_cb создаёт отдельный поток? Вывод дампера не похож на таковой у инстансов класса Coro.

2. https://metacpan.org/pod/distribution/Coro/Coro/Intro.pod#The-Real-World-Event-Loops
Почему в первом примере join не блокирует? Вернее, все три join успевают вызваться ещё до завершения первого потока. Стейтменты типа print должны блокировать, даже если Coro::Socket асинхронен сам по себе. Но они даже не выполняются.
2.1 Если Coro::Socket таки асинхронен (не блокирует), почему после него идут принты (те, которые печатают в stdout)? Они же ничего не должны вывести.

3. Рассмотрим следующую лапшу:
use Coro;
use Mojo::Base -strict;

my $thr1 = async {
  my $this = $Coro::current;
  $$this{desc} = "First thread";

  my $i = 0;
  recurring Mojo::IOLoop 2 => sub { say "1st: ", $i++ };
};

my $thr2 = async {
  my $this = $Coro::current;
  $$this{desc} = "Second thread";

  my $i = 0;
  recurring Mojo::IOLoop 2 => sub { say "2nd: ", $i++ };
};

$_ -> join for ($thr1, $thr2);

start Mojo::IOLoop;
Работает как ожидается, но не из потоков $thr1 и $thr2: они умирают, как только навешивают свои коллбэки на луп, в итоге всё выполняется в одном потоке. Как сделать чтобы в каждом потоке было? Если в каждом эвент луп запускать, он заблокирует.

4. Как работают все эти асинхронные эвент лупы типа Mojo::IOLoop, когда поток всего один? Просто интересно. Coro в числе зависимостей не висит, под капотом они его не пользуют. Там своя имплементация потоков?
Сообщение слишком длинное. Полная версия.
>> No.49282 Ответ
Оказывается в перле (вроде как) есть явная типизация.
`my Foo $foo = new Foo;`
Только я не понимаю, зачем она нужна, если в $foo по-прежнему можно класть что угодно.
Вот, что я пытался сделать:
https://ideone.com/PDf3I5
> sub do_stuff {
> my Bar $instance = shift;
Но в $инстанс также попадает инстанс класса Foo. Я ожидал ошибку компиляции или исключение в рантайме на этом моменте, а случилось просто нихуя, как будто и не указывал я тип.

Я читал про use fields и это не то что мне надо, я всё равно не создаю классы вручную (есть Mojo::Base). Я хочу использовать это именно для валидации аргументов. Такое возможно? Если нет - имеются ли альтернативы, кроме костылей типа if ref $foo eq 'Bar'?
>> No.49288 Ответ
>>49202
1. Нет

2. Нихуя не понел.

3.
> они умирают, как только навешивают свои коллбэки на луп
Потому что им больше нечего делать.
> Как сделать чтобы в каждом потоке было?
Это корутины, т.е. обычные функции с брейкпоинтами в некоторых моментах. На брейкпоинте происходит свитч на другую корутину из текущей. Потом, когда контроль возвращается обратно, выполнение начинается со стейтмента, следующего за спровоцировавшим свитч в прошлый раз. Ос-левел тредов при этом не создаётся и не нужно пытаться использовать этот констракт для одновременного выполнения нескольких неделимых блокирующих тасков, ничего не получится. См. metacpan://pod/threads для этого. Алсо google://preemptive+multithreading (threads) google://cooperative+multithreading (Coro).
Иллюзия параллелизма при помощи коры достигается посредством разбиения длинных тасков на небольшие быстровыполняемые части и постоянный свитч туда-сюда, обычно через Coro::AnyEvent::poll или Coro::rouse_функции. В итоге время с момента завершения первого таска до момента завершения последнего меньше, чем время, суммарно затраченное на выполнение какого-то одного из тасков. Из-за чего и появляется иллюзия, что всё выполнялось одновременно. Обычно это всё равно намного быстрее, чем делать всё по очереди, особенно если таски преимущественно состоят из I/O-операций с коллбэками и каких-то полутора быстрых, хоть и блокирующих, стейтментов между ними. Но параллельно более одного куска кода никогда не выполняется, это важно понимать.

4.
> Как работают все эти асинхронные эвент лупы
>>49202
1. Нет

2. Нихуя не понел.

3.
> они умирают, как только навешивают свои коллбэки на луп
Потому что им больше нечего делать.
> Как сделать чтобы в каждом потоке было?
Это корутины, т.е. обычные функции с брейкпоинтами в некоторых моментах. На брейкпоинте происходит свитч на другую корутину из текущей. Потом, когда контроль возвращается обратно, выполнение начинается со стейтмента, следующего за спровоцировавшим свитч в прошлый раз. Ос-левел тредов при этом не создаётся и не нужно пытаться использовать этот констракт для одновременного выполнения нескольких неделимых блокирующих тасков, ничего не получится. См. metacpan://pod/threads для этого. Алсо google://preemptive+multithreading (threads) google://cooperative+multithreading (Coro).
Иллюзия параллелизма при помощи коры достигается посредством разбиения длинных тасков на небольшие быстровыполняемые части и постоянный свитч туда-сюда, обычно через Coro::AnyEvent::poll или Coro::rouse_функции. В итоге время с момента завершения первого таска до момента завершения последнего меньше, чем время, суммарно затраченное на выполнение какого-то одного из тасков. Из-за чего и появляется иллюзия, что всё выполнялось одновременно. Обычно это всё равно намного быстрее, чем делать всё по очереди, особенно если таски преимущественно состоят из I/O-операций с коллбэками и каких-то полутора быстрых, хоть и блокирующих, стейтментов между ними. Но параллельно более одного куска кода никогда не выполняется, это важно понимать.

4.
> Как работают все эти асинхронные эвент лупы
На каждой итерации лупа по очереди запускается всё то, что на него навешано и ожидает выполнения (коллбэки эвентов). На самом деле запускается оно не одновременно, а друг за другом. Просто очень быстро (для наглядности можно поставить sleep 9999 внутри одного из коллбэков и это парализует всю работу). Ещё мы не ждём I/O - повесили коллбэк и дальше выполняем стейтменты. https://en.wikipedia.org/wiki/Asynchronous_I/O
Сообщение слишком длинное. Полная версия.


No.46281 Ответ [Открыть тред]
Файл: main-qimg-2a7cef12cc63002b267d248611c76e58.png
Png, 782.27 KB, 572×861 - Нажмите на картинку для увеличения
edit Find source with google Find source with iqdb
main-qimg-2a7cef12cc63002b267d248611c76e58.png
И мы продолжаем ликвидацию безграмотности, неспешные беседы и яростные дискуссии вокруг яваскрипта.

Предыдущий тред: >>40541
148 posts are omitted, из них 24 с файлами. Развернуть тред.
>> No.49187 Ответ
Анон, объясни, как работает стэк, очередь и прочие внутренности в ЖС. А то максимум, что я понял, так это то, что асинхронные функции "выпадают" из главного (он же вроде единственный?) потока. Желательно попроще, хоть на примере мужика, срущего с дерева, как в треде о сопротивлении электричества.
>> No.49207 Ответ
>> No.49208 Ответ
>>49187
Хуле тут вообще сложного? Просто функции дергают другие функции как обычно. Когда это закончилось, внешний цикл смотрит нет ли еще каких событий которые нужно обработать и запускает обработку следующего. Ничего не упустил? Может сэкономлю кому 26 минут.
>> No.49224 Ответ
>>49207
>>49208
Вот спасибо, друзья. Наконец-то всё понял!
Но теперь есть следующий вопрос. Есть проект на Vue с Router и Vuex. Проект, естественно, не в одном файле, как новички делают, а в .vue- и .js-файлики (ибо сгенерирован командой vue create).
А теперь вопрос: можно ли взять что-то из Vuex.Store да использовать в .vue-файле (например, переменную из state в качестве счётчика)? Потому что единственное, что я нашёл, это передавать через props, и то - такая цепочка вырастет, что любой новый русский удавится.
капча "знающих скрипт" намекаэ
>> No.49240 Ответ
>>49224
> Проект, естественно, не в одном файле, как новички делают
Так вот почему любая современная перделка рассирается минимум по десяти тысячам файлам - ведь просто складвать код в один файлик - это не тру-супер-про-какир-вей.
>> No.49241 Ответ
1) Если я хочу что-то сохранить между сессиями я пихаю это в localStorage? Или в cache? Или в AppCache? Или в IndexedDB? Я думал есть только localStorage и печенье, а их вон как дохуя. И каждый из браузеров поддерживает какие-то из них, но не все вместе? И что из этого выбрать?
2) Везде где читал про жс говорили, что весь жс из всех скриптов выполняется в одной глобальной луже, и в итоге все попадает в глобальный объект window. Так что не так с service worker'ами? Почему у них какие-то ServiceWorkelGlobalScope? Почему self а не window?
>> No.49243 Ответ
>>49241
> Если я хочу что-то сохранить между сессиями я пихаю это в localStorage?
Да. Везде работает и все про него знают.

> и в итоге все попадает в глобальный объект window
Это если ты, ну... не очень умный и разводишь однофайловую помойку с процедурщиной, думая "а, всё равно недоязык", как, к сожалению, и делает подавляющее большинство особенно всякие доморощенные писатели параше-движков за уважуху в конфе. Если организовать код в виде классов (уточнение: конструкторов), в window попадут только сами классы, и то — если только ты не засунешь их в подобие неймспейса, соорудив последнее из объектов, изнутри какого-нибудь локального скопа.
var Foo = new Object();

(function() {
  Foo.Bar = function() {
    this.baz = 1448;
    this.qux = function() { return 1337 };
  };
})();

>>49241
> Если я хочу что-то сохранить между сессиями я пихаю это в localStorage?
Да. Везде работает и все про него знают.

> и в итоге все попадает в глобальный объект window
Это если ты, ну... не очень умный и разводишь однофайловую помойку с процедурщиной, думая "а, всё равно недоязык", как, к сожалению, и делает подавляющее большинство особенно всякие доморощенные писатели параше-движков за уважуху в конфе. Если организовать код в виде классов (уточнение: конструкторов), в window попадут только сами классы, и то — если только ты не засунешь их в подобие неймспейса, соорудив последнее из объектов, изнутри какого-нибудь локального скопа.
var Foo = new Object();

(function() {
  Foo.Bar = function() {
    this.baz = 1448;
    this.qux = function() { return 1337 };
  };
})();

// Elsewhere...
var instance = new Foo.Bar();
doSomething( instance.baz, instance.qux() );
Ещё глянь на browserify и webpack, в серьёзных проектах без них всё равно никуда.

> Почему self а не window?
self будет ссылкой на воркер. Колбэки для эвентов типа fetch, statechange и прочих (тебя же это смутило?) ты вешаешь именно на него, а не на объект окна, у которого таких эвентов просто нет. window — это не какая-то там самая супер-глобальная и универсальная зарезервированная переменная джаваскрипта, это просто объект, репрезентующий окно браузера.
И зачем тебе воркеры вообще, если не секрет?
Сообщение слишком длинное. Полная версия.
>> No.49244 Ответ
>>49240
Анон прав, так гораздо удобнее: поделил по смыслу и функционалу - и работа в разы легче идёт.
>> No.49253 Ответ
>>49243
Вот вроде сам задал вопрос, а теперь разобравшись, сам отвечаю..

> не очень умный и разводишь однофайловую
По твоему, разные файлы получат разные глобальные объекты, умный? Нет, не получат. Сколько бы файлов не выполнялось, все нормальные файлы не воркеры исполняются в одном и том же глобальном объекте.

> классы, iife
И они попадают в глобальный объект.

> window — это не какая-то там самая супер-глобальная
Именно ей window и является. А у воркеров это WorkerGlobalScope, получающийся через self.
https://developer.mozilla.org/en-US/docs/Glossary/Global_object

В этом и был весь мой вопрос: 'у воркеров отдельный глобальный объект от остальных скриптов?'. И ответ, очень простой, да.

>>49243
Вот вроде сам задал вопрос, а теперь разобравшись, сам отвечаю..

> не очень умный и разводишь однофайловую
По твоему, разные файлы получат разные глобальные объекты, умный? Нет, не получат. Сколько бы файлов не выполнялось, все нормальные файлы не воркеры исполняются в одном и том же глобальном объекте.

> классы, iife
И они попадают в глобальный объект.

> window — это не какая-то там самая супер-глобальная
Именно ей window и является. А у воркеров это WorkerGlobalScope, получающийся через self.
https://developer.mozilla.org/en-US/docs/Glossary/Global_object

В этом и был весь мой вопрос: 'у воркеров отдельный глобальный объект от остальных скриптов?'. И ответ, очень простой, да.

> И зачем тебе воркеры вообще, если не секрет?
Чтобы моя хуйня работала оффлайн: https://jan-white.github.io/my-works/005%20notebook/build/
Может кто умный оценить? Сделал и воркеры, и классы, и iife для динамического определения функций, и промисы, и async функции, в общем, использовал вроде все, что есть в джаваскрипте. Может покидайте, что дальше почитать, чтобы делать лучше. Пока я думаю реакт учить.
Больше всего я хочу узнать, как нормально делать интерактив. У меня это все сделано на data- атрибутах. И это работало нормально до тех пор, пока я не захотел, чтобы одна кнопка закрывала текущую модалку и потом делала кое-что. В итоге надо было повесить на кнопку два атрибута data-action, что невозможно. А даже когда я это обошел, не соблюдалась очередность - сначала срабатывал обработчик на кое-что, а потом закрывалась текущая модалка. Так что понятно, что нормальные люди делают это по-другому. Вопрос - как.
Сообщение слишком длинное. Полная версия.
>> No.49285 Ответ
>>49253
> исполняются в одном и том же глобальном объекте.
> исполняются
> в объекте
> файлы
Серьёзно? Ну ладно.

> Именно ей window и является.
Нет, не является. Ты путаешь джаваскрипт и дом апи.
$ node
> console.log(window);
ReferenceError: window is not defined
>

> моя хуйня
>>49253
> исполняются в одном и том же глобальном объекте.
> исполняются
> в объекте
> файлы
Серьёзно? Ну ладно.

> Именно ей window и является.
Нет, не является. Ты путаешь джаваскрипт и дом апи.
$ node
> console.log(window);
ReferenceError: window is not defined
>

> моя хуйня
404
> думаю реакт учить
Разберись сначала с основами, чтобы не делать таких заявлений, как выше. Серьёзно тебе говорю. Даже если ты просто хочешь деняк поднять - уверенное знание языка будет серьёзным плюсом перед макаками.
Да, и насчёт реакта (и не только). Вот такой https://github.com/Jan-White/my-works/tree/master/004%20catEnergy/source подход организации исходников для реактов не годится. Технически возможен, но не нужен. Не разбивай по технологиям, это бессмысленно. Логичнее будет разбить на компоненты, как в бэм.
Сообщение слишком длинное. Полная версия.


No.43581 Ответ [Открыть тред]
Файл: -.jpg
Jpg, 125.61 KB, 700×500 - Нажмите на картинку для увеличения
edit Find source with google Find source with iqdb
-.jpg
Новый традиционный тред Доброчана, в котором мы будем постить каждый раз, когда заходим в /s/ дабы поделиться своими хоббипроектами, поговорить о смежных с программингом вопросах, поспорить на тему X vs Y, пообсуждать синтаксический сахар разных ЯП. Как обычно можно постить и в другие моменты, обсуждать разные темы. Всё во имя того, чтобы зашедший code monkey не чувствовал себя одиноким. Каждому зашедшему по чашечке скумы за мой счёт.

Предыдущий тред: >>40630
328 posts are omitted, из них 35 с файлами. Развернуть тред.
>> No.48374 Ответ
Файл: 1355315146509.png
Png, 0.50 KB, 10×10 - Нажмите на картинку для увеличения
edit Find source with google Find source with iqdb
1355315146509.png
>>48373
Взлольнул тут.
>> No.49192 Ответ
Файл: -.png
Png, 319.85 KB, 2518×1024 - Нажмите на картинку для увеличения
edit Find source with google Find source with iqdb
-.png
Если резюмировать, то будет как-то так. Что-то походящее на рф но в области /s/.
Хотел написать длинно, но решил, что бессмысленно.
В итоге: с детства (житое в 90е) благодаря отцу имея ZX Spectrum мечтал пилить игори.
Первую книгу по программированию и, собственно, возможность программировать обрел в 2003 году, когда учился в 10м классе. Был комп и по совету знакомого отцу программиста купили мне Лафоре (ООП в C++).
Пока учился в школе и ВУЗе (на программера) мечтал и стремился прогать игори - изучил DirectX (9й на тот момент) и в большей степени OpenGL (до уровня шейдеров) изучал движок Ogre, колупал простенький HGE, по возможности, но время требовалось на учебу и подработки.
После ВУЗа (армейки не было - пороки сердца). Устроился на работу - после чего наступила полоса беспамятства и тотального въебывания, базы данных, нескончаемые ETL, скрипты, окошечные набивалки для операторов. И всё. Ни желания, ни сил у меня не было ворошить свой мозг еще после работы, а время шло.
Сейчас я осознаю, что знания устарели - сейчас никто не будет писать игру с полностью своим движком - думаю закидают говном просто. Тем более DX весьма обновился, OpenGL пододвинулся для Vulkan - да и в этом нет уже смысла, когда везде это либо Unreal Engine либо Unity - даже для простых ДВУМЕРНЫХ ИГОР КАРЛ!
Если резюмировать, то будет как-то так. Что-то походящее на рф но в области /s/.
Хотел написать длинно, но решил, что бессмысленно.
В итоге: с детства (житое в 90е) благодаря отцу имея ZX Spectrum мечтал пилить игори.
Первую книгу по программированию и, собственно, возможность программировать обрел в 2003 году, когда учился в 10м классе. Был комп и по совету знакомого отцу программиста купили мне Лафоре (ООП в C++).
Пока учился в школе и ВУЗе (на программера) мечтал и стремился прогать игори - изучил DirectX (9й на тот момент) и в большей степени OpenGL (до уровня шейдеров) изучал движок Ogre, колупал простенький HGE, по возможности, но время требовалось на учебу и подработки.
После ВУЗа (армейки не было - пороки сердца). Устроился на работу - после чего наступила полоса беспамятства и тотального въебывания, базы данных, нескончаемые ETL, скрипты, окошечные набивалки для операторов. И всё. Ни желания, ни сил у меня не было ворошить свой мозг еще после работы, а время шло.
Сейчас я осознаю, что знания устарели - сейчас никто не будет писать игру с полностью своим движком - думаю закидают говном просто. Тем более DX весьма обновился, OpenGL пододвинулся для Vulkan - да и в этом нет уже смысла, когда везде это либо Unreal Engine либо Unity - даже для простых ДВУМЕРНЫХ ИГОР КАРЛ!
Госп-ди Б-же мой! Я вижу, что теперь я биомусор, т.к. я не знаю, за что мне взяться и есть ли в этом какой смысл. Требования у игроков очень высоки и мне за ними не поспеть. Алсо идея инди-игр (созданых малой группой разработчиков) теперь очернена ебаными корпорациями, когда какой-нибудь EA имеет игру на стиме с тэгом ИНДИ блядь.
Какого чертова черта? И что мне делать, если желание пилить игори есть даже в 30 лет, но знания устарели?
Сообщение слишком длинное. Полная версия.
>> No.49197 Ответ
>>49192
> Тем более DX весьма обновился, OpenGL пододвинулся для Vulkan - да и в этом нет уже смысла, когда везде это либо Unreal Engine либо Unity - даже для простых ДВУМЕРНЫХ ИГОР КАРЛ!
> Госп-ди Б-же мой! Я вижу, что теперь я биомусор, т.к. я не знаю, за что мне взяться и есть ли в этом какой смысл.

Не парься, забудь про C++, бери чистый C + SDL2, напиши рогалик или примитивный платформер под свою любимую ОС. Никаких анрилов и юнити-хуюнити для этого тебе не потребуется.
>> No.49203 Ответ
>>49192
Линейная алгебра и дифференциальная геометрия не устаревают. Ты можешь в математику? Или твои знания ограничиваются glBegin glEnd?
Знание движков не отменяет необходимости понимания. Наоборот, понимание позволяет быстро учить новые вещи.
Да, и заодно осиль Rust, потом спасибо скажешь.
>> No.49223 Ответ
>>49192
> желание пилить игори есть даже в 30 лет, но знания устарели?
Осспаде да какие к собакиным мамкам знания с юнькой и уечем яхз.

Стенания и плач на бордах и форумах.
И вот никто не желает признаваться себе что не код делаетб игру, а художник.
>> No.49233 Ответ
Где фрилансить блеать?
>> No.49234 Ответ
>>49233
Там.
>> No.49236 Ответ
Анон, а ты обычно читаешь оригинал или перевод? Да, тема касается именно айти, потому что худлит можно и на польском почитать, но мы не об этом. В последнее время почитываю только оргиналы, но с каждым разом есть страх, страх что-то понять не так или понять что-то не до конца. Особенно учитывая то, что я постоянно пользуюсь словарём(в моём случае — клик по незнакомому слову), буквально на каждой странице.
>> No.49237 Ответ
>>49236
Переводы отстают от оригинала, могут обосраться с собственно переводом и вычиткой-проверкой, можеть не быть ебук версии, а только говноскан. Плюсов и нет, тащемта.

Литературностей и сложностей в плане языка в такой литературе мало, разве что автор попадется, любящий попиздякать.
Так что продолжай, со временем привыкнешь.
>> No.49238 Ответ
>>49237
Спасибо, анон, буду продолжать. :3


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 с нуля, то есть вообще ни с какими языками программирования до этого дела не имел
Сообщение слишком длинное. Полная версия. 10 posts are omitted, из них 2 с файлами. Развернуть тред.
>> 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.49128 Ответ
Книги на русском:
Язык программирования Go - 2016 (Брайан У. Керниган)
Марк Саммерфильд - Программирование на языке Go - 2013

Книги на английском:
Cox-Buday K. - Concurrency in Go - 2017
Writing An Interpreter In Go
Network Programming with Go
go-programming-blueprints-2nd
go-in-practice
go-in-action

Каналы в телеге:
https://t.me/golangdigest
https://t.me/gophernews
Книги на русском:
Язык программирования Go - 2016 (Брайан У. Керниган)
Марк Саммерфильд - Программирование на языке Go - 2013

Книги на английском:
Cox-Buday K. - Concurrency in Go - 2017
Writing An Interpreter In Go
Network Programming with Go
go-programming-blueprints-2nd
go-in-practice
go-in-action

Каналы в телеге:
https://t.me/golangdigest
https://t.me/gophernews
https://t.me/golanglibrary

Полезное:
dou.ua/lenta/tags/Go%20дайджест
dou.ua/lenta/articles/senior-go
https://www.jetbrains.com/research/devecosystem-2018/go/
+ ищите слак каналы, русско- и украино- язычный относительно активные, там постятся статьи и новости.

Где писать:
VS Code, GoLand, Vim, Sublime, Atom.

Без английского тут делать нечего, язык развивающийся, всё публикуется на английском, русскоязычное комьюнити относительно маленькое, какие-то статьи на русском публикуются в небольшом количестве, да и то - в основном переводы.

Что-то отсюда даже можно добавить в шапку, а лучше сделать её в гите, а в треде кидать ссылку.

>>48997
Какая предметная область, какие фреймворки/либы/бд юзаете, как тестирование делаете? Как архитектуру приложений определяете - юзаете ли паттерны, как всё по сравнению с энтерпрайс-разработкой на джаве/шарпах? Почему на проекте юзаете го?

>>48145
Да, 4-тый курс универа, го - основной язык, особо сложного ничего на нем не писал. Рассылаю резюме на галеры, джуновакансий почти нихуя, хр-юши игнорят в основном, следовательно, из вкатывальщиков-джунов на го у контор выбор есть.
Сообщение слишком длинное. Полная версия.
>> No.49226 Ответ
Начал изучать этот ваш Го, в дополнение к няшному Питону
Пока всё выглядит более-менее знакомо, тем более когда-то был опыт писательства на C. Что почитать для более глубокого погружения и знакомства с годными практиками разработки? Какие хорошие библиотеки для веба есть? Слышал что-то про gin, напоминает фласк по своей философии. Но когда-то читал, что считается кошерным писать собственный костыль^W фреймворк под свои задачи.
>> No.49227 Ответ
>>49226
gin - это лучший роутер, просто бери его и не парься. Книжек не посоветую, но в официальной документации есть раздел Effective Go, который почти никто не читает, а он довольно винрарный.
>> No.49228 Ответ
>>49227
Ок, спасибо.
> Effective Go
Выглядит интересно, наверну.
Не зря ждал, а то на дваче конечно активность выше, по преимущественно из срача состоит


No.48615 Ответ [Открыть тред]
Файл: 1.jpg
Jpg, 49.89 KB, 1024×600 - Нажмите на картинку для увеличения
edit Find source with google Find source with iqdb
1.jpg
Предлагаю челендж, где каждую неделю мы будем выполнять задания.

Придумал разные уровни сложности:
1 - как самый простой.
5 - самый сложный.

Первые задания от меня, на правах ОПа!

C3: Реализация синтезатора bytebeat, воспроизводящего аудио непосредственно с помощью OpenAL или аудио вашей платформы (e.g alsa, oss, sndio)

C2: Реализуйте последовательность Фибоначчи с помощью рекурсивного решения, но избегайте экспоненциальной временной сложности. Программа должна быть четко определена для первых 100 членов Фибоначчи. Это типичный вопрос на интервью. Haskell, Idris и Agda не могут быть использованы для этого задания, бонусные очки для выяснения, почему.

C1: Реализация программы fizzbuzz без использования оператора деления по модулю ( % , mod, rem, & c...)

Реализацию можно кидать тут под спойлером либо pastebin.
Предлагаю челендж, где каждую неделю мы будем выполнять задания.

Придумал разные уровни сложности:
1 - как самый простой.
5 - самый сложный.

Первые задания от меня, на правах ОПа!

C3: Реализация синтезатора bytebeat, воспроизводящего аудио непосредственно с помощью OpenAL или аудио вашей платформы (e.g alsa, oss, sndio)

C2: Реализуйте последовательность Фибоначчи с помощью рекурсивного решения, но избегайте экспоненциальной временной сложности. Программа должна быть четко определена для первых 100 членов Фибоначчи. Это типичный вопрос на интервью. Haskell, Idris и Agda не могут быть использованы для этого задания, бонусные очки для выяснения, почему.

C1: Реализация программы fizzbuzz без использования оператора деления по модулю ( % , mod, rem, & c...)

Реализацию можно кидать тут под спойлером либо pastebin.

Связь дабы не проебать треад и для организации тут: @lambdaclass
Сообщение слишком длинное. Полная версия.
>> No.49129 Ответ
Так себе идея.
>> No.49134 Ответ
>>48615
Где-то я видел уже задачу C2. Не понимаю, почему haskell не может быть использован для решения. Вот несколько решений на хаскеле. Третье не рекурсивное, но самое лаконичное и ясное. Первые два - рекурсивные, хотя рекурсивна внутренняя функция. А рекурсивной должна быть внешняя? Тогда наверное и вправду не получится избежать экспоненциальной временной сложности. Но почему именно на тех трех языках? На джаве наверное тоже не получится избежать. Или здесь я должен разбираться в тонкостях того, как исполняется хаскель, чтобы ответить?

Первые два решения дают список в "перевернутом" виде. Если нужно возвращать список в нормальном виде, тогда причина в том, как устроены списки в хаскеле.

module Fib () where

fib :: Int -> [Int]
fib 1 = [1]
fib 2 = [1,1]
fib n = innerfib [1,1] (n-2)

innerfib :: [Int] -> Int -> [Int]
innerfib arr 0 = arr
innerfib (a : b : rest) n = innerfib (a + b : a : b : rest) (n-1)
>>48615
Где-то я видел уже задачу C2. Не понимаю, почему haskell не может быть использован для решения. Вот несколько решений на хаскеле. Третье не рекурсивное, но самое лаконичное и ясное. Первые два - рекурсивные, хотя рекурсивна внутренняя функция. А рекурсивной должна быть внешняя? Тогда наверное и вправду не получится избежать экспоненциальной временной сложности. Но почему именно на тех трех языках? На джаве наверное тоже не получится избежать. Или здесь я должен разбираться в тонкостях того, как исполняется хаскель, чтобы ответить?

Первые два решения дают список в "перевернутом" виде. Если нужно возвращать список в нормальном виде, тогда причина в том, как устроены списки в хаскеле.

module Fib () where

fib :: Int -> [Int]
fib 1 = [1]
fib 2 = [1,1]
fib n = innerfib [1,1] (n-2)

innerfib :: [Int] -> Int -> [Int]
innerfib arr 0 = arr
innerfib (a : b : rest) n = innerfib (a + b : a : b : rest) (n-1)

fib2 :: Int -> [Int]
fib2 1 = [1]
fib2 2 = [1,1]
fib2 n = innerfib2 (1, 1) (n-2) [1,1]

innerfib2 :: (Int,Int) -> Int -> [Int] -> [Int]
innerfib2 p 0 arr = arr
innerfib2 p n arr = case nextpair p of (a,b) -> innerfib2 (a,b) (n-1) (b:arr)

nextpair :: (Int,Int) -> (Int,Int)
nextpair (a,b) = (b, a+b)

fib3 :: Int -> [Int]
-- fib3 n = take n (map snd (iterate nextpair (1,1)))
fib3 n = (map snd . take n) (iterate nextpair (1,1))
Сообщение слишком длинное. Полная версия.
>> No.49179 Ответ
fizzbuzz
public class FizzBuzz {
public static void main(String[] args) {
for (int i = 1, m = 4, n = 2; i <= 100; i++, m--, n--) {
if (m == 0 || n == 0) {
if (n == 0) {
System.out.print("Fizz");
n = 3;
}
if (m == 0) {
System.out.print("Buzz");
m = 5;
}
System.out.println();
} else {
fizzbuzz
public class FizzBuzz {
public static void main(String[] args) {
for (int i = 1, m = 4, n = 2; i <= 100; i++, m--, n--) {
if (m == 0 || n == 0) {
if (n == 0) {
System.out.print("Fizz");
n = 3;
}
if (m == 0) {
System.out.print("Buzz");
m = 5;
}
System.out.println();
} else {
System.out.println(i);
}
}
}
}
Сообщение слишком длинное. Полная версия.
>> No.49182 Ответ
>>49179
Как не нужно делать последовательность Фибоначчи
import java.math.BigInteger;

public class Fibonacci {

private static int count = 100;

private static void step(BigInteger num1, BigInteger num2) {
count--;
if (count <= 0) {
return;
}
System.out.print(num2 + " ");
step(num2, num1.add(num2));
>>49179
Как не нужно делать последовательность Фибоначчи
import java.math.BigInteger;

public class Fibonacci {

private static int count = 100;

private static void step(BigInteger num1, BigInteger num2) {
count--;
if (count <= 0) {
return;
}
System.out.print(num2 + " ");
step(num2, num1.add(num2));
}

public static void main(String[] args) {
step(BigInteger.ZERO, BigInteger.ONE);
}
}
Сообщение слишком длинное. Полная версия.
>> No.49219 Ответ
>>49182
А так?
a = 0
b = 1
c = 0
while c < 1000:
c = a + b
a = b
b = c
print(a)


No.30133 Ответ [Открыть тред]
Файл: Java8-Logo.jpg
Jpg, 49.61 KB, 321×340 - Нажмите на картинку для увеличения
edit Find source with google Find source with iqdb
Java8-Logo.jpg
Начнем же тред околожабных технологий. Приветствуются дельные маны, пояснялки современных течений и анализ ситуации на будущее.
389 posts are omitted, из них 56 с файлами. Развернуть тред.
>> No.48580 Ответ
У меня есть веб приложение, собранное мавеном.
Из эклипса нормально запускается и деплоится на томкат. Сделал war этого приложения и попробовал вручную запустить на томкате, закинув варник в папку webapp. Судя по логу - https://ideone.com/0XVkO8 - вроде всё норм, но не работает.

Почему, подскажите?
>> No.48583 Ответ
>>48580
Я - идиот. Полный.
Собирал этот war не мавеном (mvn package) а простой командой (jar -cvf projectname.war *). Решение проблемы заняло у меня дней пять, в течении которых у меня натурально порой слёзы наворачивались от собственного бессилия и тупости (ну, хоть томкат нормально освоил).
Фигово быть мной.
>> No.48584 Ответ
>>48583
Поздравляю, ты испытал эмоциональные качели программиста. Дальше будет легче.
>> No.49181 Ответ
Изучение javafx же бесполезное занятие? Просто время в пустую потрачу, а никаких полезных навыков не будет?
>> No.49184 Ответ
>>49181
Сможешь писать GUI приложения на джаве на относительно простом, понятном и удобном API. Подумай, нужны ли миру джава-приложения с GUI?
>> No.49185 Ответ
>>49184
нет конечно
>> No.49198 Ответ
>>49181
полностью бесполезное. Технология мертва, хотя и довольно удобна для несложных гуёв. Не повторяй мою ошибку :3
>> No.49199 Ответ
>>49198
Я думал, приложения на андроиде используют javafx.
>> No.49200 Ответ
>>49198
А swing?
>>49199
Теоретически можно писать через gluon, но он платный.
В андроиде свой собственный ничем не совместимый api.
>> No.49201 Ответ
>>49200
> А swing?
Попроще в плане функций. Но сложнее добиться того, чего ты хотел. Если уж ты хочешь делать GUI на джаве, то таки JavaFX лучше.


No.49189 Ответ [Открыть тред]
Файл: xlarge_exaba.png
Png, 12.67 KB, 360×200 - Нажмите на картинку для увеличения
edit Find source with google Find source with iqdb
xlarge_exaba.png
Помогите найти движок exaba, его отовсюду выпилили. Хотел написать себе борду и такой вот облом. Раньше находился по адресу http://github.com/imageboards/exaba
>> No.49190 Ответ


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/

Ну пока всё. Спрашивайте свои ответы. Ато может я чего забыл ненароком.
Сообщение слишком длинное. Полная версия. 223 posts are omitted, из них 42 с файлами. Развернуть тред.
>> 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.49116 Ответ
> Вики на wikia.com
смеюсь
>> No.49186 Ответ
Файл: 1521405363079.jpg
Jpg, 98.85 KB, 710×540 - Нажмите на картинку для увеличения
edit Find source with google Find source with iqdb
1521405363079.jpg
>>40393
Впридачу к этому есть ещё zathura — для чтения pdf/djvu.


No.49151 Ответ [Открыть тред]
Файл: 85a4873f699bc485411f0f34ec4ebbfc1510506588_large.jpg
Jpg, 13.55 KB, 200×200 - Нажмите на картинку для увеличения
edit Find source with google Find source with iqdb
85a4873f699bc485411f0f34ec4ebbfc1510506588_large.jpg
периодически нужны простые html шаблоны, без фреймворков на чистом html/css. по большей части правка уже готовых шаблонов. плачу битками только. понятное дело на большие суммы не расчитывай. 2-5$ в среднем.
зато постоянно, иногда могут быть крупные заказы на более крутые шаблоны. что нужно от тебя так это идеальное знание <div'ной верстки, по большему счету все. шаблоны нужны простые шапка контент футер. фейкопочта для связи. vhs@cumallover.me
пиши
>> No.49152 Ответ
> знание <div'ной верстки
Делаю табличную¹ за наличные. Быстро, профессионально! Работает во всех браузерах! Не требует JavaScript²!

¹ — CSS за отдельную плату.
² — скрипты за отдельную плату.


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