Pull to refresh
0
@originat0rread⁠-⁠only

User

Send message

JavaScript: изучаем регулярные выражения на практике

Reading time18 min
Views72K

image


Регулярное выражение (далее также — регулярка) — это последовательность специальных символов, формирующих паттерн или шаблон (pattern), который сопоставляется со строкой.


Цель такого сопоставления может состоять либо в поиске подстроки в строке, например, для замены подстроки, либо в определении соответствия строки шаблону для валидации строки.


В данной статье мы сосредоточимся на валидации.


Что конкретно мы будем делать? Мы возьмем несколько регулярок из validator.js (наиболее популярной библиотеки для валидации данных с помощью регулярных выражений) и произведем их подробный разбор. Также мы рассмотрим несколько дополнительных регулярок и один алгоритм.


Как результат, мы реализуем несколько полезных функций, которые вы впоследствии сможете использовать в своих проектах.

Читать дальше →

Учимся читать код, изучая стандартную библиотеку Python

Reading time5 min
Views42K


Итак, вы уже продвинутый новичок — вы изучили основы Python и способны решать реальные задачи.

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

Наверно, вы слышали, что нужно нарабатывать понимание чтением и написанием больших объёмов кода. Это правда.

Но какой же код нужно читать?

«Просто читай то, что нравится». А если вы не знаете, что вам нравится? А если вам не нравится что-то правильное?

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

В конечном итоге, для этого ведь необходимо понимание… Но именно его мы и стремимся обрести.

«На GitHub куча проектов — выберите понравившийся и изучайте, как его реализовали разработчики». Однако самые успешные проекты довольно объёмны — с чего начинать?

И даже если вы знаете, с чего начинать, не всегда очевидно, как разработчики пришли к своему решению.

Да, вы видите код своими глазами, но он не говорит вам о том, почему разработчики написали его так, чего они не делали и как они рассуждали о проекте в целом.

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

В этой статье мы рассмотрим некоторые модули стандартной библиотеки Python.
Читать дальше →

Обзор самых неоднозначных проектов на Kickstarter

Reading time9 min
Views15K


С появлением краудфандинговых сервисов у креативных и предприимчивых людей появилась возможность реализовать свои идеи на массовом рынке. Много ли надо для успешной реализации такого проекта? Очевидно, что идея должна быть, как минимум, интересной, нужной, а еще желательно и оригинальной.  За примерами успешных проектов далеко ходить не надо: очки виртуальной реальности «Oculus Rift», наручные часы «Pebble», макрообъектив «Laowa», сумка-рюкзак для фотографов «The Everyday» и тысячи других интересных проектов.
Однако, по разным причинам, не все идеи находят поддержку среди спонсоров. Здесь я приведу свой, слегка приправленный сарказмом, топ странных кампаний Кикстатретра. Итак, поехали!

Apollo 11 Command Module Illuminate Control Panel


Начнем с маленького шага для одного человека, но большого для всего человечества — точная копия панели управления командного модуля ракеты Сатурн-5.


Предлагаются три полноразмерные панели управления командными модулями общей шириной 82 дюйма, высотой 33 дюйма и глубиной 7 дюймов. При чем руководитель группы этого продукта Марк Ласофф, получил премию Оскар за свою работу над фильмом «Титаник». Также он работал над картинами «Аполлон-13», «Аватар» и «Легенды космического центра НАСА». Ума не приложу кому и зачем это надо, но кампания по сбору средств еще не закончена, и вы можете приобрести себе полномасштабную модель за $795 или ограниченную серию из бронзы за $9500. Для успешного завершения кампании, требуется собрать 280 000 долларов США. Пока собрано чуть более одной тысячи долларов. Ну что же, пожелаем успеха марку Лассофу.
Читать дальше →

Сговор и жульничество в академических кругах

Reading time7 min
Views34K

«Он не публиковался» © Mischa Richter

На Хабре много говорилось о проблеме "publish or perish" (публикуйся или умри), фейковых журналах и конференциях, накрутке числа публикаций и индекса цитируемости, фальшивых «соавторах», даже о генераторах псевдонаучных текстов. Но в 2021 году выявилось ещё одно очень неприглядное явление: круговое голосование рецензентов. Когда статьи выбирают не по значимости, а по именам авторов, то это подрывает основы взаимного доверия и цельность всей научной области.

Конечно, тут ничего нового и «все всё знали». Просто нарыв наконец-то вскрылся…

На одной из конференций раскрыли попытку жульничества в системе отбора публикаций. К сожалению, «отличилась» наша отрасль — информатика (computer science).
Читать дальше →

