Category: it

Category was added automatically. Read all entries about "it".

Бритоголовый и С1-97

Расскажите мне про современную FreeBSD

А то что-то почитал Handbook и аж захотелось поставить на десктоп, отговорите.

Запись опубликована в блоге Шуры Люберецкого. Вы можете оставлять свои комментарии там, используя свое имя пользователя из ЖЖ (вход по OpenID).

Бритоголовый и С1-97

10 лучших кофеварок

Увидел тут на американском сайте материал с таким примерно заголовком:

https://www.gearpatrol.com/home/a528889/best-coffee-makers/

Забавно сравнить с чем-то аналогичным на русском языке:

https://101kofemashina.ru/rating-cheap-2015/

Если американцы привыкли пить ссанину из капельных машин и довольны этим – то у нас все наоборот! Если вы не можете поддержать светскую беседу о сортах арабики и робусты, о методах обжарки и помола и так далее – то собственно, о чем с вами разговаривать? Даже от “бытовой” кофемашины у нас ожидается возможность готовить эспрессо и капуччино в самых разных вариантах (не говоря о “правильности” этого всего), а наиболее продвинутые гурманы, в принципе, мало чем отличаются по навыкам от профессиональных бариста. Если на офисной кухне вашего блокчейн-стартапа нет профессионального кофейного оборудования – кто к вам пойдет?

Запись опубликована в блоге Шуры Люберецкого. Вы можете оставлять свои комментарии там, используя свое имя пользователя из ЖЖ (вход по OpenID).

Бритоголовый и С1-97

А есть ли среди нас знатоки GDPR?

Разговаривал с товарищами из одного немецкого стартапа, и имел неосторожность предложить написать парсер сообщений на каком-то сайте – чтобы на собранном материале обучить какую-нибудь там нейросеточку. Реакция? Ну представьте себе, если бы я вам вот тут предложил тайком ночью подломить ларек. Начал разбираться – и оказывается, немцы считают, что всякий веб-кроулер нарушает GDPR – ведь в текстах, которые он собирает, могут быть святые Персональные Данные, обладатели которых не давали согласия на такую обработку.

IMG_20200831_123120_218

Более того – даже если на сайте маленькими буковками внизу написана политика по обработке ПД, разрешающая буквально все – она все равно не действует, ведь пользователь может не отдавать отчет в своих действиях и не понимать, что там написано.

Знаете, это даже круче нашего бабайки из Роскомнадзора – если от бабайки можно защититься громким криком “Кручу-верчу, персональные данные обработать хочу!” – то тут тебя сожрут независимо от твоих действий. Или это просто страшилки?

PS Являются ли циферки 4608 134075 и буковки “Василий Иванович Чапаев” персональными данными?

Запись опубликована в блоге Шуры Люберецкого. Вы можете оставлять свои комментарии там, используя свое имя пользователя из ЖЖ (вход по OpenID).

Бритоголовый и С1-97

Бесит, сука

Очередные талантливые программисты не осилили пересчет из int16 во что-то более им подходящее. В следующий раз сделаю вывод данных в формате binary coded decimal, а то достали.

Хотя нет – напишут что-то вроде Float(x.toString(16)) и будут считать себя неибаццо гениями. Подскажите, в каком формате выводить числа, чтобы на той стороне с гарантией охуели?

Запись опубликована в блоге Шуры Люберецкого. Вы можете оставлять свои комментарии там, используя свое имя пользователя из ЖЖ (вход по OpenID).

Бритоголовый и С1-97

Программисты не нужны

Наблюдал сегодня подгорание жепп всевозможных “бекендеров”, прочитавших вот эту статеечку на хабре:

https://habr.com/ru/company/lingualeo/blog/515530/

Краткий пересказ: в LinguaLeo взяли Chief Technical Officer-ом некоего чувака, хорошо знавшего PostgreSQL – даже слишком хорошо, настолько, что он переписал на хранимые процедуры существенную часть бекенда. Результаты, например, по одной из задач говорят сами за себя:

Было Стало
Строк кода 10 000 300
Запросов к БД 12 1
Время выполнения, мс 600 20

Попутно были выставлены на мороз все веб-макаки, поддерживавшие то поделие:

Когда мы поделились планами с разработчиками, стало понятно, что команда не готова к изменениям. Большинство людей покинули компанию: остались только те, кто пришёл совсем недавно.

Читатели почуяли, что их ценный навык переписывания JSON-ов на PHP стремительно теряет ценность и начали кидаться на автора, мол, ни черта он не понимает в разработке уеб-приложений. Обязательно зайдите в комменты, там феерично.

Запись опубликована в блоге Шуры Люберецкого. Вы можете оставлять свои комментарии там, используя свое имя пользователя из ЖЖ (вход по OpenID).

Бритоголовый и С1-97

Язык Си образца 70-х годов

Есть одна статейка, описывающая портирование Unix с PDP-11 на VAX (кстати, вопреки обычно озвучиваемому мнению о легкой переносимости Unix между разными архитектурами, именно продукция фирмы Digital долгое время была основной и практически единственной “платформой” для Unix):

https://www.bell-labs.com/usr/dmr/www/otherports/32v.pdf

На последней страничке приведены пожелания для доработки компилятора, очень интересны пункты 2 и 3:

Based on our experience, we strongly recommend that the C language and its compilers be enhanced so that:
<…>
2. The ’->’ operator is checked to insure that the structure element on the right is a member of a structure to which the pointer on the left may point.
3. A structure element may be declared with any name as long as the name is unique within the immediately surrounding structure. (The current requirement that a structure element name must uniquely correspond to an offset from the beginning of the structure, across all structures in a compilation, creates naming problems and frequently leads to errors of the type noted in item 2 above.)

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

