Pull to refresh
4
0.8
Дмитрий Померанцев @pda0

User

Send message

Я хочу, чтобы сайты открывались мгновенно

Reading time10 min
Views140K
Здравствуйте, меня зовут Александр Зеленин и я веб-разработчик. Я расскажу, как сделать так, чтобы ваш сайт открывался быстро. Очень быстро.


Я хочу, чтобы мой сайт открывался быстро

Чек-лист вёрстки

Reading time7 min
Views82K

Это статья — список полезных мелочей. Весь текст поделен на две части. Первая рассказывает про простые элементы (текст, кнопки, изображения, формы и другие), вторая часть про производительность, масштабируемость, безопасность и доступность.

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

Налоговый cуслик — 2. «Налог на Google» и агентский НДС для российских предпринимателей и организаций

Reading time5 min
Views30K
Данная статья-заметка будет интересна российским индивидуальным предпринимателям и организациям, приобретающим какие-либо услуги в электронной форме у иностранных компаний, не имеющих постоянного представительства в Российской Федерации. В частности:

— Разработчикам, реализующим свои игры и приложения через торговые площадки Steam, AppStore, Google Play и аналогичные им.
— Фрилансерам, использующим для поиска клиентов различные биржи и аналогичные им площадки.
— Приобретающим рекламные услуги, в том числе услуги по предоставлению рекламной площади или времени для рекламы.
— Покупателям услуг по размещению информации на сайтах типа «доска объявлений», «каталог», «аукцион».
— Покупателям посреднических услуг, предназначенных для организации возможности заключения сделок между покупателем и продавцом, в том числе сервисов по приему платежей.
— Услуг хостинга, доменов, ресурсов «в облаке».
— Услуг поиска и ведения статистики на сайтах.
— … И многих других видов услуг.

Всех подходящих под такое описание — прошу под кат.


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

Как сделать невозможные обои: история запрещённых симметрий

Reading time4 min
Views43K
image
Слева – узор обоев с симметрией вращения шестого порядка вокруг каждой из коричнево-зелёных розеток. Справа – узор обоев с зеркальной симметрией относительно горизонтальных линий, проходящих через каждый эллиптический элемент орнамента витража.

На первый взгляд придумывать обои не сложнее, чем выполнять задания из детского сада. Дизайнеры могут выбрать любое сочетание цветов и форм для первоначального кусочка, и просто размножить его в двух направлениях. В зависимости от узора начального кусочка и выбора направлений могут появляться и дополнительные симметрии – к примеру, симметрия шестого порядка на первой картинке, или зеркальная на второй. Оба узора созданы математиком Фрэнком Фарисом [Frank Farris] из калифорнийского университета Санта-Клары.
Читать дальше →

Повышаем производительность кода: сначала думаем о данных

Reading time20 min
Views64K


Занимаясь программированием рендеринга графики, мы живём в мире, в котором обязательны низкоуровневые оптимизации, чтобы добиться GPU-фреймов длиной 30 мс. Для этого мы используем различные методики и разработанные с нуля новые проходы рендеринга с повышенной производительностью (атрибуты геометрии, текстурный кеш, экспорт и так далее), GPR-сжатие, скрывание задержки (latency hiding), ROP…

В сфере повышения производительности CPU в своё время применялись разные трюки, и примечательно то, что сегодня они используются для современных видеокарт ради ускорения вычислений ALU (Низкоуровневая оптимизация для AMD GCN, Быстрый обратный квадратный корень в Quake).


Быстрый обратный квадратный корень в Quake

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

Эта статья — не исчерпывающее хардкорное руководство по железу. Это всего лишь введение, напоминание, свод базовых принципов написания эффективного кода для CPU. Я хочу «показать, что низкоуровневое мышление сегодня всё ещё полезно», даже если речь пойдёт о процессорах, которые я мог бы добавить.

В статье мы рассмотрим кеширование, векторное программирование, чтение и понимание ассемблерного кода, а также написание кода, удобного для компилятора.
Читать дальше →

Машинное обучение — это легко

Reading time7 min
Views348K
В данной статье речь пойдёт о машинном обучении в целом и взаимодействии с датасетами. Если вы начинающий, не знаете с чего начать изучение и вам интересно узнать, что такое «датасет», а также зачем вообще нужен Machine Learning и почему в последнее время он набирает все большую популярность, прошу под кат. Мы будем использовать Python 3, так это как достаточно простой инструмент для изучения машинного обучения.
Читать дальше →

Как ИП сэкономить на налогах в 13,3 раз

Reading time7 min
Views64K

