Есть пример "входа в айти" гуманитария из первых рук: девушка, проработавшая 10 лет почти в том самом Газпроме, захотела сменить область деятельности. Через год с небольшим после увольнения, с полного нуля, имея лишь экономическое образование, т.е. не имея вообще никакого отношения к айти (кроме мужа-айтишника) и не зная, что такое программирование, она получила свою первую работу разработчиком - это случилось недели три назад. Полностью самостоятельно. Онлайн-курсы, документация и определенное количество упорства сделали своё дело. Конечно, предстоит ещё очень многому научиться, но практический опыт и хорошие наставники очень важны, так что это серьезная веха.
Причем год - это не круглосуточное сидение за компьютером. Плюс 95% времени она училась сама.
Собственно, я лично не верю в "не для всех". Не больше, чем любая другая деятельность "не для всех". Если есть интерес и небольшое количество мозгов - можно в любой деятельности достичь каких-то успехов. А при их отсутствии - в любой деятельности не достичь. Айти не исключение.
Большое спасибо, очень рада, что понравилось! Если делать список литературы как в научных статьях, с источником под каждый тезис, то он правда был бы достаточно длинным. Поэтому я с радостью воспользуюсь тем, что это не научная статья:) и перечислю только несколько работ, из которых взяты основные идеи статьи:
1. Р. Хайлбронер, Философы от мира сего — это одна из лучших книжек по истории экономической мысли, написанная легко, популярно и весело. Многие идеи из первой части статьи вы там найдете.
2. Г. Саймон, Рациональность как процесс и продукт мышления — эта статья, на мой взгляд, отличная точка входа в поведенческую экономику. Там и про ограниченную рациональность, и про рациональность процедур. Большинство идей Канемана и Тверски выросли именно из нее.
3. Ну и сам Д. Канеман, Думай медленно… решай быстро. У этой книжки всё хорошо, кроме двух минусов: в ней куча скучных личных деталей о том, как Канеман любит гулять по холмам и т.д., и в ней многие простые вещи объясняются очень сложно, а этого я не люблю.
4. Добавлю еще одну — Д. Макклоски, Риторика экономической науки — книжка о том, как ученые-экономисты убеждают в своих идеях других.
Это, конечно, совсем не исчерпывающий список использованной литературы. В нем были бы еще книжки вроде Философии Экономики под редакцией Хаусмана, Логики Милля, Экономической Методологии Блауга, и куча-куча других, даже учебник по Истории экономической мысли от Борисова, Шишкина и Сутырина (в нем про Вебера-Фехнера). Но это специальные книжки и никто их читать не будет, поэтому ограничусь заявленными четырьмя.
Сделал замес: Сода кальцинированная 600г (24 р. 50 коп.), умягчитель воды для стиральных машин Refine 750г (49 р.), отбеливатель Green Price (половина пачки — 250г) (цена за пачку 49 р., т.е. полпачки — 24 р. 50 коп.), Стиральный порошок Ушастый нянь (300 г) (не помню уже сколько стоит). Итого 98 руб. (+ стоимость 300г ушастого няня) за 1,9 кг порошка. По мне так цена вполне ок получилась. Все кроме ушастого няня купил в фикспрайсе. Запустил посудомойку на тестирование.
Вам поможет Dynamic DNS. Каждое устройство будет само обновлять адрес в своём имени. Я набросал скрипт для *nix-систем здесь: gist.github.com/Envek/9aa53b06e7df369626a9 и с удовольствием им пользовался, когда был на провайдере с IPv6. Это очень клёво, когда можно зайти на свой ноут по ссылке вида notebook.домен.tld
Про рацион мне известно только у гавайцев. Интересный вывод можно сделать из истории — как доступные контрацептивы изменяют общество :)
Встретилось описание нравов на островах Океании, до прихода туда миссионеров. На некоторых из них туземцы употребляли в пищу некие местные корнеплоды, богатые природным контрацептивом. Творившийся там в результате этого факта разврат заставил бы нервно икать даже самых распущенных извращенцев просвещённого Запада :) При этом институт семьи вполне себе существовал. А беременели просто — невесты на время прекращали есть оный корнеплод, и всё.
… Правда, миссионеры уже давно навели там порядок.
Лишь отчасти соглашусь с некоторыми суждениями, но СЛИШКОМ МНОГО BOLD'оВОГО КАПСА НИКОГДА НЕ БЫВАЕТ МНОГО.
Во многом согласен с комментариями о дилетантстве — все описанные проблемы достаточно просто решаются при наличии желания и гугла.
Ограничения $digest цикла можно легко преодолеть, об этом уже было написано тут и о результатах в 1200ms -> 35ms тут.
DI не работает после минификации — в офф доках ангуляра прямо говорят (раздел Note on minification): используйте $inject, или аннотации. Опять же, не стоит ныть по поводу «мне влом написать 5-6 слов со знаком $ — этого не должно быть, это проблема фреймворка !». Указать минификатору наличие сторонних глобальных переменных не составляет особого труда, и это никак не относится к дизайну самого фреймворка.
По поводу «нетестированности» самого фреймворка, а автор пробовал Protractor с ngMock'ом? Есть $exceptionHandler и им вполне так удобно перехватывать любые ошибки. Хватит ныть — читайте документацию.
Наследование скоупов не имеет прямого отношения к ангуляру непосредтсвенного — это просто заморочка прототипного наследования в JS'e. Немного гугломагии подтверждает, и такого уже было написано очень много. Опять же, сами ангуляровцы в доках советуют не использовать глубокое вложение объектов внутри $scope потому что там будут глюки с $watch'ерами и $digest циклом. Использование нескольких уровней вложения в рамках одной директивы не поощряется, по тем же причинам что и указанны в статье… и это не является проблемой — ничего не мешает писать $scope.btnCaption вместо $scope.btn.caption.
Синтаксис
ng-controller="SomeController as OtherName"
не более чем синтаксический сахар для избежания путаницы в описаниях контроллеров, и никакого отношения к проблеме не имеет.
Понимание или непонимание работы директив зависит от каждого конкретного разработчика — проще чем есть сделать не получится. Если для вас это сложно — это ваши проблемы.
По сравнению с тем же backbone или ember — Angular совсем не сложный, и в нём ничего не протекает. Конечно после jQuery у людей странное выражение лица, но качественный богатый фронтенд не подразумевает место для поиска «плагина завоевания мира нажатием одной кнопки». Учитесь, и не нойте!
Невозможность серверной шаблонизации… хм, ну это зависит как посмотреть на проблему — берём prerender.io, прикручиваем рендер страниц при изменении моделей, кэшируем нормально в Nginx'e и отдаём поисковым роботам. Не то что бы это было изящно, но и писать серверный рендер ангуляра под каждую платформу бессмысленно. Тем более такой подход при небольших нагрузках на запись вполне нормально работает. Для прозрачной клиент-серверной шаблонизации нужна трансляция OT-патчей в CQRS-ES'e — это довольно сложные подходы которые используются в корпоративных приложениях с незапамятных времён (привет vaadin, привет gwt, давно не виделись).
А кто сказал что гугол не использует у себя Angular?
В общем все проблемы которые описанны в статье — вполне решаемы.
Было бы желание погуглить, и не постить на хабр всякую ерунду из-за собственной лени.
Я не говорю что React плох, но сравнивать React с Angular'ом НЕЛЬЗЯ. React это лишь View и View-Model из MVVM, а Angular — чистое MVC. У ангуляра рендер реально слоупочный, и появляются такие странные вещи как ngReact (чую запах жареных мозгов). Я и сам спокойно гоняю React + rx.js в браузере, и на node.js, и вполне так доволен производительностью для средних проектов.
Я надеюсь что во втором ангуляре исправят косяки рендера и начнут напрямую оперировать DOM деревом, без лишних перерисовок и перекомпоновок чего-попало.
Советую испечь самому) 15 минут чистой работы. Результат великолепный. Каждый день пеку.
Рецепт
Вода 300 грамм (300 мл.)
Мука 500 гр. или 3 стакана (Тихорецкий комбинат, Аладушкин)
Соль 2 ч.л
Сахар 2 ч.л.
Дрожжи 2 ч.л.
Тесто замесить до гомогенной текстуры. Проще вначале столовой ложкой, потом руками. Должно быть немного липким, но не прилипать к рукам. Оставляем тесто подходить при комнатной температуре около 2 часов. Через 2 часа слегка перемешиваем, убирая крупные пузыри. Тесто несколько теряет липкость, мука набухает, становиться эластичным. Разрезать на две части и сформировать колбаски диаметром около 5 см. В идеале формируем хлеб складыванием вдоль одной оси несколько раз. Нагреть духовку до 225 градусов. Выложить два куска теста на противень. (в идеале на тефлоновый лист. Как бороться с прилипанием решайте по ситуации. Посыпание мукой, смазывание маслом, бумагу не рекомендую, все равно прилипает). На тесте сделать глубокие надрезы через каждые 2-3 см. Можно сделать глубокий надрез вдоль. Это не даст ему лопаться во время поднятия в духовке. Ставим в духовку на 24 минуты (время подобрано для моей духовки, смотрите по готовности. Но где-то такое должно быть). Вынимаем и кладем на деревянную доску. Накрываем полотенцем и даем остыть.
А если не начнет в этом разбираться, то за это уже заплатит компания оператору связи) Вот вебинар по безопасности Астериск, его рекомендуется смотреть тем, кто внедряет своими силами, в т.ч. и Askozia.
>> А что мешает «ваш звонок очень важен» вклеить сразу в звуковой файл?
Бывает и такое, однако в колл-центрах, где нужно называть позицию абонента в очереди, такой трюк не пройдет.
>>Нельзя исключать, что всякие Мигалковы попытаются наехать.
Это точно. В новой книжке от разаботчиков Asterisk «Asterisk. The Definitive Guide» (можно взять тут: www.voxlink.ru/files/Asterisk.The.Definitive.Guide-2011.pdf) говорится о том, с какого сайта можно качать музыку под лицензией СС, чтобы не опасаться набегов РАО и прочих мегалковых.
Удобнее просто поудалять сообщения с наиболее большими вложениями, для этого относительно недавно для поиска появился фильтр size. Например, найти сообщения старше 1 года и более 5 МБ:
Насчёт фрагментов: android:layout_width="400dp" делать не надо, иначе один и тот же layout нельзя будет нормально использовать одновременно для 7", 8", 9.8" и 10.1". Лучше в layout_width указать 0dp, а долю размера каждого фрагмента указать в layout_weight. Для узкой полоски (например, имя контакта) подойдёт 1 и 3, для широкой (сообщение) — 1 и 2. Ну если уж очень надо, то на примерно 7" использовать 1 и 2, а на 10" landscape — 1 и 3.
Есть пример "входа в айти" гуманитария из первых рук: девушка, проработавшая 10 лет почти в том самом Газпроме, захотела сменить область деятельности. Через год с небольшим после увольнения, с полного нуля, имея лишь экономическое образование, т.е. не имея вообще никакого отношения к айти (кроме мужа-айтишника) и не зная, что такое программирование, она получила свою первую работу разработчиком - это случилось недели три назад. Полностью самостоятельно. Онлайн-курсы, документация и определенное количество упорства сделали своё дело. Конечно, предстоит ещё очень многому научиться, но практический опыт и хорошие наставники очень важны, так что это серьезная веха.
Причем год - это не круглосуточное сидение за компьютером. Плюс 95% времени она училась сама.
Собственно, я лично не верю в "не для всех". Не больше, чем любая другая деятельность "не для всех". Если есть интерес и небольшое количество мозгов - можно в любой деятельности достичь каких-то успехов. А при их отсутствии - в любой деятельности не достичь. Айти не исключение.
1. Р. Хайлбронер, Философы от мира сего — это одна из лучших книжек по истории экономической мысли, написанная легко, популярно и весело. Многие идеи из первой части статьи вы там найдете.
2. Г. Саймон, Рациональность как процесс и продукт мышления — эта статья, на мой взгляд, отличная точка входа в поведенческую экономику. Там и про ограниченную рациональность, и про рациональность процедур. Большинство идей Канемана и Тверски выросли именно из нее.
3. Ну и сам Д. Канеман, Думай медленно… решай быстро. У этой книжки всё хорошо, кроме двух минусов: в ней куча скучных личных деталей о том, как Канеман любит гулять по холмам и т.д., и в ней многие простые вещи объясняются очень сложно, а этого я не люблю.
4. Добавлю еще одну — Д. Макклоски, Риторика экономической науки — книжка о том, как ученые-экономисты убеждают в своих идеях других.
Это, конечно, совсем не исчерпывающий список использованной литературы. В нем были бы еще книжки вроде Философии Экономики под редакцией Хаусмана, Логики Милля, Экономической Методологии Блауга, и куча-куча других, даже учебник по Истории экономической мысли от Борисова, Шишкина и Сутырина (в нем про Вебера-Фехнера). Но это специальные книжки и никто их читать не будет, поэтому ограничусь заявленными четырьмя.
60% Refine от накипи (карбонат натрия > 30%, триполифосфат натрия 5-15%, Трилон-Б < 5%)
10% Стиральный порошок / посудомоечный порошок (ПАВ и мелкие добавки)
А с тем порошком с картинки надо еще добавить ополаскиватель? К ионнообменной смоле сыпать обычную поваренную соль без йода?
А вот про это можно поподробнее? Сам фронтэндщик, но как правильно поступать с этими параметрами не знаю до сих пор, к сожалению
Cultural differences in sexuality
Sexual Behavior in Pre-Contact Hawai’i
# В sip.conf
textsupport=yes
# В sip_general_custom.conf
accept_outofcall_message=yes
outofcall_message_context=messages
auth_message_requests=no
# В extensions_custom.conf
[messages]
exten => _.,1,NoOp(SMS receiving dialplan invoked)
exten => _.,n,NoOp(To ${MESSAGE(to)})
exten => _.,n,NoOp(From ${MESSAGE(from)})
exten => _.,n,NoOp(Body ${MESSAGE(body)})
exten => _.,n,Set(ACTUALTO=${CUT(MESSAGE(to),@,1)})
exten => _.,n,MessageSend(${ACTUALTO},${MESSAGE(from)})
exten => _.,n,NoOp(Send status is ${MESSAGE_SEND_STATUS})
exten => _.,n,GotoIf($["${MESSAGE_SEND_STATUS}" != «SUCCESS»]?sendfailedmsg)
exten => _.,n,Hangup()
;
; Handle failed messaging
exten => _.,n(sendfailedmsg),Set(MESSAGE(body)="[${STRFTIME(${EPOCH},,%d%m%Y-%H:%M:%S)}] Your message to ${EXTEN} has failed. Retry later.")
exten => _.,n,Set(ME_1=${CUT(MESSAGE(from),<,2)})
exten => _.,n,Set(ACTUALFROM=${CUT(ME_1,@,1)})
exten => _.,n,MessageSend(${ACTUALFROM},ServiceCenter)
exten => _.,n,Hangup()
exten => _.,n,Hangup()
Во многом согласен с комментариями о дилетантстве — все описанные проблемы достаточно просто решаются при наличии желания и гугла.
Ограничения $digest цикла можно легко преодолеть, об этом уже было написано тут и о результатах в 1200ms -> 35ms тут.
DI не работает после минификации — в офф доках ангуляра прямо говорят (раздел Note on minification): используйте $inject, или аннотации. Опять же, не стоит ныть по поводу «мне влом написать 5-6 слов со знаком $ — этого не должно быть, это проблема фреймворка !». Указать минификатору наличие сторонних глобальных переменных не составляет особого труда, и это никак не относится к дизайну самого фреймворка.
По поводу «нетестированности» самого фреймворка, а автор пробовал Protractor с ngMock'ом? Есть $exceptionHandler и им вполне так удобно перехватывать любые ошибки. Хватит ныть — читайте документацию.
Наследование скоупов не имеет прямого отношения к ангуляру непосредтсвенного — это просто заморочка прототипного наследования в JS'e. Немного гугломагии подтверждает, и такого уже было написано очень много. Опять же, сами ангуляровцы в доках советуют не использовать глубокое вложение объектов внутри $scope потому что там будут глюки с $watch'ерами и $digest циклом. Использование нескольких уровней вложения в рамках одной директивы не поощряется, по тем же причинам что и указанны в статье… и это не является проблемой — ничего не мешает писать $scope.btnCaption вместо $scope.btn.caption.
Синтаксис не более чем синтаксический сахар для избежания путаницы в описаниях контроллеров, и никакого отношения к проблеме не имеет.
Понимание или непонимание работы директив зависит от каждого конкретного разработчика — проще чем есть сделать не получится. Если для вас это сложно — это ваши проблемы.
По сравнению с тем же backbone или ember — Angular совсем не сложный, и в нём ничего не протекает. Конечно после jQuery у людей странное выражение лица, но качественный богатый фронтенд не подразумевает место для поиска «плагина завоевания мира нажатием одной кнопки». Учитесь, и не нойте!
Невозможность серверной шаблонизации… хм, ну это зависит как посмотреть на проблему — берём prerender.io, прикручиваем рендер страниц при изменении моделей, кэшируем нормально в Nginx'e и отдаём поисковым роботам. Не то что бы это было изящно, но и писать серверный рендер ангуляра под каждую платформу бессмысленно. Тем более такой подход при небольших нагрузках на запись вполне нормально работает. Для прозрачной клиент-серверной шаблонизации нужна трансляция OT-патчей в CQRS-ES'e — это довольно сложные подходы которые используются в корпоративных приложениях с незапамятных времён (привет vaadin, привет gwt, давно не виделись).
А кто сказал что гугол не использует у себя Angular?
В общем все проблемы которые описанны в статье — вполне решаемы.
Было бы желание погуглить, и не постить на хабр всякую ерунду из-за собственной лени.
Я не говорю что React плох, но сравнивать React с Angular'ом НЕЛЬЗЯ. React это лишь View и View-Model из MVVM, а Angular — чистое MVC. У ангуляра рендер реально слоупочный, и появляются такие странные вещи как ngReact (чую запах жареных мозгов). Я и сам спокойно гоняю React + rx.js в браузере, и на node.js, и вполне так доволен производительностью для средних проектов.
Я надеюсь что во втором ангуляре исправят косяки рендера и начнут напрямую оперировать DOM деревом, без лишних перерисовок и перекомпоновок чего-попало.
Мука 500 гр. или 3 стакана (Тихорецкий комбинат, Аладушкин)
Соль 2 ч.л
Сахар 2 ч.л.
Дрожжи 2 ч.л.
Тесто замесить до гомогенной текстуры. Проще вначале столовой ложкой, потом руками. Должно быть немного липким, но не прилипать к рукам. Оставляем тесто подходить при комнатной температуре около 2 часов. Через 2 часа слегка перемешиваем, убирая крупные пузыри. Тесто несколько теряет липкость, мука набухает, становиться эластичным. Разрезать на две части и сформировать колбаски диаметром около 5 см. В идеале формируем хлеб складыванием вдоль одной оси несколько раз. Нагреть духовку до 225 градусов. Выложить два куска теста на противень. (в идеале на тефлоновый лист. Как бороться с прилипанием решайте по ситуации. Посыпание мукой, смазывание маслом, бумагу не рекомендую, все равно прилипает). На тесте сделать глубокие надрезы через каждые 2-3 см. Можно сделать глубокий надрез вдоль. Это не даст ему лопаться во время поднятия в духовке. Ставим в духовку на 24 минуты (время подобрано для моей духовки, смотрите по готовности. Но где-то такое должно быть). Вынимаем и кладем на деревянную доску. Накрываем полотенцем и даем остыть.
Вот вебинар по безопасности Астериск, его рекомендуется смотреть тем, кто внедряет своими силами, в т.ч. и Askozia.
Кроме того, для Debian последние версии PostgreSQL и PostGIS недавно появились на backports-master.debian.org/.
Бывает и такое, однако в колл-центрах, где нужно называть позицию абонента в очереди, такой трюк не пройдет.
>>Нельзя исключать, что всякие Мигалковы попытаются наехать.
Это точно. В новой книжке от разаботчиков Asterisk «Asterisk. The Definitive Guide» (можно взять тут: www.voxlink.ru/files/Asterisk.The.Definitive.Guide-2011.pdf) говорится о том, с какого сайта можно качать музыку под лицензией СС, чтобы не опасаться набегов РАО и прочих мегалковых.
См. подробнее.
www.business.govt.nz/starting-and-stopping/entering-a-business/starting-a-business
А вот здесь мы вируально-реальный офис оплачивали:
www.privatebox.co.nz/mailplans.php