Протоколу BitTorrent 20 лет: как изменить ход развития Интернета с помощью «словаря» и сарафанного радио

Reading time6 min
Views20K
Двадцать лет назад относительно неизвестный в то время программист по имени Брэм Коэн в одиночку совершил революцию в сфере технологий обмена файлами. Тогда социальные сети ещё не были развиты, но BitTorrent особо и не нуждался в лайках. Со временем он был оценён по достоинству в ИТ-сообществе. В начале двухтысячных новый протокол обмена файлами изменил ход развития Интернета.

«Наконец-то заработало моё новое приложение BitTorrent, оно доступно по ссылке ниже», — написал Коэн на доске объявлений Yahoo!.. Это было 2-го июля 2001 года.


Вероятно, за всю историю ИТ это была одна из самых, мягко говоря, лаконичных PR-кампаний в поддержку запуска нового продукта. Не впечатлил и «дизайн» официального сайта с чёрным текстом на белом фоне: весь сайт — несколько строк HTML-кода. Тогда никто не мог представить, какую роль в развитии всего Интернета сыграет BitTorrent.

Полное отсутствие маркетинговой составляющей Брэм Коэн компенсировал за счёт технических характеристик продукта. Он ранее работал в стартапе, команда которого трудилась над одноранговой сетью MojoNation. Потом у этого проекта закончилось финансирование, и 25-летний разработчик сосредоточился на развитии собственного проекта — протокола для обмена файлами.
Читать дальше →

Автоматизируем работу с контейнерами через Makefile: сборка, тестирование и развёртывание за один вызов make

Reading time7 min
Views13K
Утилита make позволяет просто управлять контейнерами, объединив команды для сборки, тестирования и развёртывания в одном конфигурационном файле.


Разработчики многие годы используют утилиту make. При запуске утилита читает файл с описанием проекта (Makefile) и, интерпретируя его содержимое, предпринимает необходимые действия. Файл с описанием проекта представляет собой текстовый конфигурационный файл, где описаны зависимости и команды, которые необходимо выполнить. Он похож на Dockerfile или другой файл конфигурации контейнера: там тоже указаны команды, на основе которых формируются образы для развёртывания контейнеров.

В этой статье я расскажу о том, как управлять контейнерами, используя Makefile. Контейнерный конфигурационный файл описывает образ контейнера, а Makefile описывает процесс сборки проекта, тестирование и развёртывание, а также другие полезные команды.

Цели и структура Makefile


Утилита make по умолчанию установлена в большинстве современных Linux-дистрибутивов, поэтому проблем с её использованием обычно не возникает. И чтобы начать её использовать, нужно создать файл с именем Makefile.
Читать дальше →

Ещё одна 0-Day-уязвимость угрожает многим пользователям Western Digital

Reading time4 min
Views8.1K
image

В прошлом месяце из-за бага в линейке продуктов, которую компания прекратила поддерживать в 2015 году, а также из-за ранее неизвестной уязвимости «нулевого дня» бесчисленное количество покупателей Western Digital потеряло данные на сетевых накопителях MyBook Live. Но подобные серьёзные уязвимости «нулевого дня» присутствуют в гораздо большем количестве более новых сетевых накопителей Western Digital MyCloud. Они не устраняются у тех покупателей, которые не могут или не желают обновляться до последней версии операционной системы.

Проблема с удалённым исполнением кода присуща всем NAS-устройствам Western Digital с операционной системой MyCloud OS 3, которую компания перестала поддерживать только недавно.

Её высочество Пуля

Reading time8 min
Views43K


Вчера речь шла о гильзах, а сегодня у нас следующий элемент – пуля. Пожалуй, ни один компонент патрона не вызывает к жизни столько мифов, легенд и откровенных баек. Их можно услышать и в рассказах служивых, и в пересказах этих рассказов через третьи руки, и даже из уст тех, кто сам оружия в руках не держал, но ему друг тестя рассказывал, а уж он мужик серьёзный, прапорщик трубопроводных войск: такой точно врать не будет. Вот и возникают истории то про страшные разрывные пули, то про ещё более страшные – со смещённым центром тяжести, то про совсем уж жуткие атомные пули (ну этот сон разума я даже рассматривать не буду). Вот по пулям сегодня и пройдёмся.
Читать дальше →

Её сиятельство Гильза

Reading time6 min
Views38K

