Blog by admin → Почему и когда стоит использовать ханимые процедуры в MySQL
Данный топик навеян и тем фактом что автор разместил его в разделе «Ненормальное программирование». Печально это видеть, честное слово. И вот
Во первых — ХП это безопасность
Да, да, я знаю! Не бывает неуязвимых систем. Сломать можно все. Но есть большая разница между тем, чтобы взламывать систему безопасности сервера БД и тем, чтобы взять готовый пароль на доступ к БД лежащий прямо в скрипте и утащить данные.
Кроме того, многие забывают (или не знают, или считают что это невозможно...) что во многих проектах данные должны защищаться не только от взлома извне, но и от программистов пишущих скрипты. Особенно и в квадрате это необходимо при использовании на проекте фриланс-работников. Если мне нужно подправить пару тегов на страничке каталога товаров — это ведь еще не повод давать фрилансеру доступ к базе клиентов магазина, нет?
Еще один аспект безопасности про который тоже часто забывают — это безопасность данных от случайного повреждения, гм простите за прямоту, криворукими программистами. Проблема в том, что от кривого кода который вместе с добавлением новой заявки перепортит вам еще и пачку старых (UPDATE без указания id — и привет) не поможет обычный бэкап. Потому что во первых — многие вещи «вылазят» не сразу, а во вторых — в бэке у вас будут целые старые данные а в текущей базе — целые новые — но битые старые. А склеивать придется ручками…
Ограничить полет фантазии человека нанятого написать какую-то отдельную часть сайта и сделать так, чтобы он не смог ничего нигде поломать при «стандартном» подходе (запросы в теле скриптов — пусть даже и в отдельных модулях) почти невозможно.
Да, конечно, если у вас есть крепкая команда отличных проверенных спецов работающих только над вашим проектом — то не стоит и заморачиваться. Но что-то не слишком часто я такое встречаю.
Во вторых — ХП это возможность прозрачно и невидимо для не-ведущих программистов работать с несколькими базами в пределах сервера
Это неочевидный (но вполне стандартный) функционал (FROM nhpublic.`метро`) дающий еще очки в копилку безопасности и надежности проекта.
То, что Ваша процедура журналирования делает записи не только (а может и вообще — только НЕ) в вашу «основную» базу будет знать только ведущий программист, который ее и написал… Еще лучше было-бы работать с базами и за пределами основного сервера — но увы, тут MySQL имеет слишком много проблем (зато под M$ это работает отлично)
Где это нужно и хорошо? Вот если у Вас есть группа взаимосвязанных проектов на одном сервере — то довольно удобно использовать одну) общую базу КЛАДР а не стопицот ее копий. Тоже самое и с общей авторизацией. У Вас может быть одна общая база авторизации — а обращения к ней будут транслироваться через ХП.
В третьих — возможность использовать различные клиентские приложения
Тут даже описывать нечего… Вы просто пишите GUI приложение на Delphi/Java/VS (любимое подчеркнуть/добавить) и используете нативные методы для вызова ХП. Все. Вам Не нужно больше делать копии запросов и обеспечивать их синхронность/идентичность. А Ваш босс при этом имеет гораздо более функциональное приложение для просмотра отчетов своего магазина.
АПИ
Да. Используя ХП вы фактически создаете полноценный АПИ для Вашего проекта. Да, это требует напряжения мозга для ведущего программиста. Зато позволяет спокойно использовать куда менее квалифицированные кадры для написания бОльшей части скриптов интерфейса. Вы просто даете разработчику УИ заголовок процедуры:
`БиллингБаланс`(
$КлючСессии NVARCHAR(32)
, $КодПользователь INT(11)
/*
Возвращает баланс указанного пользователя.
При этом простой пользователь может видеть только свой баланс,
а админы — баланс любого пользователя.
— 28.07.2010 — Fox — Первоначальная версия
*/
)
и если он неполный пень — то все будет работать так, как Вы запланировали.
Да! Я использую Русский язык в коде!
И это отлично работает. Потому что за файлы отличные от UTF-8 я выдергиваю руки сразу. А в остальном — это сильно экономит время. Не надо убеждать меня в том, что все cразу поймут что за receipt имелся ввиду. А то, что на переключение раскладки требуется время — так это даже хорошо — лишняя пара секунд подумать — прежде чем что-то писать, никому еще не вредила. Скорее наоборот.
Код в одном месте
Опять же — это свойство наиболее мощно проявляется при наличии группы проектов использующих общие базы. Попробуйте «расшарить» один PHP скрипт для работы с БД (Model) между несколькими доменами (запущенными пусть и на одном сервере — но под разными пользователями) и вы поймете, о чем я. А иметь несколько копий одного скрипта — отличный способ по увеличению количества седых волос.
Наверное, я перечислил наиболее важные (имхо) моменты. Есть еще дьявольски большое количество приятных мелочей. Но думаю пора сказать и о грустном. Точнее — о тех вещах, которые многим мешают воспользоваться все мощью ХП.
Отвратительная поддержка работы с ХП из ПХП
Без комментариев. Для того чтобы начать нормально работать вам придется выкурить много манов. Но не все так плохо — настроив все один раз (модуль 115 строк в моих проектах) вы забудете об этой проблеме.
А как их создавать, админить и вообще?..
Просто надо знать прикуп. Есть отличные среды разработки для MySQL в том числе полностью Русские (не перевод! Есть нативно Русский проект). Не буду писать тут название.
Вы знаете еще минусы? Комменты для Вас
А, я больше минусов просто не назову.
Вся ерунда про быстродействие и прочее — это ерунда. Правильно написанная ХП уделает любой код на ПХП на сто рядов. А если вы не можете написать нужный код в ХП, вам нужны циклы по 10к итераций, или что-то еще — значит вы просто пытаетесь засунуть в model то, что model не является.
Так что в большинстве случаев, когда мне говорят, что ХП на MySQL это плохо — ответ простой «Ты просто не умеешь их готовить». А вот о том как их готовить — наверное уже в другой раз. Ибо тема эта слишком велика для одного поста.
Во первых — ХП это безопасность
Да, да, я знаю! Не бывает неуязвимых систем. Сломать можно все. Но есть большая разница между тем, чтобы взламывать систему безопасности сервера БД и тем, чтобы взять готовый пароль на доступ к БД лежащий прямо в скрипте и утащить данные.
Кроме того, многие забывают (или не знают, или считают что это невозможно...) что во многих проектах данные должны защищаться не только от взлома извне, но и от программистов пишущих скрипты. Особенно и в квадрате это необходимо при использовании на проекте фриланс-работников. Если мне нужно подправить пару тегов на страничке каталога товаров — это ведь еще не повод давать фрилансеру доступ к базе клиентов магазина, нет?
Еще один аспект безопасности про который тоже часто забывают — это безопасность данных от случайного повреждения, гм простите за прямоту, криворукими программистами. Проблема в том, что от кривого кода который вместе с добавлением новой заявки перепортит вам еще и пачку старых (UPDATE без указания id — и привет) не поможет обычный бэкап. Потому что во первых — многие вещи «вылазят» не сразу, а во вторых — в бэке у вас будут целые старые данные а в текущей базе — целые новые — но битые старые. А склеивать придется ручками…
Ограничить полет фантазии человека нанятого написать какую-то отдельную часть сайта и сделать так, чтобы он не смог ничего нигде поломать при «стандартном» подходе (запросы в теле скриптов — пусть даже и в отдельных модулях) почти невозможно.
Да, конечно, если у вас есть крепкая команда отличных проверенных спецов работающих только над вашим проектом — то не стоит и заморачиваться. Но что-то не слишком часто я такое встречаю.
Во вторых — ХП это возможность прозрачно и невидимо для не-ведущих программистов работать с несколькими базами в пределах сервера
Это неочевидный (но вполне стандартный) функционал (FROM nhpublic.`метро`) дающий еще очки в копилку безопасности и надежности проекта.
То, что Ваша процедура журналирования делает записи не только (а может и вообще — только НЕ) в вашу «основную» базу будет знать только ведущий программист, который ее и написал… Еще лучше было-бы работать с базами и за пределами основного сервера — но увы, тут MySQL имеет слишком много проблем (зато под M$ это работает отлично)
Где это нужно и хорошо? Вот если у Вас есть группа взаимосвязанных проектов на одном сервере — то довольно удобно использовать одну) общую базу КЛАДР а не стопицот ее копий. Тоже самое и с общей авторизацией. У Вас может быть одна общая база авторизации — а обращения к ней будут транслироваться через ХП.
В третьих — возможность использовать различные клиентские приложения
Тут даже описывать нечего… Вы просто пишите GUI приложение на Delphi/Java/VS (любимое подчеркнуть/добавить) и используете нативные методы для вызова ХП. Все. Вам Не нужно больше делать копии запросов и обеспечивать их синхронность/идентичность. А Ваш босс при этом имеет гораздо более функциональное приложение для просмотра отчетов своего магазина.
АПИ
Да. Используя ХП вы фактически создаете полноценный АПИ для Вашего проекта. Да, это требует напряжения мозга для ведущего программиста. Зато позволяет спокойно использовать куда менее квалифицированные кадры для написания бОльшей части скриптов интерфейса. Вы просто даете разработчику УИ заголовок процедуры:
`БиллингБаланс`(
$КлючСессии NVARCHAR(32)
, $КодПользователь INT(11)
/*
Возвращает баланс указанного пользователя.
При этом простой пользователь может видеть только свой баланс,
а админы — баланс любого пользователя.
— 28.07.2010 — Fox — Первоначальная версия
*/
)
и если он неполный пень — то все будет работать так, как Вы запланировали.
Да! Я использую Русский язык в коде!
И это отлично работает. Потому что за файлы отличные от UTF-8 я выдергиваю руки сразу. А в остальном — это сильно экономит время. Не надо убеждать меня в том, что все cразу поймут что за receipt имелся ввиду. А то, что на переключение раскладки требуется время — так это даже хорошо — лишняя пара секунд подумать — прежде чем что-то писать, никому еще не вредила. Скорее наоборот.
Код в одном месте
Опять же — это свойство наиболее мощно проявляется при наличии группы проектов использующих общие базы. Попробуйте «расшарить» один PHP скрипт для работы с БД (Model) между несколькими доменами (запущенными пусть и на одном сервере — но под разными пользователями) и вы поймете, о чем я. А иметь несколько копий одного скрипта — отличный способ по увеличению количества седых волос.
Наверное, я перечислил наиболее важные (имхо) моменты. Есть еще дьявольски большое количество приятных мелочей. Но думаю пора сказать и о грустном. Точнее — о тех вещах, которые многим мешают воспользоваться все мощью ХП.
Отвратительная поддержка работы с ХП из ПХП
Без комментариев. Для того чтобы начать нормально работать вам придется выкурить много манов. Но не все так плохо — настроив все один раз (модуль 115 строк в моих проектах) вы забудете об этой проблеме.
А как их создавать, админить и вообще?..
Просто надо знать прикуп. Есть отличные среды разработки для MySQL в том числе полностью Русские (не перевод! Есть нативно Русский проект). Не буду писать тут название.
Вы знаете еще минусы? Комменты для Вас
А, я больше минусов просто не назову.
Вся ерунда про быстродействие и прочее — это ерунда. Правильно написанная ХП уделает любой код на ПХП на сто рядов. А если вы не можете написать нужный код в ХП, вам нужны циклы по 10к итераций, или что-то еще — значит вы просто пытаетесь засунуть в model то, что model не является.
Так что в большинстве случаев, когда мне говорят, что ХП на MySQL это плохо — ответ простой «Ты просто не умеешь их готовить». А вот о том как их готовить — наверное уже в другой раз. Ибо тема эта слишком велика для одного поста.
Blog by admin → Мегамашина мышления
Знание всегда создавалось коллективно. Оно создавалось, во-первых, с использованием языка. А зачем язык ни с кем не общающемуся индивиду? Во-вторых, знание создается с использованием понятий. В значительной мере, создание знаний — это и есть создание понятий. Таких, как «число», «заряд», «масса», «социальный класс», «машина», «движение», «эволюция» и так далее, и так далее…
А понятия создаются именно для того, чтобы другим было понятно, о чем я говорю. Феномен разума основан на умении людей:
а) создавать (открывать) понятия
б) передавать понятия другим, учить людей ранее открытым понятиям
Сумма понятий накапливается человеческим обществом буквально по каплям. Мало кто может похвастсться тем, что создал новое понятие или хотя бы тем, что хорошо знаком лично с человеком, создавшим понятие. И, тем не менее, в голове у каждого из нас многие тысячи понятий.
Откуда их столько взялось?
Все очень просто (и фантастично) — миллиарды людей создавали эти понятия тысячелетиями. Даже если один на миллион создаст одно понятие за всю жизнь — и то накопится неслабо. В чем сила понятий? Да в том, что с их помощью мы понимаем мир (на то они и понятия). Я не просто смотрю на облако, но понимаю, что это масса мельчайших капель воды. А вода — это аш-два-о.
Как бы мне объяснить такие штуки без понятий, загруженных в школе? Проблематично.
Если мы посмотрим на этот процесс повнимательнее, то поймем, что создание понятий тоже коммуникативен, что недостаточно изобрести понятие, надо, чтобы общество его приняло. Иначе можешь носиться со своим «понятием», как дурак с писаной торбой…
Итак, какой-нибудь ньютон изобретает понятие «ускорение», пишет письма Гуку, Лоу, кому-там-еще, а они отвечают: «Дорогой сэр Ньютон! Бред это ваше „ускорение“! Или наоборот: „Уважаемый Исаак! Я восхищен Вашим гениальным определением этой сложной материи“!
Чем хороши понятия? Тем, что мы умеем строить из них системы в уме. Скажи человеку: „Положи на пол (понятие) две (понятие) доски (и т.д.) метровой длины праллельно. Потом поперек положи столько, сколько на них влезет, препендикулярно первым двум. Выровняй концы досок, и сбей их гвоздями“.
Представили? Что получится? Щит, можно сделать стол или дверь.
Вводя новые понятия (магнитное поле, электрический ток, проводник) мы радикально расширяем разнообразие систем, которые можно мысленно строить из понятий.
Но при этом понятия должны соответствовать неким глубинным сущностям реальности, иначе мы навоображаем систем, которые невозможно реализовать. Поэтому понятия, проверенные в практике, гораздо ценнее непроверенных.
Вот если бы научиться ускорять процесс генерации правильных понятий! Мы могли бы обскакать все прочие общества, которые такого не умеют.
Что для этого нужно?
Есть идея. Если посмотреть на всю мировую науку, то она с давних пор похожа на сеть. Network, панимаишь. Но только очень медленно работающую. Вместо TCP/IP — письма и научные журналы. Задержки по несколько месяцев. Зато практически все всех знали. И общались очень адресно.
Сейчас ситуация ухудшилась, если во всей Европе XVI века было несколько тысяч ученых, то сейчас несколько миллионов. Невозможно уследить за всем, что пишется. А ведь сейчас на глазах формируются сотни важнейших для будущего понятий.
Практически все ученые умеют пользоваться интернет. Если соединить их в некую сеть (хотя бы по специальностям), снабженную средствами автоматизации генерации понятий?
Что-то вроде тегов, но вы знаете, какую мешанину люди устраивают из тегов и тем.
Значит, нужно автоматизировать согласование тематизации (семантизации), приделав к этому механизм типа поддержки принятия решений (DSS).
Общую схему системы можно извлечь из трудов социологов, которые исследовали структуру научных сообществ.
А понятия создаются именно для того, чтобы другим было понятно, о чем я говорю. Феномен разума основан на умении людей:
а) создавать (открывать) понятия
б) передавать понятия другим, учить людей ранее открытым понятиям
Сумма понятий накапливается человеческим обществом буквально по каплям. Мало кто может похвастсться тем, что создал новое понятие или хотя бы тем, что хорошо знаком лично с человеком, создавшим понятие. И, тем не менее, в голове у каждого из нас многие тысячи понятий.
Откуда их столько взялось?
Все очень просто (и фантастично) — миллиарды людей создавали эти понятия тысячелетиями. Даже если один на миллион создаст одно понятие за всю жизнь — и то накопится неслабо. В чем сила понятий? Да в том, что с их помощью мы понимаем мир (на то они и понятия). Я не просто смотрю на облако, но понимаю, что это масса мельчайших капель воды. А вода — это аш-два-о.
Как бы мне объяснить такие штуки без понятий, загруженных в школе? Проблематично.
Если мы посмотрим на этот процесс повнимательнее, то поймем, что создание понятий тоже коммуникативен, что недостаточно изобрести понятие, надо, чтобы общество его приняло. Иначе можешь носиться со своим «понятием», как дурак с писаной торбой…
Итак, какой-нибудь ньютон изобретает понятие «ускорение», пишет письма Гуку, Лоу, кому-там-еще, а они отвечают: «Дорогой сэр Ньютон! Бред это ваше „ускорение“! Или наоборот: „Уважаемый Исаак! Я восхищен Вашим гениальным определением этой сложной материи“!
Чем хороши понятия? Тем, что мы умеем строить из них системы в уме. Скажи человеку: „Положи на пол (понятие) две (понятие) доски (и т.д.) метровой длины праллельно. Потом поперек положи столько, сколько на них влезет, препендикулярно первым двум. Выровняй концы досок, и сбей их гвоздями“.
Представили? Что получится? Щит, можно сделать стол или дверь.
Вводя новые понятия (магнитное поле, электрический ток, проводник) мы радикально расширяем разнообразие систем, которые можно мысленно строить из понятий.
Но при этом понятия должны соответствовать неким глубинным сущностям реальности, иначе мы навоображаем систем, которые невозможно реализовать. Поэтому понятия, проверенные в практике, гораздо ценнее непроверенных.
Вот если бы научиться ускорять процесс генерации правильных понятий! Мы могли бы обскакать все прочие общества, которые такого не умеют.
Что для этого нужно?
Есть идея. Если посмотреть на всю мировую науку, то она с давних пор похожа на сеть. Network, панимаишь. Но только очень медленно работающую. Вместо TCP/IP — письма и научные журналы. Задержки по несколько месяцев. Зато практически все всех знали. И общались очень адресно.
Сейчас ситуация ухудшилась, если во всей Европе XVI века было несколько тысяч ученых, то сейчас несколько миллионов. Невозможно уследить за всем, что пишется. А ведь сейчас на глазах формируются сотни важнейших для будущего понятий.
Практически все ученые умеют пользоваться интернет. Если соединить их в некую сеть (хотя бы по специальностям), снабженную средствами автоматизации генерации понятий?
Что-то вроде тегов, но вы знаете, какую мешанину люди устраивают из тегов и тем.
Значит, нужно автоматизировать согласование тематизации (семантизации), приделав к этому механизм типа поддержки принятия решений (DSS).
Общую схему системы можно извлечь из трудов социологов, которые исследовали структуру научных сообществ.
Blog by admin → Linux не для всех
Эта история началась с того, что в далеком 2007 году ко мне на компьютер пробралась такая вещь, как Линукс, а именно Ubuntu 6.10. Тут я хотел написать, что первая установка Линукса — это как первый поцелуй, мол, сразу все волнительно и безоблачно а потом или любовь «до гроба», или простое человеческое непонимание. Конечно, может быть всякое.
Например, ваш партнер окажется крайне опытным типом, расскажет вам обо всех тонкостях и поведает про все-все-все ошибки и проблемы, которые могли бы с вами приключиться без него. И заодно подарит бесплатный абонемент в одну из лучших библиотек по теме (будьте здоровы, Gentoo и Arch). А может скажет: «Просто наслаждайся» (не икай, Mint). А может будет шпионом-самаритянином, скрывающим свое настоящее имя (Red CentOS?)…
Но извините, я отвлеклся, эта статья о другом.
Насколько можно упростить операционную систему, не лишаясь возможности использовать ее повседневно в личных нуждах? (экстрасенсы сейчас смотрят на теги)
Щенячьи нежности
Woof, woof
Думаю, некоторые из читающих уже знакомы с Puppy Linux. Это один из «живых» дистрибутивов, которые работают в полной функциональности сразу, без установки. Knoppix, TCL, DSL — я о них слышал знаю, да. В этом смысле Puppy не революционна, но есть в ней вещи, которых я не видел больше нигде.
Итак, список того, почему вам может быть интересно взглянуть на Puppy:
* Малый размер дистрибутива (≈130 Мб) и системные требования.
* Возможна установка практически на любой носитель с файловыми системами Linux'а и Windows'а.
* Грузится максимум за 3 минуты (при попытке примонтировать диск в Win-гибернации), в среднем — за минуту-полторы от нажатия на «Power».
* Полностью грузится в оперативную память (при >256 Мб) и работает из нее, следовательно возможно работать на машине со сломанным (отсутствующим) жестким диском.
* При работе с Flash-носителя минимизирует количество записей на него, продлевая срок службы.
* Присутствуют программы для большинства повседневных задач (офис, интернет(включая SSH и Samba), мультимедиа…) «из коробки».
* «Низкий порог вхождения» — диски монтируются по щелчку на Рабочем столе, все программы разбиты на категории в меню, забавы с консолью для неискушенного пользователя сведены к минимуму.
Однако есть и минус: Puppy — англоговорящая собачка и русской локализации пока нет. Хотя существует проект PuppyRus, на котором тоже можно найти полезную информацию.
Squash a bit, please
Есть еще одна интересная особенность (не только Puppy, но и других Live-дистрибутивов) — использование SquashFS и AUFS, благодаря чему, во-первых, достигается высокий уровень сжатия, а во-вторых, появляется модульность. Вы можете загрузить .sfs модуль OpenOffice и после перезагрузки (есть вариант и без нее) у вас появится установленный и готовый к работе OOo.
Таким же образом устанавливается связка компиляторов (и прочих инструментов) для GCC, Vala, Genie и BaCon.
Strong Breed
Примечательно также, что (в отличие, скажем, от TCL) разработано обширное множество «переделок» официального дистрибутива — Puplet'ов. Они существуют практически для любых нужд: хотите Puppy на EeePC — получите Puppeee (или Fluppy), хотите KDE с Компизом — LighthousePup, хотите E17 — MacPup… Существует даже паплет, стремящийся свести потребление оперативной памяти к минимуму: 20 Мб (без кэша и буферов) с поднятым X-сервером (а вам слабо?). Выбор огромен и найти «на свой вкус» не так сложно, к тому же напильник всегда с нами.
Суши весла, Герасим
Технические заметки
На чем же основана эта магия система? Изначально, Puppy была построена с нуля (забудьте про Линуса :) ) австралийским профессором Барри Каулером (Barry Kauler). Этот же человек поддерживал и разрабатывал систему до третьего релиза. Им же в дальнейшем была создана система для создания (мало масляное) Puppy и паплетов — Woof. После этого инициатива перешла сообществу пользователей (хотя BarryK продолжает участвовать в проекте). Благодаря этому Puppy может быть построена на основе любого другого дистрибутива Линукса (вплоть до бинарной совместимости с ним). Именно этим воспользовались при создании пятого релиза — в его основе Ubuntu, следовательно доступно огромное количество уже готовых пакетов, которые можно скачать и, скорее всего, с успехом установить.
На данный момент также существуют паплеты на основе Slackware и Debian. Вообще, сообщество Puppy Linux крайне дружелюбно и на форуме можно найти ответы на большинство возникающих вопросов.
Оконные менеджеры отличаются от паплета к паплету, но в основном дистрибутиве это JWM, IceWM и (начиная с релиза 5.2) Openbox. Файловый менеджер — ROX-Filer.
Существует вариант установки системы в «экономном» виде (Frugal install), при которой на носителе создается один файл, вмещающий всю пользовательскую файловую систему, отсюда и возможность установки на Windows разделы.
Например, ваш партнер окажется крайне опытным типом, расскажет вам обо всех тонкостях и поведает про все-все-все ошибки и проблемы, которые могли бы с вами приключиться без него. И заодно подарит бесплатный абонемент в одну из лучших библиотек по теме (будьте здоровы, Gentoo и Arch). А может скажет: «Просто наслаждайся» (не икай, Mint). А может будет шпионом-самаритянином, скрывающим свое настоящее имя (Red CentOS?)…
Но извините, я отвлеклся, эта статья о другом.
Насколько можно упростить операционную систему, не лишаясь возможности использовать ее повседневно в личных нуждах? (экстрасенсы сейчас смотрят на теги)
Щенячьи нежности
Woof, woof
Думаю, некоторые из читающих уже знакомы с Puppy Linux. Это один из «живых» дистрибутивов, которые работают в полной функциональности сразу, без установки. Knoppix, TCL, DSL — я о них слышал знаю, да. В этом смысле Puppy не революционна, но есть в ней вещи, которых я не видел больше нигде.
Итак, список того, почему вам может быть интересно взглянуть на Puppy:
* Малый размер дистрибутива (≈130 Мб) и системные требования.
* Возможна установка практически на любой носитель с файловыми системами Linux'а и Windows'а.
* Грузится максимум за 3 минуты (при попытке примонтировать диск в Win-гибернации), в среднем — за минуту-полторы от нажатия на «Power».
* Полностью грузится в оперативную память (при >256 Мб) и работает из нее, следовательно возможно работать на машине со сломанным (отсутствующим) жестким диском.
* При работе с Flash-носителя минимизирует количество записей на него, продлевая срок службы.
* Присутствуют программы для большинства повседневных задач (офис, интернет(включая SSH и Samba), мультимедиа…) «из коробки».
* «Низкий порог вхождения» — диски монтируются по щелчку на Рабочем столе, все программы разбиты на категории в меню, забавы с консолью для неискушенного пользователя сведены к минимуму.
Однако есть и минус: Puppy — англоговорящая собачка и русской локализации пока нет. Хотя существует проект PuppyRus, на котором тоже можно найти полезную информацию.
Squash a bit, please
Есть еще одна интересная особенность (не только Puppy, но и других Live-дистрибутивов) — использование SquashFS и AUFS, благодаря чему, во-первых, достигается высокий уровень сжатия, а во-вторых, появляется модульность. Вы можете загрузить .sfs модуль OpenOffice и после перезагрузки (есть вариант и без нее) у вас появится установленный и готовый к работе OOo.
Таким же образом устанавливается связка компиляторов (и прочих инструментов) для GCC, Vala, Genie и BaCon.
Strong Breed
Примечательно также, что (в отличие, скажем, от TCL) разработано обширное множество «переделок» официального дистрибутива — Puplet'ов. Они существуют практически для любых нужд: хотите Puppy на EeePC — получите Puppeee (или Fluppy), хотите KDE с Компизом — LighthousePup, хотите E17 — MacPup… Существует даже паплет, стремящийся свести потребление оперативной памяти к минимуму: 20 Мб (без кэша и буферов) с поднятым X-сервером (а вам слабо?). Выбор огромен и найти «на свой вкус» не так сложно, к тому же напильник всегда с нами.
Суши весла, Герасим
Технические заметки
На чем же основана эта магия система? Изначально, Puppy была построена с нуля (забудьте про Линуса :) ) австралийским профессором Барри Каулером (Barry Kauler). Этот же человек поддерживал и разрабатывал систему до третьего релиза. Им же в дальнейшем была создана система для создания (мало масляное) Puppy и паплетов — Woof. После этого инициатива перешла сообществу пользователей (хотя BarryK продолжает участвовать в проекте). Благодаря этому Puppy может быть построена на основе любого другого дистрибутива Линукса (вплоть до бинарной совместимости с ним). Именно этим воспользовались при создании пятого релиза — в его основе Ubuntu, следовательно доступно огромное количество уже готовых пакетов, которые можно скачать и, скорее всего, с успехом установить.
На данный момент также существуют паплеты на основе Slackware и Debian. Вообще, сообщество Puppy Linux крайне дружелюбно и на форуме можно найти ответы на большинство возникающих вопросов.
Оконные менеджеры отличаются от паплета к паплету, но в основном дистрибутиве это JWM, IceWM и (начиная с релиза 5.2) Openbox. Файловый менеджер — ROX-Filer.
Существует вариант установки системы в «экономном» виде (Frugal install), при которой на носителе создается один файл, вмещающий всю пользовательскую файловую систему, отсюда и возможность установки на Windows разделы.
Blog by admin → Для владельцев игровой консоли Sony PlayStation 3. Как использовать консоль в роли полноценного медиа сервера
Известно что консоль имеет встроенный модуль WiFi, что очень удобно в наше время. Игровая приставка может находится близко к телевизору и при этом от неё не будут тянуться лишние «сопли». Хочу Вам рассказать, какими средствами можно использовать консоль в просмотре видео.
Если у Вас вместо обычного телевизора используется TV панель более чем 40' (дюймов), то с помощью консоли можно смотреть видео файлы, находящиеся на ПК, на Вашем TV стандартной программой Windows media player, которая входит в базовой комплектации c любой версией ОС Windows. Можно расшарить, всё имеющееся видео на своём ПК, но только в поддерживаемом формате видео для Playstation 3 — Формат DivX.
Способ №1
1) Для этого в настройках Windows Media Player необходимо нажать на вкладку «Библиотека»
и затем нажать кнопку «Настроить общий доступ».
В появившемся окне, установить галочку в чекбоксе рядом со словом «Открыть общий доступ к моим файлам мультимедиа.
Далее в этом же окне нажать кнопку „Параметры“. Теперь перед Вами окошко с выбором типов мультимедийных файлов, которые Вы можете в дальнейшем просматривать на экране TV.
2) Подключенный ПК должен находиться в одной локальной сети вместе с консолью.
3) В меню консоли выбрать пункт „Видео“, щёлкнуть ниже и выбрать „Поиск медиа сервера“.
4) Просматривать выбранные форматы файлов (фото, видео или музыку).
Но! При таком подключении мы можем просматривать только видео файлы в формате DivX. Если у Вас есть видео в другом формате, то для просмотра его необходимо будет конвертировать. А это долго.
Ниже я опишу более конкурентный способ №2 просмотра видео на Sony PlayStation 3
1) Для начала нам понадобится программа, разработанная компанией Google, которую Вам необходимо скачать отсюда. Имеется несколько дистрибутивов для разных семейств ОС, таких как Linux/Unix, Windows или Mac OS X. Для работы дистрибутива необходима пред установка Java. Взять можно отсюда.
2) Вы можете запустить сразу скачанный дистрибутив медиасервера, если он не найдёт в системе Java, то предложит Вам установить её.
3) После благополучной установки Вы увидете окошко
Если программа покажет большой красный круг с крестом в центре, то значит консолька на данный момент не найдена. Для этого стоит проделать шаг описанный в Способе №1 пункт 3. В тот момент пока приставка ищет медиа сервер, программа покажет Вашу консоль, как на рисунке выше.
4) Теперь нам необходимо в программе сервера во вкладке Навигация/Общий доступ, Выбрать диски нашего ПК. В самом низу этой вкладки в поле „Папки общего доступа“
У меня выбраны все 4 диска.
Всё! Поздравляю! Теперь Ваша консоль готова воспроизводить все мультимедийные файлы, которые Вы только можете хранить на Вашем ПК.
Хочу заметить следующее:
1) Видео обрабатывается на лету. При транскодировании файлов, создаётся дополнительная нагрузка на процессор Вашего ПК. Тестировал я лично на стареньком Целерончике. Видео просматривал в любых разрешениях, за исключением HD формата. Думаю на данный момент читатели Хабра, пользуют более современные ПК.
2) Все имеющиеся файлы Вы можете скопировать на Вашу консоль.
3) Если у Вас есть еще аудиосистема 5.1, то так как обрабатывает звук консоль, ни одна звуковая карта ПК его не обработает. Для более качественного звука я использую оптоволоконный аудио кабель, соединяющий консоль с ресивером. Далее звук попадает на систему 5.1.
4) Качество обработки видео консолью очень высокое. Не сравнимо с качеством обработки видеокарт, выпускаемых на данный момент написания этой статьи.
5) Видео в качестве камрип, просматриваемое на консоли тоже заслуживает аплодисментов.
6) Настройки программы медиа сервера я оставил по умолчанию.
Если у Вас появятся проблемы с установкой и настройкой, отписывайтесь в комментариях. С радостью помогу всем.
Желаю Удачи!
Если у Вас вместо обычного телевизора используется TV панель более чем 40' (дюймов), то с помощью консоли можно смотреть видео файлы, находящиеся на ПК, на Вашем TV стандартной программой Windows media player, которая входит в базовой комплектации c любой версией ОС Windows. Можно расшарить, всё имеющееся видео на своём ПК, но только в поддерживаемом формате видео для Playstation 3 — Формат DivX.
Способ №1
1) Для этого в настройках Windows Media Player необходимо нажать на вкладку «Библиотека»
и затем нажать кнопку «Настроить общий доступ».
В появившемся окне, установить галочку в чекбоксе рядом со словом «Открыть общий доступ к моим файлам мультимедиа.
Далее в этом же окне нажать кнопку „Параметры“. Теперь перед Вами окошко с выбором типов мультимедийных файлов, которые Вы можете в дальнейшем просматривать на экране TV.
2) Подключенный ПК должен находиться в одной локальной сети вместе с консолью.
3) В меню консоли выбрать пункт „Видео“, щёлкнуть ниже и выбрать „Поиск медиа сервера“.
4) Просматривать выбранные форматы файлов (фото, видео или музыку).
Но! При таком подключении мы можем просматривать только видео файлы в формате DivX. Если у Вас есть видео в другом формате, то для просмотра его необходимо будет конвертировать. А это долго.
Ниже я опишу более конкурентный способ №2 просмотра видео на Sony PlayStation 3
1) Для начала нам понадобится программа, разработанная компанией Google, которую Вам необходимо скачать отсюда. Имеется несколько дистрибутивов для разных семейств ОС, таких как Linux/Unix, Windows или Mac OS X. Для работы дистрибутива необходима пред установка Java. Взять можно отсюда.
2) Вы можете запустить сразу скачанный дистрибутив медиасервера, если он не найдёт в системе Java, то предложит Вам установить её.
3) После благополучной установки Вы увидете окошко
Если программа покажет большой красный круг с крестом в центре, то значит консолька на данный момент не найдена. Для этого стоит проделать шаг описанный в Способе №1 пункт 3. В тот момент пока приставка ищет медиа сервер, программа покажет Вашу консоль, как на рисунке выше.
4) Теперь нам необходимо в программе сервера во вкладке Навигация/Общий доступ, Выбрать диски нашего ПК. В самом низу этой вкладки в поле „Папки общего доступа“
У меня выбраны все 4 диска.
Всё! Поздравляю! Теперь Ваша консоль готова воспроизводить все мультимедийные файлы, которые Вы только можете хранить на Вашем ПК.
Хочу заметить следующее:
1) Видео обрабатывается на лету. При транскодировании файлов, создаётся дополнительная нагрузка на процессор Вашего ПК. Тестировал я лично на стареньком Целерончике. Видео просматривал в любых разрешениях, за исключением HD формата. Думаю на данный момент читатели Хабра, пользуют более современные ПК.
2) Все имеющиеся файлы Вы можете скопировать на Вашу консоль.
3) Если у Вас есть еще аудиосистема 5.1, то так как обрабатывает звук консоль, ни одна звуковая карта ПК его не обработает. Для более качественного звука я использую оптоволоконный аудио кабель, соединяющий консоль с ресивером. Далее звук попадает на систему 5.1.
4) Качество обработки видео консолью очень высокое. Не сравнимо с качеством обработки видеокарт, выпускаемых на данный момент написания этой статьи.
5) Видео в качестве камрип, просматриваемое на консоли тоже заслуживает аплодисментов.
6) Настройки программы медиа сервера я оставил по умолчанию.
Если у Вас появятся проблемы с установкой и настройкой, отписывайтесь в комментариях. С радостью помогу всем.
Желаю Удачи!
Blog by admin → Домашний сервер
Привет тебе, хабропользователь!
Вместо предисловия
Началось все с того что на моей рабочей лошадке завис Photoshop. Компьютер я собирал давно и раньше даже не обращал на его комплектацию внимания. Но этот инцидент поверг меня в шок (после получаса не сохраненной работы). Но было уже поздно судорожно дергать мышкой и тут, у меня в котелке, зародилась маниакальная идея. “Собрать новый комп!” – снова и снова требовал мой мозг. Против мозга не попрешь было решено купить новый системный блок. Через несколько минут что- то щелкнуло в моей голове и я “побежал” в магазин. Там вдоволь накупил нужных деталей. Приехал домой, и через полчаса передо мной стоял новый блестящий системный блок. Маниакальная идея начала постепенно улетучиваться из моего мозга. Теперь стал вопрос, что делать со старым “Феррари”. Сначала КО подсказал мне “Не выкидывать же!”, с этим гениальным утверждением невозможно не согласится. Поэтому было решено сделать многофункциональный сервер…
Заинтересовался? Добро пожаловать под кат. Если же нет, ты знаешь что делать.
Action!
И тут закипела серая каша в моей голове. Я задавал сам себе разные вопросы “Что он (сервер) будет делать?”, “Какую ОС выбрать?”, “Где пиво?” и т. п.
Пора определится с функционалом…
Долго подумав я выдвинул следующие направления:
1) «Качалка» торрентов
2) Файловый сервер
Отлично! Базовый функционал подобрали. Теперь ОС. Тут я думал намного меньше, можно даже сказать вообще не думал, выбор пал на недавно вышедший Debian 6 Squeeze.
Теперь, когда все вопросы решены (за пивом я сходил) пора пустить в ход руки.
Подготавливаем необходимые программы:
1) “Записывалка” дисков из образов, у меня Nero
2) Тепленький образ Debian 6 Squeeze.
3) SSH клиент, я использовал Putty.
Все скачали?.. Идем дальше. Заталкиваем свежезаписанный диск с Debian в привод сервера. И устанавливаем базовую систему (почему именно базовую? ответ прост – лучше установить самому, чем вычищать установленное). В ходе выбора функционала я сразу выбирал подходящие пакеты. Об их установке далее и более подробно.
Удаленное управление
Отлично решит эту задачу SSH. Debian из широкого репозитория предлагает нам пакет SSH.
Ставим.
aptitude install ssh
Тут я настраивать ничего не стал. Так как сеть сугубо домашняя и врагов быть не должно. Но не мешало бы добавить аутентификацию пользователя и сменить порт.
Отключаем от сервера монитор и клавиатуру с мышкой, они нам пригодятся на клиентском компе.
Идем на клиентскую машину, запускаем скачанный ранее клиент Putty. И в строке ip судорожно вбиваем адрес сервера. Окно после коннекта просит нас ввести имя и пароль пользователя Debian…
«Качалка» торрентов
Ура. Теперь нам не понадобится монитор! Можно выполнять операции с новенького компьютера (клиента). В качестве решения для поставленной задачи, я выбрал transmission. Поставил.
аptitude install transmission-daemon.
Тут без правки конфига уже не обойтись. И именно сдесь я столкнулся с первой трудностью, правка этого (/%username%/.config/transmission-daemon/settings.json) конфига не помогла. Нашел решение в документации “при запущенном transmission-daemon, редактируем конфиг, потом выполняем invoke-rc.d transmission-daemon reload” и о чудо это помогло.
В конфиге я поменял:
“download-dir”: — директория закачки
“rpc-port”: — порт на котором будет работать web-интерфейс
“incompelete-dir”: — папка для сохранения недокачанных торрентов
“incompelete-dir-enabled”: — включает предыдущую опцию
“rpc-whitelist-enabled”: — Включает список «белых» ip, поставил false
“rpc-authentication-enabled”: — Включает авторизацию по логину и паролю, поставил false
Перезапустил демона и перешел по адресу ip_servera:rpc-port/. Радости не было предела, я увидел красивое и простое web gui. Промежуточная цель выполнена.
Файловый сервер
Тут нам поможет samba. aptitude install samba smbclient smbfs
И снова правим конфиг (/etc/samba/smb.conf) до примерно такого вида:
[global]
workgroup = рабочая_группа
netbios name = имя_компьютера
server string = Описание
security = уровень доступа (share)
browseable = yes
[имя_папки]
path = какой путь открываем
comment = описание
readonly = только чтение?
guest ok = гостевой доступ
У меня вышло вот что:
[global]
workgroup = homelan
netbios name = server
server string = FileServer
security = share
browseable = yes
[torrents]
path = /home/torrents/
comment = Loaded torrents
readonly = No
guest ok = Yes
Cохраняем и перезапускаем самбу. Ищем в своей рабочей группе новые ресурсы. Нашли? Отлично все работает.
Итог
В результате за час я получил полноценный домашний сервер с базовым функционалом. Это еще далеко не все что можно сделать с сервером. Но об этом уже в следующих статьях…
Вместо предисловия
Началось все с того что на моей рабочей лошадке завис Photoshop. Компьютер я собирал давно и раньше даже не обращал на его комплектацию внимания. Но этот инцидент поверг меня в шок (после получаса не сохраненной работы). Но было уже поздно судорожно дергать мышкой и тут, у меня в котелке, зародилась маниакальная идея. “Собрать новый комп!” – снова и снова требовал мой мозг. Против мозга не попрешь было решено купить новый системный блок. Через несколько минут что- то щелкнуло в моей голове и я “побежал” в магазин. Там вдоволь накупил нужных деталей. Приехал домой, и через полчаса передо мной стоял новый блестящий системный блок. Маниакальная идея начала постепенно улетучиваться из моего мозга. Теперь стал вопрос, что делать со старым “Феррари”. Сначала КО подсказал мне “Не выкидывать же!”, с этим гениальным утверждением невозможно не согласится. Поэтому было решено сделать многофункциональный сервер…
Заинтересовался? Добро пожаловать под кат. Если же нет, ты знаешь что делать.
Action!
И тут закипела серая каша в моей голове. Я задавал сам себе разные вопросы “Что он (сервер) будет делать?”, “Какую ОС выбрать?”, “Где пиво?” и т. п.
Пора определится с функционалом…
Долго подумав я выдвинул следующие направления:
1) «Качалка» торрентов
2) Файловый сервер
Отлично! Базовый функционал подобрали. Теперь ОС. Тут я думал намного меньше, можно даже сказать вообще не думал, выбор пал на недавно вышедший Debian 6 Squeeze.
Теперь, когда все вопросы решены (за пивом я сходил) пора пустить в ход руки.
Подготавливаем необходимые программы:
1) “Записывалка” дисков из образов, у меня Nero
2) Тепленький образ Debian 6 Squeeze.
3) SSH клиент, я использовал Putty.
Все скачали?.. Идем дальше. Заталкиваем свежезаписанный диск с Debian в привод сервера. И устанавливаем базовую систему (почему именно базовую? ответ прост – лучше установить самому, чем вычищать установленное). В ходе выбора функционала я сразу выбирал подходящие пакеты. Об их установке далее и более подробно.
Удаленное управление
Отлично решит эту задачу SSH. Debian из широкого репозитория предлагает нам пакет SSH.
Ставим.
aptitude install ssh
Тут я настраивать ничего не стал. Так как сеть сугубо домашняя и врагов быть не должно. Но не мешало бы добавить аутентификацию пользователя и сменить порт.
Отключаем от сервера монитор и клавиатуру с мышкой, они нам пригодятся на клиентском компе.
Идем на клиентскую машину, запускаем скачанный ранее клиент Putty. И в строке ip судорожно вбиваем адрес сервера. Окно после коннекта просит нас ввести имя и пароль пользователя Debian…
«Качалка» торрентов
Ура. Теперь нам не понадобится монитор! Можно выполнять операции с новенького компьютера (клиента). В качестве решения для поставленной задачи, я выбрал transmission. Поставил.
аptitude install transmission-daemon.
Тут без правки конфига уже не обойтись. И именно сдесь я столкнулся с первой трудностью, правка этого (/%username%/.config/transmission-daemon/settings.json) конфига не помогла. Нашел решение в документации “при запущенном transmission-daemon, редактируем конфиг, потом выполняем invoke-rc.d transmission-daemon reload” и о чудо это помогло.
В конфиге я поменял:
“download-dir”: — директория закачки
“rpc-port”: — порт на котором будет работать web-интерфейс
“incompelete-dir”: — папка для сохранения недокачанных торрентов
“incompelete-dir-enabled”: — включает предыдущую опцию
“rpc-whitelist-enabled”: — Включает список «белых» ip, поставил false
“rpc-authentication-enabled”: — Включает авторизацию по логину и паролю, поставил false
Перезапустил демона и перешел по адресу ip_servera:rpc-port/. Радости не было предела, я увидел красивое и простое web gui. Промежуточная цель выполнена.
Файловый сервер
Тут нам поможет samba. aptitude install samba smbclient smbfs
И снова правим конфиг (/etc/samba/smb.conf) до примерно такого вида:
[global]
workgroup = рабочая_группа
netbios name = имя_компьютера
server string = Описание
security = уровень доступа (share)
browseable = yes
[имя_папки]
path = какой путь открываем
comment = описание
readonly = только чтение?
guest ok = гостевой доступ
У меня вышло вот что:
[global]
workgroup = homelan
netbios name = server
server string = FileServer
security = share
browseable = yes
[torrents]
path = /home/torrents/
comment = Loaded torrents
readonly = No
guest ok = Yes
Cохраняем и перезапускаем самбу. Ищем в своей рабочей группе новые ресурсы. Нашли? Отлично все работает.
Итог
В результате за час я получил полноценный домашний сервер с базовым функционалом. Это еще далеко не все что можно сделать с сервером. Но об этом уже в следующих статьях…
Blog by admin → Визуализация графов на JAVA
Все мы прекрасно знаем такую замечательную структуру данных как — графы. Множество самых разнообразных задач формулируется в терминах графов и многие могут быть решены с помощью этого мощнейшего инструмента. Мы знаем кучу алгоритмов на графах и различные их реализации. Все это здорово, но что если перед нами вдруг встанет задача отобразить этот самый граф? Нет проблем? А если вершин с десяток, а если сотни, а куча дуг между ними?
Не стоит беспокоиться, с решеним подобного рода задач отлично справится библиотека Jgraph.
image
Jgraph — это open source бибилиотека для визуализации графов, написанная на Java и полностью совместима со Swing`oм. Библиотека разработана с поддержкой различных представлений сущностей и их отношений, неориентированные грфы, ориентированные графы, мультиграфы, графы с параллельными дугами, гиперграфы. Позволяет использовать различные алгоритмы позиционирования вершин и прочие вкусности, подробности тут.
Элементарный граф с двумя вершинами можно визуализировать следующим образом.
Прежде всего добавляем зависимость в наш pom файл.
jgraph
jgraph
5.5.1
И далее нехитрая форма
В результать получим следующее симпатичное окошко
image
Если Jgraph не понравится советую обратить внимание на не менне мощную библиотеку JUNG.
Надеюсь перечисленные выше библиотеки пригодятся в вашей работе и станут украшением вашего проекта, а можеть быть и неотъемлемой частью функционала.
Не стоит беспокоиться, с решеним подобного рода задач отлично справится библиотека Jgraph.
image
Jgraph — это open source бибилиотека для визуализации графов, написанная на Java и полностью совместима со Swing`oм. Библиотека разработана с поддержкой различных представлений сущностей и их отношений, неориентированные грфы, ориентированные графы, мультиграфы, графы с параллельными дугами, гиперграфы. Позволяет использовать различные алгоритмы позиционирования вершин и прочие вкусности, подробности тут.
Элементарный граф с двумя вершинами можно визуализировать следующим образом.
Прежде всего добавляем зависимость в наш pom файл.
jgraph
jgraph
5.5.1
И далее нехитрая форма
package ru.md.habr.graph;
import javax.swing.JFrame;
import com.mxgraph.swing.mxGraphComponent;
import com.mxgraph.view.mxGraph;
public class HabrGraph extends JFrame {
public static void main(String[] args) {
HabrGraph frame = new HabrGraph();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(400, 320);
frame.setVisible(true);
}
public HabrGraph()
{
super("HabraGraph");
mxGraph graph = new mxGraph();
Object parent = graph.getDefaultParent();
graph.getModel().beginUpdate();
try
{
Object v1 = graph.insertVertex(parent, null, "Habra", 20, 20, 80, 30);
Object v2 = graph.insertVertex(parent, null, "Habr", 240, 150, 80, 30);
graph.insertEdge(parent, null, "Дуга", v1, v2);
}
finally
{
graph.getModel().endUpdate();
}
mxGraphComponent graphComponent = new mxGraphComponent(graph);
getContentPane().add(graphComponent);
}
}В результать получим следующее симпатичное окошко
image
Если Jgraph не понравится советую обратить внимание на не менне мощную библиотеку JUNG.
Надеюсь перечисленные выше библиотеки пригодятся в вашей работе и станут украшением вашего проекта, а можеть быть и неотъемлемой частью функционала.
Blog by admin → Тенденции развития интернет-СМИ
Новости — неотъемлемая часть нашей жизни. Но кому не интересно узнать, во что они превратятся в ближайшее время? Всего лишь проанализировав, мы запросто можем заглянуть в будущее и узнать, что станет с большинством новостных сайтов. Давайте этим и займёмся.
Мобильные платформы
Давняя мечта — электронные газеты уже становится явью. Шаги в этом направлении делает Apple. The Dialy это уже не довесок к сайту, чем являются сейчас большинство официальных приложений от крупных новостных порталов, а самостоятельное издание, создающееся специально для мобильной платформы. Подробней о The Dialy можно почитать в недавнем топике. Скоро у этого издания должны появится конкуренты и мы сможем наблюдать борьбу, в которой родится полноценный жанр мобильных газет. Надеюсь увидеть полноценную русское электронное издание. Но за качество нужно платить, поэтому мы сталкиваемся с другим новшеством.
Монетизация
«Платить за электронные новости? Вы в своём уме?» Уже скоро мы будем удивляться этой фразе. Мы покупаем газеты? Покупаем. Но за что мы платим? За бумагу и, собственно, за новости. Почему бы не применить такую логику и к электронным газетам? In-App Purchases позволят легко подписываться на газеты. Подписка уже реализована в The Dialy. Доллар в неделю небольшая сумма, но за счёт этого повышаются требования к материалом и гипотетически должно повышаться качество издания.
Упрощение дизайна
Буквально позавчера группа новостных сайтов, в которую входят Lifehacker и Kotaku сменила общий дизайн. Теперь на главной только статьи и рубрики. Нечто похожее делали New York Times с ChromeOS-версией сайта. Минимализм и новости, ничего лишнего и без нагромождений. По идее, таким образом идёт интеграция с планшетами. Вообще тенденция неплохая, возможно так и будут выглядеть новостные сайты в будущем. Но тот же лайфхакер перестал нормально работать в опере, надеюсь поправят.
Пользователь сам создаёт новости
На недавней презентации Android 3.0 CNN показывали своё приложение для планшетов. Одной из особенностей этого приложения является интеграция с сервисом iReport. Суть сервиса — сам себе репортёр. Такие сервисы существуют довольно давно, но с интеграцией с мобильными платформами получается довольно интересная штука. Видишь что-нибудь интересное? Пара тапов и ты уже можешь это выложить напрямую, минуя отдельное перекидывание фото или видео. Гипотетически получается быстро и удобно. Но захочет ли кто-нибудь это делать?
Подведём итог
Ближайшее будущее. Я встаю, потягиваюсь, за чашечкой кофе достаю планшет, покупаю себе свежий выпуск электронной газеты, читаю, смотрю встроенное видео и фотографии. Выхожу на улицу, вижу примечательное событие, щёлкаю фотографию планшетом и отправляю новость. Такое будущее уже наступило, но ещё не распространенно. Но скоро это станет массовым.
Мобильные платформы
Давняя мечта — электронные газеты уже становится явью. Шаги в этом направлении делает Apple. The Dialy это уже не довесок к сайту, чем являются сейчас большинство официальных приложений от крупных новостных порталов, а самостоятельное издание, создающееся специально для мобильной платформы. Подробней о The Dialy можно почитать в недавнем топике. Скоро у этого издания должны появится конкуренты и мы сможем наблюдать борьбу, в которой родится полноценный жанр мобильных газет. Надеюсь увидеть полноценную русское электронное издание. Но за качество нужно платить, поэтому мы сталкиваемся с другим новшеством.
Монетизация
«Платить за электронные новости? Вы в своём уме?» Уже скоро мы будем удивляться этой фразе. Мы покупаем газеты? Покупаем. Но за что мы платим? За бумагу и, собственно, за новости. Почему бы не применить такую логику и к электронным газетам? In-App Purchases позволят легко подписываться на газеты. Подписка уже реализована в The Dialy. Доллар в неделю небольшая сумма, но за счёт этого повышаются требования к материалом и гипотетически должно повышаться качество издания.
Упрощение дизайна
Буквально позавчера группа новостных сайтов, в которую входят Lifehacker и Kotaku сменила общий дизайн. Теперь на главной только статьи и рубрики. Нечто похожее делали New York Times с ChromeOS-версией сайта. Минимализм и новости, ничего лишнего и без нагромождений. По идее, таким образом идёт интеграция с планшетами. Вообще тенденция неплохая, возможно так и будут выглядеть новостные сайты в будущем. Но тот же лайфхакер перестал нормально работать в опере, надеюсь поправят.
Пользователь сам создаёт новости
На недавней презентации Android 3.0 CNN показывали своё приложение для планшетов. Одной из особенностей этого приложения является интеграция с сервисом iReport. Суть сервиса — сам себе репортёр. Такие сервисы существуют довольно давно, но с интеграцией с мобильными платформами получается довольно интересная штука. Видишь что-нибудь интересное? Пара тапов и ты уже можешь это выложить напрямую, минуя отдельное перекидывание фото или видео. Гипотетически получается быстро и удобно. Но захочет ли кто-нибудь это делать?
Подведём итог
Ближайшее будущее. Я встаю, потягиваюсь, за чашечкой кофе достаю планшет, покупаю себе свежий выпуск электронной газеты, читаю, смотрю встроенное видео и фотографии. Выхожу на улицу, вижу примечательное событие, щёлкаю фотографию планшетом и отправляю новость. Такое будущее уже наступило, но ещё не распространенно. Но скоро это станет массовым.
Blog by admin → Memcached тэги в PHP на скорую руку, без фрэймворков
Предисловие
На сегодняшний день, такой иснтрумент как memcached, является практически незаменимым в работе крупных проектов. Он облегчает нагрузку на сервера как в обычные дни, так и в моменты когда сайт подвергается хабраэфекту или похожим нашествиям посетителей.
Долгое время мне приходилось писать полностью линейный код, не используя OOP, за исключением классов для роботы с MySQL, Memcached, и сессиями. Все остальные классы состояли лишь из статических функций что по сути лишь заменяло, допустим, member_get_id() на Member::get_id();.
Единственное НО — такой стиль превратился в фабрику по производству велосипедов, и сегодня я бы хотел поделиться с Вами одним из них. А именно: простым классом для работы с memcached, поддерживающим функционал тэгов, или как их подругому называют (редко) — нэймспэйсов.
Линейное программирование меня привлекает тем что скорость его выполнения минимальна, а нагрузка такими не нужными мне вещами как рутингом, автоматическим поиском файлов с необходимым мне классом и т.д. полностью отсутствует, ведь я и так знаю что где находится, и мне не нужны десятки и сотни вещей которые будут пылиться где-то в далёкой папке.
Ближе к делу
Задача была проста — класс должен быть лёгким в использовании, и добавление ключа как в кэш так и в определённый тэг должно происходить одним вызовом функции set данного класса. Реализовал функцоинал таким образом:$mcache->set('news\p1', $data, $ttl);
Этот код добалвяет в кэш ключ news_p1 (заметьте, backslash превратился в underscore), а так-же добавляет это-же название ключа в тэг ns_news (префикс ns_ добавляется автоматически). В будущем если после редактирования или удаления какой-либо записи нужно будет удалить все кэшированные данные с ключём формата news*, просто выполняем:
$mcache->delete('news*');
Обратите внимание на звёздочку в конце ключа, именно она даёт понять методу delete что нам нужно удалить всё из тэга news, в противном случает метод попытается удалить именно ключ news.
Если нужно удалить какой-то определённый ключ, и информацию о нём из тэга, пишем так-же как писали в set:
$mcache->delete('news\p1');
Так-же возможно множественное удаление передачей нескольких параметров:
$mcache->delete('news*', 'members*', 'categories', 'comments\p1');
И что бы всё было в одном стиле, в методе get пишем также:
$mcache->get('news*');
или
$mcache->get('news\p1');
Важно знать: Первый вариант, где мы запрашиваем news*, вернёт не все данные из ключей которые содержатся в тэге news, а лишь список самих ключей.
Сам код
Код достаточно объёмный… разместил на первом попавшемся сурс-хостинге…Код класса находится тут
Возможные доработки
Есть идеи что можно изменить слегка… это добавить поддрежку более одного сервера, и кое-какой дебаггинг и еррор-хэндлинг…
Blog by admin → Новый виток развития отношений: фирма — работник, работник — фирма
Если кто-то думает, что я буду писать о Microsoft, Apple или Google, то он сильно ошибается. Моя статья посвящена немного другим компаниям, которые конечно же зарабатывают поменьше чем упомянутые мной гиганты IT рынка, но тем не менее достойны называться компанией, с большой буквы «К», а точней не компаниям, а рабочим отношениям между компаниями и работниками.
Итак, что ж это за новый виток развития и о каких компаниях я пишу? Мне кажется доживают последние деньки те времена, когда кодер, программист, верстальщик и прочие рабочие лошадки этого большого рынка под названием «IT» работали чисто на зарплату по контракту или в конвертах. Сейчас все больше и больше компаний по производству софта и «сайто-клепательные конторы» начинают давать своим работникам не просто зарплату, а какой-то процент от продаж. Примеров пока не много, но они есть, начиная от «themeforest» для верстальщиков, кодеров и web-дизайнеров и заканчивая «apple store» для суровых программистов. Хм, обещал не писать об Apple и все равно написал, ну ничего не могу поделать, Apple тоже пошел по этому пути.
Так в чем же суть этого нового витка и почему он должен быть успешней чем просто хорошая, а для очень умных очень хорошая зарплата? А суть в том, я так считаю, что переход на оплату процентом от продаж работодателю больше не нужно думать о том, как же заинтересовать работника не просто делать свою работу, а делать ее с душой, вкладывая всего себя, а не смотреть когда же наступят эти пресловутые 18.00. Работая по такой схеме, большие компании смогут отказаться от своих сложных схем оценки работников, расчета зарплаты и т.д. Достаточно будет лишь следить, чтоб в софте не было, простите сисек и блекджека, в виде «пасхального яйца». Хотя нет, лукавлю, кроме этого нужно еще следить за качеством софта, соблюдением всевозможных лицензий и т.д. Но ведь это проще, чем держать десятки отделов начиная от продакшена и заканчивая тестерами. Это все можно будет водрузить на плечи человека, который хочет зарабатывать больше чем среднестатистический работник IT индустрии (ах, как политкоректно я ушел от называния цифры).
Главный мой вопрос к компаниям, которые еще не начали делится со своими работниками процентом от продаж: «До коли?». Да, хочу оговорится, что я имею ввиду лишь те отрасли, где речь идет именно о продажах готовой продукции, а не сервиса или каких-нибудь больших приложений, в разработке которых участвуют десятки отделов. Я говорю о приложениях, которые способен написать один человек или небольшая группа людей.
На хабре часто читаю статьи о личном успехе автора после того, как он перестал работать на дядю и сам решил стать дядей. Не станет исключением и эта, расскажу в общих чертах свой путь от наемного работника до дяди, на которого работают люди не желающие становится дядями, да да именно не желающие, потому как это умные люди, но их все устраивает и больше ничего не нужно кроме айфона, макбук про и отпуска в Египте.
Так как история будет описана в общий чертах, то упущу важные моменты, ведь вдруг эту статью прочитает мое бывшее руководство, а мне не хочется, чтоб меня узнали, хотя ничего плохого я не совершил, но ведь сейчас подбиваю работников увольняться и распускать крылья.
Итак, история. Был я обычным работником на обычной фирме Х. Не могу сказать, что я был передовиком производства, но и не пас задних точно. Тут конечно нужно оговорится, что я не был передовиком в плане внедрения новых технологий производства и оптимизации, так как, к сожалению у нас на работе это не особо поощрялось, точней поощрялось, но не не материально, а уменьшением платы. Смешно. Научился делать быстрей? Оптимизировал? Ну получай меньше оплату на 20%. Поэтому я оптимизировал конечно свою работу, но не трубил это во всеуслышание, а спокойно сидел и зарабатывал деньги, пока кто-то гордо называл себя передовиком и получал копеечные бонусы и похвалу от начальства (не более!). И вот настал тот час, когда мне это все надоело. Надоело быть деталькой и я решил, что пора самому начинать работать. Первым делом нашел 1 человека, без которого работать было бы не возможно, так как я не умею делать его работу. Нашел фирму W, которая платила 50% от продаж и начал организовывать уже свою небольшую фирму. В данным момент на меня трудится 3 человека, полностью довольных своим положением, зарплатой и возможностью работать без всяких ограничений, но кроме них доволен и я, и компания W, которая получает софт, продающийся от ее имени на очень высоком уровне.
Так вот к чему это все было? А к тому, что будущее производства мелкого софта в том, что большие компании просто начнут делится, платить не ставку работникам, а процент от продаж. Вот тогда и только тогда, я считаю, уровень софта выйдет на качественно иной уровень, так как каждая, даже самая мелкая деталька большого механизма будет знать, что чем лучше она будет работать, тем больше денег будет зарабатывать. И это не просто громкие слова, которые слушает каждый человек на собеседовании, это реальная возможность.
Итак, что ж это за новый виток развития и о каких компаниях я пишу? Мне кажется доживают последние деньки те времена, когда кодер, программист, верстальщик и прочие рабочие лошадки этого большого рынка под названием «IT» работали чисто на зарплату по контракту или в конвертах. Сейчас все больше и больше компаний по производству софта и «сайто-клепательные конторы» начинают давать своим работникам не просто зарплату, а какой-то процент от продаж. Примеров пока не много, но они есть, начиная от «themeforest» для верстальщиков, кодеров и web-дизайнеров и заканчивая «apple store» для суровых программистов. Хм, обещал не писать об Apple и все равно написал, ну ничего не могу поделать, Apple тоже пошел по этому пути.
Так в чем же суть этого нового витка и почему он должен быть успешней чем просто хорошая, а для очень умных очень хорошая зарплата? А суть в том, я так считаю, что переход на оплату процентом от продаж работодателю больше не нужно думать о том, как же заинтересовать работника не просто делать свою работу, а делать ее с душой, вкладывая всего себя, а не смотреть когда же наступят эти пресловутые 18.00. Работая по такой схеме, большие компании смогут отказаться от своих сложных схем оценки работников, расчета зарплаты и т.д. Достаточно будет лишь следить, чтоб в софте не было, простите сисек и блекджека, в виде «пасхального яйца». Хотя нет, лукавлю, кроме этого нужно еще следить за качеством софта, соблюдением всевозможных лицензий и т.д. Но ведь это проще, чем держать десятки отделов начиная от продакшена и заканчивая тестерами. Это все можно будет водрузить на плечи человека, который хочет зарабатывать больше чем среднестатистический работник IT индустрии (ах, как политкоректно я ушел от называния цифры).
Главный мой вопрос к компаниям, которые еще не начали делится со своими работниками процентом от продаж: «До коли?». Да, хочу оговорится, что я имею ввиду лишь те отрасли, где речь идет именно о продажах готовой продукции, а не сервиса или каких-нибудь больших приложений, в разработке которых участвуют десятки отделов. Я говорю о приложениях, которые способен написать один человек или небольшая группа людей.
На хабре часто читаю статьи о личном успехе автора после того, как он перестал работать на дядю и сам решил стать дядей. Не станет исключением и эта, расскажу в общих чертах свой путь от наемного работника до дяди, на которого работают люди не желающие становится дядями, да да именно не желающие, потому как это умные люди, но их все устраивает и больше ничего не нужно кроме айфона, макбук про и отпуска в Египте.
Так как история будет описана в общий чертах, то упущу важные моменты, ведь вдруг эту статью прочитает мое бывшее руководство, а мне не хочется, чтоб меня узнали, хотя ничего плохого я не совершил, но ведь сейчас подбиваю работников увольняться и распускать крылья.
Итак, история. Был я обычным работником на обычной фирме Х. Не могу сказать, что я был передовиком производства, но и не пас задних точно. Тут конечно нужно оговорится, что я не был передовиком в плане внедрения новых технологий производства и оптимизации, так как, к сожалению у нас на работе это не особо поощрялось, точней поощрялось, но не не материально, а уменьшением платы. Смешно. Научился делать быстрей? Оптимизировал? Ну получай меньше оплату на 20%. Поэтому я оптимизировал конечно свою работу, но не трубил это во всеуслышание, а спокойно сидел и зарабатывал деньги, пока кто-то гордо называл себя передовиком и получал копеечные бонусы и похвалу от начальства (не более!). И вот настал тот час, когда мне это все надоело. Надоело быть деталькой и я решил, что пора самому начинать работать. Первым делом нашел 1 человека, без которого работать было бы не возможно, так как я не умею делать его работу. Нашел фирму W, которая платила 50% от продаж и начал организовывать уже свою небольшую фирму. В данным момент на меня трудится 3 человека, полностью довольных своим положением, зарплатой и возможностью работать без всяких ограничений, но кроме них доволен и я, и компания W, которая получает софт, продающийся от ее имени на очень высоком уровне.
Так вот к чему это все было? А к тому, что будущее производства мелкого софта в том, что большие компании просто начнут делится, платить не ставку работникам, а процент от продаж. Вот тогда и только тогда, я считаю, уровень софта выйдет на качественно иной уровень, так как каждая, даже самая мелкая деталька большого механизма будет знать, что чем лучше она будет работать, тем больше денег будет зарабатывать. И это не просто громкие слова, которые слушает каждый человек на собеседовании, это реальная возможность.