Как стать автором
Обновить
58
0
dirtyHabrBobr @dirtyHabrBobr

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

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

Сравниваем Swift и Rust

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

Поводом для написания статьи стала публикация исходного кода языка Swift — мне стало интересно поближе познакомиться с ним. В глаза сразу же бросилась схожесть синтаксиса с другим молодым языком программирования под названием Rust, к тому же за схожими синтаксическими конструкциями просматривалась и схожая область применения этих языков. Оба языка имеют сильную статическую типизацию с локальным выводом типов, оба компилируются напрямую в машинный код. И тот и другой языки впитали в себя многие приемы из мира функционального программирования. И Swift и Rust имеют средства для запуска кода, написанного на C, что позволяет без труда писать обертки над огромным количеством библиотек. Оба языка рассматриваются как замена существующим системным языкам типа C, C++, ObjectiveC. Так что же в них общего, а что различается?
Читать дальше →
Всего голосов 53: ↑51 и ↓2+49
Комментарии18

Пиши на Rust — запускай везде. Взаимодействие Rust и C

Время на прочтение8 мин
Количество просмотров30K
Предлагаю читателям «Хабрахабра» перевод поста «Rust Once, Run Everywhere» из блога Rust за авторством Alex Crichton. Сам я некоторое время уже интересуюсь этим языком, а в связи со скорым релизом версии 1.0 хотел бы продвигать его по своим скромным возможностям. Ничего своего, к сожалению, сейчас у меня написать не получается, но когда-то я занимался переводами, так что решил вспомнить давнее дело. Перевод этого поста на Хабре я не нашёл, так что решил сделать свой.
Некоторые термины, которые обозначают уникальные для Rust-а концепции (ownership, borrowing, lifetime parameter), я не знал, как лучше перевести на русский, так что постарался подобрать наиболее подходящие по смыслу и более-менее понятные для русскоязычной аудитории слова. Любые предложения-улучшения принимаются.


Никогда не было планов добиться мирового господства Rust-а за одну ночь, так что есть большая потребность в способности взаимодействовать с уже сущестующим кодом так же легко, как и с нативный кодом на самом Rust-е. Именно поэтому Rust даёт возможность очень просто использовать C API без накладных расходов, и при этом гарантирует строгую безопасность управления памятью, благодаря своей системе управления владением и заимствованием указателей.
Читать дальше →
Всего голосов 40: ↑39 и ↓1+38
Комментарии8

Абстракции без накладных расходов: типажи в Rust

Время на прочтение11 мин
Количество просмотров16K
В предыдущем посте (англ.) мы затронули два столпа дизайна Rust (поскольку во внутренней речи я постоянно склоняю название языка, дальше я буду использовать русскоязычное название «раст», что мне кажется более органичным — прим. перев.):
  • безопасное использование памяти без сборщика мусора,
  • многопоточность без гонок данных.

Этот пост начинает рассказ о третьем столпе:
  • абстракции без накладных расходов.

Одна из мантр C++, которая делает его таким подходящим для системного программирования — принцип абстракции с нулевой стоимостью:
Реализации C++ подчиняются принципу нулевой стоимости: ты не платишь за то, что не используешь [Страуструп, 1994]. Более того: то, что ты используешь, кодируется наилучшим образом.

– Бьёрн Страуструп

Читать дальше →
Всего голосов 39: ↑37 и ↓2+35
Комментарии38

Фреймворк для процедурных макросов в Rust

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

От переводчика


Процедурные макросы — одна из наиболее ожидаемых фич Rust. На данный момент процедурные макросы возможно писать только под нестабильную версию компилятора, хотя есть несколько контейнеров, вроде syntex, позволяющие делать ограниченную кодогенерацию в рамках стабильного компилятора. Однако ситуацию это особо не облегчает, поскольку интерфейс к AST остаётся нестабильным, и, хотя авторы syntex стараются идти в ногу с ночными сборками, иногда случаются фейлы из-за изменений в структуре AST.
В этом блог посте один из участников core team — Nick Cameron — поделился своим видением будущего процедурных макросов. Хотя пост полон технических подробностей по внутренностям компилятора, мне показалось, что хабрасообществу может быть интересно заглянуть немного за кулисы разработки Rust.

Фреймворк для процедурных макросов


В этом посте я расскажу, как, по моему мнению, должны выглядеть процедурные макросы. Я уже рассказывал про синтаксис в другом посте, а когда мы опубликуем API для процедурных макросов, то напишу пост и про него. Я уже описывал целый ряд изменений в системе макросов, так что здесь я в чём-то повторюсь (отчасти противореча прошлому посту), но раскрою больше подробностей.
Читать дальше →
Всего голосов 27: ↑27 и ↓0+27
Комментарии0

