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

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
495 posts are omitted, из них 82 с файлами. Развернуть тред.
>> No.49679 Ответ
>>49678
Собери портфолио. Набей гитхаб своим кодом, тематически близким по должности, к которой стремишься. Изучай рынок труда по интересующей специализации. То есть общайся с людьми, которые уже этим занимаются. Обязательно гугли отзывы: хорошая контора с рабочей карьерной лестницей скорее всего предложит стажировку с минималкой или даже тестером поработать сначала. Не ограничивайся отечественными конторами. Если у тебя на гитхабе твоего кода овер 10k SLOC, можешь в английский и действительно хочешь этим заниматься, вероятность вката стремится к 100%.
>> No.49680 Ответ
>>49677
Прохо понятно, слишком общее описание. Если каждому елементу из множества твоих данных соответствует константное множество дат, в которые элемент может отображаться, добавь к классу этого множества параметр, содержащий множество дат и задавай его значение при инициализации инстансов класса.
Если доступные для отображения дни надо пересчитывать каждый раз, например, после отображения, сделай соответствующий метод.
Детали реализации зависят от твоего шедулера и всего прочего, о котором ты ни слова не сказал.
>> No.49681 Ответ
>>49680
константное множество дат
У каждого элемента одна отметка времени. CreationTime, по факту.
> Если доступные для отображения дни надо пересчитывать каждый раз, например, после отображения, сделай соответствующий метод.
Слишком затратно. Элементов сотни тысяч, и даже на простой экспорт в csv тратится прилично времени.
> Детали реализации зависят от твоего шедулера
On demand, по запросу клиента (наверное стоило сказать, что вебня)
>> No.49682 Ответ
>>49679
Про портфолио хороший совет, давно хотел, а вот гитхаб кажется идиотизмом. Яж не хипстер-вактывальщик какой, подразумевается что кодировать умею, чё там на гитхабе смотреть. Впрочем если мимикрировать под вкатывальщиков, то да. Но до этого уровня пока ещё не опустился.
>> No.49683 Ответ
>>49682
Если ты не фронтендер, который на конструкторе лепит сайты, ссылки на которые может приложить, и без опыта, то гитхаб == портфолио.
Квалификация != опыт.

> подразумевается что кодировать умею
А ты докажи. Покажи код. Умеешь ли ты лепить архитектуру проекта, можешь ли доводить до конца это говно? Для этого и выкладывают всякое в репозитории (ну еще иногда, потому что это херня может кому-то помочь).

Да и
> "у нас нет вакансий под вашу квалификацию"
слишком расплывчато. Было тестовое задание, которое пролюбил? Опыт работы есть?
>> No.49685 Ответ
Как перестать играть в сессионки и начать кодить?
>> No.49688 Ответ
Файл: 1583831849973.jpg
Jpg, 23.74 KB, 601×334 - Нажмите на картинку для увеличения
edit Find source with google Find source with iqdb
1583831849973.jpg
Как написать чтото с интерфейсом? Ну хоть калкулятор. В школе только всякая фигня в командной строке была.
>> No.49689 Ответ
>>49688
Если калькулятор, то таких туториалов до жопы, стоит только поискать. Не знаю только на всех ли языках есть GUI библиотеки
>> No.49694 Ответ
>>49688
У питона есть графические библиотеки.

Ну что же вы, кодеры – последний пост 28 марта...
>> No.49697 Ответ


