Прежде чем обвинять меня в незнании азов, сначала ответьте пожалуйста на вопрос, который я задал выше. Что будет с файлом, если Вы сделали flock, пишите в этот файл, и тут произошла исключительная ситуация и Ваш скрипт прервал работу?
Далее. Я не говорил что файловая система не предназначена для хранения. С чего Вы такое взяли? Как раз наоборот, файловая система предназначена исключительно для хранения файлов, но не более чем. Я лишь утверждаю, что файловая система сама по себе не предназначена для безопасного управления файлами при условии конкурентного доступа на запись к одним и тем же файлам со стороны разных процессов. Она слишком низкоуровнева для этого, по определению.
Большинство языков программирования включают в себя функции или методы, которые сразу позволяют задавать пермиссии при создании нового файла. Но в статья я это не упомянул, так как не везде это нужно делать (например, для Windows Desktop applications).
Про права директории на создание-удаление файлов. Если Вы имеете в виду Unix/Linux, то там все устроено так. Если права директории не позволяют создавать в ней файлы, но один из файлов имеет права на запись, то можно в другой, временной директории создать новый файл, затем переименовать его в ту закрытую для создания файлов директорию, заменив старый. То есть проблем в нашем случае - не будет, это и теоретически так, и на практике проверено неоднократно.
Мое мнение - если есть конфигурационный файл, и много процессов его могут изменять одновременно, то в этом случае лучше вообще отказаться от использования конфигурационного файла в пользу базы данных, или другого специализированного механизма.
Описанный мной в статье пример в первую очередь актуален для систем, которые пишут в файл только из одного процесса, например, Desktop applications.
Да, это конечно же не единственный способ. Это одна из простейших альтернатив прямой записи в файл, но в то же время более безопасная.
Про права доступа. При переименовании идет, по сути, затирание старого файла новым, поэтому, при создании нового файла нужно ему давать те же пермиссии, что и старому (конечно, помимо всего прочего, право на запись должно быть обязательно, как и в случае, если нужно просто писать в файл напрямую, старым способом). Тогда при переименовании проблем с правами доступа не будет.
Вопрос на засыпку. Что будет с файлом, если Вы сделали flock, пишите в этот файл, и тут произошла исключительная ситуация, например из-за того, что на диске нет места?
Понимаете, всему свое время и место под Солнцем. Если возможна множественная конкурентная запись в один ресурс из нескольких потоков, то нужно использовать предназначенные для этого инструменты. В идеале - базу данных с поддержкой транзакций. Ведь файловая система сама по себе не предназначена для таких задач, поэтому более правильно было бы, чтобы запись делалась из одного процесса-менеджера, как это делается в случае с базой данных.
Про творчество Котерова: для начинающих - неплохо, такую литературу тоже можно использовать для одноразового прочтения, но спек это не заменит, и я всем рекомендую изучать технологии и языки программирования по родным спекам, туториалам, и профильным статьям от разработчиков и признанных авторитетных экспертов.
Минус Вам я ставить не буду. Так как Вы еще не разобрались, к сожалению. Потом разберетесь, мне спасибо скажете.
Полностью аналогично. Графика сна/бодрствования вообще нет никакого (хотя, наверное, это плохо), сплю когда как, продолжительность сна от 4 до 10 часов, причем к суткам это не привязано.
Я согласен, нельзя достигнуть потолка, прежде всего из-за инфляции денег. Доллар постепенно падает, и зарплата постепенно повышается. Работающие на дядю довольны, "рост" есть :)
1. Не факт что нефть "ископаемая, созданная природой за миллионы лет". Это же не каменный уголь, который как раз и есть остатки растений... Еще Менделеев выдвигал гипотезу, что нефть имеет неорганическое происхождение. Некоторые гипотезы идут дальше, мол нефти полно, и под земной корой расположен слой спрессованной нефтесодержащей субстанции (этим кстати объясняется, что исчерпанные нефтяные месторождения со временем, пусть и медленно, но восстанавливаются). Это похоже на правду.
2. То что цена за баррель постоянно повышается, объясняется прежде всего инфляцией доллара, точно не помню, около 7% в год. Сравните сколько Вы зарабатывали (платили за квартиру, и т.д., если считать в долларах) в 2003 году, и сколько зарабатываете (платите за квартиру) сейчас. То есть сейчас доллар уже не тот как несколько лет назад, и уж тем более не тот, что 10-15 лет назад. Также нефтяным магнатам выгодно урерживать высокую стоимость барреля, чтобы банально больше зарабатывать.
3. Альтернативных источников энергии уже придумано просто немеряно. И их можно сделать очень дешевыми, и пустить в массы. Но пока это не делается, так как это экономически невыгодно мировым элитам (нефтяным магнатам). Как только нефть, расположенную недалеко от поверхности Земли, всю выкачают, челевечество перейдет на эти альтернативные источники энергии. А нефть будут продолжать добывать в намного меньших масштабах из глубоких и сверхглубоких скважин, но уже не будут использовать как топливо (это будет невыгодно), а будут пускать на производство различных полезных штук типа полимеров и т.д., ну может на смазку еще... В общем, все будет, как и говорил Менделеев про "сжигание ассигнаций в печи".
Там же и другие статьи, как выигрывать проекты. Ну вот, например: "Фриланс. Заказчик, выбери меня, я лучший!" http://weblancer.net/articles/7.html
Слог у меня конечно не очень, прошу извинить, я же технарь все-таки... Но постарался донести. Сейчас новое поколение фрилансеров, вот Станислав например, доносят эту же информацию более доходчиво, за что Станиславу и остальным большой респект.
P.S. По статистике, набранной мной на Weblancer.net за последние 3 года, получается что я выигрываю примерно 40-50% всех проектов, к которым оставляю ставки, несмотря на конкуренцию и демпинг новичков. Наверное просто в свое время повезло выбрать правильную стратегию (пригодился многолетний опыт работы на Elance.com с 2002 по 2005 годы совместно с мастерами-сейлсами, опыт жесткой конкуренции с индусами и т.д.)... Наверное это и есть главное - понять принципы жизни фриланс-бирж, проанализировать это, выработать для себя оптимальную стратегию, и действовать.
Дело в том, что оДеск является посредником несколько более высокого порядка, чем обычная фриланс-биржа, и также берет на себя часть ответственности, пусть и небольшую.
При работе на оДеске рисков несколько меньше по сравнению с классическими фриланс-биржами. Хотя бы потому, что заказчики - строго не анонимны для оДеска, пре регистрации указывают все свои контактные денные, указывают номера счетов, кредитки(ок). Также подписывают с оДеском договор.
Как на фриланс.ру я не знаю к сожалению... наверняка есть, и не один, иначе работа арбитража была бы не качественной.
Кстати, сразу скажу - одного эксперта сервису недостаточно, так как никому невозможно владеть на уровне мастера всеми языками программирования, навыками веб-дизайна, версткой, физикой-математикой, иностранными языками, методами SEO и т.д. - то есть всем тем, по каким областям бывают фриланс-проекты, и соответственно разбирательства с привлечением экспертов. Поэтому сервисы часто, при необходимости, нанимают независимых авторитетных экспертов со стороны.
Арбитраж дополнительно нанимает независимого технического эксперта по профилю проекта.
Эксперт проводит анализ того что сделано, и готовит отчет о том, соответствует ли работа поставленной задаче, на сколько примерно процентов выполнено, дают оценку качеству, и т.д.
Если с оценкой эксперта какая-либо из сторон не согласна, то берется другой эксперт, и т.д.
Арбитраж затем принимает решение в ту или иную сторону на основании а) договора б) материалов, предоставленных заказчиком и исполнителем и в) отчета эксперта.
(по крайней мере так на веблансере, там кстати можно посмотреть примеры отчетов экспертов на пару мелких проектов, по которым было разбирательство)
На http://weblancer.net сервис безопасной сделки (escrow), на данный момент бесплатен, то есть нет комиссии (раньше была комиссия 5%, сейчас это отменено).
Я заинтересовался вопросом, насколько быстро идет восстановление окружающей среды после таких катастроф как в Чернобыле, и опасно ли там находиться спустя N лет. Набрал в гугле "современная хиросима". Вот пара ссылок:
Сейчас там живет более миллиона человек, административный центр, шумный современный город, во многом похожий на любой другой в Японии. Так что очень надеюсь, что и Чернобыльская зона лет через 30-40 заживет нормальной жизнью, как и современная Хиросима.
"Слабо заложить под свою блестящую идею свою квартиру или написать толковый бизнес-план и сходить с ним не к инвестору, а в коммерческий банк за кредитом?"
А что делать, если нет своей квартиры? Начать стартап, взяв кредит под свою почку?
Ну ладно, допустим, своя квартира есть...
Но что делать, если кредит возьмете, и тут болезнь случится? Стартапер может заболеть или попасть в аварию, и проваляться полгода-год в больнице. И что делать? Прощай, квартира... Ладно если стартапер сам живет, а если у него есть семья, дети?
Далее. Если взят кредит, то появятся, пусть и на время, большие деньги. Вопрос в том, что при появлении крупной суммы человек временно станет на порядок богаче окружающих. Что это значит? Как пример, моментально появляется какой-либо родственник, которому нужно помочь, или дать на операцию, или еще что. Не будем говорить о том, что сами по себе деньги могут украсть, их могут отобрать вымогатели, могут сделать подставу, в конце концов деньги могут просто обесцениться из-за очередного дефолта. Пока есть квартира, но нет денег - человека не трогают, но если есть деньги - он в центре внимания, и не только хороших людей.
Наличие своей квартиры - это если не вопрос выживания, то вопрос минимального благополучия для себя и своей семьи. Ей рисковать нельзя. Вот если есть несколько квартир - тогда под одну из них кредит на стартап взять вполне можно.
Для себя я вывел правило - если и рисковать, то только тем, без чего можно жить.
Сожалею, но лишь самые примитивные боты не понимают JS. Нормальный бот в своей работе использует движок обычного браузера, например под Windows – IE, или под Linux – FF.
Мой коллега даже фреймворк сделал подобный (и выложил для свободного скачивания), с помощью которого можно писать разные парсеры-грабберы, в том числе для страниц со сложными обфускаченными AJAX формами.
Этот фреймворк написан на .NET, и позволяет автоматом запускать IE, настраивает параметры соединения, делает заданные запросы... То есть грузится страница как бы из IE, и в нужное место страницы "кликается" мышь, точнее, эмулируется клик мыши, или в нужное поле "вводится" текст. И все, сабмит на форму пошел, никакая обфускация JS кода не поможет.
И таких решений наверняка множество. Только отсечение проксей и анализ статистики может помочь (анализ частоты реквестов с заданных IP адресов).
Тоже начал то ли с 4-го, то ли с 5-го класса. Правда, тогда доступно было только МК-61. Собирал программы, переписывал в библиотеке из журнала "Наука и Жизнь"...
А из журнала "Техника молодежи" как-то переписал суперигру "Лунолет", понравилось. Убив где-то недели две, сумел сократить ее на 2 шага (байта). Кто-то спросит, а зачем это нужно? Все просто. Вообще вся память в МК-61 - всего лишь 105 шагов (байт), и выделить место, чтобы дописать в игру новых фич, очень хотелось... В общем, ЕГГОГ до сих пор вспоминается :)
Согласен насчет "доказать обратное", я выразил свою мысль несколько жестковато, признаю. Попробую раскрыть мысль корректнее.
Имелось в виду следующее - кто-то может привести хоть_один_пример, когда применяется кодогенерация, и без этого сгенерированного кода нельзя обойтись для решения этой же задачи. Это и будет доказательством. Хоть один пример привести ведь несложно?
А насчет Вашего примера-утверждения "код нужно генерировать автоматически"... доказать обратное крайне просто. А именно. Чтобы генерировать код программы автоматом, нужно иметь генератор кода. Генератор кода - это тоже программа, которая также имеет свой код. Если Ваше утверждение про "по-другому это сделать нельзя" верно, тогда и этот код кодогенератора тоже должен быть сгенерирован автоматически, уже другим кодогенератором. Получаем зацикливание. Вывод - если следовать Вашему утверждению, никакую программу сделать невозможно. Конечно, остается еще вариант с НЛО, которое дало миру первичный кодогенератор... но это уже другая тема.
Далее. Я не говорил что файловая система не предназначена для хранения. С чего Вы такое взяли? Как раз наоборот, файловая система предназначена исключительно для хранения файлов, но не более чем. Я лишь утверждаю, что файловая система сама по себе не предназначена для безопасного управления файлами при условии конкурентного доступа на запись к одним и тем же файлам со стороны разных процессов. Она слишком низкоуровнева для этого, по определению.
Про права директории на создание-удаление файлов. Если Вы имеете в виду Unix/Linux, то там все устроено так. Если права директории не позволяют создавать в ней файлы, но один из файлов имеет права на запись, то можно в другой, временной директории создать новый файл, затем переименовать его в ту закрытую для создания файлов директорию, заменив старый. То есть проблем в нашем случае - не будет, это и теоретически так, и на практике проверено неоднократно.
Описанный мной в статье пример в первую очередь актуален для систем, которые пишут в файл только из одного процесса, например, Desktop applications.
Про права доступа. При переименовании идет, по сути, затирание старого файла новым, поэтому, при создании нового файла нужно ему давать те же пермиссии, что и старому (конечно, помимо всего прочего, право на запись должно быть обязательно, как и в случае, если нужно просто писать в файл напрямую, старым способом). Тогда при переименовании проблем с правами доступа не будет.
Понимаете, всему свое время и место под Солнцем. Если возможна множественная конкурентная запись в один ресурс из нескольких потоков, то нужно использовать предназначенные для этого инструменты. В идеале - базу данных с поддержкой транзакций. Ведь файловая система сама по себе не предназначена для таких задач, поэтому более правильно было бы, чтобы запись делалась из одного процесса-менеджера, как это делается в случае с базой данных.
Про творчество Котерова: для начинающих - неплохо, такую литературу тоже можно использовать для одноразового прочтения, но спек это не заменит, и я всем рекомендую изучать технологии и языки программирования по родным спекам, туториалам, и профильным статьям от разработчиков и признанных авторитетных экспертов.
Минус Вам я ставить не буду. Так как Вы еще не разобрались, к сожалению. Потом разберетесь, мне спасибо скажете.
1. Не факт что нефть "ископаемая, созданная природой за миллионы лет". Это же не каменный уголь, который как раз и есть остатки растений... Еще Менделеев выдвигал гипотезу, что нефть имеет неорганическое происхождение. Некоторые гипотезы идут дальше, мол нефти полно, и под земной корой расположен слой спрессованной нефтесодержащей субстанции (этим кстати объясняется, что исчерпанные нефтяные месторождения со временем, пусть и медленно, но восстанавливаются). Это похоже на правду.
2. То что цена за баррель постоянно повышается, объясняется прежде всего инфляцией доллара, точно не помню, около 7% в год. Сравните сколько Вы зарабатывали (платили за квартиру, и т.д., если считать в долларах) в 2003 году, и сколько зарабатываете (платите за квартиру) сейчас. То есть сейчас доллар уже не тот как несколько лет назад, и уж тем более не тот, что 10-15 лет назад. Также нефтяным магнатам выгодно урерживать высокую стоимость барреля, чтобы банально больше зарабатывать.
3. Альтернативных источников энергии уже придумано просто немеряно. И их можно сделать очень дешевыми, и пустить в массы. Но пока это не делается, так как это экономически невыгодно мировым элитам (нефтяным магнатам). Как только нефть, расположенную недалеко от поверхности Земли, всю выкачают, челевечество перейдет на эти альтернативные источники энергии. А нефть будут продолжать добывать в намного меньших масштабах из глубоких и сверхглубоких скважин, но уже не будут использовать как топливо (это будет невыгодно), а будут пускать на производство различных полезных штук типа полимеров и т.д., ну может на смазку еще... В общем, все будет, как и говорил Менделеев про "сжигание ассигнаций в печи".
Там же и другие статьи, как выигрывать проекты. Ну вот, например: "Фриланс. Заказчик, выбери меня, я лучший!" http://weblancer.net/articles/7.html
Слог у меня конечно не очень, прошу извинить, я же технарь все-таки... Но постарался донести. Сейчас новое поколение фрилансеров, вот Станислав например, доносят эту же информацию более доходчиво, за что Станиславу и остальным большой респект.
P.S. По статистике, набранной мной на Weblancer.net за последние 3 года, получается что я выигрываю примерно 40-50% всех проектов, к которым оставляю ставки, несмотря на конкуренцию и демпинг новичков. Наверное просто в свое время повезло выбрать правильную стратегию (пригодился многолетний опыт работы на Elance.com с 2002 по 2005 годы совместно с мастерами-сейлсами, опыт жесткой конкуренции с индусами и т.д.)... Наверное это и есть главное - понять принципы жизни фриланс-бирж, проанализировать это, выработать для себя оптимальную стратегию, и действовать.
При работе на оДеске рисков несколько меньше по сравнению с классическими фриланс-биржами. Хотя бы потому, что заказчики - строго не анонимны для оДеска, пре регистрации указывают все свои контактные денные, указывают номера счетов, кредитки(ок). Также подписывают с оДеском договор.
Кстати, сразу скажу - одного эксперта сервису недостаточно, так как никому невозможно владеть на уровне мастера всеми языками программирования, навыками веб-дизайна, версткой, физикой-математикой, иностранными языками, методами SEO и т.д. - то есть всем тем, по каким областям бывают фриланс-проекты, и соответственно разбирательства с привлечением экспертов. Поэтому сервисы часто, при необходимости, нанимают независимых авторитетных экспертов со стороны.
Эксперт проводит анализ того что сделано, и готовит отчет о том, соответствует ли работа поставленной задаче, на сколько примерно процентов выполнено, дают оценку качеству, и т.д.
Если с оценкой эксперта какая-либо из сторон не согласна, то берется другой эксперт, и т.д.
Арбитраж затем принимает решение в ту или иную сторону на основании а) договора б) материалов, предоставленных заказчиком и исполнителем и в) отчета эксперта.
(по крайней мере так на веблансере, там кстати можно посмотреть примеры отчетов экспертов на пару мелких проектов, по которым было разбирательство)
"Тема: Хиросима 1945 и сейчас"
http://talks.guns.ru/forummessage/33/303…
"Город Хиросима, туры отдых и отели в Хиросиме."
http://www.galaxy-tour.ru/?an=city&count…
Сейчас там живет более миллиона человек, административный центр, шумный современный город, во многом похожий на любой другой в Японии. Так что очень надеюсь, что и Чернобыльская зона лет через 30-40 заживет нормальной жизнью, как и современная Хиросима.
А что делать, если нет своей квартиры? Начать стартап, взяв кредит под свою почку?
Ну ладно, допустим, своя квартира есть...
Но что делать, если кредит возьмете, и тут болезнь случится? Стартапер может заболеть или попасть в аварию, и проваляться полгода-год в больнице. И что делать? Прощай, квартира... Ладно если стартапер сам живет, а если у него есть семья, дети?
Далее. Если взят кредит, то появятся, пусть и на время, большие деньги. Вопрос в том, что при появлении крупной суммы человек временно станет на порядок богаче окружающих. Что это значит? Как пример, моментально появляется какой-либо родственник, которому нужно помочь, или дать на операцию, или еще что. Не будем говорить о том, что сами по себе деньги могут украсть, их могут отобрать вымогатели, могут сделать подставу, в конце концов деньги могут просто обесцениться из-за очередного дефолта. Пока есть квартира, но нет денег - человека не трогают, но если есть деньги - он в центре внимания, и не только хороших людей.
Наличие своей квартиры - это если не вопрос выживания, то вопрос минимального благополучия для себя и своей семьи. Ей рисковать нельзя. Вот если есть несколько квартир - тогда под одну из них кредит на стартап взять вполне можно.
Для себя я вывел правило - если и рисковать, то только тем, без чего можно жить.
Мой коллега даже фреймворк сделал подобный (и выложил для свободного скачивания), с помощью которого можно писать разные парсеры-грабберы, в том числе для страниц со сложными обфускаченными AJAX формами.
Этот фреймворк написан на .NET, и позволяет автоматом запускать IE, настраивает параметры соединения, делает заданные запросы... То есть грузится страница как бы из IE, и в нужное место страницы "кликается" мышь, точнее, эмулируется клик мыши, или в нужное поле "вводится" текст. И все, сабмит на форму пошел, никакая обфускация JS кода не поможет.
И таких решений наверняка множество. Только отсечение проксей и анализ статистики может помочь (анализ частоты реквестов с заданных IP адресов).
А из журнала "Техника молодежи" как-то переписал суперигру "Лунолет", понравилось. Убив где-то недели две, сумел сократить ее на 2 шага (байта). Кто-то спросит, а зачем это нужно? Все просто. Вообще вся память в МК-61 - всего лишь 105 шагов (байт), и выделить место, чтобы дописать в игру новых фич, очень хотелось... В общем, ЕГГОГ до сих пор вспоминается :)
P.S. - я как раз сторонник использования метаданных, а кодогенерацией перестал баловаться где-то в 2002 году.
Имелось в виду следующее - кто-то может привести хоть_один_пример, когда применяется кодогенерация, и без этого сгенерированного кода нельзя обойтись для решения этой же задачи. Это и будет доказательством. Хоть один пример привести ведь несложно?
А насчет Вашего примера-утверждения "код нужно генерировать автоматически"... доказать обратное крайне просто. А именно. Чтобы генерировать код программы автоматом, нужно иметь генератор кода. Генератор кода - это тоже программа, которая также имеет свой код. Если Ваше утверждение про "по-другому это сделать нельзя" верно, тогда и этот код кодогенератора тоже должен быть сгенерирован автоматически, уже другим кодогенератором. Получаем зацикливание. Вывод - если следовать Вашему утверждению, никакую программу сделать невозможно. Конечно, остается еще вариант с НЛО, которое дало миру первичный кодогенератор... но это уже другая тема.