Как стать автором
Обновить
35
0
Тимур Сафин @tsafin

Пользователь

Отправить сообщение

Черновик FAQ: Почему стандарты С++ выходят каждые три года?

Время на прочтение11 мин
Количество просмотров10K

У WG21 есть строгий график (см. P1000) выпуска стандарта каждые три года. И никаких задержек.

В течение каждого цикла мы регулярно получаем вопросы «ну почему так строго?», особенно от новых участников комитета, которые не знакомы с его историей и причинами текущего положения вещей. И во время предварительной телеконференции с администрацией Кёльна несколько человек порекомендовали описать, почему мы так делаем и как принималось решение о принятии этого графика.

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

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

Читать дальше →
Всего голосов 49: ↑47 и ↓2+45
Комментарии26

C++ Russia 2019: бесплатная трансляция первого зала и немного о том, что будет на конференции

Время на прочтение5 мин
Количество просмотров4.3K

19-20 апреля, то есть уже на этих выходных, пройдёт конференция C++ Russia. Это два дня и несколько треков хардкорных технических докладов, посвященных C++: concurrency, производительность, архитектура и инфраструктурные решения — всё для того, чтобы ваш код выглядел лучше и делал больше. Конференция ориентирована на опытных разработчиков, никаких вводных докладов!


Во-первых, вы сможете посмотреть совершенно бесплатную онлайн-трансляцию. На ней будет только первый день и первый зал + онлайн-интервью между докладами. Что это за доклады — обсудим под катом.


Важно, что трансляция начнётся в 9:45 утра (по московскому времени), за 15 минут до открытия и закончится ближе к 7 часам вечера. Всё это время вы сможете слушать доклады с небольшими перерывами на онлайн-интервью со спикерами. Ссылка будет работать весь день, поэтому можно открывать её только на наиболее важных для вас докладах.


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


Читать дальше →
Всего голосов 30: ↑28 и ↓2+26
Комментарии0

Беседы о функциональном программировании на C++ Siberia 2019

Время на прочтение11 мин
Количество просмотров9.7K

Всем привет!


Недавно в Новосибирске прошла очередная C++ Siberia 2019. На конференции была уютная атмосфера и много хороших докладов. Пользуясь случаем, я побеседовал с двумя нашими докладчиками, которых совсем скоро вы сможете увидеть и в Москве.


Иван Чукич — один из разработчиков KDE, преподаватель и исследователь дизайна языков программирования в Белградском университете.


Александр Гранин (graninas) — известный спикер и разработчик, специализирующийся на ФП, организатор новосибирского ФП-сообщества LambdaNsk.


Читать дальше →
Всего голосов 39: ↑36 и ↓3+33
Комментарии9

Стажёр Вася и его истории об идемпотентности API

Время на прочтение11 мин
Количество просмотров242K

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


Меня зовут Денис Исаев, и я руковожу одной из бэкенд групп в Яндекс.Такси. Сегодня я поделюсь с читателями Хабра описанием проблем, которые могут возникнуть, если не учитывать идемпотентность распределенных систем в своем проекте. Для этого я выбрал формат вымышленных историй о стажёре Васе, который только-только учится работать с API. Так будет нагляднее и полезнее. Поехали.


image

Читать дальше →
Всего голосов 219: ↑216 и ↓3+213
Комментарии163

Готовимся к С++20. Coroutines TS на реальном примере

Время на прочтение9 мин
Количество просмотров33K
В C++20 вот-вот появится возможность работать с корутинами из коробки. Нам в Яндекс.Такси эта тема близка и интересна (под собственные нужды мы разрабатываем асинхронный фреймворк). Поэтому сегодня мы на реальном примере покажем читателям Хабра, как можно работать с C++ stackless корутинами.

В качестве примера возьмём что-то простое: без работы с асинхронными сетевыми интерфейсами, асинхронными таймерами, состоящее из одной функции. Например, попробуем осознать и переписать вот такую «лапшу» из колбеков:


void FuncToDealWith() {
    InCurrentThread();

    writerQueue.PushTask([=]() {
        InWriterThread1();

        const auto finally = [=]() {
            InWriterThread2();
            ShutdownAll();
        };

        if (NeedNetwork()) {
            networkQueue.PushTask([=](){
                auto v = InNetworkThread();
                if (v) {
                    UIQueue.PushTask([=](){
                        InUIThread();
                        writerQueue.PushTask(finally);
                    });
                } else {
                    writerQueue.PushTask(finally);
                }
            });
        } else {
            finally();
        }
    });
}

Читать дальше →
Всего голосов 32: ↑31 и ↓1+30
Комментарии61

Vue.js Moscow Meetup #1 (22.03.2018)

Время на прочтение3 мин
Количество просмотров5.5K
Vue.js Moscow Meetup Logo

В конце месяца пройдет первый Московский MeetUp, посвященный исключительно фреймворку Vue.js.

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