Rayon: параллелизм данных в Rust

Время на прочтение14 мин
Количество просмотров12K
Последние пару недель я работал над обновление Rayon — моей экспериментальной библиотеки для параллелизма данных в Rust.

Я вполне доволен тем, как идёт разработка, так что я решил объяснить к чему я пришёл в блог посте.
Цель Rayon — сделать добавление параллелизма в последовательный код простым, так, чтобы любой цикл for или итератор можно было бы заставить работать в несколько потоков. Например если у вас есть такая цепочка итераторов:

let total_price = stores.iter()
                        .map(|store| store.compute_price(&list))
                        .sum()

то вы можете сделать её работу параллельной просто поменяв обычный «последовательный итератор» на «параллельный итератор» из Rayon:

let total_price = stores.par_iter()
                        .map(|store| store.compute_price(&list))
                        .sum()

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

7 игр за 7 дней: rewarded video

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

Ты решил выпустить свою игру под iOS? Значит, читай дальше. Яхты, машины, виллы — все это будет твое. Главное — удачно жениться. А разработчикам игр остаются свобода и счастье творчества. Sic!

Да, закатай губу и помни, каждый день в яблочный магазин выкладывается более 1000 игр. Представь, что какой-то тип-игроман заходит в Appstore раз в неделю посмотреть свежие приложения. Его ждет 7*1000=7000 новых игр. И еще миллион старых, которых он не пробовал. Он пролистает 3 страницы с иконками и описаниями, увидит 3 десятка приложений, почитает отзывы и скачает себе пару бесплатных игрушек. Какова вероятность, что он увидит твое гениальное, неслыханное, эпохальное, умопомрачительное приложение? Невелика? Ах, ты с кафедры мат. статистики? Да ладно?! А не переживай. Удача и реклама спасут тебя. Выпусти 100 приложений, размести в них современную рекламу и 50 долларов в день тебе обеспечены до самой смерти.

Я расскажу, как осуществляется автором этот гениальный план, опубликую финансовые итоги 2015 года (тс-с-с), и проинформирую уважаемых читателей о рекламных сервисах, которые, по-моему мнению, самые модные и доходные в этом сезоне. Ссылок на приложения не даю, никого не трогаю, починяю примус.
Читать дальше →
Всего голосов 48: ↑44 и ↓4+40
Комментарии13

DevTips: Советы веб-разработчику (1-16)

Время на прочтение5 мин
Количество просмотров70K
Команда браузера Google Chrome проделывает огромную работу для того, чтобы разработчикам жилось лучше. Chrome DevTools — пример замечательного инструмента, сильно упрощающего отладку вашего веб-приложения. Но подчас не весь функционал этой системы виден с первого взгляда, поэтому Umar Hansa — программист из Лондона — описывает его на своем сайте, причем в весьма удобном формате: немного текста и короткий скринкаст. А мы, в свою очередь, решили сделать эти советы более доступными русскоязычной аудитории.

Содержание:
  1. Перенаправление порта позволит вам открывать локальные ссылки на мобильном устройстве
  2. Активация псевдо-классов DOM-элемента
  3. Повтор сетевого запроса при помощи cURL
  4. Запуск сохранённых блоков кода (сниппетов) на любой веб-странице
  5. Отслеживание изменений файлов через DevTools
  6. Простая запись действий страницы
  7. Поиск элементов DOM-дерева при помощи CSS-селекторов
  8. Копирование изображения в формате Data URI
  9. Переход к нужной строке при открытии файла
  10. Упрощенная навигация между правками
  11. Копирование ответа на сетевой запрос
  12. Работа с несколькими курсорами при редактировании скриптов
  13. Блочное выделение
  14. Быстрый мониторинг событий в консоли
  15. Доступ к выбранному DOM-узлу в консоли
  16. Отслеживание незавершенных сетевых запросов при помощи фильтра is:running

Продолжение: 17-32, 33-48.
Читать дальше →
Всего голосов 67: ↑62 и ↓5+57
Комментарии18

Создаём REST-сервис на Rust. Часть 4: переходим к REST API

Время на прочтение9 мин
Количество просмотров27K
В прошлый раз мы реализовали обновление БД.

Осталось сделать только REST-интерфейс. Давайте займёмся этим.

Введение


