Pull to refresh
9
0
Александр @CyberLight

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

Send message

Дизайн-система Gravity UI: как легко построить свой интерфейс

Level of difficultyEasy
Reading time7 min
Views39K

Всем привет, я Алексей Сизиков, руководитель отдела User Experience в Yandex Cloud. В этой статье я хочу поделиться новостью: мы выпустили нашу дизайн-систему и библиотеку компонентов Gravity UI в опенсорс. 

Под катом — рассказ, зачем мы сделали Gravity UI, как его используем, в чём особенности и преимущества нашего подхода и как мы планируем развивать его дальше. А ещё — как настроить разные цветовые схемы в своих проектах и почему у нас четыре темы вместо двух стандартных.

Читать далее
Total votes 71: ↑69 and ↓2+67
Comments27

Решение задачи про определение типа в Typescript с Yandex Cup 2023

Level of difficultyMedium
Reading time10 min
Views12K

Всю прошлую неделю проходила квалификация на Yandex Cup 2023. Я решил тряхнуть стариной и вспомнить что такое спортивное программирование.

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

Мое внимание зацепила одна задача, связанная с типизацией в Typescript. Я давно хотел написать статью про типы, показать бекенду какие сложные интерфейсы можно создавать в Typescript.

Завариваем чаек, я начинаю.

Читать далее
Total votes 19: ↑19 and ↓0+19
Comments31

Поиск удобных мест для жизни в Москве на GitHub Pages с помощью DuckDB в браузере

Level of difficultyEasy
Reading time5 min
Views4.4K

В прошлых статьях и на форумах я получил несколько дельных советов связанных с визуализацией результатов. От агрегированных данных теперь перейдем к детальной инфомации для каждого жилого здания. Продолжим анализировать географию столицы.

Как подготовить для этого данные я детально описывал в "Где 15 минут пешком от дома до метро в Москве" "Где в Москве жить «неплохо»". В публикации "Жилье в 500м от сетевых продуктовых магазинов в Москве." я столкнулся со специфичным трафиком с желтушных публикаций и сообщество OSMеров предложило мне отличный вариант, когда визуализация не требует чтения исходной статьи.

Карта теперь доступна на сайте и использует DuckDB Wasm для запросов к данным прямо из браузера!

Читать далее
Total votes 19: ↑19 and ↓0+19
Comments4

Опрос разработчиков от StackOverflow (2017)

Reading time3 min
Views34K

В конце марта вышел очередной мега-опрос разработчиков от StackOverflow, в котором приняли участие десятки тысяч человек. Ссылка на результаты опроса здесь. Отчет получился внушительным по размеру, поэтому давайте просто рассмотрим некоторые интересные моменты из него.


Кстати, на КДПВ — список "Most Loved" языков, это языки, на которых опрашиваемые пробовали писать, и им понравилось.


Читать дальше →
Total votes 62: ↑55 and ↓7+48
Comments104

Знакомство с React Loadable

Reading time7 min
Views32K
Привет, Хабр. Представляю вам свободный перевод статьи Джеймса Кайла «Introducing React Loadable». В ней Джеймс рассказывает, что такое компонент-ориентированный подход к разделению кода и представляет разработанную им библиотеку Loadable — инструмент, позволяющий реализовать этот подход в React.js приложениях.

image
Единый файл сборки и сборка из нескольких файлов

От переводчика: я позволил себе не переводить некоторые глаголы и термины, повсеместно использующиеся в непереведенной транслитерованной форме (как, например, «прелоадер» и «рендеринг»), полагаю, они будут понятны даже пользователям, читающим исключительно материалы на русском языке.
Читать дальше →
Total votes 22: ↑19 and ↓3+16
Comments4

Pivoting или проброс портов

Reading time3 min
Views29K
Наткнулся на статью "SSH-туннели — пробрасываем порт" и захотелось ее дополнить.

Итак, какие еще способы тунеллирования есть:

1. Динамический доступ через SSH


Допустим мы имеем SSH доступ в сеть, и хотим получить доступ к другим хостам/портам в этой сети. Способ уже описанный в вышеупомянутой статье предполагает знание хоста: порта куда мы хотим получить доступ. Но что если мы не знаем этого?

Тут может пригодиться динамический доступ через SSH. Для его конфигурации используется опция ssh -D.

ssh -D 127:0.0.1:2222 user@remotehost

После подключения вы получите динамический socks4 прокси-сервер, слушающий на своей машине на порту 2222 и предоставляющий доступ к удаленной сети.