No.49322 Ответ [Открыть тред]
Файл: tenor.gif
Gif, 428.29 KB, 320×240 - Нажмите на картинку для увеличения
edit Find source with google Find source with iqdb
tenor.gif
Захотелось попробовать чего-нибудь этакого и написать мелодию, используя исключительно текст. Еще до изобретения этих ваших трекеров программисты каждую нотку прописывали в коде программы. Вот что анон может посоветовать погуглить носкиллу по данному вопросу? Музыку писать-то я умею, а вот программировать нет. Есть ли что-то простое и легкоусвояемое?
14 posts are omitted, из них 1 с файлами. Развернуть тред.
>> No.49347 Ответ
>>49345
Алсо, то что ты описываешь нельзя назвать языком именно программирования. Это скорее лежит в плоскости языков вёрстки и сериализации.
Как ни странно гуглежом по "midi langauge" я что-то нашёл:
http://www.zelsoftware.org -- действительно язык разметки midi-файла. Компилит спец. язык в midi, как ты хотел.
>> No.49348 Ответ
>>49346
Я спокойно пишу музыку сидя с гитарой перед компом и набивая подобранные ноты в гитар про. Но жизнь поставила меня раком из-за работы, и теперь я это делать не могу. В моем распоряжении лишь небольшой угол и старенький ноутбук. Дай, думаю, делать все равно нечего, попробую такой способ. Ведь когда-то давным-давно я делал что-то подобное в школе в логоврайтере и кбейсике. Трекерами я обмазывался, не то, мне хочется именно полного управления клавиатурой без использования мыши.
> Ты ж не описываешь картинки на языке картинок.
Вообще текстовые игры прекрасно описывают картинки с помощью текста, ага.
>>49347
Спасибо. Уууух, интернет нулевых. Почитаю на досуге.
>> No.49349 Ответ
Файл: 12345-Cubase-Pro-...
Png, 120.88 KB, 1918×970
edit Find source with google Find source with iqdb
12345-Cubase-Pro-Template.png
Файл: snap-10.02-3.png
Png, 53.11 KB, 827×726
edit Find source with google Find source with iqdb
snap-10.02-3.png

>>49348
А зачем тебе надо набирать мелодию непременно в виде текста? Что насчет трекеров всяких? Вот например https://www.rosegardenmusic.com/ - им можно открывать и редактировать midi файл. Cubase еще есть, сотни их.
Какого рода преимущество ты хочешь получить от написания мелодий именно в виде текста?
>> No.49350 Ответ
>>49349
> Какого рода преимущество ты хочешь получить от написания мелодий именно в виде текста?
Я уже выше написал, зачем мне это нужно. Нет у меня пространства, приходится ныкаться по углам со старым ноутом, есть возможность только печатать. Про трекеры я уже выше сказал. С нормальным интерфейсом я так и не обнаружил. А ДАВы вообще для написания музыки не предназначены, они нужны для сведения и мастеринга, а не для написания мелодий. Эти миди-паттерны в давах не дают никакого представления об устройстве мелодии.
>> No.49351 Ответ
Файл: Po-ulize-hodila-krokodile.jpg
Jpg, 54.07 KB, 600×491 - Нажмите на картинку для увеличения
edit Find source with google Find source with iqdb
Po-ulize-hodila-krokodile.jpg
>>49350
> Эти миди-паттерны в давах не дают никакого представления об устройстве мелодии.
Пифагор его рассчитал, представление твоё, я же ж бросал картинки выше...
>> No.49352 Ответ
Файл: frescobaldi-lilypond-editor.png
Png, 266.82 KB, 1920×1080 - Нажмите на картинку для увеличения
edit Find source with google Find source with iqdb
frescobaldi-lilypond-editor.png
>>49350
Т.е. тебе нужен нотный редактор, где эти ноты можно вводить текстом? Попробуй http://lilypond.org/text-input.html http://lilypond.org/easier-editing.html
>> No.49353 Ответ
>>49352
Это тоже прикольно, спасибо.
>>49351
Причем тут вообще пифагор и современные давы?

Ладно, забейте на тему, что я хотел узнать - узнал, спасибо.
>> No.49361 Ответ
>> No.49367 Ответ
>>49322
твой стэк: Assembly, MIDI, VST
>> No.49659 Ответ
мне Sibelius норм заходил, но в сети его сложно найти.


