All streams
Search
Write a publication
Pull to refresh
61
0
Павел @Hemml

астрофизик

Send message

Давайте называть вещи своими именами. То, что вы называете "говнокодом", на самом деле просто сложный код, который понимает только Сережа, который его писал. А почему он такой сложный легко понять из оговорки автора про "точное выполнение заданий" -- Сережа пишет код так, чтобы клиент получил в точности то, что заказал -- все кнопки и цвета на своих местах. Для этого ему приходится наворачивать сложности. Другие программисты в конторе пишут простой и понятный код, красивый, по гайдлайнам. Но этот простой код не удовлетворяет клиентов (они не видят код, они видят результат) на 100% и они хотят Сережу. Странные они.

Вообще, вы не задумывались почему программисты старшего возраста (то есть, с многолетним опытом работы), поголовно вот такие "Сережи"? Они просто умеют писать сложный код, читать сложный код и править сложный код так, чтобы он работал. И пользуются этим умением, чтобы получать нужные результаты, посмеиваясь про себя над "студентами".

На самом деле, существуют способы писать сложный код просто, но для этого надо использовать правильные инструменты. Например, функциональное программирование. Такие языки, как Lisp и пр. Но до них надо дорасти. Я вполне допускаю мысль, что если Сережа случайно прочтет SICP (о, бойтесь этого!) и, потом, не к ночи будь помянут, "Common Lisp Recipes", то он начнет писать код красиво и еще в несколько раз быстрее. Но вы этот код понять не сможете от слова совсем. Впрочем, это будет иметь мало значения, потому что ваш отдел сократят в полном составе, так как Сережа будет справляться один со всей работой.

Сегодня снова баловался с устройством. В меню нет пункта "обновить" или я его не нашел, но сказал ему голосом "обнови прошивку" и он обновил! KION появился, запустился и работает. Из проблем -- он не открывается, если устройство в "детском режиме", однако в этом режиме вполне открывается шоппинг, например, что странно. Ну и пока нельзя использовать KION вместо Смотрёшки, это самый главный минус, говоришь ему "включи такой-то канал", включается Смотрёшка и говорит, что канал платный, вместо того, чтобы включить KION, где он в подписке :(

А вообще, отличное устройство, вы молодцы!

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

Отлично! А оно интегрировано с помощником? То есть, можно сказать "включи мне такой-то канал" и оно включит его через KION? Дело в том, что у меня основной пользователь -- мама, ей уже очень много лет и для нее всё это тот еще квест. Сейчас у меня подключена приставка apple-tv, залоченная на приложении KION (чтобы мама не могла зайти не туда), но там для нее тоже всё не просто. Ищу вот альтернативы...

А каналы только от Смотрёшка доступны? Или можно подключить другие сервисы, KION, например?

Я, понятное дело, не тестировал это с миллионом клиентов, но, не думаю, что с производительностью будут какие-то серьезные проблемы на стороне сервера. На стороне клиента надо соблюдать осторожность, так как JSCL, например, очень медленно работает со строками, тут лучше использовать строковые функции javascript, если строк очень много. Пока я не упирался в производительность и на клиенте тоже, для своих задач.

Это немного другое. Если я правильно понимаю, idom просто генерирует HTML из python-кода. Я когда-то использовал питоновскую библиотеку Nagare, где это доведено до абсолюта, а код выполняется через систему continuations. Даже когда-то писал статью на Хабре про нее, но она куда-то пропала вместе со всем содержимым моего аккаунта.

там довольно небольшой трафик каждый раз, если не писать код функции на 10 экранов, конечно. В принципе, ничего не мешает заливать в клиента весь код сразу (в случае продакшен-версии), просто это пока не реализовано.

По нескольким причинам:

  1. Он мне нравится

  2. Для него есть self-hosted компилятор в JS (JSCL)

  3. Через систему макросов можно легко работать с исходным кодом функций, прозрачно передавая код browser-side функций компилятору JSCL

  4. REPL -- можно отлаживать приложение "в живую", не занимаясь постоянно компиляцией, сборкой, даже обновлять страницу не нужно -- я меняю функцию, перекомпилирую ее одним нажатием и вот у меня уже в браузере новая функция, сразу видно, что изменилось и как работает.

В принципе, я думаю, можно применить этот подход и к другим языкам, но будет не так удобно, как с Lisp. За исключением, может быть, питона -- существует реализация питона на Common Lisp, возможно, просто добавлением нескольких функций можно заставить питон так же точно работать. Но это уже другая история)

