LINUX.ORG.RU

Избранные сообщения qulinxao3

Что я делаю в жизни не так? Деньги то так кончатся совсем.

Форум — Talks
  1. Программирую с института. С 1984 года. Программируемые калькуляторы. Машинные коды. Бейсик с циферками на магнитофонных кассетах.

  2. 2002 год - первый личный сайт. И первые попытки фрилансить. Фриланс - практически 0.

  3. 2008 год - 50 личных сайтов и нормальная прибыль с них. Фриланс - практически 0

  4. С 2016 года я, очень эпизодически, находил работу по фрилансу за 2 евро в час. Очень эпизодически

  5. 2022 - работы нет даже за 20 русских руб в час.

  • Опыт программирования - больше 5 лет;

  • Опыт php, perl, mySQL - больше 5 лет;

  • JS - 3 года;

  • вёрстка - больше 5 лет;

  • C++, Java, Python - меньше года, под десктоп.

  • сбор и обработка информации с интернета;

  • генерация pdf-документов «на лету», в программе;

  • Специализация - Drupal (уровень - написание модулей) - 10 лет;

  • Опыт работы с фреймворками есть: написание модулей на Yii около 3 лет, MODX - 2 года ;

  • ООП знаю, пишу;

Что я делаю в жизни не так? Деньги то так кончатся совсем. Спасибо

 ,

kompospec
()

Участвуйте в конкурсе глупых и страшных ошибок на языке C++

Форум — Development

Команда PVS-Studio проводит конкурс прикольных/глупых/страшных ошибок на языке C++ (можно и C). Наверняка на практике у вас было что-то эпичное и интересное. Приглашаю поделиться. Самые «лучшие» ошибки мы соберем в статью, при условии, что их наберётся достаточное количество. А чтобы было интереснее, опишите историю бага.

Узнать детали и поучаствовать здесь: https://pvs-studio.ru/ru/blog/contest/

Дата окончания: 30 декабря 2023 года.

P.S. Отберём 10 участников с самыми интересными случаями и отправим им в подарок – мою бумажную книгу «Вредные советы для C++ программистов». Это переработанный и расширенный вариант «60 антипаттернов для С++ программиста». Если хотите, поставлю подпись. Я же знаю, что здесь есть мои почитатели ;)

 , , ,

Andrey_Karpov_2020
()

Ищу удаленку

Форум — Job

 , ,

PETER
()

52 года назад вышла статья Эдсгера Дейкстры против оператора GOTO

Форум — Talks

Собственно, сабж.

Кстати, оригинальный заголовок был «A Case Against the Goto Statemen», а на получивший известность «GOTO considered harmful» его заменил Никлаус Вирт - автор языка программирования Паскаль, который тогда был ещё и редактором журнала «Communications of the ACM», в котором и было опубликовано письмо Эдсгера Дейкстры.

 ,

saahriktu
()

Как понять чистый С (без библиотек), awk и sed за 10 минут?

Форум — Development

Понимаю основные концепты в высокоуровневых ЯП, типа классов, функций и т.д. Писал на питоне скрипты для себя. Сейчас есть возможность поступить в европе в школу 42 (в рф называется школа 21), где усиленно учат первое время С.

Посмотрел их задания, а там что-то типа алгоритмов и вначале программирование без библиотечных функций. Выводят через write в буфер, кодят аналоги функций в стандартной библиотеке, мыслят алгоритмически и т.д. Все по канонам CS.

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

Ко всему прочему, видел пару заданий на знание awk и sed. И вообще в целом умение распарсить строки из терминала. По времени есть где-то месяц.

Вопрос, как можно подготовиться к такому? Откуда черпать информацию? Может есть уже золотая классика? Информации слишком много и она плохо отсортирована, прошу совета.

Перемещено hobbit из general

 , , ,

myredeyes
()

Литература 21 века. Что стоит читать?

Форум — Talks

Интересна художественная литература, написанная после 2000 года. Не только российская или англоязычная. Научная фантастика пойдет, но должно быть что-то еще. Яркие, необычные идеи, форма - то, что вдохновляет, или заставляет задуматься.

Или рок-н-ролл мертв?

 ,

C
()

«Яндекс» подготовит 350 000 IT-специалистов