Эта часть будет, пожалуй, самой сложной — мы близко узнаем типажи Send и Sync, а также тонкости работы замыканий и времён жизни. По-другому я бы озаглавил её «зануда исследует, почему обязательно нужно клонировать данные». Она полезна тем, что затрагивает тонкие места Rust и показывает причины некоторых неочевидных ошибок. Так что если хотите разобраться досконально — добро пожаловать.

Также хочу отметить: если вам что-то непонятно относительно приведённого кода или сами объяснения кажутся недостаточно ясными, не стесняйтесь писать об этом в комментариях. Автор потратил не минуту и не полчаса, пытаясь понять, почему код работает именно в том виде, в котором он написан, и вынужден был не раз сходить в IRC и на форум за разъяснениями.
Читать дальше →
Всего голосов 17: ↑14 и ↓3+11
Комментарии2

Rust в деталях: пишем масштабируемый чат с нуля, часть 1

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

Часть 1: Реализуем WebSocket. Введение.


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

В первой части мы рассмотрим начальную настройку окружения и реализацию простейшего WebSocket-сервера. Чтобы понять технические детали статьи вам не потребуется опыта работы с языком Rust, хотя знание основ системных API (POSIX) и C/C++ лишним не будет. Прежде чем начинать чтение, заготовьте немного времени (и кофе) — статья описывает все максимально подробно и поэтому довольно длинная.

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

Возможности PostgreSQL, которых нет в MySQL, и наоборот

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


Многие боятся переходить с «мускуля» на «посгрес» из-за того, что лишь смутно понимают, что это даст. Некоторых останавливает мысль, что наверно Postgres — это слишком сложная база и требует обучения. А также, что возможно чего-то придется лишиться в связи с переходом. Попробую немного прояснить ситуацию.
Читать дальше →
Всего голосов 141: ↑132 и ↓9+123
Комментарии313

Установка неподписанных программ на устройства с iOS 9 без Jailbreak

Время на прочтение3 мин
Количество просмотров118K
Дорого дня, уважаемые хабражители!

Сегодня я расскажу вам о том, как можно установить неподписанное (или плохо подписанное) приложение на устройство с iOS 9. Да, без Jailbreak. Да, бесплатно. Нужен лишь компьютер с OS X и Apple ID. Как такое возможно? Читаем под катом.



Осторожно! Много картинок!
Читать дальше →
Всего голосов 40: ↑33 и ↓7+26
Комментарии33

Обзорные онлайн-курсы по математике

Время на прочтение2 мин
Количество просмотров64K
Часто на собеседованиях в магистратуру СПбАУ или CS центр ребята затрудняются ответить на вопросы об элементарных понятиях как из классической, так и из дискретной математики. А эти знания требуются для освоения курсов алгоритмов, машинного обучения и прочих Computer Science дисциплин. Чтобы облегчить подготовку, Академический университет совместно с Computer Science Center этой весной запускают два онлайн-курса:

  1. Ликбез по дискретной математике. Преподаватель — А.В. Омельченко (СПбАУ РАН).
  2. Введение в математический анализ. Преподаватель — А.И. Храбров (СПбГУ, СПбАУ РАН, CS центр).

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

Курсы размещены на дружественной платформе Stepic.
Подробнее о курсах
Всего голосов 28: ↑26 и ↓2+24
Комментарии14

Модерация приложений vkontakte.ru, mail.ru, odnoklassniki.ru

Время на прочтение3 мин
Количество просмотров2.2K
imageВ этом посте я бы хотел поделиться опытом размещения своего приложения сразу в трех социальных сетях, а конкретно о модерации. Ведь все ваши месяцы и даже годы работы могут быть выброшены на ветер, если например vkontakte.ru скажет, что ваше приложение не соответствует правилам размещения или, к примеру, цветовая гамма не соответствует политике компании (что тоже вполне вероятно). Да риски есть, но и прибыли какие! Вот фермер $20.000.000 за год заработал, думаете вы, и пару месяцев на энтузиазме, с горящими глазами пишите нечто субъективно-гениальное и всем леммингам очень нужное.
Читать дальше →
Всего голосов 39: ↑30 и ↓9+21
Комментарии14

Microsoft для PHP программистов

Время на прочтение4 мин
Количество просмотров21K
Не секрет, что у Microsoft есть технология ASP.NET (и смежные ASP.NET MVC, ASP.NET AJAX, AJAX Control Toolkit и т.д.), которая является стандартом де-факто для .net ориентированных разработчиков. В то же время количество PHP разработчиков также велико, поэтому было бы странно игнорировать такую большую аудиторию.