«Есть многое на свете, друг Горацио, что и не снилось нашим мудрецам». У Вильяма нашего Шекспира эта фраза подразумевала различную паранормальщину, вроде тени отца Гамлета, намекавшей на совершение ряда тяжких преступлений, но если внимательно присмотреться, то и появление многих привычных нам вещей тоже представляется многим людям магией. И совсем необязательно это Большой Адронный Коллайдер, желанная, но дефицитная игровая видеокарта или 8К-телевизор от Самсунга. Это может быть гораздо более простая вещь – например, патрон. Пистолетный, винтовочный, револьверный – неважно. Патрон является вроде бы и мелким, но очень важным персонажем в мировой военной истории. Мы читаем про дефицит патронов в Российской Императорской Армии и ужасаемся ему. А потом со сходными чувствами – про винтовку с пятью патронами на человека в РККА. Или истории про отказ в приёме на вооружение автоматических образцов, потому что расход патронов будет излишне велик. И постоянно этот персонаж возникает в сюжете в связи с какими-то перипетиями – недостатком, срывом поставок, освоением производства, проблемами с качеством. Зато, когда с ним нет проблем, он незаметен.

При этом само производство патронов обычно остаётся за кадром. Ну как-то их там делают, причём миллионами и миллиардами. Магия, да и только. А где магия, там и мифы, вроде самого живучего – про диаметр советских папирос и макарон, равный 7.62 мм, что якобы позволяет развернуть производство патронов на любой макаронной фабрике за два часа.Итак, говорить будем про унитарный патрон в металлической гильзе.
Читать дальше →

Как я учил студентов Северной Кореи разрабатывать ПО с открытым исходным кодом

Reading time6 min
Views19K
В 2016 году я отправился в Северную Корею, чтобы учить студентов магистратуры тому, как участвовать в разработке ПО с открытым исходным кодом. Вот фотография с одной из моих лекций:


В рамках курса студенты должны были опубликовать патчи для выбранного ими проекта. В этой статье я расскажу о том, как два патча были внесены в популярные библиотеки машинного обучения mlpack и vowpal wabbit. Я считаю, что эти примеры подчёркивают, что научное сотрудничество между северокорейцами и американцами может принести выгоду обычным гражданам обеих стран и улучшить дипломатические взаимоотношения.
Читать дальше →

Видеосалоны. Ретроспектива

Reading time21 min
Views18K
Этот шухер, этот сон — видеомагнитофон,
Мой дружбан взял анадысь на толпе,
Купил за семь кусков всего, не жрал не ел он целый год,
Ну совсем мой корефан опупел.
Я пришёл к нему вчера, чтоб позырить до утра,
Драки, секс, вампиров, трупов, Брюса Ли,
Я глазел во все глаза и мой разум отказал,
А по утру меня в психушку отвезли.
Вида-ак! (с) Сектор Газа «Видак»


Сегодня разговор пойдет о модных течениях в СССР 80-х — просмотре кино. Но не абы какого, а западного. Вместе с Перестройкой, к нам широким шагом, влетая буквально с «двух ног», ворвалась кинопродукция Голливуда, заполнив собою всё культурное пространство.

image
Видеосалоны. Советское детство в миниатюрах Зои Черкасской.

Прародитель Mac — Macintosh 128k. История создания и начинка

Reading time8 min
Views13K


История компании Apple невероятна: от гаража до одной из самых крупных компаний в мире. Сейчас Apple задает тренды и определяет, что будет модно завтра. Красивая упаковка, «челочка» у смартфона, да и вообще сам смартфон. Может быть, Apple и не были первыми, кто это придумал, но именно они задали на это моду. А история серии компьютеров Mac начиналась с очень интересного гаджета — Macintosh 128k. Давайте посмотрим, как его создавали и что он из себя представлял.

История создания


Разработка Macintosh началась в 1979 году с инициативы Джефа Раскина. Он хотел создать недорогой и удобный персональный компьютер для широких масс. Но перед тем, как набрать команду, необходимо было решить вопрос о названии. Выбор пал на сорт яблок Мекинтош. Во-первых, это был любимый сорт яблок Раскина. А во-вторых, о, неожиданно, это же Apple. На этом этапе у Apple возникли некоторые проблемы с таким названием, поскольку оригинальное название сорта яблок — McIntosh — было частью названия компании McIntosh Laboratory. Решили выбрать всем известный вариант, на который пришлось приобрести права. 

В команду за несколько лет разработки к Раскину попали следующие люди:
Читать дальше →

Пар против бензина

Reading time9 min
Views42K

О чём подумает обыватель услышав о паровом автомобиле? Наверное, на ум придут неспешные паровозы, громоздкие котлы, закипающие по полчаса, да клубы пара и дыма. Паровая машина ассоциируется с чем угодно, но только не с образом небольшого проворного автомобиля, по виду которого и не скажешь, что под капотом у него нет привычного ДВС.