Форум — Talks

С 2023 по 2026 гг. «Яндекс» намерен подготовить 350 000 IT-специалистов, что в три раза больше, чем в предыдущие три года. Об этом сообщила директор по образованию в «Яндексе» Дарья Козлова на конференции Yet another Conference on Education (YaC/e). «Владение технологиями и умение программировать – больше не прерогатива тех, кого называют “айтишниками”. Мы давно готовим специалистов для IT-отрасли: разработчиков, тестировщиков, аналитиков, но у нас есть и программы для людей из других сфер», – цитирует Козлову пресс-служба корпорации. В «Яндексе» пояснили, что число айтишников увеличится за счет внедрения новых форматов обучения, появления новых программ подготовки, расширения партнерства с вузами и использования решений на основе генеративных нейронных сетей.

https://www.vedomosti.ru/technology/news/2023/11/15/1005895-yandeks-podgotovit

У меня только один вопрос - чем будут заниматься все эти люди? Или это опять попытка заработать на курсах для вкатывальщиков?

 , ,

C
()

Нападения работорговцев

Форум — Talks

За последнюю неделю фиксирую два домогательства овчарок через хабр карьеру и одно в телеграм, а также 2 попытки устроить скандал IRL. Что, видимо, по их коварному замыслу должно привести меня к тому, что я начну соглашаться на предложения работы со стороны. Это двойной объем от обычного происходящего раз в два месяца террора. Вероятно меня слили два раза или им тяжелее работать через страны снг и в текущей ситуации и они решили удвоить эфорты. Прошлый раз когда меня выгоняли с работы, я заметил, что был выброшен на рыначек труда одновременно с значительными массами айтишников. При этом конечно «кадровички» вели себя совершенно противоположным образом, т.е. незаинтересованно и претенциозно. Это навело меня на гипотезу об том, что работорговцы начали работать методами облав, приуроченных к кризисам, войнам и т.п, чтобы облегчить себе вывоз специалистов в другие страны. Пример в подтверждение - внезапная отмена виз из израиля в сша накануне атаки из газы. Нападают ли на вас с предложениями работы, подработки, ухода с текущей прямо сейчас?

 

Syncro
()

Объясните как использовать метод Docker API | Python

Форум — Development

Метод фунции containers run требует аргументов

Все понятны кроме одного

Вот пример моего кода:

        client.containers.run(image='slave:latest', detach=True, name='Jenkins_slave', network_mode='bridge', 
        volumes={
        '/home/jenkins': {
            'bind': 'slave_data', 
            'mode': 'rw'
            }
        })

Только вот жалуется, что slave_data не является путем, а вместо 'bind' 'volume' не принимает

Кусок документации

volumes (dict or list) –

A dictionary to configure volumes mounted inside the container. The key is either the host path or a volume name, and the value is a dictionary with the keys:

    bind The path to mount the volume inside the container
    mode Either rw to mount the volume read/write, or ro to mount it read-only.

For example:

{'/home/user1/': {'bind': '/mnt/vol2', 'mode': 'rw'},
 '/var/www': {'bind': '/mnt/vol1', 'mode': 'ro'}}

Линк на доку

Что нужно: slave_data(это volume, не bind монтирование) должно примонтировать в /home/jenkins

как быть?

 , ,

Deleted
()

Муки выбора языка программирования

Форум — Development

Пытаюсь выбрать язык программирования для личного проекта.

Хочется, чтобы у языка были:

  • библиотека для загрузки/выгрузки изображений с поддержкой широкого круга форматов
  • биндинги для sdl2
  • работа с битовыми массивами размером больше чем 64 элемента (с поиском единиц)
  • перегрузка оператора индекса в том числе при присвоении
  • ассоциативные массивы с лаконичным доступом к элементам
  • документацией с поддержкой мобильного просмотра в 2023 году-то
  • поддержкой компиляции для мобильных архитектур
  • нормальный полиморфизм, а не как в Rust
  • востребованность на рынке труда

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

C++ и Rust имеют очень странные конструкторы для битовых массивов. Может это проблема документации, но я с ходу не нашёл как мне создать битовый массив из готового байтового массива, чтобы каждый байт превратился в 8 бит.