Ну, я бы не стал сравнивать. Весь код "серверной части" у меня занимает <1000 строк, а первая версия заработала при размере в 600 строк примерно. То есть это принципиально разного класса системы)

Эта библиотечка принципиально не про API и не про форматы передачи данных – просто вызываешь функцию и она выполняется где-то там, у клиента в браузере. Можно нарисовать на экране кнопку и перехватить событие нажатия. И обработать это событие прямо внутри браузера, если хочется. Нет никаких скриптов, препроцессоров, компиляции и сборки. Всё просто работает)

Как сотрудник госучреждения (научный институт), волею судеб ответственный за почту, могу сказать в чем дело -- есть некий координационный центр, который последний месяц мониторит угрозы и рассылает рекомендации. Ограничить прием почты (и вообще доступ) из сетей недружественных стран -- одна из них. Сам я слишком ленив, чтобы заниматься таким маразмом, но админы РЖД могли получить приказ от начальства следовать рекомендациям буквально (а рассылаются они официальными письмами, за подписью и печатью) и у них просто нет другого выхода. Смирись.

О! Вот кто мне нужен! Доколе ваш сервис (веб-клиент) будет терять продукты из корзины?! Ты сидишь, вспоминаешь, всё, что нужно, забиваешь корзину на 25 позиций, заказываешь доставку, доставка приезжает и ты внезапно обнаруживаешь, что некоторых позиций нет, а ты их точно добавлял! В чеке их нет, то есть они теряются или в момент заказа или еще до него. Написал в саппорт, меня попросили прислать скриншот ошибки [facepalm.jpg], по итогам переписки мне сообщили, что в корзине этих позиций не было, а то я и так не знаю. Еще часто бывает, что заказываешь, например, полтора кило груш, а привозят одну (одну!!!) грушу, потому что вес не сохранился в корзине. Сейчас я опытный покупатель, дважды просматриваю корзину перед отправкой, но, тем не менее иногда еще накалываюсь. У меня сильное подозрение, что у вас где-то сидит race condition, как минимум, потеря количества по заказываемой позиции может быть с этим связано -- когда кликаешь несколько раз на плюсик, иногда цифры меняются непредсказуемо.

Интересная реализация, спасибо! Но я пока еще не готов заниматься портированием. Есть шанс, конечно, что там всё само заработает, но я сомневаюсь. Похоже, там свой FFI, если он не поддерживается нужными мне пакетами (в основном, clack, bordeaux-threads и пр.), то придется затратить довольно много усилий.

Просто я ни разу не тестировал на Windows. Та часть, за которую отвечает omgdaemon, практически наверняка не будет работать сейчас ни на чем кроме связки Linux/SBCL и MacOS/SBCL, уж больно она завязана на fork/exec. Но я работаю над этим)

О! Библиотека работает на Windows! Неожиданно)

Я не собираюсь конкурировать с другими фреймворками, боже упаси) Вообще, мое глубокое убеждение в том, что с языком, средой и библиотеками не нужно бороться, нужно их использовать! OMG можно прикрутить к любому уже существующему сайту, добавив загрузку одного js-файла и дальше выполнять на странице любой LISP-код, параллельно со всем остальным кодом. Также, поскольку мы имеем полный доступ к DOM и JS, можно использовать любые JS-фреймворки, просто вызывая их функции. Я не стал раздувать статью, но в omgui.lisp есть код, подключающий API YouTube и позволяющий добавить плеер на страницу. То же можно сделать и со всякими React-ами и прочими jquery, не к ночи будь помянуты.

12 ...
12

Information

Rating
Does not participate
Location
Москва и Московская обл., Россия
Registered
Activity

Specialization

CFD-моделирование
Lisp
Fortran
C
LATEX
Applied math
Python
SQL
Docker