[ /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, archive, image, vector, flash, music, text, video, code
  • Тред перестает подниматься после 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.49298 Ответ [Открыть тред]
Файл: oie_SohS1tCbFmpd.jpg
Jpg, 15.52 KB, 563×225 - Нажмите на картинку для увеличения
edit Find source with google Find source with iqdb
oie_SohS1tCbFmpd.jpg
У нас есть для каждой задачи куча в целом аналогичных, но всё же значительно отличающихся решений. Причём если с языками и фреймворками всё ещё как-то интуитивно понятно, чем они отличаются, то чем все Хадупы, Касандры и Сфинксы отличаются друг от друга вообще не очевидно. Причём работают они совсем по-разному, но задачи решают, казалось бы, примерно одинаковые. При этом каждая хреновина настолько сложна, что изучать её можно неделями или месяцами, чтобы знать, когда она нужна, и как ей пользоваться. И если потом узнаешь, что есть что-то получше, то недели изучения зря потеряны.

Хотелось бы узнать мысли анона, как определять, что нужно для дальнейшего развития, и что нужно использовать. Как анон вообще выпутывается из этого капкана?
>> No.49306 Ответ
>>49298
> Как анон вообще выпутывается из этого капкана?
Начни с каталога сайтов, http://www.curlie.org/World/Russian/Компьютеры/Программирование/
>> No.49307 Ответ
>>49306
Что это? Как это использовать?
>> No.49308 Ответ
>>49307
Каталог сайтов, его читают.
>> No.49309 Ответ
>>49308
Как это соотносится с темой треда?
>> No.49310 Ответ
>>49309
К тому же тут никаких сайтов по решениям типа хранилищ данных и т.п. нету.


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
247 posts are omitted, из них 36 с файлами. Развернуть тред.
>> No.47211 Ответ
Файл: БыстраБлять.jpg
Jpg, 8.40 KB, 480×360 - Нажмите на картинку для увеличения
edit Find source with google Find source with iqdb
БыстраБлять.jpg
Простых реквестов мне запилите!
>> No.47212 Ответ
>>47209
На тытубе, конечно. Забыл указать.
>> No.47214 Ответ
>>47209
>>47212
Твич и вконтактик.
>> No.49231 Ответ
Файл: 3aa96945b314d008f98e8d9aef4500b6.jpg
Jpg, 345.00 KB, 830×830 - Нажмите на картинку для увеличения
edit Find source with google Find source with iqdb
3aa96945b314d008f98e8d9aef4500b6.jpg
На всякий случай и тут спрошу.

Помогите баке. Решил пересесть с VS на хоркорный блокнотик и компилировать через g++. Так вот, для удобства организовал такую структуру папочек:
folder
-include
--someHeadersFolder
---someHeaders
---...
--...
-src
--someSources
--...
-build

Так вот, при компиляции вида:
На всякий случай и тут спрошу.

Помогите баке. Решил пересесть с VS на хоркорный блокнотик и компилировать через g++. Так вот, для удобства организовал такую структуру папочек:
folder
-include
--someHeadersFolder
---someHeaders
---...
--...
-src
--someSources
--...
-build

Так вот, при компиляции вида:

> g++ src/*.cpp -I/include -o build/App.exe

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

В дополнение.
Почему-то если для моих заголовочных файлов в include использовать "" вместо <> и указать относительный путь, то все компилируется. Но блин, как-то не хочется в каждом файле писать так:
#include "../include/headersFolder/header.h"
хотелось бы чтобы было как-то так:
#include <headersFolder/header.h>
Сообщение слишком длинное. Полная версия.
>> No.49239 Ответ
>>49231
Там же надо переменную среды задавать:
SET INCLUDE=...
>> No.49292 Ответ
>>49231
> -I/include

На моих линуксах такое явно бы не прошло. Я бы как минимум убрал / в начале.

Ещё я храню всё вместе, но это другая история: больше тысячи строк на Си меня не хватало.
>> No.49293 Ответ
>>49231
> > g++ src/*.cpp -I/include -o build/App.exe
> /include
"/" лишний. Так ты от корня ФС include ищешь.
>> No.49294 Ответ
>>49292
Обычно один файл-помойка сишного кода меньше тысячи строк и не бывает.
>> No.49295 Ответ
>>49294
Я разгребаю кучку после 300-400 строк в разные файлы вне зависимости от языка, после 300 строк становится очень трудно читать.
По той же причине разбиваю функции больше одного экрана.

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

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

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


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
312 posts are omitted, из них 49 с файлами. Развернуть тред.
>> No.49251 Ответ
>>49249
FastCGI, например, пользовался сокетом для передаче данных процессу и получения оных от него же.
А вот эти все gunicorn и uwsgi вшивают твой код в себя аки библиотеку. И тут уже можно вызывать сам твой код напрямую.
>> No.49252 Ответ
>>49251
Есть, конечно один нюанс: wsgi сам по себе может паразитировать и на CGI, и на FastCGI, но канонiчным образом его пользую именно со вшиванием. Так-то сверху можно что угодно подружить с WGSI.
>> No.49280 Ответ
Хочу написать простую 2D игру на питоне, основы знаю, куда дальше копать?
>> No.49281 Ответ
>>49280
Берешь пакет pygame https://www.pygame.org/wiki/GettingStarted
Смотришь примеры у них на сайте https://www.pygame.org/tags/all
Понимаешь@Повторяешь@Делаешь своё
>> No.49283 Ответ
>>49281
Ого, спасибо!
>> No.49287 Ответ
>>49249
> Как этот висящий процесс передает запрос уже прикладному коду и при этом не запускает его каждый раз?
Ну я, это, неуверен, но всегда думал, что твой код сам по себе превращается в висящий процесс. Не?
>> No.49296 Ответ
Файл: 0Untitled0.jpg
Jpg, 48.12 KB, 626×297 - Нажмите на картинку для увеличения
edit Find source with google Find source with iqdb
0Untitled0.jpg
Пытаюсь понять почему различен результат в первом и втором случае (Пикрил). Какая-то магия по списками.
[:] это, по идее, указатель, чтобы создать список, который не зависим от "материнского", но я не могу понять как всё это работает в рамках цикла. Мы создаем не привязанную копию l и выполняем действия append с ней?
>> No.49297 Ответ
>>49296
[:] — это слайс. [n:m] берёт кусок списка с индексами от n до m-1 и возвращает их в новом списке. [:] — это слайс от начала и до конца, то есть новая копия старого списка.

Оба твоих кусочка кода отличаются только списком в in. Обходится либо копия списка l, либо сам список l.

По сути, цикл, проходя по списку, убивает все элементы и добавляет в него частное от деления чётных чисел на 2, то есть из элементов 2, 4, 6 делает [1, 2, 3].

В первом случае цикл проходит по копии списка, пережёвывая все элементы из копии один за другим, после чего останавливается. l[:] не меняется.

Вот тут мои раздумья по поводу второго случая, которые оказались неверными:
Во втором случае цикл, пройдя первоначальные [1,2,3,4,5,6], обнаружит, что в списке есть ещё и [1,2,3]. И пойдёт работать дальше.
Если было бы так, то отдало бы целое ничего — двойка дала бы 1 и цикл бы прервался.

Но есть одно «но».

>>49296
[:] — это слайс. [n:m] берёт кусок списка с индексами от n до m-1 и возвращает их в новом списке. [:] — это слайс от начала и до конца, то есть новая копия старого списка.

Оба твоих кусочка кода отличаются только списком в in. Обходится либо копия списка l, либо сам список l.

По сути, цикл, проходя по списку, убивает все элементы и добавляет в него частное от деления чётных чисел на 2, то есть из элементов 2, 4, 6 делает [1, 2, 3].

В первом случае цикл проходит по копии списка, пережёвывая все элементы из копии один за другим, после чего останавливается. l[:] не меняется.

Вот тут мои раздумья по поводу второго случая, которые оказались неверными:
Во втором случае цикл, пройдя первоначальные [1,2,3,4,5,6], обнаружит, что в списке есть ещё и [1,2,3]. И пойдёт работать дальше.
Если было бы так, то отдало бы целое ничего — двойка дала бы 1 и цикл бы прервался.

Но есть одно «но».

Во второй части ветка условия else никогда не наступает. CPython обрабатывает прохождение for-цикла по массиву так, как любой программист сделал бы это, например, в Си. Через индекс. Запоминает индекс и присваивает переменной i значение l[индекс] на каждой итерации.

Поэтому, на первой итерации CPython достаёт нулевой элемент, его же убирает из l, l становится равно [2,3,4,5,6].
На второй итерации CPython помнит, что индекс текущего элемента в l был равен нулю. И берёт первый элемент l. То есть, 3, единицу же убрали. Потом таким же образом обработает 5, четвёрка же сдвинулась к началу. И завершится.

Я тебе рекомендую не менять таким образом списки. Откуда Python знать, что ты со списком делаешь?
Хм, а питоньи списки подозрительно напоминают массивы. Будь там настоящий список, то всё это либо повалилось бы с диким грохотом, либо отдало пустоту. Немного склоняюсь ко второму варианту. Надо будет попробовать написать код с настоящими списками, пусть и не на питоне.

Лучше либо строить новый список в цикле, либо делать всё в while, заменяя элемент.

А ещё можно сделать вот это:

print filter(None, map(lambda i: None if (i % 2) else (i // 2), range(1, 7)))

или, поменяв местами filter и map:

map(lambda i: i // 2, filter(lambda i: not(i % 2), range(1, 7)))
Короче на один знак
map(lambda i: i // 2, filter(lambda i: i % 2 - 1, range(1, 7)))

И да, встретил проблему — трассируй руками, логи, принты делай внутри, дебаггер и REPL используй. Поможет.

В чём пишешь?
Сообщение слишком длинное. Полная версия.
>> No.49302 Ответ
Файл: Python1.jpg
Jpg, 54.79 KB, 947×285
edit Find source with google Find source with iqdb
Python1.jpg
Файл: Python2.jpg
Jpg, 36.17 KB, 671×207
edit Find source with google Find source with iqdb
Python2.jpg

>>49297
Благодарю за детальное пояснение, хотя я понял процентов 80 из того, что ты написал.
Я прохожу онайлн курс по Питону, первая пик это задание, вторая пик это мое решение, которое прошло проверку, пики их прошлого поста это решения других. Как видишь, моё более примитивное, чем предыдущие операции со списками, где все необходимые действия выполняются в рамках одного цикла. Использую Jupyter и всякие онлайн компиляторы.

Если кому интересно, могу выложить ссылку на курс, он бесплатный.
>> No.49304 Ответ
>>49302
Выложи. Хоть посмотрю на этот ваш питон.
Там же будет что-то кроме хелоувордов? То есть, хотя бы мельком затронуты какие-то популярные фреймворки, библиотеки, etc.


No.43511 Ответ [Открыть тред]
Файл: 599716131.png
Png, 77.78 KB, 317×372 - Нажмите на картинку для увеличения
edit Find source with google Find source with iqdb
599716131.png
Предыдущий тред: >>39226
391 posts are omitted, из них 37 с файлами. Развернуть тред.
>> No.49125 Ответ
>>49124
Спасибо, анон. Ты прав, я все совершенно иначе понял, когда учил матчасть. Компилятор - скрытный убийца. Даже и не предупредил о том, что я за границы массива вылез
>> No.49126 Ответ
>>49125
Бывает. Думаю можно поднастроить компилятор на более строгий вывод предупреждений. Смотри в доках компилятора. У gcc есть -Wall.
>> No.49268 Ответ
Нужна помощь. Хочу писать фронтенд, web страницы на c++. Соответственно мне нужно как-то собирать webassembly и подключать его на страничку. Помогите запустить.
В докеры умею на начальном уровне.(Оно не связанно но хотелось бы)
Нагуглил вот такую штуку https://github.com/ltfschoen/wasm-test
но совершенно не понимаю что делать.
>> No.49278 Ответ
>>49268
> Хочу писать фронтенд, web страницы на c++.
Но зачем?
>> No.49289 Ответ
>>49268
> докер
> c++
Докер не для плюсов делали. Не смущает, что все твои системные сервисы на плюсах и сях с гордо поднятой головой живут безо всякой изоляции и чрутов по большей части?
А если бы их туда поселили, ты бы взвыл.
>> No.49290 Ответ
>>49268
Достал emscripten, прочёл из-под него маны, собрал пример.
>> No.49291 Ответ
>>49268
А вообще докер - это рак в IT от истинных ценителей крузиса. Каждого докеростроителя надо принудительно сажать хотя бы на машину с 1-2 гб памяти и 5-10 гб на харде. Как у меня было, когда я поставил ubuntu.
Враз перестанут клепать свои жирнообразы и забивать болт на стабильность.

Достали эти ублюдки с макбуками, своим вечным "а вы докиньте ещё памяти и всё заработает", глючными ORM'ами, жабьими IDE от JetBrains, хромом даже если рядом хромиум стоит и жирнющими фронтендами, выкачивающими мегабайты на каждый чих. И требованиями поставить "вон ту хайповую вещь".

По два-три менеджера очередей, три БД, причём обязательно надо хранить 10-20 пар настроек в БД на сервере, а не локально, Новый Хайповый Формат Данных с библиотекой к нему, зависимости, которые за день не разрулишь, глючные врапперы, логи, забивающие БД под завязку. Это нормально.
>> No.49299 Ответ
>>49291
Преимущества, которые всё это даёт с лихвой перевешивают плашек цену за 12гб памяти. Докинь памяти и всё заработает! Нет, а какие реальные контраргументы у тебя того, что мы "достали"?

Отдельная тема насчёт жирнющих фронтендов -- это действительно достали. Вообще фронтенд в каком-то странном состоянии.
>> No.49301 Ответ
>>49299
> Преимущества

Невероятной красоты архитектура, для поддержки которой нужен специально обученный зверь и которая постоянно падает просто трущихся частей в разы больше payload`a. Что же может пойти не так??
Которая зависит от полчищ васянов с докерхаба, вшивающих майнеры в каждый пакет?
Которая будет вбирать в себя тонны запиненных, старых либ, пока это говно мамонта не выкинут?
Жрущая память как не в себя?
Изумительные гайдлайны уровня "один процесс — один контейнер", генерирующие тонны трафика по сети через менеджер очередей вот эти вот два-три менеджера очередей, которые ещё и забиться могут, вызывайте it-сантехников прочищать, когда можно было просто взять и заюзать локальный IPC? А ещё бешеный оверхед по памяти, но он и так уже по сути есть.
Или, может быть, конечный результат — преимущество? Очередное SaaSS-убожество, созданное для того, чтобы понабрать вагонами товар людей, между делом утыкав своё SaaSS телеметрией своей и чужой, чтоб выдавала трафика в два раза больше полезного, перемолоть в своей очередной бигдата-платформе и продать дальше? А нужен ли тебе вот про зряплату тут говорить не надо, это по части использования и людям этот очередной мегареволюционный SaaSS-проект? Думаю, нет.
>>49299
> Преимущества

Невероятной красоты архитектура, для поддержки которой нужен специально обученный зверь и которая постоянно падает просто трущихся частей в разы больше payload`a. Что же может пойти не так??
Которая зависит от полчищ васянов с докерхаба, вшивающих майнеры в каждый пакет?
Которая будет вбирать в себя тонны запиненных, старых либ, пока это говно мамонта не выкинут?
Жрущая память как не в себя?
Изумительные гайдлайны уровня "один процесс — один контейнер", генерирующие тонны трафика по сети через менеджер очередей вот эти вот два-три менеджера очередей, которые ещё и забиться могут, вызывайте it-сантехников прочищать, когда можно было просто взять и заюзать локальный IPC? А ещё бешеный оверхед по памяти, но он и так уже по сути есть.
Или, может быть, конечный результат — преимущество? Очередное SaaSS-убожество, созданное для того, чтобы понабрать вагонами товар людей, между делом утыкав своё SaaSS телеметрией своей и чужой, чтоб выдавала трафика в два раза больше полезного, перемолоть в своей очередной бигдата-платформе и продать дальше? А нужен ли тебе вот про зряплату тут говорить не надо, это по части использования и людям этот очередной мегареволюционный SaaSS-проект? Думаю, нет.
Или взять сорт оф другое преимущество — чудесная ориентированность на облачные вычисления, они же butt computing? Спавним один зоопарк сервисов, цепляем к нему специально обученного зверя — девопса тот самый зверь, который умеет всё, а на практике вместо сантехника и костылеподпорщика, спавним больше контейнеров богу контейнеров, а потом оказывается, что парк умер и пора съезжать на очередной Amazon. Дальше чудесным образом размазываем сервисы по половине Интернета, профит. Угадай, кто будет всё это защищать? Никто.

Отличные преимущества. Нечего сказать.

> Нет, а какие реальные контраргументы у тебя того, что мы "достали"?
Сперва найди реальные аргументы за докер. В твоём посте их не видно. 12 гб памяти — это зажирательство. Более того, много кто больше 8 не может. Вместо 8 можешь поставить 4 или 2.

>Докинь памяти и всё заработает!

Классика! Садись на пеку с двумя гигабайтами. Можешь ещё вспомнить, что не у всех новенький макбучек (или что у тебя там) и забитый до отказа планками сервер дома. И не все хотят выбрасывать старое железо сразу по приходу нового, да. Это немного в другую степь, но суть та же.

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

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

> Отдельная тема насчёт жирнющих фронтендов -- это действительно достали. Вообще фронтенд в каком-то странном состоянии.

И вот этот весь цирк тебе докерохайп не напоминает никак? Те же люди с такими же привычками точно так же хором в гробу видели здравый смысл. И на память, точно так же плодят сущности, конечный результат в той же плоскости различия есть, но главный вектор — SaaSS, да и публика часто пересекается, если человек не только фронтом занимается.
Сообщение слишком длинное. Полная версия.
>> No.49303 Ответ
>>49301
> для поддержки которой нужен специально обученный зверь
А для поддержки тех же самых 2-3 менеджеров очередей(почему 2-3, а не одного?), несколькиз субд и прочего-прочего, что населяет контейнеры, только вытащенного из контейнеров, уже не нужен отдельный зверь? Если вытащить всё из контейнеров, и засунуть так в одну машину, то проще становится?
> которая постоянно падает
Как так? Почему это?
> Которая зависит от полчищ васянов с докерхаба, вшивающих майнеры в каждый пакет?
Раз васяны плохие, то надо все программы писать заново? Человечество существует, чтобы кодеры писали одно и то же тысячи раз? А повторное использование не нужно? И этот аргумент также работает против вообще всех сторонних пакетов и библиотек.
> когда можно было просто взять и заюзать локальный IPC
Если я всё правильно понимаю, то можно настроить докер-контейнеры запускаться внутри одной машины и гнать всё через IPC, не эмулируя сеть. `driver: host` по идее это должен давать. Но всё равно, конечно, есть оверхед.
> Очередное SaaSS-убожество
Я знаю SaaS, а что такое SaaSS? А почему конечный результат -- это SaaS именно? Что-то я вообще потерялся. Любое серверное приложение может быть так устроено.

> Сперва найди реальные аргументы за докер
>>49301
> для поддержки которой нужен специально обученный зверь
А для поддержки тех же самых 2-3 менеджеров очередей(почему 2-3, а не одного?), несколькиз субд и прочего-прочего, что населяет контейнеры, только вытащенного из контейнеров, уже не нужен отдельный зверь? Если вытащить всё из контейнеров, и засунуть так в одну машину, то проще становится?
> которая постоянно падает
Как так? Почему это?
> Которая зависит от полчищ васянов с докерхаба, вшивающих майнеры в каждый пакет?
Раз васяны плохие, то надо все программы писать заново? Человечество существует, чтобы кодеры писали одно и то же тысячи раз? А повторное использование не нужно? И этот аргумент также работает против вообще всех сторонних пакетов и библиотек.
> когда можно было просто взять и заюзать локальный IPC
Если я всё правильно понимаю, то можно настроить докер-контейнеры запускаться внутри одной машины и гнать всё через IPC, не эмулируя сеть. `driver: host` по идее это должен давать. Но всё равно, конечно, есть оверхед.
> Очередное SaaSS-убожество
Я знаю SaaS, а что такое SaaSS? А почему конечный результат -- это SaaS именно? Что-то я вообще потерялся. Любое серверное приложение может быть так устроено.

> Сперва найди реальные аргументы за докер
За докер -- в первую очередь для разработки, в проде то можно и без него. У нас вот прод на AWS(правда это ж почти то же самое), а докер на локале/тесте. Докер позволяет зафиксировать всю инфраструктуру в виде конкретных сервисов и их конфигов в файлах проекта, так что всё гамузом умещается в репозиторий гита. И всё можно сразу развернуть одной командой. Так что нет ситуаций с особенными "серверами-снежинками", которые потерялись и их не воспроизвести никак.

> 12 гб памяти — это зажирательство. Более того, много кто больше 8 не может. Вместо 8 можешь поставить 4 или 2.
Всё равно без докера всё это нужно. На IDE нужно дофига памяти. А плюшки IDE напряму выливаются в улучшение продуктивности. Это и удобная трассировка, и автоматическое нахождение простейших косяков, и навигация через использование/определение. А это статический анализ кода на каждый чих, естественно он будет много жрать ресурсов. Он сложный дофига.

> Садись на пеку с двумя гигабайтами.
Пересаживайся с пеки с двумя гигабайтами на иглу одобрения коллегами. Зачем мне на неё садиться? Может, мне ещё какой-нибудь шкафчик из 70-х попробовать?

> И вот этот весь цирк тебе докерохайп не напоминает никак? Те же люди с такими же привычками точно так же хором в гробу видели здравый смысл.
Ну, тут стремление сделать овер много функциональности за как можно меньше времени и денег. Заказчики не готовы доплачивать за то, чтоб их фронтенды работали были супер-оптимальными. И всё равно фронтенды не такие плохие у нормальных сайтов, да и от js вообще сложно что-то добиться.
Сообщение слишком длинное. Полная версия.


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.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
433 posts are omitted, из них 69 с файлами. Развернуть тред.
>> No.49269 Ответ
>>49267
> Как я правильно понял, reshape изменяет размер массива (или матрицы)
Все верно.
> если аргумент (2, 3), то массив (или матрица) становится 2 в высоту, 3 в длину
Ты прав. С этим я разобрался.
> то создаётся два массива (или матрицы), оба (или обе) 2 в высоту, 3 в длину, очевидно же (не очень).
> По-моему, здесь один аргумент, и это кортеж (2, 2, 3)
Ого, спасибо. Получается, что два массива как бы вложены в один массив? Никогда такого не видел. я тупой
>> No.49270 Ответ
Файл: гифки-брюс-ли-знаменитости-523845.gif
Gif, 2033.80 KB, 436×256 - Нажмите на картинку для увеличения
edit Find source with google Find source with iqdb
гифки-брюс-ли-знаменитости-523845.gif
>>49269
> Ого, спасибо.
Обращайся.
> два массива как бы вложены в один массив?
То есть?
> я тупой
Нет, просто моё кунг-фу сильнее твоего.
>> No.49271 Ответ
Вопрос не по теме, почему такой интересный раздел стоит полумертвым?
Неужели, никто из анонов не изучает программовне?
>> No.49272 Ответ
>>49271
Да, странно. И на оранжевой борде тоже всё вымерло.
>> No.49273 Ответ
>>49271
Все уже вкатились на 300кк\нс. Если не стал сеньором в 2007 то уже поздно.
>> No.49274 Ответ
Доброго времени суток.

Назрел вопрос касательно написания тестов для кода. Есть одна софтина написанная на с++/qt. Собственно, есть потребность в автоматизации тестирования. Не подскажете собственно книжку-другую, чтоб почитать про тесты?
>> No.49275 Ответ
Файл: TDD.png
Png, 153.60 KB, 1251×879 - Нажмите на картинку для увеличения
edit Find source with google Find source with iqdb
TDD.png
>> No.49276 Ответ
>>49275
Это ж Java, а ему надо C++
>> No.49277 Ответ
Есть рест апи, которым пользуется js с некоторого сайта. И надо ограничить возможность использования кем-то другим (не только через origin, а вообще любые запросы). В обе стороны можно внести любые изменения.
Есть нормальное решение?
>> No.49279 Ответ
Файл: -.jpg
Jpg, 18.93 KB, 326×273 - Нажмите на картинку для увеличения
edit Find source with google Find source with iqdb
-.jpg
>>49277
JWT попробуй. Если не понравится, то подумаем ещё.


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.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... Зачем всё это? Чем это лучше просто кучи функций, которые могут просто вызывать другие функции и работать с какими-то структурами?

Или вот методы, методы это функции, которые привязаны к конкретной структуре, но что если мне нужны методы, которые связывают два разных класса? Например это может код, переводящий из вектора в растровую картинку. Этот код должен быть методом класса для растровой или векторной картинки?
48 posts are omitted, из них 2 с файлами. Развернуть тред.
>> No.49168 Ответ
>>49166
> Да, такой вариант длиннее будет. Да, там есть вероятность забыть изменить значение при копипасте.

В этом и заключается говнокод
>> No.49170 Ответ
>>49168
Для меня говнокод, это когда все настолько запутанно, как наушники в кармане. В создании такой мешанины временами помогают и всякие "короткие, красивые и эффективные" синтаксические конструкции языков.
>> No.49172 Ответ
>>49164
>>49165
>>49166
> Не вижу говнокода. Да, такой вариант длиннее будет.
Я и говорю, плохо быть говнокодером.
А должен бы видеть, что сперва будет инициализация скорее всего нулями (но вообще undefined), а потом инициализация еще раз нужными значениями (на самом деле не инициализация, а присваивание, но так нагляднее).
>> No.49177 Ответ
>>49172
И? В чем проблема?
>> No.49180 Ответ
>>49177
В удвоенном потреблении ресурсов, очевидно.
>> No.49183 Ответ
>>49180
И как в других языках решается эта проблема? В переменной сразу нужные значения находятся? Откуда? Кто их заранее в память закинул?
>> No.49214 Ответ
>>49163
> Вначале у тебя инициализируются все поля начальным значением, затем
Я что-то пропустил? С каких пор сишка стала инициализировать переменные какими либо значениями вообще?
Насколько я помню, даже плюсы этого не делали, для полей классов разве что.
>> No.49217 Ответ
Файл: 1544280718843.png
Png, 0.97 KB, 300×20 - Нажмите на картинку для увеличения
edit Find source with google Find source with iqdb
1544280718843.png
>>49214
Он указал, что
> > (но вообще undefined),
но все равно бред. Нулями инициализирует не C, а ОС (в случае линукса это так). Другой вариант, это ОС выделяет память переменной, а в этой области памяти могу быть какие угодно значения, оставшиеся после выполнения другой программы.
>> No.49221 Ответ
>>49183
> И как в других языках решается эта проблема? В переменной сразу нужные значения находятся? Откуда? Кто их заранее в память закинул?
Constructor, motherfucker, do you write it?
>>49214
>>49217
> Я что-то пропустил? С каких пор сишка стала инициализировать переменные какими либо значениями вообще?
Насколько я помню, даже плюсы этого не делали, для полей классов разве что.
> Другой вариант, это ОС выделяет память переменной, а в этой области памяти могу быть какие угодно значения, оставшиеся после выполнения другой программы.
Джуниоров полон тред. При создании объекта, что в динамике что в статике, память выделяется сразу на весь объект (это в обычном случае, пляски с собственными менеджерами памяти не рассматриваем). И если ты объявляешь какой-нибудь int i, то он уже на стеке и имеет значение, и ты можешь его cout или printf. Но если ты криворук и не проинициализировал сразу, то значение все равно есть, но undefined. В большинстве случаев это будет 0 просто по дефолту ОС и компилятора, но это не гарантировано. Таким образом работает что С, что кресты.
Проверяется легко: возьми
struct A
{
int i;
char j;
double k;
>>49183
> И как в других языках решается эта проблема? В переменной сразу нужные значения находятся? Откуда? Кто их заранее в память закинул?
Constructor, motherfucker, do you write it?
>>49214
>>49217
> Я что-то пропустил? С каких пор сишка стала инициализировать переменные какими либо значениями вообще?
Насколько я помню, даже плюсы этого не делали, для полей классов разве что.
> Другой вариант, это ОС выделяет память переменной, а в этой области памяти могу быть какие угодно значения, оставшиеся после выполнения другой программы.
Джуниоров полон тред. При создании объекта, что в динамике что в статике, память выделяется сразу на весь объект (это в обычном случае, пляски с собственными менеджерами памяти не рассматриваем). И если ты объявляешь какой-нибудь int i, то он уже на стеке и имеет значение, и ты можешь его cout или printf. Но если ты криворук и не проинициализировал сразу, то значение все равно есть, но undefined. В большинстве случаев это будет 0 просто по дефолту ОС и компилятора, но это не гарантировано. Таким образом работает что С, что кресты.
Проверяется легко: возьми
struct A
{
int i;
char j;
double k;
};
std::cout << i << std::endl; // etc.
И то же самое в сях.
Сообщение слишком длинное. Полная версия.
>> No.49222 Ответ
>>49221
Я знаю это и написал то же самое.


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