Haskell имеет поддержку даже многомерных битовых массивов, но вот документацию на мобильном листать не удобно. В принципе не критично, но я не уверен что haskell вообще подходящий инструмент для моей задачи. А задачу мою можно найти по тегу «гексагональный пиксель» здесь.

Что выбрать?

 , , , ,

unDEFER
()

FreeOrion 0.5 «Государство и политики»

Новости — Игры
Группа Игры

После долгих двух лет и восьми месяцев с прошлого релиза вышла очередная версия FreeOrion — свободной космической 4X-параллельно-пошаговой стратегии, вдохновлённой серией игр «Master of Orion».

Это, возможно, самый долгий релиз за всё время, и всё же он, наконец-то, был опубликован. Причина для обновления номера версии до 0.5 — ввод новой важной механики: ресурс «Влияние» и государственные политики, что составляет релиз «Государство и политики». Это привносит значительные изменения в игровой процесс и требует тщательно сбалансировать множество вещей. Также ИИ должен был по-быстрому использовать новую механику (хотя бы до уровня работоспособности), и далее стандартный набор изменений: исправления ошибок, настройка ИИ, оптимизации и т.д.

( читать дальше... )

>>> Подробности

 , , ,

O02eg
()

Сергей Савельев: Искусственный интеллект это обман.

Форум — Talks

https://www.youtube.com/watch?v=Bqqm0hFg9Gs (короткий ролик на 8 минут с основными тезисами)

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

 

bbk123
()

Несколько вопросов по japanese keyboard

Форум — General

// Призывается @t184256 как юзер таковой.

Внезапно вспомнил про рекомендацию @t184256 (кстати, напомни что у тебя ноут?) про japanese keyboard на ноут вместо клавиатуры, но вознимают резонные вопросы:

  • Как пользоваться этим ущербным ISO Enter?
  • Как целиться в микроскопический 1u Backspace?

Спасибо хоть левый Shift нормальный.

@t184256, поделись своими настройками (что и куда замаплено, не как замаплено).

// Не в Linux Hardware потому что вопрос использования использованием, а не настройка и прочее.

 , , ,

mord0d
()

А вот зачем программистам нужен матан!

Форум — Talks

Нет, нет, да и брякнет кто-то, что не нужно. Навеяло топиком Столько просмотрщиков картинок... И ни одного годного

Крайне желательно изучать, чтобы хотя бы знали какие есть штуки, которые могут быть полезными в практической работе с данными. Даже хотя бы приблизительно, что вообще есть разные методы и чем они могут быть хороши/плохи. Например, сплайны и другие методы интерполяции.

 ,

praseodim
()

Резюме на hh.ru

Форум — Talks

Одни и те же компании ходят и пырятся на мое резюме каждый день. По несколько дней подряд. Каждый раз после обновления набигают и 3-4 дня видно одних и тех же.

Это роботы? Или они мне что-то хотят сказать, но не могут?

 ,

unt1tled
()

Про айти-колхозы

Форум — Talks

Посмотрите на такую схему:

  1. При поступлении на работу, сотруднику выдаётся доля в общих доходах компании. Скажем, три четверти доходов выделяется на шару, и шара делится на равные доли между всеми.

  2. При увольнении он её автоматически теряет.

  3. Зарплаты нет, только эта доля. На случай проблем, «минимальная общая зарплата» берется из резервного фонда до тех пор, пока таковой не закончится. Общие не только доходы, но ещё и убытки и долги. То есть, на начальных этапах «зарплата» может быть и 0 и меньше.

  4. Решения принимаются общим голосованием в формате прямой демократии. Особенно найм и увольнение, ведь найм каждого нового человека приводит к уменьшению доли всех участников на объем доли новонанятого сотрудника плюс оверхед от его наличия.

Вопрос 1: вы хотели бы работать по такой схеме?

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

Эти действия не обязаны максимизировать прибыль компании, выраженный в деньгах, а только её социальную значимость. Вопрос 2 заключается в том, что участники не должны сесть за то, что нарушили какой-то дурацкий закон, заставляющий максимизировать прибыль. Или например, что делать с ТК РФ, где зарплата не бывает нулевой?

 

stevejobs
()

Новая версия коллекции ascii игр для терминала