В данной статье представлен материал, который, надеюсь, поможет PHP разработчикам лучше интегрировать свои приложения с Microsoft технологиями и продуктами (если, конечно, в этом есть необходимость).
Читать дальше →
Всего голосов 104: ↑60 и ↓44+16
Комментарии89

Покупаем за рубежом через посреднические сервисы

Время на прочтение5 мин
Количество просмотров28K
Покупаем за рубежомПривет, Хабр!
Тема покупки за рубежом задавалась не раз и была встречена тепло и даже более того, потому что каждая хлебная крошка этой информации ценится на вес золотого слитка теми, кто еще не рискнул подсесть на волну забугорного шоппинга. Поскольку не раз все тонкости были озвучены, публикую краткий дайджест хабра-топиков по теме:
Пожалуй, хватит.
Конечно, всегда найдется, что добавить. Пользуясь возможностью, передаю привет бабушке!
Сегодня вы узнаете, каким образом купить товар, доставка которого в Россию не осуществляется, максимально удобным образом. На ваш выбор две известные компании, оказывающие услуги посредника — Shipito и Ebay today.
Поехали!
Всего голосов 119: ↑96 и ↓23+73
Комментарии47

Паттерны проектирования

Время на прочтение2 мин
Количество просмотров48K
Здравствуй хаброчеловек!

Так уж случилось, что с этого семестра в своем вузе я записался на спецкурс по паттернам проектирования. Курс проходит в виде семинаров, на которых ты (студент) должен рассказать чему научился за неделю (имеется ввиду, какие паттерны изучил и применил на практике).
Читать дальше →
Всего голосов 47: ↑37 и ↓10+27
Комментарии29

Автоматизация использования Javascript API Вконтакте

Время на прочтение7 мин
Количество просмотров3.9K
Пару дней назад, как обычно, никого не поставив в известность, Контакт добавил возможность разработки приложений на JavaScript, подключаемых через iframe. Доступ к API в этих приложениях, в общем-то, такой же, как и доступ к API из Flash — так или иначе, это обычный REST-протокол. Параметры передаются через строку запроса GET, а результат возвращается в виде JSON или XML.

Одной из проблем использования API Вконтакте является передача кроссдоменного запроса на http://api.vkontakte.ru/api.php. Другая проблема — громоздкое вычисление подписи, которой необходимо подписывать все запросы.
Читать дальше
Всего голосов 36: ↑25 и ↓11+14
Комментарии38

Загрузчик фотографий как vkontakte на Flex

Время на прочтение9 мин
Количество просмотров11K
Неделю назад мои знания action script ограничивались тем, как добавить событие onclick на баннер перед загрузкой в баннерную сеть. В качестве загрузчика файлов я использовал swfupload, и очень не хотел влезать внутрь swf-ника и разбираться в коде. Мне не нравится flash, я ни разу не дизайнер и теряюсь, когда вижу все эти слои, кадры, инструменты для рисования звездочек и motion guides.

Потом я наткнулся на эту эту потрясающе-красивую штуку, и узнал, что есть flex. И что flex — это круто, потому что даже такой супер-начинающий как я, с нуля за несколько дней смог написать загрузчик фотографий с предпросмотром, ресайзом на клиенте и upload-баром, примерно такой, какой используется на сайте vkontakte.ru.

Есть три причины, из-за которых я решил использовать flash для загрузки фотографий. Это FileReference, FileReferenceList и flash.display.Bitmap. В 10-й версии флеш плеера у FileReference появилась функция load(), с помощью которой можно просматривать выбранные фотографии в ролике локально без загрузки на сервер. FileReferenceList позволяет в файловом диалоге с помощью shift-а выбрать сразу несколько фотографий. Bitmap делает ресайз картинок перед отправкой на сервер. Все это нельзя сделать на чистом javascript-е.

Итак, пишем загрузчик фотографий как vkontakte на flex (пошаговое пособие для совсем начинающих).
Читать дальше →
Всего голосов 92: ↑63 и ↓29+34
Комментарии49

Создание системы авторизации в высоконагруженном проекте с использованием MemcacheDB

Время на прочтение4 мин
Количество просмотров1.9K
Здравствуйте!

В этой статье я хочу рассказать о проблемах авторизации с которыми может столкнуться любой посещаемый веб-сайт в период роста.

Где хранить аутентификационную базу пользователей?
Как быстро авторизовать пользователя по его строковому логину?
Как собирать распределенные по нескольким шард-таблицам и нескольким базам данных пользовательские данные?
Как заставить все это работать и как в этом нам может помочь MemcacheDB?

Читать подробности
Всего голосов 17: ↑17 и ↓0+17
Комментарии31

Информация

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