Чтобы добавлять сообщения и комментарии, .

@OCTAGRAM:
OCTAGRAM

A look under ARC's hood — Episode 1
A look under ARC's hood — Episode 2
A look under ARC’s hood — Episode 3
A look under ARC's hood — Episode 4
How does objc_retainAutoreleasedReturnValue work?
Objective-C Automatic Reference Counting (ARC)
ARC in RemObjects

Оставлю здесь на почитать в будущем. Сходу всё осмыслить не получилось, понятно только, что тут что-то явно позабористее, чем в COM.

@OCTAGRAM:
OCTAGRAM

Почитал Interfacing with the XPCOM cycle collector, посмотрел красивые картинки и подумал, что хотя в идеале лучше иметь царя в голове, который и в этой голове, и в коде порядок наведёт на радость пользователю, не взбешённому фризами от свопов от сборок мусора, но подобным инструментом можно портировать код, в который трассирующая сборка мусора въелась так, что уже не отдраить. Только ещё небольшое дополнение к этой схеме я бы сделал. В норме далеко не любые объекты в строго типизированной системе вообще способны образовать цикл, а если способны, то не любыми своими полями, и это можно отследить по допустимым типам полей, некисло усекая анализируемый подграф. Эту схему чаще всего ломал бы базовый тип (java.lang.Object в Java), так как он-то действительно нередок как универсальное хранилище значений и потенциально может использоваться для образования циклов, но дженерики в Java 6 уменьшают количество мест, где такой универсальный тип может встретиться.
XPCOM для этого плохо подходит, поскольку на один объект может ссылаться несколько двоично отличающихся указателей, и сборщику циклов приходится приходится делать QueryInterface для каждой встреченной ссылки, чтобы привести их к одному знаменателю. Также в XPCOM любой объект потенциально поддерживает любой интерфейс, и статический анализ (или анализ во время инициализации класса) невозможен. Зато возможен в SOM, если модифицировать эмиттеры. Даже в немодифицированном SOM можно открыть хранилище интерфейсов, и у класса InterfaceDef получить свойство InstanceData в формате CORBA TypeCode с TypeCode_kind = tk_struct, и по ней прочесать поля, другое дело, что хранилище интерфейсов не гарантированно синхронизировано с реальным кодом, в отличие от эмиттера, который бы вшивал всегда актуальное описание в служебный код реализации класса. Для тяжёлых случаев можно-таки реализовать аналог nsICycleCollectionParticipant. Лучше всего при инициализации новых классов строить орграф, находить в нём сильные компоненты связности, схлопывать их в один узел, а оставшийся орграф без контуров сортировать по уровням, так что если при попытке добавления нового класса приходится опустить отсортированные ранее, то при наличии вновь появившегося потенциального цикла это сделать не удастся, и цикл будет инкрементально обнаружен. Сборщик цикла может просто сравнивать идентификатор компоненты сильной связности своего класса с идентификаторами у сначала формальных, потом реальных типов полей, не нужно потом обходить их родительские классы. Это позволит впоследствии максимально сузить круг поиска при сборке цикла, по возможности не давая этой отраве выплеснуться наружу, а если уж выплеснулось, то изолировать токсичные выбросы друг от друга.
Сильно завозить эвристику тоже не хочется, а начинать или не начинать сборку циклов — это уже эвристика. Вместо этого, руководствуясь принципом «сначала сделать, чтоб работало, потом сделать, чтоб работало быстро», можно предложить такой способ переноса с Java, когда вообще каждая операция декремента, не обнулившая счётчик ссылок, вызывает сборщик цикла, ограниченный вычисленной компонентой связности для подозрительного объекта. Я бы не удивился, если такая суровая реализация работала даже быстрее, чем все эти свопы и фризы в хвалёном трассирующем сборщике. А если надо, чтобы работало ещё быстрее, — извольте наводить порядок в голове и коде. Кстати, я посмотрел, в Javolution самый обычный счётчик ссылок, и ничего, несколько проектов им портировано. Выходит, по силам Java-разработчикам навести у себя порядок.