No.49298 Ответ [Открыть тред]
Файл: oie_SohS1tCbFmpd.jpg
Jpg, 15.52 KB, 563×225 - Нажмите на картинку для увеличения
edit Find source with google Find source with iqdb
oie_SohS1tCbFmpd.jpg
У нас есть для каждой задачи куча в целом аналогичных, но всё же значительно отличающихся решений. Причём если с языками и фреймворками всё ещё как-то интуитивно понятно, чем они отличаются, то чем все Хадупы, Касандры и Сфинксы отличаются друг от друга вообще не очевидно. Причём работают они совсем по-разному, но задачи решают, казалось бы, примерно одинаковые. При этом каждая хреновина настолько сложна, что изучать её можно неделями или месяцами, чтобы знать, когда она нужна, и как ей пользоваться. И если потом узнаешь, что есть что-то получше, то недели изучения зря потеряны.

Хотелось бы узнать мысли анона, как определять, что нужно для дальнейшего развития, и что нужно использовать. Как анон вообще выпутывается из этого капкана?
6 posts are omitted. Развернуть тред.
>> No.49315 Ответ
>>49314
> моментально
Я про то, что рождаются и дохнут, не успев документацию написать.
>> No.49316 Ответ
>>49314
Но ведь все и так учат SQL! Никого из кодеров нету, кто бы юзал nosql, но не умел базово юзать mysql какой-ниубдь. У нас пытались внедрить mongodb, якобы будет без схему, проще, гибкие изменения. Было только хуже.
Но ещё ж говорят, что на (очень больших) кластерах производительность nosql выше. И что у некоторых из них выше скорость инсёртов или апдейтов.
>> No.49318 Ответ
>>49316
> Но ведь все и так учат SQL!
У меня для тебя плохие новости: нет. А те, кто учили, позабыли. MySQL я, например, не знаю.

Скорость, которая выше, достигается забивом на отношения и гарантии целостности. Если найдёшь, где в твоей sql-базе такое сделать. всё будет точно так же.
И всё равно вся эта скорость будет смыта в унитаз, когда кому-нибудь придёт в голову сделать ODM. Да, такие есть.
>> No.49330 Ответ
>>49318
Но вообще тред не только про NoSql-решения. Ещё вот эти вот
1) движки полнотекстового поиска (sphinx, elasticsearch)
2) хранилища, сборщики и визуализации метрик и логов (elasticsearch, prometheus, sentry, grafana, graphite, influxdb, etc)
3) брокеры очередей
Тут тоже широкий выбор и фиг знает, что учить.
>> No.49360 Ответ
>>49330
То, у чего больше лайков на гитхабе и твиттере.
>> No.49371 Ответ
Хочу найти флэтфайл-базу типа SQLite, только не с ужасными SQL-таблицами, а монго-подобную, с джейсонами. Всякие "written in Node.JS" мне, скорее всего, не годятся, желательно что-то менее привязанное к конкретному языку, реализованное в виде либы с кучей биндингов для неё (тот же SQLite, опять).

Такое вообще существует? Если нет - как сделать самому? Так, чтобы было быстрее, чем ебать диск на каждый чих, но при этом данные не терялись бы в случае перебоев с электричеством или ещё чего.
>> No.49372 Ответ
>>49371
Плоские таблицы чем не вариант?..
>> No.49373 Ответ
>>49371
В редиске есть персистентность.
>> No.49477 Ответ
>>49371
1.sqlite умеет в json и лучше бы тебе непродуманность схемы устранить, чтоб на грабли не наступать.
2.клоны dbm с обёртками, сериализующими значение в джейсон, сам такую писал раза два на питоне.
>> No.49649 Ответ
>>49371
lowdb, pouchdb.


