metaclass: (Default)
metaclass ([personal profile] metaclass) wrote2013-08-14 03:28 am

Meine ehre heißt treue

Вместо того, чтобы писать на хипстеруби хипстовебопердени или хотя бы изобретать систему типов для нового кодогенератора за деньги - сижу обслуживаю базы данных и софт на белорусских госпредприятиях в свободное от работы время.
Кроме меня, видимо, некому - задачи вида "сервер зачем-то сожрал всю свободную память" или "нужно заменить версию сервера на более новую" нужно сначала сделать самому, а потом только автоматизировать или писать инструкции для коллег.
И то, это помогает только в случае "все работает как ожидается", а когда что-нибудь идет не так - квалификации людей не всегда хватает даже на то, чтобы проблему заметить, не говоря уже о том, чтобы ее решить. Пошаговые инструкции в случае нетривиальных проблем не помогают.

Надо все-таки переделывать и выкидывать все, что не поддается автоматическому обслуживанию или склонно к порождению нетривиальных проблем. На данный момент это винды и железо, обслуживаемые ИТ-службами клиентов, а из софта - долбаный Firebird.
Вплоть до того, что останавливать нахрен все разработки и садится всем целенаправленно выкидывать Firebird из продуктов раз и навсегда, заменять все на postgresql, линуксы, веб-сервисы, единообразные коробочные виртуалки, итп.

[identity profile] vinslivins.livejournal.com 2013-08-14 07:31 am (UTC)(link)
ну таки рууби луучше чем кложа, даа?

[identity profile] metaclass.livejournal.com 2013-08-14 08:13 am (UTC)(link)
Нет. Полное говно.

[identity profile] vinslivins.livejournal.com 2013-08-14 08:15 am (UTC)(link)
а почемууууу :( :( :(

[identity profile] metaclass.livejournal.com 2013-08-14 08:18 am (UTC)(link)
Синтаксические ошибки определяются в момент выполнения, а не в момент загрузки файла.
Можно убить чужие переменные инстанса, присвоив свою такую же.

Это в сумме дает безумие, с которым могут справится только люди: 1) хорошо выспавшиеся 2) не голодные 3) имеющие юнит тесты 4) с нормальным объемом внимания и памяти.

[identity profile] vinslivins.livejournal.com 2013-08-14 09:17 am (UTC)(link)
эмм. а на кложе можно писать без юнит-тестов?
(ну и вообще, какие динамические языки, ну кроме эрланга, позволяют писать что-то среднее без юнит-тестов?)

синтаксические ошибки определяются в момент загрузки, если это методы.
если переменные или хеши - то да, позже.

убить чужие переменные инстанса - не очень понял. вроде бы нельзя?

[identity profile] metaclass.livejournal.com 2013-08-14 10:05 am (UTC)(link)
For the most part, mixin modules don’t use instance variables directly—they use accessors
to retrieve data from the client object. But if you need to create a mixin that has to have its
own state, ensure that the instance variables have unique names to distinguish them from any
other mixins in the system (perhaps by using the module’s name as part of the variable name).
Alternatively, the module could use a module-level hash, indexed by the current object ID, to
store instance-specific data without using Ruby instance variables:

[identity profile] theiced.livejournal.com 2013-08-14 02:19 pm (UTC)(link)
юнит тесты вообще не нужны

[identity profile] vinslivins.livejournal.com 2013-08-14 03:28 pm (UTC)(link)
ну это я переводил для человека из мира дотнета.
не юнит тесты а просто тесты. на юнит-тесты пох, если фреймворк их заменяет, как например рельсовые валидации

[identity profile] Дмитрий Васильев (from livejournal.com) 2013-08-14 10:59 am (UTC)(link)
Синтаксические ошибки определяются в момент выполнения, а не в момент загрузки файла.

vagrant@precise32:~/test_sntx_error$ cat test_sntx_error.rb
puts 'Check that ruby does not load syntactically incorrect files'
require_relative 'wrong_file'
puts 'This line is expected to be never printed'
vagrant@precise32:~/test_sntx_error$ cat wrong_file.rb
def syntactically_incorrect_function.rb
  ({){
end
vagrant@precise32:~/test_sntx_error$ ruby test_sntx_error.rb
Check that ruby does not load syntactically incorrect files
test_sntx_error.rb:2:in `require_relative': /home/vagrant/test_sntx_error/wrong_file.rb:2: syntax error, unexpected ')', expecting '}' (SyntaxError)
  ({){
     ^
        from test_sntx_error.rb:2:in `'
vagrant@precise32:~/test_sntx_error$


[identity profile] metaclass.livejournal.com 2013-08-14 11:10 am (UTC)(link)
class Test
 def some_method
  puts "some_method"
 end
end


puts "trying to call something"

a = Test.new
a.some_method1


выводит:
trying to call something
t1.rb:11:in `': undefined method `some_method1' for # (NoMethodError)

В гроб такие языки загонят.

[identity profile] trueblacker.livejournal.com 2013-08-14 11:32 am (UTC)(link)
Ну логично же, осмысленность очередной строчки может быть результатом выполнения предыдущей.

[identity profile] metaclass.livejournal.com 2013-08-14 11:35 am (UTC)(link)
Это потому что никто в статик типы и одновременно в нормальный user experience для языка не умеет.
Либо хипсторасы рубейные с таким вот калом, либо язык на котором можно вывернуть мозг для писания, либо ограниченная анальная жаба.
Дотнет, C# и F# сами по себе неплохи, но у них инфраструктура и высокоуровневые либы все говно.

[identity profile] trueblacker.livejournal.com 2013-08-14 11:43 am (UTC)(link)
истинная причина, ящитаю, как всегда в безблагодатности.

[identity profile] veremeenko-alex.livejournal.com 2013-08-14 01:08 pm (UTC)(link)
Так выбора из динамических нет. Остальное еще хуже.

[identity profile] vinslivins.livejournal.com 2013-08-14 07:02 pm (UTC)(link)
ну вот тесты писать пушкин будет, да?

[identity profile] vinslivins.livejournal.com 2013-08-14 08:16 am (UTC)(link)
если по пунктам сравнить?

[identity profile] vinslivins.livejournal.com 2013-08-14 08:18 am (UTC)(link)
а есть что лучше кложи для командной разработки?

[identity profile] metaclass.livejournal.com 2013-08-14 08:21 am (UTC)(link)
Из простого - только дотнет. Т.е. сравнимого с простотой руби.
Жаба-скала - ебаный ентерпрайз, там не принято делать просто.