@OCTAGRAM:
OCTAGRAM

Как Composer на 70% ускорили
Before: Memory usage: 135.4MB (peak: 527.71MB), time: 119.82s
After: Memory usage: 134.89MB (peak: 391.28MB), time: 11.26s

Before: Memory usage: 163.66MB (peak: 403.82MB), time: 246.25s
After: Memory usage: 163.34MB (peak: 350.36MB), time: 99.55s

Вспоминается #2822358/142:
ну я не знаю, если ты умеешь замечать фризы порядка сотой доли секунды; ну ладно, в плохом случае у я видел было 0.2с, но это было когда висела живая стуктура (в языке без GC она бы висела такаяже) на пару гигов в памяти, то я тебя боюь.
Насколько я понимаю, RC в PHP работает всё равно, ну правда, из–за того, что такое поведение сейчас не штатное в PHP, разработчики к нему не готовились, могут быть кольца, но как видно, ТАААААКИХ проблем, как GC, они не создают. Но те несчастные, кому не повезло заполучить в свой ЯП сборку мусора безальтернативно, будут и дальше ничего не замечать, и продолжать свою пропаганду, и куча кодеров продолжат писать свой код так, что мой 2Гб ноут на ровном месте раз в минуту переклинивает на сборку мусора. А, может, дело не в RAM, а в том, что количество ядер меньше количества одновременно запущенных использующих сборку мусора программ. Если б было больше, ну и использовали каждая по 100% ядра, собирая мусор с перерывами на своп, и не тормозили друг друга. Где ж тут напасёшься RAM и ядер на это увлекательное занятие.

@OCTAGRAM:
OCTAGRAM

Есть у меня одно соображение насчёт подсчёта ссылок вместо сборки мусора, которое заключается, помимо длинных пауз и больших изначальных выделений памяти, в том, что если клиент каким–то образом может точно знать, что он единственный владелец структуры данных, то он может изменить её, а при сборке мусора на структуру может ссылаться невесть сколько желающих, и, чтобы не было сюрпризов, может требоваться делать глубокое копирование, и за счёт отсутствия глубоких копирований подсчёт ссылок может и выруливать. Однако, чтобы это было так, нужно, чтобы вместо сумбурных представлений типа «вот, если мы убедились, что мы единственный владелец, мы можем внести изменения прямо на месте, а если не совсем единственный, то оптимальным образом скопировать узлы на пути от корня к потомку, а соседние узлы оставить общие» иметь некое более формализованное представление, которое можно закодировать или хотя бы представить. Потому что в моих CVariants для Делфей ( bitbucket.org ), например, счётчик ссылок, но глубокое копирование делать всё равно надо, потому что я в требуемые сроки логику разработать и воплотить в жизнь не смог. А зря. Дельты бы значительно ускорились (в контексте задачи приложение на терминале, который, как правило, на GPRS, описывает своё состояние в виде большой структуры и передаёт на сервер, а для экономии трафика шлются только дельты).

Так вот, попробуем набросать:
Итак, для начала надо отбросить двоичную логику константа/неконстанта, мутируемый/немутируемый. Эта путаница идёт, мне кажется, из языков программирования. То есть, если у нас есть X : constant Integer := 3; в синтаксисе Ada, или const X: Integer = 3; в синтаксисе Delphi или const int X = 3; в синтаксисе C, то это сравнительно настоящая константа. Её неизменность гарантируется языком программирования, если не пытаться обхитрить его cast'ом, а ещё может гарантироваться OS и CPU защитой от записи в соответствующие страницы памяти. А кроме таких настоящих констант есть так называемые указатели на константы (access constant в синтаксисе Ада), которые на самом деле могут быть не указатели на константы, а указатели в режиме только–чтение, что не то же самое, что указатель на константу. А такой вещи, как указатель на константу, на самом деле нет, и я сейчас критикую не языки программирования, а ту картину мира, которая непроизвольно складывается, если ими пользоваться. Пока не поймёшь, что нам может зачем–то понадобиться не 2 типа сущностей, а 3, сложно продвинуться. Итак, на мой взгляд, нам нужны:
1. Ссылки (умные указатели, итераторы) в режиме чтение–запись, которые знают, где корень той структуры, которую они представляют, и каков точный путь от этого корня к тому узлу, на который эта ссылка. Кроме корня, есть ещё один главный объект (переменная), который олицетворяет структуру таким образом, что изменения, производимые над структурой, должны быть видны только тем клиентам, которые используют ссылки с тем же главным объектом. Корень может быть общим у нескольких главных объектов до первого изменения.
2. Ссылки в режиме только–чтение на потенциально изменчивые структуры. Они нужны, чтобы соответствовать формальным требованиям алгоритмов, но было бы ошибкой выдавать налево и направо гарантии неизменности содержимого.
3. Константы, представляющие структуры, которые гарантированно не изменятся. Ссылки на константы не знают про корень структуры, которой они принадлежат, в противном случае это были бы ссылки второго типа. Константы–списки и константы–словари ссылаются на другие константы, у которых уже нельзя узнать родителя.