Новости — Игры
Новая версия коллекции ascii игр для терминала
Группа Игры

Состоялся релиз сборника терминальных игр New BSD Games за номером версии 4. Были сделаны мелкие исправления и добавлены две игры: Darrt и Snakeduel. Данный сборник, как не трудно догадаться, вдохновлен другой подобной коллекцией игр bsd games, которая присутствует почти во всех юникс-подобных дистрибутивах. Игры написаны на языке си, для сборки требуется библиотека ncurses. Лицензия - СС0, Unlicense, 0BSD. Разработчик открыт для новых предложений игр, идей и помощи мейнтейнеров, готовых сопровождать пакет в своих дистрибутивах.

Список игр:

( читать дальше... )

Скриншоты каждой игры на imgur.com

>>> Гитхаб

 , , ,

Hamster_on_Linux
()

Веб как он есть

Форум — Talks

— Эй, я получил новый веб-проект, но, если честно, я не занимался веб-кодингом в течение нескольких лет, и я слышал, все немного поменялось. Ты же самый современный веб-разработчик, правда?

— Это теперь называется Front-End инженер, но да, я — именно он. Я работаю с вебом в 2016. Визуализации, музыкальные плееры, летающие дроны, которые играют в футбол, все что угодно. Я только что вернулся из JsConf и ReactConf, так что я знаю новейшие технологии для создания веб-приложений.

— Круто. Мне нужно создать страницу, которая отображает последние действия со стороны пользователей, так что мне просто нужно получить данные от REST и отобразить их в какой-то фильтруемой таблице, ну и обновлять её, если что-то изменится на сервере. Я думал, может быть, использовать JQuery для извлечения и отображения данных?

— О, Мой Бог! Нет! Никто больше не использует JQuery. Ты должен попробовать React: это — 2016!

— Интересно. Что такое React?

— Это — очень крутая библиотека, сделанная ребятами из Facebook. Она реально дает полный контроль и повышает производительность приложения, позволяя очень легко обрабатывать любые изменения представлений.

— Звучит заманчиво. Могу ли я использовать React для отображения данных с сервера?

— Ага, но сначала нужно добавить React и React DOM в виде библиотек.

— Подожди, почему две библиотеки?

— Ну, одна — это сама библиотека, а вторая — для манипулирования DOM, который ты теперь можешь описать в JSX.

— JSX? Что такое JSX?

— JSX — это просто расширение синтаксиса JavaScript, который выглядит очень похоже на XML. Это своего рода еще один способ описать DOM. Думай о нем, как об улучшенном HTML.

— Что случилось с HTML?

— Это 2016. Никто больше не пишет на сыром HTML.

— Ну хорошо. Если я добавляю эти две библиотеки, то я могу использовать React?

— Не совсем. Нужно добавить Babel, а затем можно использовать React.

— Другая библиотека? Что за Babel?

— О, Babel — это транспайлер, он позволяет ориентироваться на конкретные версии JavaScript, в то время как пишешь код в любой версии JavaScript. Тебе не обязательно добавлять Babel для того, чтобы писать на ReactJS, но если ты это не сделаешь, то ты застрял с ES5, ну а это 2016, ты должен кодить в ES2016+ как и все крутые чуваки.

— ES5? ES2016+? Я потерялся. Что за ES5 и ES2016+?

— ES5 означает ECMAScript 5. Это версия, на которую ориентируется большинство, поскольку она реализована в большинстве браузеров на сегодняшний день.

— ECMAScript?

— Да, знаешь стандарт JavaScript, который был основан в 1999 году после его первоначального выпуска в 1995 году? Тогда, когда JavaScript был назван LiveScript и только работал в Netscape Navigator. Это было очень запутано тогда, но, к счастью, теперь все ясно, и у нас есть 7 версий этой реализации.

— 7 версий. Серьезно. А ES5 и ES2016+ это?…

— Пятое и седьмое издание соответственно.

— Подожди, а что случилось с шестым?

— ES6? Да, каждое издание является надстройкой предыдущего, так что если ты используешь ES2016+, то ты используешь все функции предыдущих версий.

— Хорошо. А зачем использовать ES2016+ над ES6 тогда?