Как воспользоваться этим доступом? Один из вариантов — использовать proxychains.

  • Устанавливаем Proxychains:

    apt-get proxychains
    

  • Конфигурируем proxychains для использования порта 2222 (на нем слушает наш прокси). Для этого редактируем файл /etc/proxychains.conf и меняем текущую конфигурацию в разделе [ProxyList] с socks4 127.0.0.1 9050 на socks4 127.0.0.1 2222
  • Теперь мы можем использовать proxychains с (почти) любой утилитой. Например, можно запустить сканирование всей удаленной сети при помощи nmap:

    proxychains nmap -sT -sV -v -P0 адрес_подсети маска_подсети
    

Читать дальше →
Total votes 18: ↑15 and ↓3+12
Comments7

Итоги и разбор заданий онлайн-тура NeoQUEST-2014

Reading time19 min
Views7.6K
Настала пора подвести итоги онлайн-тура NeoQUEST-2014, в том числе:
— разобрать все 7 заданий квеста (на каждый день недели!);
— поведать о победителях и их наградах;
— рассказать, что ждет участников и гостей мероприятия в очном туре NeoQUEST-2014, который пройдет 3 июля в Санкт-Петербурге в Политехническом Университете.
Читать дальше →
Total votes 6: ↑6 and ↓0+6
Comments0

Производительность без цикла событий

Reading time10 min
Views16K


Эта статья основана на материалах презентации, которую я представил в этом году на конференции OSCON. Я отредактировал текст, чтобы он был более лаконичным, а заодно учёл ту обратную связь, что я получил после своего выступления.

Про Go часто говорят, что он хорош для серверов: здесь есть статические бинарники (static binaries), развитый concurrency, высокая производительность. В этой статье мы поговорим о двух последних пунктах: о том, как язык и среда выполнения (runtime) ненавязчиво позволяют Go-программистам создавать легко масштабируемые серверы и не беспокоиться из-за управления потоками (thread) или блокирующих операций ввода/вывода.
Читать дальше →
Total votes 39: ↑30 and ↓9+21
Comments23

Опасный target="_blank"

Reading time2 min
Views200K
Большинство создают внешние ссылки через target="_blank" и не знают одного интересного нюанса — страница, на которую мы попадем таким образом, получит частичный контроль над ссылающейся на нее страницей через js свойство window.opener.

Через window.opener.location мы сможем сделать редирект на, к примеру, фишинговую страницу. Это своего рода tabnabbing, только более продвинутый. Так как жертва меньше всего ожидает подмены страницы, в открытой ранее, доверенной вкладке браузера.
Читать дальше →
Total votes 132: ↑126 and ↓6+120
Comments136

Рассылка пуш уведомлений на Go

Reading time9 min
Views29K

Если вы последний год пользовались мобильными приложениями от ВКонтакте (пусть даже не официальными), то этот материал раскроет немного данных по тому, как у нас это время работают пуш уведомления. Пушилка реализована на языке Go, и рассылает до 9 миллиардов пушей в сутки на четыре целевых платформы: GCM, APNS, MPNS, WNS.

В этом посте решил рассказать об общей архитектуре пушилки, проблемах и их обходе, нагрузках и производительности решения. Много букв и мало кода.
Читать дальше →
Total votes 33: ↑29 and ↓4+25
Comments31

Как я взломал Facebook и обнаружил чужой бэкдор

Reading time6 min
Views87K


Исследователь по безопасности Orange Tsai взломал один из серверов Facebook и обнаружил бэкдор для сбора учетных записей сотрудников компании, оставленный злоумышленником.
Читать дальше →
Total votes 68: ↑67 and ↓1+66
Comments25

Golang и ООП

Reading time5 min
Views124K
Если вы еще не пресытились постами в блогосфере на тему «является ли Go ООП-языком», то вот вам еще один. И краткий ответ — «да, но это не важно».
Впрочем, я постараюсь не зацикливаться на терминологии и академических определениях, а сделать акцент на том, как мы делаем это в Go.


Читать дальше →
Total votes 63: ↑56 and ↓7+49
Comments65

Реальная оценка или почему наступают дедлайны?

Reading time3 min
Views63K
image

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

Для пущей точности я сделал таблицу, которая помогает перевести программистские оценки в приближенные к реальности.
Читать дальше →
Total votes 138: ↑127 and ↓11+116
Comments108

Краш-курс по интерфейсам в Go