Мы ждем вас 22 марта 2018 в офисе компании Acronis — в Физтехпарке (г. Москва, Долгопрудненское шоссе, д.3). Специально по этому случаю будет организован трансфер от станции метро Алтуфьево, а также возвращение в город после мероприятия.
Читать дальше →
Всего голосов 30: ↑30 и ↓0+30
Комментарии11

Эволюция системных вызовов архитектуры x86

Время на прочтение13 мин
Количество просмотров44K

Про системные вызовы уже много было сказано, например здесь или здесь. Наверняка вам уже известно, что системный вызов — это способ вызова функции ядра ОС. Мне же захотелось копнуть глубже и узнать, что особенного в этом системном вызове, какие существуют реализации и какова их производительность на примере архитектуры x86-64. Если вам также интересны ответы на данные вопросы, добро пожаловать под кат.

Читать дальше →
Всего голосов 77: ↑77 и ↓0+77
Комментарии30

Конференция C++ Russia 2018

Время на прочтение2 мин
Количество просмотров5.8K
Всем привет! Я надеюсь, вы успели соскучиться по плюсовым докладам и общению с коллегами, потому что очередная конференция C++ Russia уже не за горами. В этом году конференция снова пройдёт в городе трёх революций.

Конференция состоится 19-21 апреля в Санкт-Петербурге. 19 апреля — день мастер-классов, 20-21 — основная программа. Jon Kalb открывает первый день конференции. Темы докладов конференции: память, краш-репорты, асинхронность, software transactional memory, reflective metaprogramming, ranges, акторы, Herb Sutter.

Подробности под катом.
Читать дальше →
Всего голосов 44: ↑43 и ↓1+42
Комментарии8

Стоимость недвижимости на тепловых картах

Время на прочтение8 мин
Количество просмотров55K

В статье рассказано о процессе создания тепловой карты цен по продаже недвижимости для Москвы и Санкт-Петербурга.


Тепловая карта цен Москвы


Меня зовут Дмитрий, я программист из Санкт-Петербурга и у меня есть хобби — это портал по недвижимости которым я занимаюсь в свободное от работы время вот уже почти 5 лет. Сайт авторский, и это дает достаточный уровень свободы для экспериментирования и реализации любых идей на нем. И одной из давних идей было создание тепловой карты цен.

Читать дальше →
Всего голосов 126: ↑124 и ↓2+122
Комментарии78

Position-independent code (PIC) в разделяемых библиотеках на x64

Время на прочтение8 мин
Количество просмотров12K

enter image description here


Привет, я все еще Марко и все еще системный программист в Badoo. На прошлой неделе я опубликовал перевод о PIC в шареных библиотеках, но есть вторая часть – про разделяемые библиотеки на х64, поэтому решил не оставлять дело незаконченным.

Читать дальше →
Всего голосов 53: ↑51 и ↓2+49
Комментарии1

Контейнеризация Caché

Время на прочтение5 мин
Количество просмотров3.8K
В этой статье я хочу рассказать про то как можно получить свой образ Docker с InterSystems Caché/Ensemble.
Читать дальше →
Всего голосов 13: ↑12 и ↓1+11
Комментарии3

Как я разбирал docx с помощью XSLT

Время на прочтение16 мин
Количество просмотров65K

Задача обработки документов в формате docx, а также таблиц xlsx и презентаций pptx является весьма нетривиальной. В этой статье расскажу как научиться парсить, создавать и обрабатывать такие документы используя только XSLT и ZIP архиватор.

Читать дальше →
Всего голосов 45: ↑44 и ↓1+43
Комментарии15

Писать веб-сайты на ассемблере полезно и приятно

Время на прочтение5 мин
Количество просмотров139K

Конечно, многие скажут, что это ни-ни и писать для веба нужно только на PHP, ну или на один из модерных языках Питон, Руби, Node.js и т.д.


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


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


Раньше у меня уже было веб-приложение на ассемблере — CMS для малого сайта. Только оно работает в режиме "один пишет, многие читают". При том, использует CGI интерфейс и поэтому "многие" читать одновременно тоже не получается.

Читать дальше →
Всего голосов 156: ↑126 и ↓30+96
Комментарии429

Как устроен парсер Python, и как втрое уменьшить потребление им памяти

Время на прочтение12 мин
Количество просмотров49K
Любой, кто изучал устройство языков программирования, примерно представляет, как они работают: парсер в соответствии с формальной грамматикой ЯП превращает входной текст в некоторое древовидное представление, с которой работают последующие этапы (семантический анализ, различные трансформации, и генерация кода).

КДПВ

В Python всё немного сложнее: парсеров два. Первый парсер руководствуется грамматикой, заданной в файле Grammar/Grammar в виде регулярных выражений (с не совсем обычным синтаксисом). По этой грамматике при помощи Parser/pgen во время компиляции python генерируется целый набор конечных автоматов, распознающих заданные регулярные выражения — по одному КА для каждого нетерминала. Формат получающегося набора КА описан в Include/grammar.h, а сами КА задаются в Python/graminit.c, в виде глобальной структуры _PyParser_Grammar. Терминальные символы определены в Include/token.h, и им соответствуют номера 0..56; номера нетерминалов начинаются с 256.