— Ну, ты можешь использовать ES6, но для интересных штук, типа async и await, тебе нужно использовать ES2016+. В противном случае ты застрял с ES6 генераторами и сопрограммами для блокировки асинхронных вызовов и нормального управления потоком.

— Я понятия не имею, что ты только что сказал, и все эти имена запутаны. Слушай, я просто хочу загрузить кучу данных с сервера, просто подключить JQuery из CDN и просто получить данные с помощью AJAX. Почему я не могу сделать это?

— Чувак, это 2016. Никто не использует JQuery больше, это заканчивается кучей запутанного кода. Все же это знают.

— Ясно. Так что моя альтернатива — это загрузить три библиотеки для извлечения данных и отображения таблицы HTML.

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

— Понятно. А что за менеджер модулей?

— Определение зависит от окружающей среды, но для веба мы обычно подразумеваем все, что поддерживает модули AMD или CommonJS.

— Хорошооооо. А AMD и CommonJS это?…

— Определения. Есть куча способов, чтобы описать, как несколько библиотек и классов JavaScript должны взаимодействовать. Ты можешь написать несколько файлов JavaScript, определяющих API AMD или CommonJS, и использовать что-то вроде Browserify, чтобы связывать их.

— Хорошо, имеет смысл… наверное. А что такое Browserify?

— Это инструмент, который позволяет связать CommonJS описанния зависимостей для файлов, которые могут быть запущены в браузере. Он был создан, потому что большинство людей публикуют эти зависимости в NPM.

— NPM?

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

— Как CDN?

— На самом деле, нет. Это больше похоже на централизованную базу данных, где каждый желающий может опубликовать и скачать библиотеки, так что ты можешь использовать их локально для разработки, а затем загрузить их на CDN, если захочешь.

— О, как Bower!

— Да, но это 2016, сейчас никто больше не использует Bower.

— Хм, ясно… так мне нужно загрузить библиотеки из NPM?

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

— О, это как в Angular!

— Angular это слишком 2015. Но да. Angular тоже там есть, наряду с VueJS, RxJS и другими интересными библиотеками из 2016. Хочешь узнать о них?

— Давай придерживаться React, я уже узнал слишком много о нем. Так что, если мне нужно использовать React, я вытяну его из этого NPM, а затем использую Browserify?

— Да.

— Это кажется слишком сложным, чтобы просто взять кучу зависимостей и связать их вместе.

— Ага, именно поэтому ты используешь менеджер задач, типа как Grunt или Gulp, или Broccoli для автоматизации запуска Browserify. Ты даже можешь использовать Mimosa.

— Grunt? Gulp? Broccoli? Mimosa? Черт возьми, о чём мы говорим сейчас?

— Task менеджеры. Но они уже не такие крутые. Мы использовали их в стиле 2015 с Makefiles, но теперь мы перешли на Webpack.

— Makefiles? Я думал, что в основном это используется для C или C++ проектов.

— Ага, но, видимо, в вебе мы любим делать вещи сложными, а затем вернуться к основам. Мы делаем это типа каждый год. Ты подожди, через год или два мы еще запилим сборки (assemblies) в вебе.

— Пффф. Ты упомянул что-то под названием Webpack?

— Это другой менеджер модулей для браузера, в то же время он и своего рода Task менеджер. Это как улучшенная версия Browserify.

— ОК. А почему он лучше?

— Ну, может быть не лучше, но более гибкий в плане того, как зависимости связаны. Webpack позволяет использовать различные менеджеры модулей, а не только CommonJS. Например, родные модули ES6.

— Я очень запутался в этих CommonJS/ES6.

— Да все в этом запутались, но можешь больше не париться, потому что есть SystemJS.

— О, Боже, опять что-то-JS. Хорошо, а что это за SystemJS?

— Ну, в отличие от Browserify и WebPack 1.x, SystemJS представляет собой динамический модуль загрузчика, который позволяет связать несколько модулей в нескольких файлах, а не связывая их в один большой файл.

— Подожди, я думал, что мы хотели объединить наши библиотеки в один большой файл и загрузить его!

— Да, но из-за HTTP/2 несколько HTTP запросов на самом деле лучше.

— Стоять! Так чего же мы не можем просто добавить три оригинальные библиотеки для React?

