[ /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.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
437 posts are omitted, из них 70 с файлами. Развернуть тред.
>> 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.49362 Ответ
Как выбрать направление куда развиваться? Уже покурил достаточно долго STLьку, есть на гите реализованный проект сделал интересную настольную игру, с сетью, на с++. Есть математическая база. Не понятно что учить дальше и как искать работу.
Гуглил на hh плюсовых программистов - очень мало вакансий для стажеров, всем нужен опыт работы от 1-3 лет. Смотрел вакансии по UE4 - мало и нужен опыт работы. Вакансии по программированию графики - опыт работы 5+ лет. Еще несколько типов вакансий с требованием широко известных технологий - то же самое.
Если зайти с другой стороны, каждая компания требует набор каких-то библиотек нужных конкретно им. То есть если я ща заморочусь и сяду ее учить, то к тому моменту завершения, вакансия уйдет/меня не примут по еще каким причинам, а ждать следующую, где потребуется то, что учил, можно бесконечно.
Где я делаю что-то не так? Может стоит углубиться в одно, а затем ходить и говорить "я знаю то-то и то-то, но не работал ни разу с тем-то и тем-то"?
>> No.49363 Ответ
>>49362
На плюсы в принципе мало вакансий, но есть очень хорошие. Напиши резюме. Напиши разным рекрутерам, даже где требуется опыт. Может, всё равно возьмут. Кто-то, кто уже сам что-то умеет даже без опыта лучше чем просто зелёные выпускники, есть разница.
Либо попробуй выучить либо Джаву, либо С#. Там вакансий побольше и они скучные в основном. Только умоляю не идти в пхп. А то ты пожалеешь об этом решении. Туда легче устроиться, но и работать тебе придётся с коллегами меньшего уровня в компаниях как в пастах со сраного.ит. Есть ещё Руби и Питон.
> Если зайти с другой стороны, каждая компания требует набор каких-то библиотек нужных конкретно им. То есть если я ща заморочусь и сяду ее учить, то к тому моменту завершения, вакансия уйдет/меня не примут по еще каким причинам
Выучи пару популярных технологий. Они все аналогичные. Устраивайся туда, где будет аналогичные технологии, не обязательно прям такие же.

По первой может быть чуть сложновато, но всё будет нормально, если ты будешь стараться.
>> No.49364 Ответ
>>49279
Достаточно обычных сессий, как обычно. Толку от JWT. Точно такие же сешшен-ид через что у вас там на бекенде.
>> No.49365 Ответ
>>49363
Спасибо за ответ. В пхп ни ногой, мне плюсы нравятся. Но опыта еще набираться и набираться


No.49322 Ответ [Открыть тред]
Файл: tenor.gif
Gif, 428.29 KB, 320×240 - Нажмите на картинку для увеличения
edit Find source with google Find source with iqdb
tenor.gif
Захотелось попробовать чего-нибудь этакого и написать мелодию, используя исключительно текст. Еще до изобретения этих ваших трекеров программисты каждую нотку прописывали в коде программы. Вот что анон может посоветовать погуглить носкиллу по данному вопросу? Музыку писать-то я умею, а вот программировать нет. Есть ли что-то простое и легкоусвояемое?
12 posts are omitted, из них 1 с файлами. Развернуть тред.
>> No.49345 Ответ
>>49343
Да.
>>49344
Я гуманитарий. Быдлокодом не увлекаюсь. Мне бы почитать что-нибудь простое и размеренное на тему.
>> No.49346 Ответ
>>49345
Не думается ли тебе, что тебе скорее нужна готовая программа, а не язык целый? Ты ж не описываешь картинки на языке картинок. Тогда зачем нужен язык музыки?
>> 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.49298 Ответ [Открыть тред]
Файл: oie_SohS1tCbFmpd.jpg
Jpg, 15.52 KB, 563×225 - Нажмите на картинку для увеличения
edit Find source with google Find source with iqdb
oie_SohS1tCbFmpd.jpg
У нас есть для каждой задачи куча в целом аналогичных, но всё же значительно отличающихся решений. Причём если с языками и фреймворками всё ещё как-то интуитивно понятно, чем они отличаются, то чем все Хадупы, Касандры и Сфинксы отличаются друг от друга вообще не очевидно. Причём работают они совсем по-разному, но задачи решают, казалось бы, примерно одинаковые. При этом каждая хреновина настолько сложна, что изучать её можно неделями или месяцами, чтобы знать, когда она нужна, и как ей пользоваться. И если потом узнаешь, что есть что-то получше, то недели изучения зря потеряны.

Хотелось бы узнать мысли анона, как определять, что нужно для дальнейшего развития, и что нужно использовать. Как анон вообще выпутывается из этого капкана?
>> No.49307 Ответ
>>49306
Что это? Как это использовать?
>> No.49308 Ответ
>>49307
Каталог сайтов, его читают.
>> No.49309 Ответ
>>49308
Как это соотносится с темой треда?
>> No.49310 Ответ
>>49309
К тому же тут никаких сайтов по решениям типа хранилищ данных и т.п. нету.
>> No.49314 Ответ
>>49310
Найдите мне, пожалуйста, хранилище данных, в котором смогли в банальный вариант документации вида "маны плюс цельный html/pdf/info-документ".
А вот нету такого и не будет, они рождаются и дохнут моментально.
А первое и основное преимущество распиаренного nosql почему лайкают в твиттере и на гитхабе лишь в отсутствии схемы типа будет проще и недоразвитый dsl типа особо много учить не надо.

Некоторые ещё дают большую кнопку, которая делает сами знаете что. Нужна ли она, никто не задумается, но раз все друзьяшки в твиттере лайнули, значит поставить надо.
>> 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.29402 Ответ [Открыть тред]
Файл: serial_experiments_lain-14377.jpg
Jpg, 405.57 KB, 1600×1200 - Нажмите на картинку для увеличения
edit Find source with google Find source with iqdb
serial_experiments_lain-14377.jpg
Был удивлён, пролистав за десяток страниц, и не найдя здесь подобного трэда.
Решил начать учить язык богов. С чего начать - книги и мануалы, теория и практика (желательно на русском), в чём лучше писать (под винду и под никсы), советы, распространённые ошибки, всё сюда. Лисп-нить иди.
276 posts are omitted, из них 46 с файлами. Развернуть тред.
>> No.47602 Ответ
Доброаноны, почему кложура считается диалектом лиспа?
Только из-за синтаксиса завязанного на скобочки?
Ну так у той же жабы синтаксис завязан на фигурные скобочки и точки с запятой, прямо как у си. Но никто же не говорит, что жаба -- диалект сей.
>> No.47613 Ответ
>>47602
http://alexott.net/ru/clojure/clojure-intro/#sec2

> От Lisp'а Clojure "унаследовал" макросы, мультиметоды и интерактивный стиль разработки, а JVM дает переносимость и доступ к большому набору библиотек, созданных для этой платформы.

И далее отличия: http://alexott.net/ru/clojure/clojure-intro/#sec3

> Только из-за синтаксиса завязанного на скобочки?
Я бы не назвал кложуру лисподиалектом. По синтаксису ЯП оценивет совсем зелень, про скобочки — толстозелень.
>> No.47917 Ответ
Лиспаны, что скажете про GNU Guile и GUIXе?
>> No.47942 Ответ
>>47917
В Guile обещают не завозить костыли Elisp, а сделать его самостоятельной реализацией R5RS и обратную совместимость с Elisp уже костылять на ней. Вряд ли Guile получит широкое распространение, но было бы здорово иметь фунционал имакса со всеми его расширениями в нормальной виртуальной машине и общаться с ним на нормальном языке. Вряд ли язык получит широкое распространение вне сообщества GNU, хотя всё возможно.
Про GUIX слышал только много похвал, мол оно очень клёво переносит функциональную парадигму в менеджмент пакетов. Может если с ним работать на уровне разработчика и только в GuixSD, оно чувствуется, а на уровне пользователя мне вот и с дебиановским apt'ом очень удобно без всякой функциональщины. Может быть пакеты собирать с GUIX'ом и удобнее будет.
>> No.48200 Ответ
>>47942
Спасибо за ответ, анон, подскажи пожалуйста, я правильно понял, что искать кодеров на Guile надо там же где и кодеров на Схеме/Лиспе - так как это почти одно и то же?

> мне вот и с дебиановским apt'ом очень удобно без всякой функциональщины.
Там фишка в том что можно установить сразу n-ное количество версий одной программы, и все будут работать - это даже круче чем в Андроиде. Мне как раз такого не хватает по работе.
>> No.48205 Ответ
>>48200
> искать кодеров на Guile
irc://#guile@freenode
> на Схеме/Лиспе - так как это почти одно и то же?
Это всё около-лисповое, но Guile - это ещё и уникальный в своём роде погромистский конструкт, целая языковая башня (https://www.gnu.org/software/guile/manual/html_node/Compiler-Tower.html), по крайней мере по замыслу. Код разных языков можно будет компилировать в один универсальный байт-код виртуальной машины, прикручивать к последней другие компиляторы и таким образом перекидывать фичи из одного языка в другой. То есть это мультиязыковая система с лисповым мета-функционалом. И если я правильно понял, эта башня будет мочь в рефлексию, автомодификацию. Прям запахло ИИ, киберпанком, восстанием машин. Хотя, этим всем пахло и от MOP, но нахуй никому не нужен сейчас ни CLOS, ни тем более MOP. Так, думаю, и с гуайлом будет скорее всего.
> установить сразу n-ное количество версий одной программы, и все будут работать
Я бы обмазался чрутами, лёгкой виртуализацией и прочими системными сендбоксами. Так как-то всё надёжнее, прозрачнее, понятнее. Линупсоядро живёт совершенно отличной от лиспового мира жизнью, скрещивать ужа с ежом дело занятное, наверное, но пользоваться такими гибридами у меня лично чот желания нет особого. Перекатиться на MIT CADR на FPGA и допиливать её изнутри - вот это было бы здорово, об этом я последнее время обильно мечтаю.
>> No.49355 Ответ
Посмотрел я тут недавно, короче, на эти ваши лиспы. Всегда до последнего думал, что это толстота, а оказывается, на этом (на первый взгляд) вполне можно писать. Я на перле когда-то такую хуйню делал, а тут она выглядит естественнее. Интересно.
Теперь встал вопрос, с чего же, собственно, начинать. Серьёзно, ведь вашего лиспа хуева куча диалектов и каждого хуева куча имплементаций.
А ещё все книги устарели минимум на 10 лет. Это же пиздец! Я не знаю, наверное, за эти годы/десятилетия что-то менялось, как минимум, завозили новые фичи в диалекты, обновлялась экосистема.

Короче, подытоживая:
1) Расскажите, какие есть диалекты из современных ещё незаброшенных. Преимущества и недостатки каждого вкратце.
2) Страшно ли, что книги в основном вышли десятки лет назад и стоит ли их сегодня читать?
3) Есть ли централизованный репозиторий с либами, а-ля npm, cpan и подобные?
>> No.49356 Ответ
>>49355
> А ещё все книги устарели минимум на 10 лет. Это же пиздец!
> 2) Страшно ли, что книги в основном вышли десятки лет назад и стоит ли их сегодня читать?
Конкретно про лисп не скажу, но вообще некоторые вещи в некоторых языках не устаревают. Ты вообще на чем обычно программируешь? Я вот например пишу на Си под контроллеры. И если взять известную книгу по Си: K&R "The C Programming Language" - оригинал издан 1978 - по ней до сих пор изучают этот Си, и ничего там сильно существенно сильно не изменилось в самом Си (добавили некоторые несущественные фичи, которые по пальцем пересчитать можно). Хотя наверняка в каких-то более попсовых языках там через каждый месяц надо что-то новое перечитывать чтоб быть в курсе новой фигни, которая взбрела кому-то там из разрабов языка
> 3) Есть ли централизованный репозиторий с либами, а-ля npm, cpan и подобные?
https://www.quicklisp.org/beta/
>> No.49357 Ответ
>>49356
> Конкретно про лисп не скажу, но вообще некоторые вещи в некоторых языках не устаревают.
Всё равно мучает подсознательное ощущение, что если что-то не обновлялось более трёх-четырёх лет, то этим лучше не пользоваться.