Reading time9 min
Views90K
Интерфейсы в Go представляют собой одну из отличительных особенностей языка, формирующих способ решения задач. При схожести с интерфейсами в других языках, интерфейсы Go всё же имеют важные отличия и это поначалу приводит к избыточному переиспользованию интерфейсов и путанице в том, как и когда их использовать. Это нормально, но давайте попробуем разобраться, в чем же особенность интерфейсов в Go, как они устроены, почему так важны и что значит ортогональность интерфейсных типов и структурных типов в Go.

В этой статье вы узнаете:

  • в чем отличие от интерфейсов в Java
  • важные и неочевидные последствия этих отличий
  • как устроены интерфейсы под капотом
  • вспомним про пустой интерфейс (interface{})
  • затронем сакральную тему про дженерики
  • разберемся, кто и зачем должен создавать интерфейс
  • и постараемся научиться не абьюзить интерфейсы и начать жить

Header
(artwork by Svitlana Agudova)
Читать дальше →
Total votes 39: ↑32 and ↓7+25
Comments19

Go и Protocol Buffers, ускорение

Reading time4 min
Views23K
Некое продолжение статьи Go и Protocol Buffers толика практики (или быстрый старт, для тех кто ещё не знаком). Процессы кодирования/декодирования в определённые форматы в Go тесно связяны с рефлексией. А как мы с Вами, дорогой читатель, знаем — рефлексия — это долго. О том какие методы борьбы существуют эта статья. Думаю что, искушённые вряд ли найдут в ней, что-либо новое.
Почему бы и не глянуть
Total votes 15: ↑12 and ↓3+9
Comments5

Go и Protocol Buffers толика практики (или быстрый старт, для тех кто ещё не знаком)

Reading time3 min
Views27K
Весьма короткий пример как использовать Protocol Buffers в Go. Речь пойдёт о proto3, т.е. 3-ей версии протокола (на текущим момент альфа), обобщённо пример справедлив и для второй версии. Не будет описания самого Protocol Buffers. Впрочем чего тянуть
Сами всё увидите
Total votes 14: ↑12 and ↓2+10
Comments6

Крупнейший хакатон в истории разработки ПО с призовым фондом в 140000$

Reading time2 min
Views16K
image

22-25 февраля 2016 года будет проходить знаковое событие в сфере разработки ПО — hack.summit(). Это крупнейшая виртуальная конференция в истории. Самая большая в истории конференция по программированию. Самый крупный из проходивших в мире хакатонов с общим призовым фондом в 140000$ (на главной странице проекта почему то фигурирует 150000$, но в описании призовых мест 100k, 30k и 10k, может чего пропустил).

Для тех, кому достаточно hack.summit().
Читать дальше →
Total votes 13: ↑13 and ↓0+13
Comments3

С-вызовы в Go: принцип работы и производительность

Reading time14 min
Views21K

Язык Go в последнее время неоднократно обсуждался на хабре — его и критиковали , и хвалили. Мы в Intel любим Go и участвуем в open-source разработке этого проекта. Если вы тоже используете Go, интересуетесь его внутренним строением и вопросами наиболее эффективного программирования на этом замечательном языке, то добро пожаловать под кат. Статья будет о том, каким образом в Go реализован механизм внешних вызовов, и насколько быстро он работает.
Читать дальше →
Total votes 31: ↑28 and ↓3+25
Comments4

Docker: Окружение для тестирования

Reading time13 min
Views82K


Последние пять лет принесли в нашу жизнь огромное количество технологий, с помощью которых можно быстро создавать изолированные окружения для разработки и тестирования. Но не смотря на это, организовать стабильное окружение для тестирования — далеко не самая простая задача. А если нужно тестировать сетевые взаимодействия компонентов и анализировать предельный уровень нагрузки на них, то задача становится еще сложнее. Добавив возможность быстрого развертывания окружения и гибкой настройки отдельных компонентов, мы сможем получить небольшой интересный проект.
В этой статье мы подробно расскажем о создании окружения на базе Docker контейнеров для тестирования нашего клиент-серверного приложения. При этом, если смотреть глобально, то данная статья будет хорошей иллюстрацией использования Docker и его ближайшей экосистемы.
Читать дальше →
Total votes 17: ↑17 and ↓0+17
Comments3

HighLoad++ 2015 глазами иностранного докладчика

Reading time3 min
Views8K
Всем привет!

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

Заявку подавал я 19 января этого года, а 5го октября ее одобрили. Радости, конечно же было много и пришла пора готовиться к докладу.
Читать дальше →
Total votes 14: ↑12 and ↓2+10
Comments6
1
23 ...

Information

Rating
Does not participate
Registered
Activity