No.35693 Ответ [Открыть тред]
Файл: Haskell-Logo.svg
Svg, 1.42 KB, 602×425 - Нажмите на картинку для увеличения
Haskell-Logo.svg
Надеюсь, ещё не совсем вымерли упоровшиеся сабжем.
235 posts are omitted, из них 35 с файлами. Развернуть тред.
>> No.46875 Ответ
Файл: 2bcbe14ae2efadfc9...
Png, 33.29 KB, 417×326
edit Find source with google Find source with iqdb
2bcbe14ae2efadfc95267413a710ec4c1480097777262.png
Файл: 3a50cdabf2ff37212...
Png, 25.21 KB, 409×212
edit Find source with google Find source with iqdb
3a50cdabf2ff3721282443bfd82989111480097777263.png

SPJ со своим другом наконец-то разработали недостающую теорию,
открывающую мир нешаблонного параметрического полиморфизма байтоёбским типам со стека:
https://www.microsoft.com/en-us/research/wp-content/uploads/2016/11/levity-1.pdf
>> No.47994 Ответ
>>46875
> 25 November 2016
Ж - живой язык
>> No.47995 Ответ
>>37765
Не знаю как там в 2014, но у нас есть https://ru.wikipedia.org/wiki/Yi_(редактор) и пожалуй ещё https://ru.wikipedia.org/wiki/Leksah
>> No.47998 Ответ
Файл: 1496672176680-g.png
Png, 785.77 KB, 1000×1300 - Нажмите на картинку для увеличения
edit Find source with google Find source with iqdb
1496672176680-g.png
>>47995
Но все равно, лучше использовать Emacs.
>> No.48030 Ответ
>>47998
> Основные режимы эмуляции для Yi это vim и emacs.
А вообще какой режим лучше, вообще vim VS emacs что победит?
>> No.49381 Ответ
Бампану, что ли.
>> No.49611 Ответ
>>48030
VS и победит, им пользоваться куда удобнее, да и особых знаний он не требует.
>> No.49612 Ответ
>>44574
Нет и не будет. Hask не является категорией, seq и undefined все портят:
seq (undefined . id) ()
> ()
seq undefined ()
> |
Противоречия!
Больше тут:
https://stackoverflow.com/questions/48485660/is-hask-even-a-category
>> No.49646 Ответ
Расскажите про forkOS. Можно ли через него и mvar'ы пропустить массив данных так, чтобы ленивость массива не терялась?
>> No.49647 Ответ
>>49646
Массив таки список.


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

