Author Archives: elwood
Как известно, за последние несколько лет в интернетах появилось и разрослось движение Интернет бомжей. Основная идея сферического бомжа в вакууме заключается в том, чтобы заработать побольше денег “в интернете”, не работая “на дядю” в реале. Заработок, к которому стремится среднестатистический бомж – так называемый “пассивный”, т.е. один раз сделал какую-то сеть сайтов, продал ссылки, разместил рекламку – и сиди, кури сигару, в раздумьях, как бы еще срубить бабла, ну или делай следующую партию сайтов в то время как денежки капают. У каждого не обремененного огромными доходами человека, который заходит почитать бомжеблоги успешных бомжей, возникает естественная мысль – почему бы тоже не попробовать ?
У меня двойственное отношение к этим бомжам. С одной стороны, это конечно круто – иметь собственный доход, не зависеть от начальства в реале, не платить налоги, постоянно развиваться итд итп. Но с другой стороны – какова цель всего этого ? Деньги. И люди тратят годы на то, чтобы сделать (уточню – не заработать, а сделать) деньги с помощью сомнительных средств (как то – наебалово доверчивых пользователей (к примеру, через смс), наебалово поисковых машин). Ну добыл денег – что дальше ? Прожигать жизнь или детям рассказывать, как юзеров-лохов на смсках разводил ? Ладно, опустим моральный аспект. Допустим, бомж работал несколько лет таким способом, и опыт у него – исключительно в поднятии денежных средств. А если этим заниматься не интересно ? Ну вот нравится если рыбу ловить – что, всю жизнь тратить на SEO ? Или мне, например, нравится программирование, музыка, и все, что с этим связано – мне совершенно неинтересно клепать сайты и искать способы подороже их втулить. Вопрос – как найти интересующую область деятельности, не “работая на дядю” и с приличным доходом ? Недавно видел на хабре пару постов от так называемых независимых разработчиков. Но – так ли они независимы на самом деле ? У обоих весь доход – от флеш игрушек. Интересно, им не надоело еще эти игрушки клепать ?
То же самое относится и к фрилансу – фрилансер волен лишь выбирать заказчика, но продукт и то, каким он будет – не в его власти.
В общем, крутость бомжевания, фрилансирования и независиморазрабатывания лишь поверхностна. А то, кем быть и как трудиться – дело выбора каждого, в зависимости от личных предпочтений и поставленных целей. И вопрос – как заработать приличные деньги, приобрести ценный опыт и пассивный доход, работая в интересующей области – по-прежнему остается открытым.
Не так давно мутил я на дотнете воспроизведение трекерных файлов, а именно, XM. Громоздкие либы типа BASS явно для этой задачи не подходили, широко известный в узких кругах ufmod почему-то в связке с дотнет интеропом не заработал, зато нашлась библиотечка minifmod, которая обладала всеми необходимыми качествами (интересовала возможность загрузки из файла и из памяти) и небольшими габаритами. Для того, чтобы можно было удобно указывать способ загрузки (из файла или из памяти), я дописал маленький адаптер, который обрабатывал callback’и минифмода, и засунул его в DLL. Соответственно, нативная DLL к .net-проекту была подцеплена через простейший interop.
Сегодня наконец собрался с мыслями, почистил файлы проекта, и выложил все на гуглокод, благо sourceforge и codeplex уже попробовал. Google code очень понравился своей беспроблемностью в залитии файлов и работе с SVN. Вспоминая, как я трахался с sourceforge через SFTP чтобы залить туда пару архивов, могу сказать, что здесь все очень и очень удобно.
Итак, сайт проекта находится здесь http://code.google.com/p/minifmod4net/
Код использования библиотеки прост как пять копеек, достаточно взглянуть на тестовый пример, чтобы все стало ясно. Только один момент – если вы желаете использовать ее в своей программе, то вам придется сменить режим генерации кода с AnyCPU на x86, поскольку имеется нативная DLL с 32-битным кодом, и в режиме AnyCPU на какой-нибудь 64-битной винде программа не запустится, мотивировав отказ исключением наподобие ImageBadFormatException. Если же х86 специфицировать явно, то все будет работать и на 64-битных Windows.
PS. Поздравляю всех с наступившим 2010 годом, надеюсь, он принесет всем нам немало радости и профессиональных успехов 🙂
Часто приходится писать обработчики исключений, которые делают одно и то же. Например, в следующем кусочке кода нам необходимо среагировать на исключения типа Exception1 и Exception2 записью в лог-файл :
try { // Блок, который может вызвать исключения Exception1, Exception2 // или исключение любого другого типа } catch (Exception1 exc) { logger.WarnException("An exception has been occured : {0}", exc); } catch (Exception2 exc) { logger.WarnException("An exception has been occured : {0}", exc); } |
Проблема в том, что мы не можем никак избежать дублирования кода. Единственный выход – создать отдельный метод-обработчик, в котором и инкапсулировать логику. Но – во-первых, это может оказаться неудобным, поскольку локальные переменные, которые могут понадобиться в обработчике, придется передавать при вызове функции, а во-вторых, сам по себе вызов функции – это еще несколько тактов процессора.
Хотелось бы иметь способ, который бы позволял писать, скажем, следующим образом :
try { // } catch (Exception1, Exception2 exc as Exception) { // exc имеет тип Exception } |
4