@Balancer:
Balancer

Пришёл квадрокоптер Hubsan 107D. Прикольная крошка, даже меньше, чем я ожидал после просмотров видео с ним. Пишу впечатления в balancer.ru
~~~

@letopisec:
letopisec

В Raid Call Взял новый ранг. Ппц они креативщики :D Ток корону и могут походу рисовать,интересно что дальше будет.
PS 17635 часов насидел в нем

@heilnull:
heilnull

Микросиловые бампера:
ultimaterc.com

@Kranz:
Kranz

Прошивка th9x (2) — forum.modelka.com.ua

@Kranz:
Kranz

Прошивка th9x — forum.rcdesign.ru

@iCat:
iCat

Решил заделаться RC-любителем, приобрел Nine Eagles Solo Pro. Летали с племянником по-очереди, племянник сломал вертолету шасси. Но как же оно интересно, черт возьми! Придется попробовать склеить шасси, да и запчастей с аккумуляторами прикупить.

@molny:
molny

Уже даже намечается релиз Lazarus 1.0, пока только RC1 есть, но все же. Это меня очень радует, считаю что язык Pascal еще далеко не умер. Очень странно что различные порталы opensource-тематики ничего не упомянули об этом..

@AKa:
AKa

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

@AKa:
AKa

worldoftanks.ru
в каталоге магазина появились радиоуправляемые модели танков.
Я катался на RC-танке до того, как это стало мэйнстримом!

@AKa:
AKa

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

@AKa:
AKa

всё таки, с посаженными аккумами танк больше похож на исторический прототип

@folex:
folex

stop)
stat_busy "Stopping xmms2d"
[ ! -z "$PID" ] && /usr/bin/xmms2 quit &>/dev/null
if [ $? -gt 0 ]; then
stat_fail
else
for i in `seq 1 10`; do
[ -d proc$PID ] || { stat_done; rm_daemon xmms2d; exit 0; }
sleep 1
done
stat_fail
fi
;;

Это так и задумано, что бы всегда было stat_fail, или я идиот?

@zhu:
zhu

Вышел очередной RC. Из комментариев к новости на G+:
Will it make my computer turn into a giant robot? I've really been wanting that feature.

@iCat:
iCat

Жуйк, а ты увлекаешься RC-вертолетами? Мне вот давно хочется завести какую-нибудь не слишком навороченную 4-ch комнатную модель, самому побаловаться, да племянника порадовать... Подскажи, какие есть неплохие модели 4-хканальные, не слишком дорогие, но покрепче, и чтоб можно было найти запчасти, если вдруг чего сломается... и с примерными ценами покупка+доставка, если не сложно...

@heilnull:
heilnull

Фото с дня авиации в Первушино. heilnull.livejournal.com

@heilnull:
heilnull

Черт, у нас появилась безумная игрушка, и я даже уже научился более-менее её сажать на землю. Теперь надо ещё научиться задавать ей более-менее правильные направления.

@scame:
scame

