Читать дальше →
Юрий Тихоглаз @USeTi
User
Механические клавиатуры
17 min
766KTranslation

А раз уж сталкиваешься с вещью регулярно, постепенно возникает вопрос — можно ли найти для работы какие-то более удобные варианты обычных клавиатур?
Итак, некоторое время назад я озаботился сбором информации о клавиатурах, и даже начал готовить информацию для статьи, но к сожалению (к счастью?) нашлась исчерпывающая статья о всех нюансах сразу, которую я решил перевести.
Механические клавиатуры. Путеводитель.
+303
Vizualization Challenge
1 min
605Популярное издание National Geographic вместе с National Science Foundation и журналом Science ежегодно проводят «Vizualization Challenge 2008»: конкурс, выявляющий лучшие научные картинки (это могут быть фотографии, рисунки, моделирование) года. Основное условие: изображения должны быть созданы с использованием современных технологий для визуализации «сложных научных тем».

Этот рисунок был создан Марио Де Стефано из Second University of Naples, Италия. Маленькие зеленые диатомы создают иллюзию «леса», присоединяясь к морским беспозвоночным. Снимок сделан сканирующим электронным микроскопом в Средиземном Море. Первое место в «фотографической» категории мероприятия.

Этот рисунок был создан Марио Де Стефано из Second University of Naples, Италия. Маленькие зеленые диатомы создают иллюзию «леса», присоединяясь к морским беспозвоночным. Снимок сделан сканирующим электронным микроскопом в Средиземном Море. Первое место в «фотографической» категории мероприятия.
+39
IEnumerable<T> и IQueryable<T>, в чем разница?
2 min
48KУважаемые Хабровчане, решил поделиться одним не очевидным моментом использования LinqToSql, с которым столкнулся некоторое время назад. А именно, про особенности использования каскадных Linq запросов:
Работая над очередным ASP.NET MVC проектом, и проектируя уровень доступа к БД мне потребовалось проверить качество скриптов, генерируемых Framework-ом L2C.
class User {
public long Id { get; set; }
public string Name { get; set; }
public IEnumerable<Parameter> Parameters { get; set; }
}
class Parameter {
public long UserId { get; set; }
public string Name { get; set; }
public string Value { get; set; }
}
Для получения данных написан класс UserRepository:
class UserRepository: MyProjectDataContext {
public IEnumerable GetUsers() {
return this.Users.ToModelUsers();
}
}
static class RepositoryHelper {
public static IEnumerable<Model.User> ToModelUsers(this IEnumerable<DataAccess.User> users) {
return users.Select(u => new Model.User { Id = u.Id, Name = u.Name, Parameters = u.Parameters.ToModelParameters() });
}
public static IEnumerable<Model.Parameter> ToModelParameters(this IEnumerable<DataAccess.Parameter> parameters) {
return parameters.Select(u => new Model.Parameter {… });
}
}
пишем
var users = userRepository.GetUsers().ToList();
смотрим профайлер, и с удивлением обнаруживаем что для загрузки 10 пользователей и их параметров было выполнено целых 11 запросов.
Работая над очередным ASP.NET MVC проектом, и проектируя уровень доступа к БД мне потребовалось проверить качество скриптов, генерируемых Framework-ом L2C.
Что имеем (упрощенный вариант модели):
class User {
public long Id { get; set; }
public string Name { get; set; }
public IEnumerable<Parameter> Parameters { get; set; }
}
class Parameter {
public long UserId { get; set; }
public string Name { get; set; }
public string Value { get; set; }
}
Для получения данных написан класс UserRepository:
class UserRepository: MyProjectDataContext {
public IEnumerable GetUsers() {
return this.Users.ToModelUsers();
}
}
static class RepositoryHelper {
public static IEnumerable<Model.User> ToModelUsers(this IEnumerable<DataAccess.User> users) {
return users.Select(u => new Model.User { Id = u.Id, Name = u.Name, Parameters = u.Parameters.ToModelParameters() });
}
public static IEnumerable<Model.Parameter> ToModelParameters(this IEnumerable<DataAccess.Parameter> parameters) {
return parameters.Select(u => new Model.Parameter {… });
}
}
пишем
var users = userRepository.GetUsers().ToList();
смотрим профайлер, и с удивлением обнаруживаем что для загрузки 10 пользователей и их параметров было выполнено целых 11 запросов.
+22
LaTex: Упражнение
1 min
4.7KДля того, чтобы старшему ребёнку давать примеры на сложение и вычитание в столбик, написал скрипт на Groovy, который генерирует LaTeX с примерами.
Цель была попрактиковаться в груви, ну и писать примеры от руки надоело.
Раньше на латехе ничего не писал, но что это и зачем нужен знал из Универа.
Часа два трахался с тем, как на LaTeX сделать нужный вид столбика.
Для работы с LaTeX поставил соответствующие пакеты из CygWin.
Вот скрипт, надеюсь кому нибудь пригодится:
Цель была попрактиковаться в груви, ну и писать примеры от руки надоело.
Раньше на латехе ничего не писал, но что это и зачем нужен знал из Универа.
Часа два трахался с тем, как на LaTeX сделать нужный вид столбика.
Для работы с LaTeX поставил соответствующие пакеты из CygWin.
Вот скрипт, надеюсь кому нибудь пригодится:
+15
Асинхронное программирование и Computation Expressions
11 min
15KВ предыдущих заметках (часть I, часть II) об async/await в C# 5 я написал, что подобный подход реализован в таких языках, как Haskell, F# и Nemerle, но, в отличие от C#, эти языки поддерживают концепцию более высокого уровня, которая позволяет реализовать асинхронные вычисления в стиле async/await в виде библиотеки, а не на уровне языка. Забавно, что в Nemerle сама эта концепция реализована в виде библиотеки. Имя этой концепции — монада. Помимо асинхронных вычислений монады позволяют реализовать другие вкусности, такие как list comprehension, continuation, превращение грязных функций в чистый блок, через который неявно протаскивается состояние, и множество других.
Некоторые монады реализуют такие «хотелки» C# программистов, как yield коллекции или yield foreach и yield из лямбда выражения.
Цель этой заметки — введение в асинхронное программирование и computation expressions в Nemerle, но она так же может быть полезна тем, кто изучает F#, так так реализация асинхронного программирования в Nemerle была сделана с оглядкой на него в F#. С другой стороны, кому-нибудь может быть интересно, как некоторые задачи, которые являются проблемой в других языках (После всех асинхронных вызовов), решаются с помощью computation expressions в пару строк.
Некоторые монады реализуют такие «хотелки» C# программистов, как yield коллекции или yield foreach и yield из лямбда выражения.
Цель этой заметки — введение в асинхронное программирование и computation expressions в Nemerle, но она так же может быть полезна тем, кто изучает F#, так так реализация асинхронного программирования в Nemerle была сделана с оглядкой на него в F#. С другой стороны, кому-нибудь может быть интересно, как некоторые задачи, которые являются проблемой в других языках (После всех асинхронных вызовов), решаются с помощью computation expressions в пару строк.
+18
Android Calendar API
5 min
43K
В этой статье речь пойдет об использовании недокументированного API для работы со стандартным календарем Android. Статей на русском по данной теме не нашел, да и на английском лишь несколько постов с устаревшими данными. Кто заинтересовался – под кат.
+50
«Живой» концерт Хацунэ Мику
1 min
92KЯпонию захлестнула очередная волна любви к синтетической поп-звезде. Имя Хацунэ Мику, как и её голос, собран из нескольких составляющих — хацу (первый), нэ (звук) и мику (будущее).
Хацунэ Мику была создана ещё в 2007 году и быстро завоевала популярность, в Японии. Но сейчас, когда о ней стали потихоньку забывать, её создатели — Crypton Future Media решили пойти на беспрецедентный шаг – организовать её «живой» концерт при помощи анимированной 3D-голографии. Статья на Gizmodo частично объясняет, как это было осуществлено. На заглавном видео эпизод этого концерта.
Родитель первой синтетической поп-звезды — программное обеспечение Vocaloid небезызвестной фирмы Yamaha, имитирующее поющий голос человека на основе заданной мелодии и текста. Любую программу на основе неё можно условно поделить на две части: систему синтеза голоса (пения) и библиотеки исполнителей. Голос певца разбивается на небольшие отрывки и записывается в базу данных. Далее, пользователь набирает текст нового произведения, вводит ноты, задаёт ритм, а Vocaloid автоматически формирует песню, подбирая соответствующие тексту фонемы и звуки.
Хацунэ Мику была создана ещё в 2007 году и быстро завоевала популярность, в Японии. Но сейчас, когда о ней стали потихоньку забывать, её создатели — Crypton Future Media решили пойти на беспрецедентный шаг – организовать её «живой» концерт при помощи анимированной 3D-голографии. Статья на Gizmodo частично объясняет, как это было осуществлено. На заглавном видео эпизод этого концерта.
Родитель первой синтетической поп-звезды — программное обеспечение Vocaloid небезызвестной фирмы Yamaha, имитирующее поющий голос человека на основе заданной мелодии и текста. Любую программу на основе неё можно условно поделить на две части: систему синтеза голоса (пения) и библиотеки исполнителей. Голос певца разбивается на небольшие отрывки и записывается в базу данных. Далее, пользователь набирает текст нового произведения, вводит ноты, задаёт ритм, а Vocaloid автоматически формирует песню, подбирая соответствующие тексту фонемы и звуки.
+54
Программа HP для выпускников
2 min
1.4K«Если ты молод и полон сил...» Так обращаются к нам патриотические плакаты, зовущие защищать рубежи Родины в составе вооруженных сил, ну или, на худой конец, таможни. Но, к счастью, не только там нужны энергичные и способные молодые люди. HP, будучи очень большой и динамичной компанией, всегда нуждается в талантах. Для их привлечения у нас была запущена программа содействия выпускникам вузов Graduate Development Program (GDP). Она действует по всему миру, в том числе и в России. Андрей из Санкт-Петербурга попросил рассказать о ней подробнее, а я попросил помочь нам в этом Бориса Ястребова, который руководит GDP во всех странах Центральной и Восточной Европы.
+19
MemcacheDB и MemcacheQ — ключевые компоненты высокопроизводительной инфраструктуры
5 min
7.6KCегодня мы поговорим о компонентах для высокопроизводительной и масштабируемой архитектуре на основе сервера memcached, а именно — распределённой базе для хранения данных MemcacheDB и системы очередей сообщений MemcacheQ.