Или вот методы, методы это функции, которые привязаны к конкретной структуре, но что если мне нужны методы, которые связывают два разных класса? Например это может код, переводящий из вектора в растровую картинку. Этот код должен быть методом класса для растровой или векторной картинки?
70 posts are omitted, из них 4 с файлами. Развернуть тред.
>> No.49441 Ответ
>>49440
> я без понятия, каким ООП был изначально
Эрланго-образный обмен сообщениями это был.
> но настоящее ООП оказалось бесполезным и никому не нужным
Один только сраный WhatsApp на нём и работает, ага.
>> No.49443 Ответ
>>49441
> Эрланго-образный обмен сообщениями это был.
Нет, не был: https://habr.com/ru/post/455638/
Изобрести мем «объектно-ориентированный» ≠ изобрести объекты.
>> No.49522 Ответ
Файл: afwXT.jpg
Jpg, 350.83 KB, 1131×707 - Нажмите на картинку для увеличения
edit Find source with google Find source with iqdb
afwXT.jpg
>>49418
> Вот тут и проблема. В основе ООП лежат не взаимодействия предметов, а сами предметы. И все методы этих объектов направлены на работу только с самим собой (какие эгоистичные). Иначе нарушается инкапсуляция, иначе эти объекты не могут существовать друг без друга. Еще раз, каждый объект должен быть маленьким закрытым мирком, к которому тебе можно обращаться только через публичные методы или интерфейсы.
А зачем так надо делать? Откуда эти постулаты взялись? Почему именно так, а не иначе?
>>49418
> Вот тут и проблема. В основе ООП лежат не взаимодействия предметов, а сами предметы. И все методы этих объектов направлены на работу только с самим собой (какие эгоистичные). Иначе нарушается инкапсуляция, иначе эти объекты не могут существовать друг без друга. Еще раз, каждый объект должен быть маленьким закрытым мирком, к которому тебе можно обращаться только через публичные методы или интерфейсы.
А зачем так надо делать? Откуда эти постулаты взялись? Почему именно так, а не иначе?
Мне порой кажется, что сторонники ООП это как нейросеть, которая везде псов распознает: какую задачу ООПшнику не дай - он там увидит что это хорошо ложится на ООП парадигму, и что вот так вот можно это реализовать, вот та фигня - базовый класс, вот так будет эта фигня наследоваться от той фигни... но если посмотреть на проблему незашоренным взглядом (с головой, не забитой всем этим теоретическим бредом, паттернами от банды четырех и прочей такой хренью) то нет там ничего особо связанного с ООП, и ООП по-сути вообще не нужно. Любую задачу можно решать через ООП, или через ФП, или в процедурном или вообще хрензнает каком стиле. ООП похоже на какие-то костыли для мышления, что якобы есть некие объекты, что они что-то могут с собой(и только с собой) делать и что они могут как-то наследоваться т.е. на основе одних объектов можно сделать новые, добавив всяких полей и методов. Почему именно так надо, почему не сделать какие-то другие штуки (назовем эту парадигму штуко-ориентированное программирование или ШОП) в которых мы описываем, что вот какая-то штука может под воздействием другой штуки становиться третьей штукой. Например, есть у нас штука "ведро с водой" и есть штука "горячий костер". Мы где-то описываем, что можно штуку "что-то-чем-можно-тушить" применять на штуку "что-то-что-горит" и получается в итоге штука "что-то-негорящее". Ну по-сути это можно реализовать как функцию, которая принимает два аргумента, что тушим и чем тушим, и возвращает потушенное что-то. Ну и если в эту функцию передать костер и ведро с водой, она вернет потушенный костер. Ну и еще она может вернуть пустое ведро без воды. Никаких объектов с жестко привязанными к ним методами нет, да они и не нужны
Сообщение слишком длинное. Полная версия.
>> No.49524 Ответ
>>49522
А вот чем абстрактные типы того же Хаскеля отличаются от ООП принципиально?
>> No.49525 Ответ
Файл: 1568146639231.jpg
Jpg, 42.03 KB, 218×300 - Нажмите на картинку для увеличения
edit Find source with google Find source with iqdb
1568146639231.jpg
>>49524
Я не очень понимаю, как ты хочешь сравнивать ADT с ООП, но в целом система типов в Хаскеле работает совершенно иначе по сравнению с популярными сейчас ООП языками: C#, Java. В плюсах есть классы, но нет ООП.
В основе ADT лежит параметрический полиморфизм, в основе ООП лежит подтиповый полиморфизм.
Параметрический получил свое название из-за схожести передачи параметров в функцию, только вместо функций у нас конструкторы типа. В шарпах и джаве подобное есть, но обрезан их функционал до нуля: больше параметризованных листов ничего сделать не получится, в плюсах ситуация лучше, но, чтобы начать понимать шаблоны, надо быть магом и убить годы жизни на изучение уродливого синтаксиса.

К примеру, ты можешь создать такой свой уютненький полиморфный тип в Хаскеле:
`data Bla f1 f2 a b c = Bla (f1 a) (f2 c b)`
Первый Bla - конструктор типа, второй - конструктор самого значения, они живут в разных пространствах имен и друг с другом не ругаются
Если мы посмотрим на его сигнатуру (kind)..
`Bla :: ( -> ) -> ( -> -> ) -> -> -> -> *`
То будет видно, что для создания элемента данного типа нам необходимы 2 полиморфных типа и 3 обычных. Это одна строка кода, компилятор определил тип сам, и получить такое в ООП языках не получится.

