Обновить
92
0
Deleted user @Deleted-user

Так вышло

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

Rust: зачем нужны макросы

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

Как-то я сказал своему коллеге, что в Rust имеются макросы, ему показалось, что это плохо. Раньше у меня была такая же реакция, но Rust показал мне, что макросы не обязательно плохи.


Где и как их уместно применять? Смотрите под катом.

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

Rust: состояния типов

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

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


Прошу под кат.

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

Rust: Знакомимся с языком на примере «Угадай-ки»

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

Давайте познакомимся с Rust, поработав над маленьким проектом! Мы покажем основные концепты Rust на реальном примере. Вы узнаете о let, match, методах, ассоциированных функциях, подключении сторонних библиотек и много о чем другом. Мы реализуем классическую задачу: игра “угадай-ка”.

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

Rust: «Векторы — это значения»

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

В последнее время я долго думал над персистентными коллекциями и в особенности над тем, как они относятся к Rust. Хочу поделиться с вами своими наблюдениями.


О том, как устроены персистентные векторы, быстрее ли они традиционных коллекций — смотрите под катом.

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

Что такое Tokio и Async I/O и зачем это нужно?

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

Сообщество Rust в последнее время сконцентрировало много своих усилий на асинхронном вводе/выводе, реализованном в виде библиотеки Tokio. И это замечательно.


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


  • Что это такое — Async I/O?
  • Что такое корутины (coroutines)?
  • Что такое легковесные нити (threads)?
  • Что такое футуры? (futures)?
  • Как они сочетаются между собой?

Рассмотрим модели многопоточности на примере Rust и Go.

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

Rust: качаем ленту и парсим JSON

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

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


У нас все вылилось в очень лаконичный код. Как? Смотрите под катом.

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

Rust: «Назад к корням»

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

Мне приходит в голову множество разных целей для Rust в текущем 2018 году, к слову, 2017 год прошел для меня очень быстро, так что я задался следующим вопросом: если бы я мог выбрать одну-единственную цель для Rust в 2018 году, то что бы я выбрал?


Я буду пристрастен, и вот мое мнение:

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

Rust: «Небезопасные абстракции»

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

Ключевое слово unsafe является неотъемлемой частью дизайна языка Rust. Для тех кто не знаком с ним: unsafe — это ключевое слово, которое, говоря простым языком, является способом обойти проверку типов (type checking) Rust'а.


Существование ключевого слова unsafe для многих поначалу является неожиданностью.
В самом деле, разве то, что программы не "падают" от ошибок при работе с памятью,
не является особенностью Rust? Если это так, то почему имеется легкий способ обойти
систему типов? Это может показаться дефектом языка.


Но не все так просто, детали — под катом.

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

Общество телефонных зомби

Время на прочтение3 мин
Количество просмотров137K
Многие знают, что я хакер. При этом многих удивляет, когда я говорю, что терпеть не могу технологии. Да, когда я произношу это, я слегка преувеличиваю. На самом деле, меня просто стало раздражать, каким образом технологии вторгаются в нашу жизнь.

Если вы гуляли по любым людным улицам, уверен, вы поймете, о чем я. За последние 3-4 года значительно возросло число людей, уткнувшихся в свои смартфоны во время прогулок и совершенно отстраненных от окружающего мира. Если человеку нужно убить время (или он страдает прокрастинацией), он погружается в пролистывание бесконечных фидов фейсбука, твиттера или тумблера. Черт, я видел, как люди делали это во время просмотра ТВ-шоу, которого они ждали целую неделю.

Не поймите меня неправильно, технологии — это великая сила, которая помогла нам достичь удивительных высот (мы отправили людей на е***ую луну). Но это не мешает мне думать, что наши недавние изобретения скорее снизили качество нашей жизни, чем улучшили. Мы превратились в общество телефонных зомби, склонивших головы над светящимися экранами в бесконечном поглощении бесконечных объемов бесполезной информации.
Читать дальше →

Потому что

Время на прочтение1 мин
Количество просмотров19K
Меня приглашают выступать на международных конференциях,

потому что...

Я изобрел инструмент под названием Compass,

потому что...

Я использую Sass и работаю в Caring.com,
потому что...

Уязвимость в JAVA позволила выкрасть у ФБР данные о 12 миллионах владельцев устройств Apple

Время на прочтение1 мин
Количество просмотров37K
Во второй половине марта 2012 года уязвимость AtomicReferenceArray позволила проникнуть на ноутбук специального агента ФБР Кристофера Стэнгла и похитить с его рабочего стола файл под названием NCFTA_iOS_devices_intel.csv, который содержал список из 12 367 232 уникальных идентификаторов (UDID) устройств на iOS, имена владельцев, названия и тип устройств, токены APN и проч.

Группа Antisec выложила в открытый доступ информацию об 1 000 001 устройств, убрав конфиденциальную информацию, и оставив только поля для идентификации устройств.
Читать дальше →

Самый ценный совет по программированию, который я получил