— Ты, конечно, можешь добавить их в качестве внешних скриптов с CDN, но все равно нужно будет добавить Babel.

— Эх. И это плохо, не так ли?

— Да, придется включить полностью Babel-core, а это не будет эффективным для production. На production необходимо выполнить ряд предварительных задач, чтобы проект был полностью готов, а это ритуал, в сравнении с которым вызвать дьявола — это рецепт как сварить яйцо. Надо будет минимизировать файлы, сделать uglify, поиграться со стилями, подумать о загрузке скриптов…

— Понял, понял. Но если не скачивать библиотеки непосредственно с CDN, то как иначе?

— Я бы сделал транспайл из TypeScript с помощью комбо Webpack + SystemJS + Babel.

— TypeScript? Я думал, что мы пишем код на JavaScript!

— Typescript — это и есть JavaScript, или, лучше сказать, надмножество JavaScript. Более конкретно — JavaScript на версии ES6. Ну, та шестая версия, о которой мы говорили.

— Я думал, что ES2016+ — уже надмножество ES6! Почему нам сейчас нужен еще и TypeScript?

— Потому что это позволяет нам использовать JavaScript как типизированный язык и уменьшить количество ошибок во время выполнения. Это 2016, надо добавить некоторые типы в код на JavaScript.

— И TypeScript, очевидно, делает это.

— И Flow, хотя он проверяет только типы, в то время как TypeScript является надстройкой JavaScript, который нужно скомпилировать.

— Эээ… и Flow?

— Это — инструмент для проверки статической типизации, сделанный парнями из Facebook. Они написали его на OCaml, так как функциональное программирование является удивительно крутым.

— OCaml? Функциональное программирование?

— Ну это то, что сегодня юзают крутые пацаны, ну типа, знаешь, 2016. Функциональное программирование. Функции высокого порядка. Currying. Pure функции.

— Я понятия не имею, что это.

— Никто не понимает, в начале. Надо просто знать, что функциональное программирование лучше, чем объектно-ориентированное программирование, и это то, что мы должны использовать в 2016 году.

— Подожди, я учил ООП в универе, я думал, что это круто?

— Ну так было пока Oracle не купил Java. Я имею в виду, что ООП был хорош раньше, и его используют до сих пор, но теперь каждый понимает, что манипулировать состояниями эквивалентно пинанию младенцев, так что теперь все движется к immutable объектам и функциональному программированию. Ребята из Haskell уже 100 лет кричат об этом, и это я еще не упоминал Elm. Но, к счастью, в сети теперь у нас есть такие библиотеки, как Ramda, которые позволяют нам использовать функциональное программирование на простом JavaScript.

— Ты что, просто придумываешь имена? Что еще за Ramnda?

— Нет. Ramda. Как и Lambda. Ну, знаешь, библиотека Дэвида Чембера?

— Дэвида кого?

— Дэвида Чембера. Крутой чел. Один из авторов Ramda. Глянь еще работы Эрика Мейера, если серьезно относишься к изучению функционального программирования.

— А Эрик Мейер это?…

— Тоже функциональщик. Крутой чел. У него есть куча презентаций, где он в странной цветной футболке громит Agile. Еще глянь что делают Tj, Jash Kenas, Sindre Sorhus, Paul Irish, Addy Osmani…

— ОК. Притормози. Все это хорошо и прекрасно, но я думаю, что все это слишком сложно и ненужно для простой выборки данных и их отображения. Я уверен, что я не должен знать этих людей или все эти вещи, чтобы создать таблицу с динамическими данными. Давай вернемся к React. Как я могу извлечь данные с сервера в React?

— Ну, на самом деле для выборки данных не надо React, он отображает данные.

— О, черт. Так а что используется для выборки данных?

— Используй Fetch для получения данных с сервера.

— Использовать Fetch для выборки данных? Тот, кто называет эти вещи, нуждается в тезаурусе.

— О, да. Fetch это имя нативной реализации для выполнения XMLHttpRequests.

— О, AJAX.

— AJAX это просто запросы XMLHttpRequest. А Fetch позволяет делать AJAX на основе промисов, которые затем можно резолвить, чтобы избежать callback hell.

— Callback hell?

