Никто не говорит, что goto — это безусловно плохо. Есть много задач, в которых применение goto дает вполне весомый выигрыш. Например, конечные автоматы.
Другое дело, что, как правильно заметил товарищ chiaroscuro, программирующая часть человечества уже давно придумала более высокоуровневые абстракции чем «метки+goto». Например, вызов функции с оптимизацией хвостовой рекурсии.
Подобная абстракция позволяет заменять циклы на рекурсию, а условные или безусловные переходы на вызов функции. И конечный код получается оптимизирован ничуть не хуже, чем при использовании goto, но значительно выигравает в легкости чтения и понимания.
schroot+sbuild тоже распаковывает каждый раз чистую систему. Точнее не распаковывает, а делает LVM-snapshot, что сильно быстрее по сравнению с pbuilder-ом.
Я думаю, наоборот, заниженная или завышенная самооценка — это симптомы ЧСВ. И в том, и в другом случае, личность пытается себя аггресивно или пассивно защищать.
Я тоже грешил на железо. Но во-первых, в гугле находится немало подобных багрепортов еще с древних времен. Во-вторых, сейчас на ext3 все работает как часы.
А я вот недавно словил на XFS ошибку типа "Filesystem "dm-0": Corruption of in-memory data detected. Shutting down filesystem: dm-0". Данные при этом не страдают, но файловая система автоматически отмонтируется, что приводит к печальным результатам на сервере. После суток борьбы, данные были забэкаплены, а раздел переформатирован на ext3. Теперь с опаской отношусь к XFS, хотя 4 года использовал её почти на полусотне серверов.
Хотелось бы увидеть изменения после каждого шага оптмизации. Спешу предположить, что добиться того же результата можно было бы одним переходом на upstart.
Да нет никаких плюсов. Можно точно так же писать на ruby:
irb(main):001:0> class A; end
=> nil
irb(main):002:0> B = A.clone
=> B
irb(main):003:0> class B; def hello; puts "hello"; end; end
=> nil
irb(main):004:0> B.new.hello
hello
=> nil
irb(main):005:0> A.hello
NoMethodError: undefined method `hello' for A:Class
from (irb):5
А теперь найди 10 отличий между class B < A и B = A.clone.
Кроме того не забывайте правильно использовать опцию :include в ваших запросах для подгрузки ассоциаций
Post.find(:all, :include => :user)
Это сократит число запросов в 2 раза
В новых версиях (начиная с 2.1.x), такой поиск будет делаться в два запроса: сначала выборка всех id для модели Post, а потом подгрузка ассоциации запросом select * from users where post_id IN (N, N, N, ..., N). Исключение будет только для conditions, где используются поля из ассоциации.
У нас 5 выделенных серверов в keyweb.ru. Сетка постоянно падает внутри ДЦ. Новый сервер подключали к локалке в течении месяца.
Винты на серверах стоят всех мастей, сыпятся часто. Запросто могут заменить один посыпавшийся винт на другой посыпавшийся. Так что без RAID1 лучше даже не соваться.
Русский саппорт невменяемый. Случись какие проблемы и проект может оказаться в дауне на неделю (приблизительно столько занимает переписка с саппортом по каким-то проблемам, которые не решаются простым ребутом).
Может конечно с VPS у них ситуация другая, но после такого даже пробовать не хочется.
Я 4 месяца назад мигрировал со slicehost.com на linode.com. Оба хостинга очень стабильны. Удобные панели управления и куча полезных фич. Переехал на linode.com исключительно из-за более дешевых цен (512mb RAM — 40$ на slicehost.com и 30$ на linode.com).
2. Хотелось бы мини-howto по SPH_MATCH_FULLSCAN.
Другое дело, что, как правильно заметил товарищ chiaroscuro, программирующая часть человечества уже давно придумала более высокоуровневые абстракции чем «метки+goto». Например, вызов функции с оптимизацией хвостовой рекурсии.
Подобная абстракция позволяет заменять циклы на рекурсию, а условные или безусловные переходы на вызов функции. И конечный код получается оптимизирован ничуть не хуже, чем при использовании goto, но значительно выигравает в легкости чтения и понимания.
"Filesystem "dm-0": Corruption of in-memory data detected. Shutting down filesystem: dm-0"
. Данные при этом не страдают, но файловая система автоматически отмонтируется, что приводит к печальным результатам на сервере. После суток борьбы, данные были забэкаплены, а раздел переформатирован на ext3. Теперь с опаской отношусь к XFS, хотя 4 года использовал её почти на полусотне серверов.А разве в scheme отменили
set!
?Мне таки кажется, что scheme, так же как и lisp — мультипарадигменный язык.
2. Коренными бывают зубы, а раздел — корневым.
irb(main):001:0> class A; end
=> nil
irb(main):002:0> B = A.clone
=> B
irb(main):003:0> class B; def hello; puts "hello"; end; end
=> nil
irb(main):004:0> B.new.hello
hello
=> nil
irb(main):005:0> A.hello
NoMethodError: undefined method `hello' for A:Class
from (irb):5
А теперь найди 10 отличий между
class B < A
иB = A.clone
.В новых версиях (начиная с 2.1.x), такой поиск будет делаться в два запроса: сначала выборка всех
id
для моделиPost
, а потом подгрузка ассоциации запросомselect * from users where post_id IN (N, N, N, ..., N)
. Исключение будет только дляconditions
, где используются поля из ассоциации.У нас 5 выделенных серверов в keyweb.ru. Сетка постоянно падает внутри ДЦ. Новый сервер подключали к локалке в течении месяца.
Винты на серверах стоят всех мастей, сыпятся часто. Запросто могут заменить один посыпавшийся винт на другой посыпавшийся. Так что без RAID1 лучше даже не соваться.
Русский саппорт невменяемый. Случись какие проблемы и проект может оказаться в дауне на неделю (приблизительно столько занимает переписка с саппортом по каким-то проблемам, которые не решаются простым ребутом).
Может конечно с VPS у них ситуация другая, но после такого даже пробовать не хочется.