habrahabr.ru

    Лучшие публикации за сутки

  • [Перевод] Анализ сишного Hello World
    Hello World — одна из первых программ, которые мы пишем на любом языке программирования.
    Для C hello world выглядит просто и коротко:
    #include <stdio.h>
    
    void main() {
      printf("Hello World!\n");
    }

    Поскольку программа такая короткая, должно быть элементарно объяснить, что происходит «под капотом».
    Читать дальше → Read more »
  • PyDaCon meetup в Mail.ru Group: 22 июня


    22 июня Mail.ru Group проводит совместный митап с организаторами конференции PyCon Russia и PyData Moscow meetup. Вас ждут 2 секции: доклады по Python, состав которого был сформирован на основе общего списка докладов к PyCon Russia и PyData-трек от PyData Moscow meetup. В программе мероприятия: keynote, технические доклады, викторина и много полезного общения.
    Программа мероприятия Read more »
  • [Из песочницы] Сeph — от «на коленке» до «production»

    Выбор CEPH. Часть 1


    У нас было пять стоек, десять оптических свичей, настроенный BGP, пару десятков SSD и куча SAS дисков всех цветов и размеров, а ещё proxmox и желание засунуть всю статику в собственное S3 хранилище. Не то чтобы это всё было нужно для виртуализации, но раз начал использовать opensource — то иди в своём увлечении до конца. Единственное, что меня беспокоило — это BGP. В мире нет никого более беспомощного, безответственного и безнравственного, чем внутренняя маршртутизация по BGP. И я знал, что довольно скоро мы в это окунёмся.



    Задача стояла банальная — имелся CEPH, работал не очень хорошо. Надо было сделать "хорошо".
    Доставшийся мне кластер был разнородным, настроенным на скорую руку и практически не тюнингованным. Он состоял из двух групп разных нод, с одной общей сеткой выполняющей роль как cluster так и public network. Ноды были набиты четырьмя типами дисков — два типа SSD, собранными в два отдельных placement rule и два типа HDD разного размера, собранными в третью группу. Проблема с разными размерами была решена разными весами OSD.


    Саму настройку разделили на две части — тюнинг операционной системы и тюнинг самого CEPH и его настроек.

    Читать дальше → Read more »
  • Набор в бакалавриат СПбГУ при поддержке Яндекса и JetBrains
    В сентябре 2019 года СПбГУ открывает факультет математики и компьютерных наук. Набор в бакалавриат начинается уже в конце июня на три направления: «Математика», «Математика, алгоритмы и анализ данных» и «Современное программирование». Программы созданы коллективом Лаборатории им. П.Л. Чебышёва вместе с ПОМИ РАН, Computer Science центром, компаниями Газпромнефть, JetBrains и Яндекс.

    image

    Курсы читают известные преподаватели, опытные и увлечённые сотрудники IT-компаний. Среди преподавателей — Николай Вавилов, Эдуард Гирш, Сергей Иванов, Сергей Кисляков, Александр Охотин, Александр Куликов, Илья Кацев, Дмитрий Ицыксон, Александр Храбров. А также Александр Авдюшенко из Яндекса, Михаил Сенин и Святослав Щербина из JetBrains и другие.

    Занятия проходят на Васильевском острове в центре Петербурга.
    Подробнее о бакалавриате Read more »
  • [Перевод] Парсим 25TB с помощью AWK и R

    Как читать эту статью: прошу прощения за то, что текст получился таким длинным и хаотичным. Чтобы сэкономить ваше время, я каждую главу начинаю со вступления «Чему я научился», в котором одним-двумя предложениями излагаю суть главы.

    «Просто покажи решение!» Если вы хотите всего лишь увидеть, к чему я пришёл, то переходите к главе «Становлюсь изобретательнее», но я считаю, что интереснее и полезнее почитать про неудачи.


    Недавно мне поручили настроить процесс обработки большого объёма исходных последовательностей ДНК (технически это SNP-чип). Нужно было быстро получать данные о заданном генетическом местоположении (которое называется SNP) для последующего моделирования и прочих задач. С помощью R и AWK мне удалось очистить и организовать данные естественным образом, сильно ускорив обработку запросов. Далось мне это нелегко и потребовало многочисленных итераций. Эта статья поможет вам избежать некоторых моих ошибок и продемонстрирует, что же у меня в конце концов получилось.
    Читать дальше → Read more »
  • Коллаборация и автоматизация во фронтенде. Чему мы научились за 13 школ
    Всем привет. Коллеги недавно писали в этом блоге, что открылась регистрация в следующую Школу разработки интерфейсов в Москве. Я очень рад новому набору, ведь я был одним из тех, кто придумал Школу в 2012 году, и с тех пор постоянно ей занимаюсь. Она эволюционировала. Из неё вышло целое мини-поколение разработчиков с широчайшим кругозором и способностью взять на себя в проектах вообще всё, что связано с фронтендом. Кто-то из выпускников работает в Яндексе, кто-то нет.



    ШРИ — как сервис: тоже требует разных форматов взаимодействия, автоматизации и экспериментов. Вот об этом и поговорим сегодня на Хабре. Будут и полезные ссылки для кандидатов.

    Читать дальше → Read more »
  • [Перевод] История четырёхкратного ускорения React-приложения
    Почти 60% посетителей сайта покидают его в том случае, если его загрузка занимает более 3 секунд. 80% таких посетителей на сайт уже не возвращается. Это говорит о том, что успех веб-проекта не в последнюю очередь зависит от его скорости. Автор материала, перевод которого мы сегодня публикуем, хочет рассказать о методиках повышения производительности React-приложений.


    Результаты оптимизации приложения
    Читать дальше → Read more »
  • 13 самых заминусованных статей минувшего года
    Учиться лучше на чужих ошибках и мысленно благодарить тех, кто такую возможность предоставляет. Под катом несколько типичных примеров того, чего не стоит делать на Хабре. И что делать в случае, если сливают.


    Читать дальше → Read more »
  • [Перевод] История интернета: ARPANET — зарождение



    К середине 1960-х первые вычислительные системы с разделением времени в целом повторили раннюю историю первых телефонных коммутаторов. Предприниматели создавали эти коммутаторы, чтобы позволить подписчикам пользоваться услугами такси, врача или пожарной бригады. Однако подписчики вскоре обнаружили, что местные коммутаторы точно так же подходят для общения и социализации друг с другом. Точно так же и системы с разделением времени, сначала созданные для того, чтобы пользователи могли «вызывать» себе вычислительные мощности, вскоре превратились в коммунальные коммутаторы со встроенной системой обмена сообщениями. В следующем десятилетии компьютеры пройдут очередной этап истории телефона – появление взаимосвязи коммутаторов, образующей региональные и междугородние сети.
    Читать дальше → Read more »
  • График развития диагностических возможностей в PVS-Studio
    Развитие PVS-Studio

    С момента появления продукта PVS-Studio прошло более 8 лет, и всё это время мы реализовывали в нём новые диагностические правила. И прекращать не собираемся. Если вас заботят вопросы, не растеряли ли мы за эти годы бодрость, и не останавливается ли PVS-Studio в развитии, то приведённый в статье график снимет эти вопросы. Анализатор активно развивается, причём скорость развития с годами только увеличивается.
    Читать дальше → Read more »
  • [Перевод] Технологии микроэлектроники на пальцах: «закона Мура», маркетинговые ходы и почему нанометры нынче не те. Часть 1
    image
    Возможное фото 10 нм IceLake. Источник

    Странные вещи творятся на процессорном рынке. Мировой лидер в лице фирмы Intel пятый год бьется в попытках перейти на 10 нм техпроцесс. Изначально заявляли о переходе на 10 нм в 2015-м году, потом в 2016-м, 2017-м… На дворе 2019-й, а 10-нм от Intel в серии так и нет. Ну как нет, есть отдельные опытные/инженерные образцы, но высокий выход годных — проблема. Реальный переход ожидается не раньше 2022 года уже.

    Собственно, это и стало причиной дефицита процессоров Intel на рынке. Для его преодоления компания расширяет производство модифицированных 14 нм процессоров (те же Lake только в профиль) и даже возвращается к 22 нм. Казалось бы, регресс налицо. А в это время корейский Samsung, тайваньский TSMC и примкнувший к ним AMD с платформой ZEN 2 рапортуют о вводе в серию аж 7 нм и вот-вот перейдут на 5 нм. Достали из пыльного шкафа «закон Мура» и объявили его живее всех живых. Скоро будет и 3 нм, и 2 нм, и даже 1 нм (sic!) — pourquoi pas?!

    Что же произошло? Неужто ушлые азиаты обошли клятых пендосов в ключевой отрасли? Можно открывать шампанское?

    Disclaimer: Данную статью я нашёл совершенно случайно и был крайне поражён, насколько грамотно и подробно в ней раскрываются проблемы современной микроэлектроники, в частности, смерть закона Мура и маркетинг. Когда-то давно и сам баловался написанием статей про изготовление чипов, а в серии статей «Взгляд Изнутри» даже заглядывал внутрь оных, т.е. тема мне крайне интересна. Естественно, я бы хотел, чтобы сам автор оригинальной статьи опубликовал её на Хабре, но в связи с занятостью он разрешил мне перенести её сюда. К сожалению, правила Хабра не разрешают прямую копи-пасту, поэтому я добавил ссылки на источники, картинки и немножко отсебятины и постарался чуть-чуть выправить текст. Да, и статьи (1 и 2) по данной теме от amartology знаю и уважаю.
    Скандалы, интриги и закон Мура Read more »
  • [Перевод] Почему ['1', '7', '11'].map(parseInt) возвращает [1, NaN, 3] в Javascript?


    Javascript — странный. Не верите? Ну попробуйте тогда преобразовать массив строк в целые числа с помощью map и parseInt. Запустите консоль (F12 на Chrome), вставьте код ниже и нажмите Enter


    ['1', '7', '11'].map(parseInt);

    Вместо ожидаемого массива целых чисел [1, 7, 11] мы получаем [1, NaN, 3]. Но как так? Чтобы узнать в чём тут дело, сначала нам придётся поговорить о некоторых базовых концепциях Javascript. Если вам нужен TL;DR, пролистывайте статью до самого конца.

    Читать дальше → Read more »
  • [Перевод] Встречайте Codeception 3.0
    Настало время воплотить в жизнь новую мажорную версию Codeception! За годы эволюции и постоянных улучшений мы многому научились, и сегодня представляем вам лучшую версию Codeception. Мы по-прежнему считаем, что простота тестирования важна: чтение, написание и отладка тестов должны быть легкими.

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

    Хорошо, а как насчет Codeception 3.0?
    Читать дальше → Read more »
  • Как мы собираем ТВ-приставки


    Как сделать шаг навстречу такому модному сегодня понятию, как импортозамещение? На самом деле, несложно, если ты уже имеешь соответствующий опыт разработки и производства отечественного продукта. У нас такой опыт имеется. Вот уже больше года в Екатеринбурге функционирует сборочное производство телевизионных приставок.
    Читать дальше → Read more »
  • Делаем ретро-игру из 80-х или как готовить макеты для лазерной резки


    Хабр, привет! Так получилось, что меня давно просили сделать старую настольную игру из СССР — «Сражение». Вот пришло время выполнять обещание, заодно решила показать как создавать макеты для лазерной резки и что получается в итоге. Большой сложности в этом нет, но есть некоторые нюансы.

    Много статей хабра по теме DIY содержит жалобы: на отсутствие навыков работы с лобзиком, малую жесткость картона, сложности с созданием корпуса. Каждый сам выбирает способ реализации своих идей, но мне важно показать как легко можно сделать макет в том же Inkscape, отдать его в работу и получить готовые детали.
    Читать дальше → Read more »
  • Сократить бэкапы на 99.5% с hashget

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


    Это обзорная статья для описания возможностей. Само использование hashget (довольно простое) описано в README проекта и wiki-документации.


    Сравнение


    По закону жанра, начну сразу с интриги — сравнения результатов:


    Data sample unpacked size .tar.gz hashget .tar.gz
    Wordpress-5.1.1 43 Mb 11 Mb ( 26% ) 155 Kb ( 0.3% )
    Linux kernel 5.0.4 934 Mb 161 Mb ( 20% ) 4.7 Mb ( 0.5% )
    Debian 9 (LAMP) LXC VM 724 Mb 165 Mb ( 23% ) 4.1 Mb ( 0.5% )

    Предыстория, каким должен быть идеальный и эффективный бэкап


    Каждый раз, когда я делал бэкап свежесозданной виртуалки, мне не давало покоя чувство, что я что-то делаю не так. Почему у меня получается увесистый бэкап от системы, где моего бесценного нетленного творчества — однострочный index.html с текстом "Hello world"?

    Читать дальше → Read more »
  • Аэростаты Loon обеспечивают аварийное подключение к сети и интернет в Перу после землетрясения магнитудой — 8,0
    Как вы уже знаете (с предыдущей статьи), компания Loon уделяет особое внимание обеспечению связи по всему миру с помощью атмосферных шаров. Полезная во время стихийных бедствий, компания Alphabet вновь продемонстрировала универсальность своего подхода, быстро обеспечив LTE связь после землетрясения магнитудой 8,0 в Перу, когда все хотели знать о состоянии и благополучии своих близких.



    26 мая 2019 года сильное землетрясение обрушилось на отдаленный регион Перу — Амазонку. Благодаря существующему коммерческому тестированию и работе с Telefónica по обеспечению доступа к мобильному интернету в районах с недостаточным уровнем доступности, компания Loon смогла обеспечить связь в течение 48 часов.

    В воскресенье утром в регионе произошло землетрясение магнитудой 8,0. По просьбе правительства Перу и Tefónica мы быстро перенаправили группу воздушных шаров в пострадавшую зону. Ранним утром во вторник прибыли первые воздушные шары и начали обслуживать LTE пользователей, находящихся внизу. Скоро прибудет еще больше шаров.
    Читать дальше → Read more »
  • Как мы создали систему оповещения о ядерной угрозе, или как я обучил нейросеть на заголовках Хабра

    Заголовок статьи может показаться странным и это неспроста — он прекрасен именно тем, что написал его не я, а LSTM-нейросеть (а точнее его часть перед "или").



    (схема LSTM взята из Understanding LSTM Networks)


    И сегодня мы разберёмся, как можно генерировать заголовки статей Хабра (и в принципе сам текст можно генерировать этой же нейро-архитектурой). Весь код доступен для запуска онлайн в notebooks от Гугла. Данные, как всегда, открыты на github.


    А вот здесь можно запустить уже обученную модель на GPU от Гугла (бесплатно и без смс) и собственно погенерить заголовки.

    Читать дальше → Read more »
  • [Перевод] Паттерны дизайна уровней для 2D-игр

    Введение


    Дизайнеры многих игр при разработке геймплея полагаются на вариативность контента. Повторяющиеся препятствия приводят к тому, что игроку становится скучно, поэтому дизайнеры обычно стремятся создавать постоянно увлекающий игровой процесс. Чаще всего игры состоят из частей: уровней, механик, графики, звуков и т.д. Одной из наиболее важной является дизайн уровней. Он не привносит в игру новое измерение, а занимается выстраиванием существующих элементов. Из-за большой потребности игр в контенте основной задачей гейм-дизайна становится дизайн уровней. Их роль фундаментально важна, в крупномасштабных проектах ими даже занимается отдельный коллектив, не участвующий в создании дизайна игры и механик.
    Читать дальше → Read more »
  • Пишем под FPGA без HDL. Сравнение высокоуровневых средств разработки
    В последнее время производители FPGA и сторонние компании активно развивают методы разработки для FPGA, отличающиеся от привычных подходов использованием высокоуровневых средств разработки.

    Являясь FPGA-разработчиком, в качестве основного инструмента я использую язык описания аппаратуры (HDL) Verilog, но растущая популярность новых методов вызвала у меня большой интерес, поэтому в данной статье я решил сам разобрать что к чему.

    Эта статья — не руководство или инструкция к пользованию, это мой обзор и выводы о том, что могут дать различные высокоуровневые средства разработки FPGA-разработчику или программисту, который хочет окунуться в мир FPGA. Для того, чтобы сравнить самые интересные на мой взгляд средства разработки, я написал несколько тестов и проанализировал полученные результаты. Под катом — что из этого вышло.
    Читать дальше → Read more »