— Да. Каждый раз, когда выполняется асинхронный запрос, ты должен ждать его ответа, который заставляет добавить функцию внутри функции, которая называется пирамида callback hell.

— О, хорошо. А промисы решают эту проблему?

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

— И это можно сделать с помощью Fetch?

— Да, но только в некоторых браузерах, в противном случае необходимо включить Fetch polyfill или использовать Request, Bluebird или Axios.

— Сколько библиотек мне нужно знать, ради бога? Сколько из них?

— Это JavaScript. Тут тысячи библиотек, которые делают одно и то же. Мы знаем эти библиотеки. Наши библиотеки огрооооомные, а иногда мы добавляем картинки с Guy Fieri в них.

— Guy Fieri? Давай покончим с этим. Что эти Bluebird, Request и Axios делают?

— Это библиотеки для выполнения XMLHttpRequests, которые возвращают промисы.

— А методы AJAX JQuery не возвращают промисы?

— Мы больше не используем «J» в 2016. Просто используйте Fetch polyfill или Bluebird, Request или Axios. Затем управляй промисами с async, await и Бац!, у тебя правильный поток управления.

— Это третий раз, когда ты говоришь о await, но я понятия не имею, что это такое.

— Await позволяет блокировать асинхронный вызов, что позволяет лучше все контролировать во время получения данных и увеличивает читаемость кода. Это потрясающе, просто нужно, чтобы убедиться, что ты добавил stage-3 в Babel, или использовать синтаксис асинхронных функций и плагин transform-async-to-generator.

— Это безумие.

— Нет, безумие — что нужно перекомпилировать код TypeScript, а затем транспайлить его с Babel, чтобы использовать await.

— Шта!? Это не входит в TypeScript?

— Входит в следующей версии, но в версии 1.7 он только ES6, так что если хочешь использовать await в браузере, сначала нужно скомпилировать код TypeScript в ES6, а затем транспайлить с Babel в ES5.

— Я не знаю, что сказать.

— Слушай, это легко. Пиши весь код в TypeScript. Все модули, использующие Fetch компилируй в ES6, транспайль их с Babel с stage-3, и загружай с SystemJS. Если у тебя нет Fetch, используй polyfill, или Bluebird, Request или Axios, и обрабатывай промисы с await.

— У нас очень разные определения «легко». Так, с этим ритуалом я, наконец, получил данные и теперь я могу показать их с помощью React правильно?

— А приложение будет обрабатывать любые изменения состояния?

— Грр, я не думаю. Мне просто нужно отобразить данные.

— О, слава богу. В противном случае мне пришлось бы объяснить Flux и реализации, такие как Flummox, Alt, Fluxible. Хотя, если быть честным ты должен использовать Redux.

— Как же достали эти имена. Опять же, мне просто нужно отобразить данные.

— А, если просто отобразить данные, не надо начинать с React. Можно взять движок шаблонов.

— Ты шутишь, что ли? Думаешь, это смешно?

— Да я просто объяснил, что ты мог бы использовать.

— Стоп. Просто остановись.

— Я имею в виду, даже если просто использовать шаблонизатор, я бы все равно использовал комбо TypeScript + SystemJS + Babel на твоем месте.

— Мне нужно отобразить данные на странице, а не выполнить оригинальный фаталити Sub Zero из Мортал Комбат. Просто скажи мне, какой движок шаблонов использовать.

— Их много, с каким ты знаком?

— Уф, не могу вспомнить название. Это было давно.

— jTemplates? jQote? PURE?

— Не то. Еще один?

— Transparency? JSRender? MarkupJS? KnockoutJS?

— Другой

— PlatesJS? JQuery-tmpl? Handlebars? Некоторые люди до сих пор используют его.

— Может быть. А есть что-то похожее на последний?

— Mustache, underscore? Я думаю, что теперь даже у lodash есть шаблонизатор, но это своего рода 2014.

— Грр… возможно он был поновее.

— Jade? DustJS?

— Нет.

— DotJS? EJS?

— Нет.

— Nunjucks? ЕСТ?

— Нет.

— Чувак, никто не любит синтаксис CoffeeScript в любом случае. Jade?

— Нет, ты уже сказал Jade.