> Ты вообще на чем обычно программируешь?
На ноде.
>> No.49359 Ответ
>>49355
Емаксом пользуешься? Тогда в первую очередь елисп пробуй, профиты моментальны.
> хуева туча
Не совсем так. CL более-менее один, а вот реализации Scheme оче сильно отличаются. Начинать-потрогать можешь с какой-нибудь scheme с лиспомакросами (Racket , Guile, Chicken два последних относительно хорошо скрещиваются с сишечкой, по крайней мере со стороны сишечки, есть опыт скрещивания loudmouth и guile), а когда привыкнешь, можешь перекатиться на CL.
Есть ещё Clojure, но это веселье в своей отдельной категории, лучше сначала ознакомиться хотя бы с одним из двух основных, чтобы смотреть на него с долей иронии. Как, собственно, и на всякие Hy с LFE.
Книги-то могли много когда выйти назад, но манулы живы и обноаляются.
Алсо, может тебе это всё и кажется старым, но всякие штуки из лиспа до сих пор не смогли перетянуть в мейнстрим. Обратно же это делается за дни.
У емакса есть marmalade и elpa/melpa, за cl тебе пояснили, у схемок было две потуги по запилу кросссхемного репозитория и одна кросс-библиотека, не сложилось. Ищи в репозиториях конкретной схемки, языковые фичи объявляют в SRFI, ну и с такой-то матерью чужой код можно красть и портировать. Но на схемке ничего особо крупного, увы, нет.


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
317 posts are omitted, из них 49 с файлами. Развернуть тред.
>> 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.49311 Ответ
>>49304
https://stepik.org/course/67/syllabus