Время на прочтение1 мин
Количество просмотров16K
«Год или два, с момента начала работы в Bell Labs, я работал в паре с Кеном Томпсоном над интерактивным графическим языком, разработанным Джерардом Хольцманом (Gerard Holzmann). Я печатал быстрее, поэтому я сидел за клавиатурой, а Кен стоял позади меня. Мы работали быстро, и когда компилятор выдавал ошибку, я рефлективно начинал закапываться в проблему, изучая стек вызовов, вывод программы, запускал отладчик и так далее. Но Кен просто стоял рядом и думал, игнорируя меня и код, который мы только что написали. Вскоре я заметил закономерность: Кен зачастую понимал, в чем проблема, раньше меня и произносил: „Я знаю, что не так“. Обычно он был прав. Я понял, что Кен выстраивал ментальную модель кода и, когда что-то ломалось, это была ошибка в модели. И думая о том, как эта проблема могла возникнуть, он выяснял, в каком месте модель была неверна или где наш код мог неправильно эту модель отразить.
Читать дальше →

Syte — движок для персональных сайтов с возможностью интеграции соц.сервисов

Время на прочтение1 мин
Количество просмотров5.6K
Syte был разработан Родриго Нери (Rodrigo Neri) — собственно его страничка и является одним из примеров использования Syte.
По сути, это простое и мощное Django-приложение, которое позволяет интегрировать такие социальные сервисы, как Tumblr, Twitter, Github, Dribbble и Instagram.

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

Moqups — новый сервис для создания макетов UI

Время на прочтение1 мин
Количество просмотров90K
Как характеризуют сервис сами разработчики, Moqups — это «изящное HTML5-приложение для создания макетов, концептов пользовательского интерфейса, прототипов, в зависимости от того, как вы сами это называете».



Для Chrome есть отдельное приложение.

На данный момент доступно более 60 шаблонов элементов, экспорт в PDF и PNG, клавиатурные шорткаты, группировка объектов, привязка к сетке и проч.

Проект находится в стадии активной разработки и открыт для критики, помощи и предложений.

Клавиатурные сокращения с Javascript

Время на прочтение1 мин
Количество просмотров2K
Mousetrap — маленькая библиотека (1.4 KB) для обработки клавиатурных нажатий.

// single keys
Mousetrap.bind('4', function() { highlight(2); });
Mousetrap.bind("$", function() { highlight(3); }, 'keydown');
Mousetrap.bind('x', function() { highlight(4); }, 'keyup');

// combinations
Mousetrap.bind('command+shift+K', function() { highlight(7); });
Mousetrap.bind(['command+k', 'ctrl+k'], function() { highlight(8); });

// gmail style sequences
Mousetrap.bind('g i', function() { highlight(11); });
Mousetrap.bind('* a', function() { highlight(12)});

// konami code!
Mousetrap.bind('up up down down left right left right b a enter', function() {
    highlight([15, 16, 17]);
});

Как видно, поддерживаются как одиночные нажатия, так и сочетания и клавиатурные комбо.

Работает в Internet Explorer 6+, Safari, Firefox, Chrome (с включенным Vimium не работает).

Пробуйте — craig.is/killing/mice

Маленькая C-функция из преисподней

Время на прочтение5 мин
Количество просмотров3.7K
Недавно мой студент и я пытались понять одну тонкость в стандарте C. Самый простой способ прояснить подобные вопросы — это узнать, учли ли её разработчики компиляторов, то есть написать код и посмотреть, что с ним будут делать разные компиляторы.

Я написал такую функцию:
int foo (char x) {
  char y = x;
  return ++x > y;
}

Так как ++x увеличивает на 1 значение x, очевидно, что функция должна возвращать "1" для большинства значений x. Вопрос состоит в том, что она вернет для значения CHAR_MAX?

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

В Arch Linux по умолчанию включена проверка цифровых подписей пакетов

Время на прочтение1 мин
Количество просмотров6K
Разработчики дистрибутива Arch Linux уведомили пользователей о включении по умолчанию функции проверки достоверности источника пакетов на основании цифровых подписей начиная с выпуска пакетного менеджера pacman 4.0.3-2. Поддержка проверки пакетов по цифровой подписи была добавлена в дистрибутив ещё полгода назад, но до настоящего момента данная функция не была включена по умолчанию из-за того, что процесс создания цифровых подписей для всех пакетов потребовал времени.

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

Happy Hacking Keyboard

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

Преамбула


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



Мне надоели эти баталии, и я решил, что пришло время найти какую-нибудь компактную замену стандартной 104-кнопочной клавиатуре.

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

Разработчики Ubuntu представили инновационную альтернативу традиционным меню

Время на прочтение3 мин
Количество просмотров5.4K
Марк Шаттлворт представил новую систему меню 'Head-Up Display' (HUD), которая проповедует кардинально иные методы и может заменить обычную систему вложенных меню, которая существует в компьютерной индустрии уже более 30 лет. Теперь вместо путешествия через многочисленные выпадающие меню для поиска нужного приложения или команды, система HUD предложит пользователям просто напечатать в поисковой строке, что они хотят сделать. В процессе набора команд система будет автоматически подбирать и предлагать наиболее вероятные названия программ из приложений имеющихся в системе или команд, имеющихся в штатном меню текущего приложения.

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

Потребление памяти в фоновом режиме

Время на прочтение2 мин
Количество просмотров36K
В Хроме есть такая замечательная вещь, как приложения и расширения. И они могут замечательным образом работать в фоновом режиме.

Chrome уже давно обогнал firefox по потреблению памяти в схожих условиях, но то, что я увидел на прошлой неделе, поразило меня до глубины души.
Читать дальше →

Информация

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