Сначала рассмотрим, а что у нас есть в распоряжении для создания распределённой инфраструктуры хранения данных для веб-приложения. Ну, первое, что приходит в голову — кластеризация базы данных, это теперь поддерживается во всех распространённых системах, а также различные технологии репликации. Например, самая популярная СУБД для веб-проектов, MySQL поддерживает как репликации так и кластеризацию. Ещё можно обратится к традиционным файловым система и хранить данные в файловой системе, к примеру, Apache Hadoop. Но часто это слишком высокоуровневое решение, обычно же требуется гораздо проще варианты — когда нужно хранить и оперировать просто парами ключ-значение. Если серьёзно посмотреть, такая функциональность позволит покрыть потребности 90% веб-приложений. А если мы прибавим к этому возможность очень и очень быстро оперировать данными, хранить их в виде распределённой многосерверной системе и возможность постоянного хранения, устойчивого к сбоям — получим очень привлекательную платформу.

Сначала рассмотрим, а что у нас есть в распоряжении для создания распределённой инфраструктуры хранения данных для веб-приложения. Ну, первое, что приходит в голову — кластеризация базы данных, это теперь поддерживается во всех распространённых системах, а также различные технологии репликации. Например, самая популярная СУБД для веб-проектов, MySQL поддерживает как репликации так и кластеризацию. Ещё можно обратится к традиционным файловым система и хранить данные в файловой системе, к примеру, Apache Hadoop. Но часто это слишком высокоуровневое решение, обычно же требуется гораздо проще варианты — когда нужно хранить и оперировать просто парами ключ-значение. Если серьёзно посмотреть, такая функциональность позволит покрыть потребности 90% веб-приложений. А если мы прибавим к этому возможность очень и очень быстро оперировать данными, хранить их в виде распределённой многосерверной системе и возможность постоянного хранения, устойчивого к сбоям — получим очень привлекательную платформу.
+50
Самое большое простое число
1 min
4.9K
Его размер умопомрачителен! Длиной около 13 млн символов, это 45-е простое число Мерсенна делает количество атомов в известной вселенной ничтожной величиной, с их «всего 80-значной цифрой». Форма простого числа Мерсенна красива и подтянута: 2n-1, где n — простое число. Последовательность чисел Мерсенна начинается так: 1, 3, 7, 15, 31, 63, 127, 255, 511, 1023,… (последовательность A000225 в OEIS).
Простые числа Мерсенна являются самыми большими простыми числами, известными науке. Предыдущий мировой рекорд принадлежал числу 232582657-1, имеющему 9.808.358 разрядов.
Последнее, 44-е число было найдено два года назад, а нынешнее — в начале осени. Нет надежды на написание этого числа: 243,112,609-1 заняло бы в длину много километров. Я думаю вы можете себе представить, что такое 13 мб одних только цифр.
via Science News
+65
Information
- Rating
- Does not participate
- Location
- Москва и Московская обл., Россия
- Date of birth
- Registered
- Activity