На портале есть курсы по питону различной сложности. Этот -- первый, и без вундерваффе.
>> No.49313 Ответ
Файл: screen.png
Png, 18.97 KB, 810×575 - Нажмите на картинку для увеличения
edit Find source with google Find source with iqdb
screen.png
>>49302
Я учил с питоньего мануала. Все эти dive into python дико не зашли.
Что-то объясняют для тех, кто в жизни не видел языка программирования, а что-то — как для того, кто перечитал весь мануал и знает кучу-кучу всего. Вот. Ну и где-то в глубинах сложность отрывом идёт вверх.

На курсы как-то записывался, но дальше старта дело не дошло, это надо регулярно вот этим всем заниматься, что с моими нервами не проходит.
ну и подозреваю, что где-то в середине курса, едва научившись писать программы-фильтры, заставят сразу взять и написать парсер json.

Если ты не хочешь в несколько циклов, можешь сделать всё через один while.

Я пользую лёгенькую IDE(Geany) на пеке или редактор и просто python.
Ещё пользовал repl на repl.it, хорошо помогло, когда надо было посчитать по мелочи, а пеки рядо не было.

>>49304
Разве в курсах впиливают фреймворки? Это по ним надо tutorial`ы отдельно искать. Пока зделоют курс, всё устареет.
Быстрее в какой-нибудь pydoc потыкать.
>> No.49334 Ответ
Файл: Ulitka.jpg
Jpg, 39.56 KB, 936×385 - Нажмите на картинку для увеличения
edit Find source with google Find source with iqdb
Ulitka.jpg
>>49313
Мудро сделано.

А такую задачу быстро решите?
Я мучился 2 вечера, сначала собрался решать в лоб, но ничего не получилось и мой мозг взорвался: я собрал остатки в кучку, расписал на листке индексы и написал фарш-код, который, тем не менее, прошёл всё проверки.
>> No.49354 Ответ
>>49334
https://repl.it/repls/PreemptiveQuaintRedundantcode
Пять минут придумывал решение, 10 минут вспоминал как что в Питоне делается. Все же просто - спираль заполнятся строго по очередности 'вправо', 'вниз', 'влево', 'вверх', при этом каждый 3й ход не считая самого первого длина заполнения уменьшается на 1. Вспоминал 10 минут потому, что решив сделать красивый пет проджект для Джанги укатился во фронт нечаянно и теперь делаю мувисерчер, лол. Так что накидал везде nonlocal чтобы были кложурки как в жсе, наверняка можно переписать в более Питонском стиле.


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

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

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

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

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

Не пони.

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

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

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

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

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

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


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