>>49524
Я не очень понимаю, как ты хочешь сравнивать ADT с ООП, но в целом система типов в Хаскеле работает совершенно иначе по сравнению с популярными сейчас ООП языками: C#, Java. В плюсах есть классы, но нет ООП.
В основе ADT лежит параметрический полиморфизм, в основе ООП лежит подтиповый полиморфизм.
Параметрический получил свое название из-за схожести передачи параметров в функцию, только вместо функций у нас конструкторы типа. В шарпах и джаве подобное есть, но обрезан их функционал до нуля: больше параметризованных листов ничего сделать не получится, в плюсах ситуация лучше, но, чтобы начать понимать шаблоны, надо быть магом и убить годы жизни на изучение уродливого синтаксиса.

К примеру, ты можешь создать такой свой уютненький полиморфный тип в Хаскеле:
`data Bla f1 f2 a b c = Bla (f1 a) (f2 c b)`
Первый Bla - конструктор типа, второй - конструктор самого значения, они живут в разных пространствах имен и друг с другом не ругаются
Если мы посмотрим на его сигнатуру (kind)..
`Bla :: ( -> ) -> ( -> -> ) -> -> -> -> *`
То будет видно, что для создания элемента данного типа нам необходимы 2 полиморфных типа и 3 обычных. Это одна строка кода, компилятор определил тип сам, и получить такое в ООП языках не получится.

В ООП популярен подтиповой полиморфизм, когда класс родителя создает виртуальный метод, а потомки его перезаписывают. Тогда можно всех потомков хранить с сигнатурой родителя, а уже таблица виртуальных методов или компилятор позаботятся о том, чтобы вызвался свой собственный метод у каждого объекта, пусть потомка, пусть родителя. В Хаскеле такого и подавно нет.

Еще иногда сравниваются "классы" Хаскеля и ООП-классы. Совсем разные вещи, у них просто совпадают ключевые слова, если очень грубо, то можно сравнить классы Хаскеля с интерфейсами ООП. Но интерфейсы необходимо задавать классу при создании, тогда как в Хаскеле ты можешь в любой момент создать свой собственный класс и научить любые (и почти все стандартные) типы работать с функциями заданными этим "классом". И эти классы также могут быть параметризованы, чего в плюсах пока не добиться.

Не очень хороший пример, но все что надо в нем понять, что две функции высшего порядка fmap тут различны и перегружены для двух совершенно различных типов: Maybe и List.

`mxs :: Maybe [Int]`
`f :: Int -> Int`
`mys = (fmap . fmap) f mxs`

Еще построено это все по совершенно другим принципам - по теории категорий, но это так явно и быстро не показать.
Сообщение слишком длинное. Полная версия.
>> No.49526 Ответ
>>49525
Все сломалось, все сломалось. Я ничего не вижу.
>> No.49527 Ответ
>>49525
> В основе ADT лежит параметрический полиморфизм, в основе ООП лежит подтиповый полиморфизм.
Оба утверждения спорны. Во-первых параметрический полиморфизм в ООП сегодня применяют чаще чем подтиповый, который якобы более "лежит в основе". Во-вторых в Хаскеле классы типов по сути -- это подтиповый полиморфизм.
> больше параметризованных листов ничего сделать не получится
Почему? Прикручиваешь дженерики и обычные параметры, куда взбредёт в голову.
> получить такое в ООП языках не получится
Ну делаешь 2 класса. А потом третий, у которого объекты первых двух и ещё поле в полях. Ну да, в Хаскеле система типов круче, но всё равно не так это принципиально.

Всё как бы круче и гибче, но всё то же самое. Если я создам модуль, а в него помещу типы и определю на них несколько функций, то на выходе это будет тупо класс. На каких-то высосанный из пальца примерах это выглядит иначе, но когда я в голове пытаюсь обуть типичный CRUD с квитанциями и сметами, то выходит такое же точно ООП. Big picture, архитектура в общем и целом, вот что не отличается. Я не вижу, где сам подход другой.
>> No.49528 Ответ
>>49527
> Во-первых параметрический полиморфизм в ООП сегодня применяют чаще чем подтиповый, который якобы более "лежит в основе"
Наследование - основа ООП, а из наследования следует подтиповый полиморфизм. Параметрический не имеет ничего общего с этими концепциями. И пришел он в ООП из функционального программирования.