Если вы не торопитесь легализовать свою предпринимательскую деятельность только потому, что налоги ИП кажутся вам неподъемным бременем, то вы просто не умеете их готовить. Разобраться в основных нюансах систем налогообложения стоит уже ради экономии собственных денег. А сэкономленные деньги, как известно, ничуть не хуже заработанных. Так что, немного терпения, и вы станете чуть-чуть богаче.
Читать дальше →

Разделение текста на предложения с помощью Томита-парсера

Reading time4 min
Views19K
Чтобы подготовить русскоязычные тексты для дальнейшего анализа, мне однажды понадобилось разбить их на предложения. Разумеется, автоматически. Что приходит на ум в первую очередь, если нужно разделить текст на предложения? Разбить по точкам — угадал?

Если вы начнете это делать, то довольно быстро столкнетесь с тем, что точка — это не всегда разделитель предложений (“т.к.”, “т.д.”, “т.п.”, “пр.”, “S.T.A.L.K.E.R.”). Причем эти токены не всегда будут исключениями при разбивке текста на предложения. Например, “т.п.” может быть в середине предложения, а может и в конце.

Вопросительный и восклицательный знак тоже не всегда разделяют текст на предложения. Например, “Yahoo!”. Предложения могут разделять и другие знаки, например, двоеточие (когда следует список из отдельных утверждений).

Поэтому я долго не думая поискал готовый инструмент и остановился на Томита-парсере от Яндекса. О нем и расскажу.
Читать дальше →

Спектроскоп Салтана: лапласианы для фана

Reading time7 min
Views15K
Рождественские дни — время отложить привычные дела и вспомнить забавы — калейдоскопы, мозаики, снежинки… Кто нарисует самую красивую звезду?

Симметрия радует глаз. Создать красоту помогает математика, язык Питон и его библиотеки — математический numpy и графический matplotlib.

Спектры невозможных решеток


КДПВ получена визуализацией значений собственных векторов некой симметричной матрицы.
В основе — спектры регулярных решеток. Некоторые их свойства уже рассматривались ранее. Здесь формулы поработают на эстетику.
Далее еще будут картинки...

Authorizer: децентрализованная авторизация emcSSL заработает с oAuth 2.0

Reading time5 min
Views6.7K
Новости об очередных взломах базах данных и угонах паролей или хэшей появляются с пугающей регулярностью, причём даже от таких гигантов, как ВК и Yahoo. Но и пользователи Facebook и Google не могут быть уверены в своей безопасности, потому что суть проблемы не во взломах как таковых, а в централизованном хранении пользовательских данных, включая пароли или хеши паролей, по которым их можно довольно успешно восстановить.

В прошлом году мы уже писали о первой в мире децентрализованной системе управления цифровыми ключами на основе блокчейна Emercoin: emcSSL. Её архитектура аутентификации не раскрывает секрет пользователя в процессе аутентификации серверу и использует децентрализованное хранение учётных записей.



В теории это отличный способ обезопасить учётные данные пользователей любого сервиса, но на практике внедрение emcSSL требует участия квалифицированного программиста и содержит ряд неудобств с точки зрения юзера. Поэтому наш сегодняшний анонс можно считать новогодним подарком HashCoins всему миру: мы практически закончили работу над сервисом Authorizer, который позволяет подключить emcSSL через oAuth 2.0.

Роуминг в Wi-Fi сетях без использования контроллера

Reading time5 min
Views31K
На днях попалась мне в новостной рассылке такая новость от компании D-Link. Собственно краткое изложение новости таково. Компания D-Link для некоторых своих Wi-Fi маршрутизаторов выпустила прошивку с функционалом который непритязательно назвали «Интеллектуальное распределение Wi-Fi клиентов». Суть в том, что в сети из нескольких маршрутизаторов, соединенных и настроенных определенным образом, Wi-Fi клиента вынуждают подключаться к маршрутизатору с наилучшим уровнем сигнала.

Ничего не понятно, скажете вы.
В общем, я разобрался за вас

Создавая хтонических чудовищ, документируй

Reading time6 min
Views15K
ioninja

Под данным изречением-мемом, взятым с замечательной картинки Владимира Филонова, поставит свою подпись каждый человек, имеющий хотя бы отдалённое отношение к программированию. Весь вопрос, как? Как именно документировать-то?


Нижележащий текст преследует несколько целей:


  1. Дать краткий обзор (читай — немного погундеть на тему) неудовлетворительного состояния инструментария, применимого к хтоническим чудовищам мира C/C++;
  2. Предложить своё альтернативное решение (бесплатно-без-СМС-и-регистрации — проект некоммерческий и выложен на GitHub под MIT-лицензией);
  3. Призвать сообщество пообщаться на тему и собрать идеи;
  4. Пригласить присоединиться к разработке проекта на GitHub.