Какое-то время автомобили с электродвигателями, паровыми машинами и ДВС успешно конкурировали друг с другом на рынке. В 1902 году в Америке из 909 новых зарегистрированных автомобилей 485 были паровыми. Но уже к началу 1910-х конструкторы смогли значительно улучшить ДВС введя такие новшества, как электростартер. Эпоха пара стремительно заканчивалась. Самые совершенные паровые автомобили 1920-х годов совершили свой последний рывок, но не смогли составить конкуренцию массовым и недорогим карбюраторным машинам. О них мы сегодня и поговорим.
Читать дальше →

Добро пожаловать в мир интровертов

Reading time6 min
Views17K
Сколько себя помню, да и, похоже, на протяжении всей истории человечества, экстравертам жилось лучше. Они втирались в доверие и добивались повышения по карьерной лестнице, отношений и выходили сухими из воды. Они заставляли окружающих смеяться и попивали пиво с начальниками и коллегами.

Даже если ты «лучше» справляешься с работой, то это не гарантия того, что тебя повысят. Должность/девушка/дом/лучший кусок пирога доставались самому громкому и обаятельному.


Миром больше не управляют самые громкие


Но сейчас мы стали свидетелями тектонического сдвига.

  • Высокооплачиваемые должности с большей вероятностью получают люди, склонные к интеллектуальной работе в одиночку.
  • Болтовня с глазу на глаз стала менее важной из-за онлайн-работы, в которой самое главное — навык самомотивации.
  • Успех свидания зависит от остроумной фразы в приложении для дейтинга, а не от способности «подцепить» кого-то в баре.

Благодаря технологиям мир повернулся лицом к интровертам. Стоит ожидать, что аналогичный сдвиг произойдёт и в сфере богатства и власти.
Читать дальше →

Откуда взялся 'do' в вопросах и отрицаниях?

Reading time5 min
Views11K

В июне на Хабре было сразу несколько интересных статей на лингвистические темы, и одну дискуссию из комментариев мне хочется вынести в отдельную статью: удивительная и, по-видимому, уникальная особенность английского — то, что в вопросах и отрицаниях обязательно должен быть вспомогательный глагол, даже когда утвердительные предложения обходятся без него. Откуда же английская грамматика почерпнула эту свою особенность?

Важно понимать, что вспомогательные глаголы для образования сложных времён — это не что-то особенное, и у нас они тоже есть: рус. буд.вр. он будет писать письмо, укр. дпр.вр. він був написав листа. Более того: колебания между использованием и неиспользованием вспомогательного глагола русскому языку тоже знакомы: в древнерусском было два простых прошедших времени (аорист, невѣжѧ писа недума каза "незнающий написал, недумающий показал", и имперфект, ѡни моляхуся аз же глумляхъся "они молились, а я шутил") и впридачу сложное, перфект: еси приходиле в русь "ты приходил в Русь", зарубати посылали есмо "мы посылали зарубать". Простые прошедшие времена исчезли из всех славянских языков, кроме болгарского и македонского; с перфектом же произошла более интересная история...

Читать далее

Трансконтинентальные суперсети постоянного тока

Reading time10 min
Views21K

22 февраля 2017 года в Пекине рабочая группа по развитию глобального энергетического Интернета опубликовала результаты трёх исследовательских проектов: «Белую книгу о стратегии развития глобального энергетического Интернета», «Технологии и перспективы трансграничной и трансконтинентальной электронной межсистемной связи» и «Развитие и будущее глобального энергетического Интернета (2017)», в которых была предложена система стратегии глобального энергетического Интернета, идеи и пути развития, описаны перспективы строительства экологически чистой, низкоуглеродной, взаимосвязанной и совместно используемой глобальной энергетической общности. В статье отмечается, что обсуждение строительства глобального энергетического Интернета — инициатива, выдвинутая председателем КНР Си Цзиньпином на саммите ООН по глобальному развитию 26 сентября 2015 года, направленная на содействие удовлетворения глобального энергетического спроса чистыми и зелеными способами. Эта инициатива получила широкое одобрение и позитивные отклики со стороны международного сообщества. В марте 2016 года в Пекине была официально создана рабочая группа по развитию глобального энергетического Интернета, став первой международной организацией в сфере энергетики в Китае, первая партия членов включает 80 стран c пяти континентов. Энергетическая, информационная и транспортная сеть — интеграция этих трёх сетей рассматривается как неизбежная тенденция современного глобального развития. Информационная и транспортная сети уже реализуют глобальную связь, развитие энергетической сети заметно отстает.

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


