Мне было интересно, какие коллекции сколько съедают дополнительной памяти при хранении объектов. Я провёл замеры накладных расходов для популярных коллекций, предполагающих хранение однотипных элементов (то есть списки и множества) и свёл результаты на общий график. Вот картинка для 64-битной Hotspot JVM (Java 1.6):
Григорий Зозулин @madeinsoviets
User
Оптимизация запросов в SQLite. Используем rowid
2 min
29KВо время недавней оптимизации запросов в базу данных наткнулся на описание работы SQLite с rowid. Если вкратце: в каждой таблице есть int64 столбец rowid, значение которого является уникальным для каждой записи в таблице. Посмотреть значение можно по имени «rowid» и в запросе * оно не показывается.
Записи хранятся как B-дерево по rowid. И это делает очень быстрым поиск и выборку по rowid. В два раза быстрее чем по primary key или по индексированному полю. Как я понял, поиск по индексированному столбцу — это поиск по B-дереву, в результате которого мы находим rowid. И уже имея rowid — ищем нужную запись.
Напрашивается очевидный вопрос: как сделать чтобы rowid и наш PRIMARY KEY совпадали?
Записи хранятся как B-дерево по rowid. И это делает очень быстрым поиск и выборку по rowid. В два раза быстрее чем по primary key или по индексированному полю. Как я понял, поиск по индексированному столбцу — это поиск по B-дереву, в результате которого мы находим rowid. И уже имея rowid — ищем нужную запись.
Напрашивается очевидный вопрос: как сделать чтобы rowid и наш PRIMARY KEY совпадали?
+22
Как буддистские монахи перепрошивают себе мозги
2 min
59KВ буддизме есть понятие просветления.
Просветление — состояние полной осознанности (выход за пределы дуального ума), при котором происходит растворение эго и исчезает ощущение себя исполнителем, то есть исчезает иллюзия волеизъявления. Это приводит к состоянию единения со всем окружающим.
— википедический копирайт
На практике это значит, что, если вы достигнете просветления, то будете знать всё. Вообще всё, даже то, до чего наука пока и не догадывается. Вы будете понимать суть вещей. Супер-коннект во вселенским разумом позволит вам творить множество “волшебных” штук типа астральных путешествий, осознанных перерождений, и т. д.
Это как в компьютерной игре набрать чит-код и прокачать своего персонажа.
И, похоже, у буддистов есть проверенный способ.
Просветление — состояние полной осознанности (выход за пределы дуального ума), при котором происходит растворение эго и исчезает ощущение себя исполнителем, то есть исчезает иллюзия волеизъявления. Это приводит к состоянию единения со всем окружающим.
— википедический копирайт
На практике это значит, что, если вы достигнете просветления, то будете знать всё. Вообще всё, даже то, до чего наука пока и не догадывается. Вы будете понимать суть вещей. Супер-коннект во вселенским разумом позволит вам творить множество “волшебных” штук типа астральных путешествий, осознанных перерождений, и т. д.
Это как в компьютерной игре набрать чит-код и прокачать своего персонажа.
И, похоже, у буддистов есть проверенный способ.
+55
EventMachine ⇒ сбор информации из разных источников с последующей обработкой
3 min
9.2KСамый простой способ наступить на грабли — использовать асинхронность. Я знаком с программистами, зарекомендовавшими себя как крепкие профессионалы, которые буквально пасовали перед многопоточностью. Для затравки расскажу мою любимую историю про deadlock (прошу прощения за боян, но уж больно хорош). Лет десять назад Associated Press поведало миру, как в аэропорту шведского города Крисианстад пилот пытался посадить пассажирский самолет, однако никто из диспетчеров не ответил на его запрос. Оказалось, что диспетчер еще не вернулся из отпуска. В итоге самолет кружил над аэропортом, пока срочно не вызвали запасного диспетчера, который и
посадил самолет через полчаса. Разбор полетов показал, что причиной стало опоздание самолета. На борту которого и находился тот самый диспетчер, спешивший на работу из отпуска.
Итак, когда мы сталкиваемся с асинхронностью, нам приходится ломать привычную картину в голове: субъективно окружающий нас мир однопоточен. Если мы послали письмо, а через неделю получили ответ, для нас все происходит в пределах одного потока; нам не приходится отвечать за действия респондента и почтальона. А нашему коду — приходится.
Чтобы упростить жизнь программиста, можно использовать паттерн Реактор. Лучшая (на мой взгляд) его имплементация для руби — EventMachine. Но и с ней бывают не очевидные моменты. Об одном из них я и планирую вкратце рассказать.
+11
Превращаем Raspberry Pi в игровую ретро консоль
3 min
83KПолучив заветную коробочку c «Малиновым пирогом», каждый играется с ней по своему, моей первой мыслью было поиграть в нее по настоящему, а именно устроить на ее базе эдакий универсальный эмулятор старых игр. Большинство из нас играло в Денди, многие в Сегу или СуперНинтендо, и даже не смотря на наличие новых консолей текущего поколения, память о них живет, для таких вот «тронутых» ностальгией предназначается эта статья.
+25
+1 к эволюции фрилансера
4 min
150KСобрал небольшой список пунктов эволюции фрилансера, каждый +1 сделает вас продуктивнее или дороже на рынке.
Список взят из моей жизни, я уже как год практикующий фрилансер, до этого никогда не покидал России, за последний год посетил 9 стран, в следующем году надеюсь посетить ещё 20.
1) Никогда ничего не забывайте. Для этого каждую мелкую задачу я всегда добавляю в miniplan.ru и я всегда получу в нужный момент письмо или смску, все совершенно бесплатно.
2) Самоосознание. Когда работаешь без прямого начальника, когда зарплата не два/раз в месяц, нужно максимально осознать свою жизнь, понимать как вы работаете, как вы получаете деньги, забиваете ли вы на работу, к чему стремитесь. Если в обычной жизни можно плыть по течению то фриланс вам приоткрывает двери осознанной жизни.
3) Отдыхайте. Работодателя нет и вы сами должны заботиться о своем отпуске, сделайте так чтобы его было больше, чем если бы вы работали по прямому найму. Не забывайте о перерывах в работе. Отдых сделает вас продуктивнее или абсолютно расслабит и тут вам поможет самоосознание.
+81
Хабракамп про переезд
1 min
19K Все по прежнему эксперты отвечают на вопросы не экспертов.
Сегодня эксперты это те кто переехал, дают пендаля тем, кто хочет, но никак не может решиться или не знает как.
Интересуют переезды как из города в город так и в другую страну.
На первом уровне комментариев только люди переехавшие.
Правило оформления комментария.
1)Откуда переехал(обязательно указывать страну и город)
2)Куда переехал(обязательно указывать страну и город)
3)Когда переехал(с точностью до месяца и года)
4)Кем работали до
5)Кем работаете сейчас
6)Если переехали в другую страну то на каком основании(миграция, живете как турист, получили гражданство)
7)Как получили работу в новой стране.
8)Как в целом жизнь?
9)Семейное положение
UPD1: У нас появился свой одноименный хаб: Хабракамп
UPD2: Ну и самые интересные переселенцы
Сегодня эксперты это те кто переехал, дают пендаля тем, кто хочет, но никак не может решиться или не знает как.
Интересуют переезды как из города в город так и в другую страну.
На первом уровне комментариев только люди переехавшие.
Правило оформления комментария.
1)Откуда переехал(обязательно указывать страну и город)
2)Куда переехал(обязательно указывать страну и город)
3)Когда переехал(с точностью до месяца и года)
4)Кем работали до
5)Кем работаете сейчас
6)Если переехали в другую страну то на каком основании(миграция, живете как турист, получили гражданство)
7)Как получили работу в новой стране.
8)Как в целом жизнь?
9)Семейное положение
UPD1: У нас появился свой одноименный хаб: Хабракамп
UPD2: Ну и самые интересные переселенцы
+12
Фрилансер начни работать в паре
1 min
31KОчень часть слышу от фрилансеров ответы:
1)Занят
2)Смогу сделать завтра/через неделю/месяц.
3)Должен отказаться, всех денег все равно не заработаешь.
4)Нет столько свободного времени.
5)Не успею сделать в срок.
6)С таким не работал/нет опыта.
Вы будете реже встречаться с такими проблемами если у вас будет напарник по вашей же специальности, этот простой ход сделает вашу жизнь приятнее и мягче. В данном случае я не имею ввиду пары программист + дизайнер(хотя и от большего количества таких пар я бы тоже не отказался), а имею в виду пары к примеру программист wordpress + программист wordpress.
Давайте посмотрим на плюсы от пары фрилансеров по сравнению с одним:
1)Занят
2)Смогу сделать завтра/через неделю/месяц.
3)Должен отказаться, всех денег все равно не заработаешь.
4)Нет столько свободного времени.
5)Не успею сделать в срок.
6)С таким не работал/нет опыта.
Вы будете реже встречаться с такими проблемами если у вас будет напарник по вашей же специальности, этот простой ход сделает вашу жизнь приятнее и мягче. В данном случае я не имею ввиду пары программист + дизайнер(хотя и от большего количества таких пар я бы тоже не отказался), а имею в виду пары к примеру программист wordpress + программист wordpress.
Давайте посмотрим на плюсы от пары фрилансеров по сравнению с одним:
-9
Клавиатура, идея, две руки
2 min
182KСлучалось ли в твоей жизни, %username%, такое, когда тебе продолжительное время хотелось странного? Неважно чего — ведь у каждого разные вкусы и предпочтения. Моя страсть сидела во мне долго, но однажды всё-таки вырвалась наружу. Мне нравится делать необычные вещи, и мне всегда нравился моддинг как средство самовыражения. Несколько лет назад я вдохновился изделиями моддеров из разных стран и начал обдумывать несколько своих проектов. В частности, мне очень хотелось сделать стилизованную под девятнадцатый век клавиатуру.
+501
+51
gameinstitute.ru — журнал для разработчиков игр
1 min
12KДоброго времени суток, уважаемое хабрасообщество.
Мы хотели бы представить вам наш замечательный журнал о разработке игр — gameinstitute.ru
Проект существует уже несколько месяцев и мы решили рассказать о нем широкой аудитории. Мы хотим создать журнал, который будет интересен как начинающим девелоперам, так и мэтрам индустрии.
На страницах нашего журнала вы найдете информацию о программировании, дизайне, спецэффектах и других тонкостях искусства разработки.
Например, мы фанатеем от необычного рендера в Minecraft и старательно изучили технологию создания подобных эффектов:
Майнкрафт-подобный рендер на OpenGL4
+69
Information
- Rating
- Does not participate
- Location
- Москва, Москва и Московская обл., Россия
- Date of birth
- Registered
- Activity