Сразу оговорюсь, что хотя проект создавался в первую очередь как альтернатива, а точнее, дополнение Doxygen для сишных и плюсовых API, архитектурно он в равной степени пригоден и для других языков. Это позволяет создавать порталы документации разноплановых библиотек — сами библиотеки могут быть написаны на разных языках, а в документации будет единство стиля во внешнем виде и поведении.



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

Консоль в массы. Переход на светлую сторону. Часть вторая

Reading time6 min
Views36K
tmux example

Вступление


Довольно долгое время я использовал в своей работе screen. Но со временем он меня перестал устраивать. Я начал искать альтернативы. Такой альтернативой является tmux. На многих порталах его описывают так: «Это тот-же screen, только на стероидах». Сначала я не мог понять почему такое сравнение пока не попробовал. Скажу честно, я на него не с первого раза перешел. Раза три-четыре пробовал, возвращался к screen’у. Но tmux все же победил.

Публикация десктоп-приложения в Windows Store c помощью Desktop Application Converter

Reading time8 min
Views7.6K

Не так давно мы опубликовали разработанное нами корпоративное приложение для десктопов, которое дополняет функционал Skype for Business. Например, может «по-человечески» сохранять историю переписки, как это делают все «приличные» мессенджеры, умеет отправлять сообщения в оффлайн, позволяет упорядочить контакты и ещё много всего, чего не хватало в Skype for Business. И когда появилась возможность поделиться приложением с помощью Windows Store, мы решили этой возможностью воспользоваться. В статье мы расскажем, как это происходило и чего нам это стоило.

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

Как сделать идеальный туториал для хардкор геймеров и их мам

Reading time7 min
Views16K
В этой статье мы хотим представить вам конспект с выступления Джоржа Фэна — создателя Plants vs Zombies, любителя стейков сильной прожарки и редких карт Magic: The Gathering.

Джордж весело и конструктивно описывает процесс создания и интеграции туториала для своей игры. А универсальность и простоту обучения подтверждает рассказом о том, как его мама, до этого не сталкивавшаяся с видеоиграми, прошла всю Plants vs. Zombies и победила последнего босса. Основной посыл Джорджа таков: люди любят учиться, но не всегда об этом знают. А при первом знакомстве с игрой именно туториал является определяющим фактором того, станет ли пользователь играть и получать удовольствие от геймплея, или в ужасе закроет игру и с воплями убежит в горизонт.


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

Портабельный RWLock для Windows

Reading time7 min
Views11K
RWLock — это такой примитив синхронизации, позволяющий одновременное чтение и эксклюзивную запись. Т.е. чтение блокирует запись, но не блокирует чтение других тредов, а запись блокирует все.
Читать дальше →

Используем oEmbed, чтобы добавить телефон в хабрапост

Reading time2 min
Views5.3K
Неделю назад произошло очередное улучшение Хабра, и кроме всего прочего, была добавлена возможность вставлять контент с помощью механизма oEmbed. Я хочу немного рассказать, что это за зверь, и продемонстрировать, как он работает с чем-нибудь популярным, вроде jsFiddle, чтобы добавить в хабрапост необычное. Например — телефон.

Отладка вашей ОС: урок по выделению памяти

Reading time13 min
Views28K

Всё началось, как и многие другие расследования, с баг-репорта.

Название отчёта было довольно простым: «При HTTP-подключении iter_content медленно работает с чанками большого размера». Подобное название немедленно включило у меня в голове сирену по двум причинам. Во-первых, довольно сложно определить, что здесь означает «медленно»? Насколько медленно? Насколько велик «большой размер»? Во-вторых, если бы описанное проявлялось действительно серьёзно, то мы бы об этом уже знали. Метод iter_content используется давно, и если бы он существенно притормаживал в распространённом пользовательском режиме, то мимо нас такая информация не прошла бы.
Читать дальше →

Синтаксический анализ текстов с помощью SyntaxNet

Reading time4 min
Views39K
Для одной из задач мне понадобился синтаксический анализатор русскоязычных текстов. Что это такое. Например, у нас есть предложение «Мама мыла раму». Нам нужно получить связи слов в этом предложении в виде дерева:

image

Из этого дерева понятно, что связаны слова «мама» и «мыла», а также «мыла» и «раму», а слова «мама» и «раму» напрямую не связаны.

Статья будет полезна тем, кому понадобился синтаксический анализатор, но не понятно, с чего начать.

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

Как научить веб-приложение говорить на 100 языках: особенности локализации

Reading time11 min
Views20K


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

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

Information

Rating
2,640-th
Location
Химки, Москва и Московская обл., Россия
Date of birth
Registered
Activity