Мой твиттер сходит с ума. Каждые 10 минут твитты о Java 7. Скорее бы уже релиз! "#java7 try it out today! Release candidate at jdk7.java.net"

@gelin:
gelin

code.google.com
Релиз-кандидат очередной беты. Требуются отзывы.

Сделал большие переделки для следующего большого шага — выноса различных вариантов показа погоды (черные или белые символы, с плюсиком или без плюсика) в отдельные приложения. Профиты:
— отдельные "шкурки" можно будет ставить на SD карту (для основного приложения это нельзя, ибо оно должно обновляться периодически);
— отдельные "шкурки" будут содержать картинки для экранов с разным разрешением, циферки не будут "замыленными" (если весь набор картинок сейчас запихнуть в одно приложение, то оно будет за мегабайт размерами — сильно много для простенькой погоды);
— можно будет поставить только одну нужную шкурку, а не все, что позволит немного сэкономить место;
— можно будет писать свои шкурки, у кого художественные способности получше моих.

Этот релиз-кандидат демонстрирует то, как оно будет выглядеть со "шкурками". Пока "вкомпилирована" та же "шкурка", что в предыдущих версиях.
Релиз-кандидат подписан тем же ключом, что и приложение на Маркете: должно встать поверх, а потом корректно обновиться.

@faith-healer:
faith-healer

my.opera.com
Opera 11 RC1
из явных введений по сравнению с прошлыми снапшотами:
— появился русский в инсталлере
— по умолчанию ставится в папку релизной оперы

кто вообще в танке — появились расширения ака плагины:
addons.opera.com
есть реально вкусные плагины :)

@randomguy:
randomguy

Купил вертолет на радиоуправлении. Оказывается он заряжается от порта USB.А еще оказывается, в пульте больше батареек чем в самом вертолете. Все удовольствие стоит 1790 рублей.
Ездил получать техосмотр. Вся продседура занимает 5 минут и стоит 1200 рублей на месте. Машину ФОТОГРАФИРУЮТ спереди и смотрят работоспособность освещения/дворников, плюс номер кузова. При мне отказали владельцу тонированной девятки, заставили сдирать. Видимо не все так плохо у гайцев как кажется.

@dream-x:
dream-x

rc-aviation.ru отличный сайт по Авиамоделированию

@Equidamoid:
Equidamoid

Похоже, вышел cm-6.0.0-rc1 для героя. А еще они что-то переломали на серве, качать теперь отсюда: mirror.teamdouche.net

@demiazz:
demiazz

на каком там уровне идет запуск по умолчанию? А то так давно не настраивал его. Уже забыть успел CRAZY

@DarkElve:
DarkElve

ardrone.parrot.com

@demiazz:
demiazz

ну вот ))) уже есть Django 1.2 Release Candidate ))) ждем официального релиза ))))

@zet:
zet

C 15 февраля пользователи Windows 7 RC начали получать уведомления о скором прекращения работы этой предварительной версии операционной системы. С 1 марта система будет перезагружаться каждые 2 часа, а с 1 июня действие лицензии будут прекращено. Windows 7 RC была скачана российскими пользователями более 100 тысяч раз.

via Microsoft@newsletters.microsoft.com

@mefisteron:
mefisteron

Thunderbird 3.0 RC2 linux-life.ru

@rakoth:
rakoth

Захотел написать стартовалку для fastcgi. Захотел — пошёл писать, по традиции взял httpd и начал над ним изголяться. Вот чего не понял:
/etc/rc.d/fcgi: line 8: stat_busy: command not found
/etc/rc.d/fcgi: line 13: stat_fail: command not found
Это выводит красиво состояние запуска демона, как я понял. Но пащьму не найдено? Жду просветления. Хрен с ним, написал проще
<pre>
#!/bin/sh
PROG="`which cgi-fcgi`"
START="$PROG -start -connect localhost:9000 /usr/bin/php-cgi"
STOP="killall cgi-fcgi && killall php-cgi"
case $1 in
start)
$START
;;
stop)
$STOP
;;
esac
</pre>
Работает, конечно, но хочется красивой жизни! ЧЯДНТ?