— Ну я имел в виду Pug. Я имел в виду Jade. Я имею в виду, Jade теперь Pug.

— Пф. Нет. Не помню. Какой из них ты бы использовал?

— Наверное, нативный ES6 template strings.

— Дай угадаю. Это требует ES6.

— Да.

— Который, в зависимости от того, какой браузер я использую требует Babel.

— Да.

— Который, если я хочу включить без добавления всей библиотеки, нужно, загрузить в качестве модуля NPM.

— Да.

— Который, требует Browserify или Wepback, или, скорее всего, SystemJS.

— Да.

— Который, если это не Webpack, в идеале должен управляться Task runner-ом.

— Да.

— Но, так как я должен использовать функциональное программирование и типизированные языки, я в первую очередь должен предварительно скомпилировать TypeScript или добавить этот Flow.

— Да.

— А потом отправить это на обработку в Babel, если я хочу использовать await.

— Да.

— Так что я могу затем использовать Fetch, промисы и управление потоком и всю эту магию.

— Только не забудь polyfill Fetch, если он не поддерживается, Safari до сих пор не может справиться с этим.

— Знаешь что. Я думаю, мы закончим здесь. На самом деле, я думаю, я закончил. Я закончил с этим вебом и с JavaScript в целом.

— Хорошо, через несколько лет мы все будем кодить в Elm или WebAssembly.

— Я просто хочу вернуться к бэкэнду. Я не могу справиться со всеми этими изменениями, версиями, изданиями, компиляторами и транспайлерами. Сообщество JavaScript безумно, если оно думает, что кто-то может идти в ногу с этим.

— Понятно. Тебе тогда надо попробовать сообщество Python.

— Почему?

— Слышал о Python 3?

 , , , ,

StReLoK
()

Запускалка BMPN для скриптовой автоматизации?

Форум — Admin

В чём загвоздка: есть груда скриптов, связанных друг с другом событиями. Некоторые скрипты вызывают другие просто так, некоторые ждут, пока что-нибудь не появится (почтовое сообщение, например), некоторые запускаются через интервал времени X после завершения предыдущего. Есть логические ветвления, всё как в обычной BPMN-диаграмме.

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

Хотелось бы всё это задвинуть на BMPN executor, разбив весь процесс на связанные событиями куски. Например, скрипт шлёт почту удалённой системе - следующий шаг будет сделан только тогда, когда удалённая система ответит почтовым сообщением (вот как-то так оно всё сделано, к сожалению). В этом случае можно и замониторить через REST API, на каком этапе процесс находится, можно легко настроить процесс, а главное - это самодокументированная вещь, поскольку документацию никто писать не любит.

Посмотрел Camunda, у него тотальная привязка скриптов к Groovy/Java, что мне не очень нравится. Посмотрел Bonita - там можно /bin/sh запускать, вроде подходит. Сервер BPM Executor’а должен быть там же, где всё это запускаемое по крону хозяйство.

Ну мало ли вдруг кто уже сталкивался с подобным… Печально конечно, что все BPM-системы написаны на Java - а значит, живут в своём собственном мире и не знают ни про какие STDIN, STDOUT, параметры командной строки и всё прочее. Между тем, нужен в идеале инструмент «поближе к системе», менее абстрактный что ли.

Заранее Гигантское СПАСИБО!

 , , ,

DRVTiny
()

Современная мифология

Форум — Talks

В давние времена из-за трудностей в передаче информации, а также намеренно, в том числе с развлекательной целью многие сведенья о реальных и нереальных событиях и личностях художественно переосмыслялись, преувеличивались, утрачивали несущественные детали, искажались и дополнялись вымыслом. Я уверен, вы знаете многие мифы, причем школьное образование явно способствует сохранению многих (например, античных) мифов в сознании населения. Так получилось, что одни периоды богаты на мифы, другие относительно бедны. Несмотря на то, что мы живем в современном мире, новые мифы продолжают появляться. Например, анекдоты и байки про Василия Ивановича Чапаева, как мне кажется, тоже можно рассматривать в качестве своеобразных героических мифов.

Можете ли вы назвать какие-нибудь совсем новые достаточно яркие и более-менее общеизвестные русскоязычному и англоязычному населению мифы?

 ,

Leupold_cat
()