> Во-вторых в Хаскеле классы типов по сути -- это подтиповый полиморфизм.
Классы в Хаскеле реализуют ad-hoc полиморфизм, он не требует никакой структруры, тогда как подтиповый даже своим именем подразумевает общего наследника. Ничего общего между ними нет.

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

> выходе это будет тупо класс
> Я не вижу, где сам подход другой.
Функциональное программирование не заканчивается системой типов. Чистые функции, монады, отсутствие состояния, отсутствие указателей, отсутствие null'a, высокоуровневые функции, отстутсвие while и for циклов и другие производные от этих идей. С такими высокоуровневыми концепциями подход к написанию того же CRUD'a просто не может не измениться. Другое дело ты можешь после перехода продолжать пытаться написать код в своей уютной парадигме и фрустрировать, что ничего нормально не получается.
>> No.49529 Ответ
>>49528
> Наследование - основа ООП
Основа, ни основа -- пофигу. На практике от него часто отказываются в пользу композиции.
> подтиповый даже своим именем подразумевает общего наследника
Класс типов подразумевает общий класс у типов у Хаскеля. Ну и что?
> Сопоставлять паттерны дженериков у тебя не получится.
Я могу в разные классы воткнуть разные реализации метода интерфейса. Будет работать почти так же.
> написанный с ними код выглядит нечитабельно.
Примерно так же выглядят типы с параметрами в Хаскеле. Это почти те же дженерики.
> Чистые функции, монады, отсутствие состояния, отсутствие указателей, отсутствие null'a, высокоуровневые функции, отстутсвие while и for циклов и другие производные от этих идей
Всё это конструкции нижнего уровня архитектуры программы. Мелочи. А вот как программа будет дробиться на большие куски? Так же. Или это будет куча разрозненных функций, которые не объединены ни в какие модули?
>> No.49530 Ответ
>>49529
> подтиповый, который якобы более "лежит в основе"
> Основа, ни основа -- пофигу
Ну-ну. Чаще чем в ООП наследование нигде больше не используется.

> Класс типов подразумевает общий класс у типов у Хаскеля. Ну и что?
Никто ничего не подразумевает. Еще раз, в Хаскеле нет типов как таковых. Если ты желаешь, в Хаскеле есть разнородные интерфейсы, которые твой тип может реализовать. При этом реализованы они могут быть когда угодно.

> Примерно так же выглядят типы с параметрами в Хаскеле. Это почти те же дженерики.
Из головы..
data Either a b = Left a | Right b
data Maybe a = Just a | Nothing

f :: (Num a) => Either [a] (a, a) -> Maybe a
f (Right (x, y)) = Just (x + y)
>>49529
> подтиповый, который якобы более "лежит в основе"
> Основа, ни основа -- пофигу
Ну-ну. Чаще чем в ООП наследование нигде больше не используется.

> Класс типов подразумевает общий класс у типов у Хаскеля. Ну и что?
Никто ничего не подразумевает. Еще раз, в Хаскеле нет типов как таковых. Если ты желаешь, в Хаскеле есть разнородные интерфейсы, которые твой тип может реализовать. При этом реализованы они могут быть когда угодно.

> Примерно так же выглядят типы с параметрами в Хаскеле. Это почти те же дженерики.
Из головы..
data Either a b = Left a | Right b
data Maybe a = Just a | Nothing

f :: (Num a) => Either [a] (a, a) -> Maybe a
f (Right (x, y)) = Just (x + y)
f (Left (x:y:_)) = Just (x + y)
f _ = Nothing
Осталось тебе реализовать подобное своими дженериками, а потом можно будет и сравнить "почти же"-сть.

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


