Блога по системному программированию нет, а данная статья задумывалась как вторая в серии статей про системное программирование в Mac OS X. В итоге материала получилось достаточно много, решил реализацию и примеру с IOKit выделить в отдельную статью.
Хм, есть же режим master mode для WiFi карт в линуксе, чтобы WiFi карта функционировала в режиме Access Point. Купить к компьютеру какой-нибудь Atheros, и настроить его нужным образом.
Далее, для Mac OS лучше поднять параллельно с smb — afp, жизнь станет проще :)
Вы намешали в кучу понятия из разных категорий, так нельзя (кто же конструкции языка мешает с паттернами). Конечно, если вообще лентяйничать и ничему не учиться — то начнется процесс деградации.
А программирование в промышленном масштабе — давно не исскуство, а скорее индустрия.
Вот уж точно не показатель, я бы предпочел видеть первый вариант, потому как он более читабелен. Ну и во-вторых, зачем жертвовать читабельностью кода, если компилятор оптимизирует подобные мелочи за вас?
А такие конструкции, как
do
{
if (! cond)
break;
}
while (false);
Используется Apple повсеместно, так что по таким вещам о качестве кода не судят.
Касательно не знания технологий с которыми работаешь… Это не удивительно, если человек то и делает, что фиксит баги, то его уровня, отладчика и гугля наверняка хватает, чтобы решать все необходимые вопросы.
Бывает все наааамного проще. Дело в том, что IO80211Controller не документирован. И весь 80211 стек тоже, посему возникает масса трудностней с реализацией WiFi драйверов. Текущая реализация линух дров основывается на SoftMAC, т.е. весь MAC уровень реализован софтварно в стеке, 80211 стек от Apple пользует хардварный MAC на WiFi картах. А документации по хардверному MAC уровню на интеловских картах тоже очень мало. Меня просили глянуть на этот драйвер, но из-за отсутствия железа и нужного стимула, я пока туда не смотрел :)
Можно, более того существуют стандартные драйвера для этого — AppleUSBCDC, тебя интересует драйвер AppleUSBCDCACM. Возможно можно его подредактировать, или же добавить какой-нибудь дополнительные скрипт к скриптам модемов.
Видимо тюнер основан на последнем PCI-E чипе от NXP/Phillips. Тогда советую обратить внимание на библиотеку MmInputFamily, потому как IOKit в сожалению не имеет стека для работы с мультимедийными устройствами подобного рода :(
Если честно — не встречал. Мне хватает информации из туториалов, гайдов и SDK. Apple очень хорошо документирует и сопровождает свои средства разработки и фреймворки. Если возникают затруднения, обращаюсь в мейлин листы от Apple lists.apple.com/
Верно. BSOD — это bug check, исключительная ситуация, которая не была обработана. Еще бы немного, и можно было даже расшифровать причину, но самое интересное — обрезано.
Врядли им это будет интересно. Apple не перенимает моду, Apple ее создает. Так что ультрапортатив от Apple наверняка будет, но вот в каком формафакторе и виде — это большой вопрос ;)
И тут не смогли обойтись без холиваров :)
По теме: корпус из Morex'ов был выбран далеко не самый удачный и красивый. 3688 куда более выиграшно смотриться. Можно было в конце концов постараться и заменить радиаторы на мат плате, поставить менее высокие, чтобы поместился DVD. Найти slot loading SLIM привод не так уж сложно, просто стоит он дороже.
Вот к примеру вариант мат платы www.ipc2u.com.ua/catalog/P/PE/35083.html WiFi туда идет mini PCI. Итого к стоимости нашей замены он добавляет: 333 — 74 + ~150 MB + 95 C2D E4300 + ~50 WiFi + 20 USB Bluetooth = 574.
Дороговизна MacMini обусловлена мобильными версия комплектующих.
Если честно - пример надуман. Наследование не нарушает инкапсуляции, инкапсуляцию нарушает неправильное проектирование.
Если судить в рамках вашего примера, то наследования от интерфейса также нарушает инкапсуляцию, поскольку интерфейс обязует класс раскрывать детали своей реализации путем имплементации определенных методов.
Наследовать магнитную карту от ключа - логически неправильно. А наследование само по себе может быть public, protected, private и т.д., т.е. можно лавировать как угодно. А атрибуты видимости классу на то и данны, чтобы скрыть некоторые детали своей реализации даже от потомков.
Да хорошее оборудование - это для развивающегося проекта лишь вопрос времени и это не показатель. last.fm создан для других нужд, и он очень не удобен в плане поиска треков по конкретному исполнителю. Да и вообще, больше сервисов разных - это хорошо. Невостребованные отомрут сами, востребованные займут свою нишу.
Этот сервис по идее будет востребованым, если бы еще все было написано на AIR, смотрелось бы интереснее.
Далее, для Mac OS лучше поднять параллельно с smb — afp, жизнь станет проще :)
Пруфлинк? Я что ли это сам придумал, или вас обманывать стану. Вот если хотите:
www.opensource.apple.com/darwinsource/10.5.4/AppleIntel8255x-18.0.80/i82557.cpp
www.opensource.apple.com/darwinsource/10.5.4/AppleRTL8139Ethernet-141/RTL8139.cpp
Метод start, для просмотра нужна бесплатная регистрация на Apple ADC :)
А программирование в промышленном масштабе — давно не исскуство, а скорее индустрия.
А такие конструкции, как
do
{
if (! cond)
break;
}
while (false);
Используется Apple повсеместно, так что по таким вещам о качестве кода не судят.
Касательно не знания технологий с которыми работаешь… Это не удивительно, если человек то и делает, что фиксит баги, то его уровня, отладчика и гугля наверняка хватает, чтобы решать все необходимые вопросы.
Вот здесь, есть неплохие статьи по Cocoa www.steps3d.narod.ru
По теме: корпус из Morex'ов был выбран далеко не самый удачный и красивый. 3688 куда более выиграшно смотриться. Можно было в конце концов постараться и заменить радиаторы на мат плате, поставить менее высокие, чтобы поместился DVD. Найти slot loading SLIM привод не так уж сложно, просто стоит он дороже.
Вот к примеру вариант мат платы www.ipc2u.com.ua/catalog/P/PE/35083.html WiFi туда идет mini PCI. Итого к стоимости нашей замены он добавляет: 333 — 74 + ~150 MB + 95 C2D E4300 + ~50 WiFi + 20 USB Bluetooth = 574.
Дороговизна MacMini обусловлена мобильными версия комплектующих.
Если судить в рамках вашего примера, то наследования от интерфейса также нарушает инкапсуляцию, поскольку интерфейс обязует класс раскрывать детали своей реализации путем имплементации определенных методов.
Наследовать магнитную карту от ключа - логически неправильно. А наследование само по себе может быть public, protected, private и т.д., т.е. можно лавировать как угодно. А атрибуты видимости классу на то и данны, чтобы скрыть некоторые детали своей реализации даже от потомков.
Этот сервис по идее будет востребованым, если бы еще все было написано на AIR, смотрелось бы интереснее.