Как стать автором
Обновить
1
0
Юрий @Kvet

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

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

Используем Webpack вместо Sprockets в Ruby on Rails

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

За работу frontend части приложения в Ruby on Rails отвечает библиотека Sprockets, которая не дотягивает до потребностей современного frontend приложения. В чем именно не дотягивает можно почитать, например, здесь и здесь.


Хотя уже есть достаточно статей на тему связки webpack+rails и даже специальный гем есть, предлагаю посмотреть на еще один велосипед, умеющий также деплой делать.



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

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

Пишем свой упрощенный OpenGL на Rust — часть 1 (рисуем линию)

Время на прочтение12 мин
Количество просмотров40K
Продолжение:
Пишем свой упрощенный OpenGL на Rust — часть 2 (проволочный рендер).
Пишем свой упрощенный OpenGL на Rust — часть 3 (растеризатор)

Наверное, мало кто на хабре не в курсе, что такое Rust — новый язык программирования от Mozilla. Уже сейчас он привлекает много интереса, а недавно наконец вышла первая стабильная версия Rust 1.0, что знаменует собой стабилизацию языковых возможностей. Мне всегда импонировали системные ЯП, а уж идея системного языка, предлагающего безопасность превосходящую языки высокого уровня, заинтересовала еще больше. Захотелось новый язык попробовать в деле и, заодно, интересно провести время, программируя что-нибудь увлекательное. Пока думал, что бы такого на расте написать, вспомнился недавний цикл статей про компьютерную графику, который я лишь бегло просмотрел. А очень интересно было бы попробовать все-таки написать все эти красивости самостоятельно. Вот так и родилась идея этого хобби-проекта, а также данной статьи.

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

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


Here is the Rust, which i hope to get at the end. (игра слов, Rust по-английски «ржавчина»)
Читать дальше →
Всего голосов 50: ↑47 и ↓3+44
Комментарии16

Angular Light + Object.observe

Время на прочтение2 мин
Количество просмотров13K
Angular Light — это самостоятельный клиентский MV(C/VM) фреймворк, который построен на идеях Angular.js и Knockout.js, и похож на упрощенный Angular.js



Вышла версия Angular Light 0.8 которая включает разные улучшения и исправления, основные изменения:

1. Поддержка Object.observe и Array.observe, что может увеличить производительность веб-приложений.
Использование Object.observe — это опциональная фича, так же её можно включать для отдельных Scope (scope деревьев). Браузеры которые не поддерживают Object.observe продолжают работать через dirty-checking, так же нужно знать некоторые нюансы.
Читать дальше →
Всего голосов 21: ↑19 и ↓2+17
Комментарии33

Взлом пароля на Mac с Arduino и OpenCV

Время на прочтение6 мин
Количество просмотров79K
О том, как взламывали запароленный мак с помощью Arduino и OpenCV. По мотивам статьи Брутфорсим EFI с Arduino.


Читать дальше →
Всего голосов 109: ↑107 и ↓2+105
Комментарии34

Обработка ошибок в Swift — меч и магия

Время на прочтение5 мин
Количество просмотров17K
Если издали видно общую картину, то вблизи можно понять суть. Концепции, которые казались мне далекими и, прямо скажем, странными во время экспериментов с Haskell и Scala, при программировании на Swift становятся ослепительно очевидными решениями для широкого спектра проблем.

Взять вот обработку ошибок. Конкретный пример – деление двух чисел, которое должно вызвать исключение если делитель равен нулю. В Objective C я бы решил проблему так:

NSError *err = nil;
CGFloat result = [NMArithmetic divide:2.5 by:3.0 error:&err];
if (err) {
    NSLog(@"%@", err)
} else {
    [NMArithmetic doSomethingWithResult:result]
}

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

Верни мне значение. Если не получится – то дай знать, чтобы ошибку можно было обработать.

Я передаю параметры, разыменовываю указатели, возвращаю значение в любом случае и в некоторых случаях потом игнорирую. Это неорганизованный код по следующим причинам:

  • Я говорю на машинном языке – указатели, разыменование.
  • Я должен сам предоставить методу способ, которым он уведомит меня об ошибке.
  • Метод возвращает некий результат даже в случае ошибки.

Каждый из этих пунктов – источник возможных багов, и все эти проблемы Swift решает по-своему. Первый пункт, например, в Swift вообще не существует, поскольку он прячет под капотом всю работу с указателями. Остальные два пункта решаются с помощью перечислений.
Читать дальше →
Всего голосов 26: ↑24 и ↓2+22
Комментарии27

Создание приложений OS X с помощью JavaScript

Время на прочтение13 мин
Количество просмотров21K
Недавно в OS X Yosemite была представлена возможность использования JavaScript для автоматизации. Это открывает возможность получать доступ к нативным* фреймворкам OS X из JavaScript. Я тут покопался в этом новом мире и собрал несколько примеров. В этом посте я объясню основы и шаг за шагом покажу процесс создания небольшого приложения
Читать дальше →
Всего голосов 44: ↑43 и ↓1+42
Комментарии35

Взгляд на 10G Ethernet со стороны FPGA разработчика

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

Многие специалисты знают, что топовое сетевое оборудование использует специальные чипы для обработки трафика. Я принимаю участие в разработке таких молотилок и хочу поделиться своим опытом в создании таких высокопроизводительных девайсов (со интерфейсами 10/40/100G Ethernet).

Для создания нового канала сетевики чаще всего берут оптику, пару SFP+ модулей, втыкают их в девайсы: лампочки радостно загораются, пакеты начинают приходить: чип начинает их передавать получателям. Но как чип получает пакеты из среды передачи? Если интересно, то добро пожаловать под кат.
Читать дальше →
Всего голосов 149: ↑148 и ↓1+147
Комментарии47

Стартовал онлайн курс «Введение в Linux» от Linux Foundation

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

Сегодня открыли доступ к обучающим материалам курса «Введение в Linux».
Курс создан Linux Foundation и проходит на платформе edX.

О курсе:
Linux обеспечивает работу 94% суперкомпьютеров, большинства серверов в Интернете, основных финансовых сделок в мире и миллиардов Android устройств. Если коротко, то Linux везде. Он присутствует во множестве различных архитектур, от мэйнфреймов до серверов, настольных компьютеров, мобильных устройств и на ошеломляющем разнообразии железа.

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

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

UPD: Курс очень простой, он для пользователей, которые действительно первый раз запускаю Linux



От автора курса:
Этот курс создан на основе оригинального курса Linux Foundation «Introduction to Linux», который всегда преподавали с инструктором в классе или в виртуальном классе через Интернет. Linux Foundation верит, что задача изменения этого курса для его бесплатного использования сообществом была стоящей и будет хорошо оценена.
Читать дальше →
Всего голосов 49: ↑46 и ↓3+43
Комментарии24

Intel XDK, обновление за июль 2014 г. – плагины для Cordova и монетизация!

Время на прочтение2 мин
Количество просмотров7.6K
После выхода Intel XDK (обзорная статья на habrahabr здесь ) нас часто просили предоставить возможность пользоваться сторонними плагинами для Cordova и возможность монетизировать созданные приложения с помощью Google AdMob и In-App Purchases. И мы это сделали в обновлении Intel XDK (по прежнему доступном для бесплатного скачивания и использования здесь, русскоязычное обзорное видео здесь).


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

Информация

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