No.49448 Ответ [Открыть тред]
Файл: segfault.jpg
Jpg, 48.88 KB, 600×300 - Нажмите на картинку для увеличения
edit Find source with google Find source with iqdb
segfault.jpg
Доброчан, тут возник вопрос. Есть ли какая-то готовая платформа, которую можно развернуть у себя, в которую можно загрузить каким-либо образом скрипт на некотором языке, который она поддерживает ("нормальный" или подмножество "нормального", хотя любой сойдёт), после чего можно будет вызвать его http запросом содержащим параметры и получить результат выполнения. При этом, интерфейс должен быть относительно высокоуровневым (т.е. не а-ля (S|C)GI) и унифицированным, а скрипт должен быть ограничен в плане доступа к системе, кроме некоторого внутреннего хранилища, поэтому условный PHP в чистом виде не подходит. Я мельком проглядел модные serverless'ы, но как-то оно всё рассчитано на aaS и запускает всё это безобразие в контейнерах, что оверкилл для моих хотелок. По каким ключевым словам это вообще искать и, если такого нет, что лучше взять, для того, чтобы на коленке смастерить (пока смотрю на duktape ибо его можно к python'у прикрутить)?
>> No.49449 Ответ
>> No.49450 Ответ
>>49449
И, я не просил фреймворк для веб-приложений в чистом виде. Близко к микрофреймворкам, но с возможностью на ходу добавлять обработчики, ограниченной средой и интерфейсом вроде json-rpc
>> No.49452 Ответ
>>49450
Ну в общем-то подходит, нода + экспресс.
>> No.49453 Ответ
>>49452
Как ты себе это представляешь? Во-первых, как ограничить этот код, во-вторых, мне не нужен весь интерфейс http запроса, потом, разве нода позволит переопределить обработчики на ходу. Так можно и python + flask предложить.
>> No.49454 Ответ
>>49448
Как понимаю, ты хочешь тот же *cgi, вид сбоку. Сбоку в том плане, что кишки парсить не хочешь, а хочешь, чтобы их парсили за тебя.
Ещё ты хочешь разграничение доступа.
Первое ты сделаешь только написав обёртку над тем, что есть, попутно запилив свой протокол с IPC, второе тебе даст MAC.
>> No.49461 Ответ
>>49454
IPC, кстати, на SHM.


No.49446 Ответ [Открыть тред]
Файл: E61EAE9DC1AF99978E0C39C23646F19965A67F28.gif
Gif, 668.98 KB, 400×400 - Нажмите на картинку для увеличения
edit Find source with google Find source with iqdb
E61EAE9DC1AF99978E0C39C23646F19965A67F28.gif
Скажи доброчан, вот есть сайт, есть на нем форма отправки контента (скажем тот же пост в треде на имиджборде). Вот я нажал кнопку "отправить". Вопроса два:
1) как перехватить и посмотреть что именно передается на сервер когда я нажимаю кнопку
2) как продублировать этот запрос, чтобы можно было отправить то же или немного измененное на тот же сервер.

Хочу попробовать сделать бота который бы централизованно по одному нажатию кнопки разбрасывал мой контент по нескольким разным сайтам.
>> No.49447 Ответ
Файл: vIMMnUn.jpg
Jpg, 174.62 KB, 600×756 - Нажмите на картинку для увеличения
edit Find source with google Find source with iqdb
vIMMnUn.jpg
Простейший способ - девелопер тулс в браузере. Можно смотреть ходящие запросы. Там же есть copy as curl, который сгенерирует параметры для повторения запроса курлом.
Ну и дальше можешь заскриптовать это на шелле или батниках.

Но это так, баловство. Для сириус бизнеса надо на нормальном языке писать.
>> No.49458 Ответ
>>49446
> по одному нажатию кнопки разбрасывал мой контент по нескольким разным сайтам
> то же или немного измененное на тот же сервер
Так тебе и поверим, мамкин хакер. Твоя задача легко не решается. И если бы твой скилл был достатоный, ты бы не задавал свой вопрос.


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


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