struct A {
    int first;
    int second;
};

struct B {
    int first; /* Так нельзя - имена членов структур должны быть уникальны, first уже есть в struct A, см. пункт 3 */
    int second;
};

struct C {
    char c_first;
    int c_second;
};

struct C c;
c.second = 123; /* Компилятор съест и не подавится, но запишет это 123 совсем не туда, куда хотелось бы, см. пункт 2 */
/* То же самое с точки зрения современного Си: */
((struct *A) &c)->second = 123; /* Ты сам себе злобный Буратино */

При этом это поведение, странное с точки зрения “высокоуровневого” программиста и абсолютно нормальное – с точки зрения “низкоуровневой”, когда мы думаем о байтиках в памяти, использовалось в коде Unix сплошь и рядом, как подсказывает нам статья, и явно привело к немалому количеству сюрпризов при переходе с 16 бит на 32.

Запись опубликована в блоге Шуры Люберецкого. Вы можете оставлять свои комментарии там, используя свое имя пользователя из ЖЖ (вход по OpenID).

Бритоголовый и С1-97

Кстати, посмотрел на выходных на Django

В очередной раз возникла идея одного веб-приложения – ну и на выходных нашел часочек для прохождения Django tutorial. Выводов для себя сделал три:

- лепить веб-приложения с функциональностью CRUD может даже дрессированная мартышка;
- даже мартышке приходится слишком много делать руками;
- научившись делать руками несколько стандартных телодвижений, мартышка может считать себя неибаццо программистом.

Запись опубликована в блоге Шуры Люберецкого. Вы можете оставлять свои комментарии там, используя свое имя пользователя из ЖЖ (вход по OpenID).

Бритоголовый и С1-97

Про Python, программистов и математиков…

…или зачем математикам программирование, или программистам – математика.

Посмотрел краем глаза на один прожект, где слепили обработку загружаемых пользователем аудиофайлов на Python, разумеется, с использованием SciPy (на это ума хватило). “Обработка” – громко сказано, на самом деле все сводится к обычной линейной алгебре. Беда в том, что файлы немаленькие – скажем, два канала с частотой дискретизации 44,1 кГц и разрядностью в 16 бит. Часовая запись – это уже 600 Мб, которые для использования SciPy надо полностью загрузить в память. Заодно там надо как-то хранить и промежуточные результаты вычислений – и в результате объем сожранной питоном памяти растет просто катастрофически.

Впрочем, память сейчас кажется дешевой, а подход “закидать проблему железом” – работающим. Так вот, при желании почти всю “обработку”, которая есть в этом проекте, можно было бы сделать практически “в режиме онлайн”, со скоростью загрузки или чтения файла с данными, а заодно – с в разы меньшим потреблением памяти. Нечто подобное я как-то делал даже для микроконтроллеров класса “за 2$ на алиэкспресс”, с каким-нибудь ядром наподобие Cortex-M3, а лучше M4, и десятком-другим килобайт ОЗУ.

Беда в том, что условные “математики”, сделавшие первую демонстрацию алгоритмов на SciPy (это модно и “научно”), не хотят лезть в программирование, а программисты не понимают примерно ничего из написанного на SciPy (ну например, хотя бы того, что делает функция numpy.dot).

С другой стороны, конечно, никакая оптимизация тому проекту не поможет – при 1 пользователе эта демонстрашка работает, при 10 придется докинуть памяти, при 100 пользователях может возникнуть проблема – компьютеры с потребным количеством памяти делает разве что IBM; другое дело, что 100 пользователей у того проекта никогда не будет.

Запись опубликована в блоге Шуры Люберецкого. Вы можете оставлять свои комментарии там, используя свое имя пользователя из ЖЖ (вход по OpenID).

Бритоголовый и С1-97

Прочитал тут на днях

В одном околоайтишном чатике:

Слушал я тут как собеседуют devops-ов в core-команду
Конечно, все эти мальчики с татуировками, который умеют yaml-ы писать на первых пяти минутах получат от ворот поворот.
Начинают прямо с азов – как грузится linux, что такое процесс, какие состояния бывают, что такое зомби, чем они плохи, что такое inode, где файл хранится и так далее. Мальчики впадают в какой-то кататонический ступор.

про себя подумал “во валят!” и как-то радостно стало на моей душе

Спрашивают, кстати говоря, действительно не особо сложные вещи – это азы Unix-подобных систем, определения всего этого кочуют из книжки в книжку. Самое древнее, что я читал (гарантированно есть и более “классическая” литература) – это описание 4.3BSD 1989 года, и там все эти вопросы разбираются буквально в первых же параграфах соответствующих глав. Пугает другое – понимая юниксы, можно выучить этот ваш Docker с yaml-ом ну этак за неделю; знающие же только Docker азы юниксов изучать не будут, им это “не нужно”.

Запись опубликована в блоге Шуры Люберецкого. Вы можете оставлять свои комментарии там, используя свое имя пользователя из ЖЖ (вход по OpenID).

Бритоголовый и С1-97

Машинный перевод

Угадайте, как правильно перевести на английский “пол в машинном зале должен быть ровным”? Правильно:

Sex in the engine room must be smooth

https://gunkies.org/wiki/CM_1700

Главное правило машинного перевода – если фраза допускает смешной или похабный перевод, она будет переведена именно так.

Запись опубликована в блоге Шуры Люберецкого. Вы можете оставлять свои комментарии там, используя свое имя пользователя из ЖЖ (вход по OpenID).