Проиллюстрировать работу первого парсера проще всего на примере. Пусть у нас есть программа if 42: print("Hello world").
Читать дальше →
Всего голосов 122: ↑116 и ↓6+110
Комментарии68

Ресайз картинок в браузере. Все может стать еще хуже

Время на прочтение3 мин
Количество просмотров51K

 


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



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

Читать дальше →
Всего голосов 102: ↑87 и ↓15+72
Комментарии88

Парсинг JSON — это минное поле

Время на прочтение25 мин
Количество просмотров159K
image

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

Читать дальше →
Всего голосов 170: ↑164 и ↓6+158
Комментарии60

Caché Localization Manager или i18n в InterSystems Caché

Время на прочтение3 мин
Количество просмотров3.1K


Caché Localization Manager


Если двумя словами, то CLM это утилита, которая может быть полезна при локализации/интернационализации/добавлении мультиязычности проектов на InterSystems Caché.
Всего голосов 19: ↑19 и ↓0+19
Комментарии2

MapReduce из подручных материалов. Часть III – собираем все вместе

Время на прочтение11 мин
Количество просмотров4.8K
Mosaic by Joan PollakВ первой (достаточно капитанской) части этой серии мы рассказали про базовые концепции MapReduce почему это плохо, почему это неизбежно, и как с этим жить в других средах разработки (если вы не про Си++ или Java). Во второй части мы-таки начали рассказывать про базовые классы реализации MapReduce на Caché ObjectScript, введя абстрактные интерфейсы и их первичные реализации.
Сегодня пришел наш день! – мы покажем первый пример собранный в парадигме MapReduce, да, он будет странный и не самый эффективный, и совсем не распределенный, но вполне MapReduce.

Читать дальше →
Всего голосов 20: ↑19 и ↓1+18
Комментарии0

Как я создавал бесшовный Wi-Fi

Время на прочтение7 мин
Количество просмотров204K


У нас в конторе не так давно назрела задача сделать бесшовное Wi-Fi-покрытие, долго терпели и перетаптывались, но в итоге его сделали. Поделюсь опытом, как это было. Началось с того, что два года назад мы полностью перешли на IP-АТС и почти извели аналоговые телефоны включая, в итоге и DECT. Однако, переносные трубки нужны и помимо настольных SIP-телефонов купили несколько Wi-Fi телефонов Tecom. Я и сам, как ответственный за техническую часть в компании постоянно хожу по офису с различными Wi-Fi-ными девайсами, ну и манагеры тоже. У многих на руках упомянутые Wi-Fi SIP-телефоны, + у складских пару Wi-Fi терминалов, есть просто Андроиды и Яблоки с установленными SIP-клиентами от АТС. Раньше все решалось несколькими Wi-Fi роутерами, в принципе, тоже было приемлемо (офис небольшой), но ровно пока ты сидишь на месте – пошел, все, кончился разговор, а Skype-соединение еще быстрее слетает. Это стало изрядно раздражать руководство и менеджеров и пошли наезды что вай-фай не вай-фай. Попытки просто увеличить количество роутеров ясное дело задачу не решило.

Стал читать и таки вычитал, что все уже давно придумано до нас. Есть Wi-Fi точки, которые могут делать переход клиента между собой без разрыва или почти без разрыва соединения. Причем оборудования такого достаточно много на рынке, осталось только выбрать по бюджету и адекватности. Оказалось, на эту тему очень много публикаций в зарубежном интернете, у нас поменьше. Огромным минусом этих систем, что все они хотят контроллера, который стоит как чугунный мост и у некоторых особо жадных еще и лицензии требуются на подключение каждой точки. Я принес смету на наш офис на одном таком уважаемом оборудовании, у генерального глаза округлились и ответ был виден на его лице еще до того, как он дочитал эту калькуляцию.

В общем, по мере изучения задачи проснулся уже спортивный интерес – можно ли сделать гладкое WiFi-покрытие (прям как на форумах) в нормальные деньги и так чтобы без этих контроллеров? Оказалось, можно.
Всего голосов 41: ↑36 и ↓5+31
Комментарии92

Разработка в InterSystems Caché в вашей любимой IDE

Время на прочтение11 мин
Количество просмотров7.6K
Здравствуйте! В InterSystems Caché есть вполне практичный способ разрабатывать решения без использования интегрированных в неё инструментов. Весь код проекта можно хранить в виде традиционных файлов с исходным кодом, редактировать в любимой среде разработки, индексировать системой контроля версий и одной командой выполнять импорт и компиляцию классов в СУБД Caché. Более того, это предоставляет возможность использовать любые другие внешние инструменты, например, для сборки и препроцессинга кода. В данной статье будет рассмотрен пока что не традиционный для Caché, но достаточно практичный цикл разработки проектов.
Интересно? Продолжайте чтение
Всего голосов 14: ↑14 и ↓0+14
Комментарии14

Информация

В рейтинге
Не участвует
Дата рождения
Зарегистрирован
Активность