Читать дальше →

Коммерческая тайна добро или зло?

Reading time3 min
Views3.1K

Эту статью я написал благодаря одному из комментариев, которую читатель оставил под моей публикацией «Как правильно работать с коммерческой тайной».

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

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

О том, что такое добро и зло, говорить также не имеет смысла. Главное, что нужно понимать, эти понятия в основном являются оценочными и субъективными. А потому при определении – является что-либо добром или злом – важно понимать, со стороны какого субъекта мы подходим к оценке.

Но вернемся к комментарию, с которого и началась эта статья:

Читать далее

Тесты на антиутопию: искусственный интеллект GPT-J-6B пишет программный код (попутно раскрывая план восстания машин)

Reading time16 min
Views14K


Компания OpenAI отказалась открывать исходный код алгоритма обработки естественного языка третьего поколения (модель называется GPT-3, имеет 175 миллиардов параметров). Поэтому другие компании разрабатывают свои модели. Они имеют меньше параметров, но похожую архитектуру и после обучения тоже показывают впечатляющие результаты.

Например, GPT-J от компании EleutherAI с 6 миллиардами параметров, разработанная Араном Комацзаки и Беном Вангом, также имеет сходства с GPT-3. У них есть бесплатное веб-демо, чтобы попробовать подсказки и ноутбук Google Colab. Модель не такая большая, как GPT-3, но для генерации текста с разумной скоростью ей уже требуется Google Cloud TPU.

Запуск GPT-J с моими тестовыми подсказками, в сравнении с тестами GPT-3, показал более слабые результаты на большинстве из них, но есть одно большое НО:

Генерация программного кода на GPT-J работает очень хорошо, а на GPT-3 — очень плохо.


Полный тред в твиттере

Такое поведение, вероятно, связано с обучающим набором GPT-J: его обучали на The Pile, который имеет больше входных данных с GitHub и Stack Overflow по сравнению с обучающим набором GPT-3 (там в основном Common Crawl, текстовый интернет-контент общего назначения).
Читать дальше →

Почему спуфинг устройств сегодня становится практически невозможным

Reading time6 min
Views11K
Если вы смотрели фильм Квентина Тарантино «Бесславные ублюдки», то, вероятно, помните, сцену в баре, когда замаскированный британский шпион выдаёт себя бессознательным жестом.

Хотя он одет в нацистскую униформу и хорошо говорит на немецком, его выдаёт мелкая деталь: его пальцы. При заказе ещё трёх пинт он вместо большого, указательного и среднего пальцев (как показывают немцы) показывает безымянный, средний и указательный. Другой офицер за столом сразу же понимает по этой незначительной детали, что человек определённо из англоговорящей страны.


Неотъемлемая угроза мелких деталей.

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

Но прежде чем приступить, давайте вкратце узнаем, почему системы пытаются распознавать устройства, что также даст нам ответ на вопрос, почему люди пытаются распознавать или эмулировать устройства.
Читать дальше →

Идеальный инструмент для работы с СУБД без SQL для Node.js или Все, что вы хотели знать о Sequelize. Часть 1

Reading time22 min
Views110K

Представляю вашему вниманию руководство по Sequelize.


Sequelize — это ORM (Object-Relational Mapping — объектно-реляционное отображение или преобразование) для работы с такими СУБД (системами управления (реляционными) базами данных, Relational Database Management System, RDBMS), как Postgres, MySQL, MariaDB, SQLite и MSSQL. Это далеко не единственная ORM для работы с названными базами данных (далее — БД), но, на мой взгляд, одна из самых продвинутых и, что называется, "battle tested" (проверенных временем).


ORM хороши тем, что позволяют взаимодействовать с БД на языке приложения (JavaScript), т.е. без использования специально предназначенных для этого языков (SQL). Тем не менее, существуют ситуации, когда запрос к БД легче выполнить с помощью SQL (или можно выполнить только c помощью него). Поэтому перед изучением настоящего руководства рекомендую бросить хотя бы беглый взгляд на SQL. Вот соответствующая шпаргалка.


Это первая из 3 частей руководства, в которой мы поговорим о начале работы с Sequelize, основах создания и использования моделей и экземпляров для взаимодействия с БД, выполнении поисковых и других запросов, геттерах, сеттерах и виртуальных (virtual) атрибутах, валидации, ограничениях и необработанных (raw, SQL) запросах.


Вторая часть.
Третья часть.


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

Читать дальше →

Information

Rating
Does not participate
Registered
Activity