Вы не подумайте, я не предлагаю новичкам приходить к работодателям и просить миллион. Конечно, если время сильно поджимает, то надо соглашаться на тот вариант, что есть. На рынке же также делают. И тест-драйв (или пробную партию товара) в виде испытательного срока, когда соискателю платят гораздо меньше оговоренной суммы и могут выкинуть в любой момент — тоже помогает при отсеивании кандидатов.
Но зачем тебе оценивать в деньгах, сколько ты приносишь пользы компании? Если претендуешь на должность ТОП менеджера (то есть у тебя есть какой то эксклюзивный продукт высшего качества) ещё может и есть в этом смысл, но на должность программиста — не вижу смысла абсолютно. Тебе по окончании испытательного срока скажут: можем тебя взять за N т.р. Дальше сам думай, надо тебе оно или нет. Знание того, сколько ты прибыли приносишь компании, ничего не даст ровным счетом. Да и иногда это невозможно посчитать! Вот я работал в компании, писали проект, проект огромный, работали несколько команд, сколько этот проект стоит я абсолютно не знал, сколько стоят фичи, что я добавил, или исправление багов, что поправил (или наделал) — не знали, я думаю, и мои руководители. Да и вообще, вот приходите вы на рынок, купить бананов. Думаете, продавец на вас так поглядит, подумает «этому челу мои бананы, если он их съест, принесут 40 рублей дополнительной прибыли, Продам как я ему их за 40 рублей!» Нет, так никто не поступает. Все ориентируются на рынок, на цену там.
По поводу Москвы. Сейчас необязательно открывать филиал, интернет везде доступен, можно нанимать удаленный сотрудников и особого дискомфорта не ощущать. А про хороших специалистов — так, я думаю, в Москве многие программисты вообще расслабились. Года полтора назад собеседование проходил в довольно известную контору, так кошмар! Задавали такие вопросы, типа поиск максимального элемента в массиве, SQL на уровне начинающего (простые запросы, join'ы), базовые знания ООП, простейшие вопросы по CLR. Я все подвоха ждал — а мне говорят, что на большинство таких вопросов не отвечают даже синьоры. У нас, в глубинках, требования может и похожие, но стоимость гораздо ниже. Потому много знакомых прокачивают свои знания и без проблем устраиваются в столице.
Вы не поверите. Умножил свою ожидаемую ЗП в 3 раза два года назад, до сих пор каждый месяц по нескольку раз зовут на собеседование. А я уже давно работу не ищу. Но, вызов на собеседование не гарантирует приёма на работу. Просто, если человек готов работать за 15 т.р., то у него опыта скорее всего мало. Если человек хочет 100 т.р., то, скорее всего опыт у него уже есть. А всем нужны опытные. Потому и зовут.
И вроде я с Вами согласен, и говорите все правильно, так должно быть в идеальном мире.
В действительности все иначе. Есть продавец и товар (программист, время и способности программиста), есть покупатель (работодатель), есть цена (зарплата). Сначала покупатель оценивает товар (собеседование), если ему все нравится, то продавец прикидывает и оценивает условия сделки (условия работы. проекты и тд). Если все довольны, то начинается обсуждение цены (зарплаты). И, как и на любом рынке, цель продавца подороже продать, а покупателя — подешевле купить. Никто же не взывает к совести продавца мандаринов перед новым годом, а этот продавец между прочим повышает цены дай боже. Или зайдите в любой бутик одежды — там цена за товар превышает себестоимость в несколько раз.
И, как и на любом рынке, цена тут устанавливается в соотношении со спросом и предложением. Если работодателю нужен дешевый работник, то он не найдет на эту вакансию супер-профессионала. Если новичку нужна высокая зарплата — то его не наймет ни один работодатель. Если работодатель нанимает новичка и дает ему кучу денег сразу — то это ошибка работодателя, и не надо говорить, что, мол, новичек бессовестный или неадекватный. Он просто продал свое время максимально дорого. И правильно сделал, пусть HRы в следующий раз думают, кого берут, и интервъюверы учатся определять, где дорого, а где нет.
А сейчас на рынке IT наблюдается острая нехватка специалистов. И когда хорошие специалисты с опытом устраиваются на хорошую зарплату, новички, глядя на них, тоже хотят много зарабатывать. И я думаю, что нормально, когда новичек хочет много денег. Если бы он не хотел денег — то сидел бы дома, а не искал бы работу. И если этого новичка пошлют 20 раз разные работодатели с его запросами, то ему не останется ничего, кроме как понизить зарплатную планку.
И вы так рассуждаете, адекватный\неадекватный. А что, если я живу в глубинке, где 50 тыр — это потолок, и хочу устроиться на удаленку, скажем, в Москву? Я, по вашему, должен подумать «ага, мне, живя в глубинке, много не заработать, да и траты тут куда меньше, в сравнении с Москвой, а компании-нанимателю на удаленку ведь нужны именно те спецы, которым платить меньше надо, дай ка я сразу занижу требуемую зарплату до тех же 50 тыр». И не важно, что в столице программеры и похуже получают от 100 и более. Лично я бы в таком случае помониторил, сколько получают в Москве люди примерно моего уровня, и указал бы цену выше среднего. Если меня несколько работодателей с такими запросами пошлют, то занижаем планку. Если нет — то работаем и зарабатываем.
Если честно, мне бы в голову не пришло юзать грамматики, так как на память написать LL парсер лично для меня неподъемная задача. Я бы попробовал, к примеру, двухстековый алгоритм Дейкстры. Хотя у меня когда то была похожая задача (с доп условиями), но я её решил чисто в лоб :)
Не думаю, что стоит так вот всех под одну гребенку. Мне кажется, что дело не только в оригинальном сюжете, но и в других составляющих. Как пример, если сравнивать сериал «Друзья», «Элен и ребята» и современный «Универ», то сюжет и сама затея будут очень похожими, но подача этого всего очень сильно различается. Или, к примеру, взять сериал «24» — после него любой современный (и не только) боевик кажется смешной пародией. Можно ещё сравнить западный CSI и наш детектив (про Насонова, я не помню название). Да что там говорить, взять нашего Шерлока холмса и любого другого — подача совсем разная. Дело ведь не только в общем описании сюжета, просто по качеству современные творения иногда не дотягивают (не считая спецэффектов, конечно). Я вообще до сих пор иногда пересматриваю Коломбо и аналогов такому сериалу пока не наблюдаю, хотя тут просто «Мужчина раскрывает преступления/разгадывает загадки/раскрывает заговоры/спасает людей».
И я не сильно понял, что такого оригинального в сюжете в сериале «Во все тяжкие». Сам сериал отличный, спору нет, но есть аналогичные не менее интересные — например «Сыны анархии», где торгуют оружием, или вообще шедевральный (для меня) «Щит» с продажными копами.
Что касается нашего ТВ — по моему оно себя изживает. Вся эта пропаганда в новостях, какие то недалекие сериалы, срежессированные передачи и прочее прочее практически никакой полезной информации не несет. Я уже несколько лет живу без телевизора, а вот девушка моя ещё не привыкла и периодически смотрит онлайн записи передач и ТВшные сериалы, и это иногда просто адово для меня. Что только стоит «Пусть говорят» — я первое время держался, но потом попросил слушать её сугубо в наушниках, так как у меня ощущение, что свора базаных бабок приехала ко мне домой и жить осталась. Даже нехитрая передача 100500 выгодно выделяется на фоне того мусора, что транслируют у нас по стране по федеральным каналам.
Отдельно стоит отметить некоторые передачи, которые откровенно вводят в заблуждение или заставляют биться головой об стену. Это, конечно, не только новости, но и «Битва экстрасенсев» (моя до сих пор не верит, что там все постановка), и была такая передача по Рен-ТВ (не помню название), где у женщины принтер печатал документы в неверной кодировке (каракулями), и она всерьез рассказывала о том, что это послания других цивилизаций и даже расшифровала каких, с какой планеты и определила молекулярный состав этой планеты (фейспалм). Помните, была шуточная передача, где утверждалось, что Ленин — гриб? У меня стойкое ощущение, что те люди, что пишут сейчас сценарии к передачам отечественных каналов, тогда шутку не поняли, но взяли на вооружение. Однако, с фантазией и оригинальностью у них иногда даже перебор :)
Автор, возможно, имеет смысл рассказать сперва о том, что при использовании Linq2SQL или EntityFramework программист работает с методами уже не IEnumerable(T), а IQueriable(T) интерфейса, и, что даже передаваемые параметры имеют разные типы. Например,
var resultForObjects = users.Where(user => user.id < 0).Sum(user => user.balance);
var context = new LinqForHabr.DataClasses1DataContext();
var resultForLTS = context.Users.Where(user => user.Id < 0).Sum(user => user.Balance);
В первом случае буде вызван метод IEnumerable.Where и параметр будет типа Func(T, TK)
Во втором случае будет IQueriable.Where и параметр будет Expression(Func(T, TK))
То есть, при одинаковом на вид коде, вызываются методы разных интерфейсов и по сути разных сигнатур, а результат (в случае работы с БД) будет зависеть от реализации провайдера (IQueriable) и реакции конкретной БД на запрос.
Чтобы обойти эти ограничения, нужно вызвать метод AsEnumerable(T) (он определен в IEnumerable и соотв доступен в IQueriable), но, важно понимать, что все операторы после вызова этого метода (при перечислении результата) будут отрабатывать уже не в БД, а на клиенте.
У меня есть фото кусков метеорита, не говоря уже о том, что запускать ядерную бомбу в Челябинск просто стратегически необосновано. Все это бесполезно. Есть люди, которых не переубедишь.
Шутите? Знаете, сколько у нас в городе разных мифов ходило? Мне один взрослый человек даже доказывал, что это не метеорит был, а враги в нас запустили ядерную бомбу, которую наше ПВО благополучно сбило. Типа мы показали свою силу врагам. А чтобы скрыть факт нападения придумали эту историю с метеоритом. Бред, но ведь не переубедишь, хотя мы оба были очевидцами и все своими глазами видели и слышали.
Я и не говорю, что их нет. Скорее о том, что реализация будет сложной если писать отличную от «заранее заданной конфигурации»
Эм, то, что Вы можете добавить юзеру любое количество полей, сгенерить таблицу для него через Code First и получить, используя SimpleMembership — это называете отличиями от заранее заданной конфигурации? Или о чем речь? Это всё можно сделать и со стандартной только танцев больше — получить ИД юзера и добавить дополнительную таблицу «ИД-Нужные мне поля».
Claim based auth system
Не понял, причем тут SimpleRoleProvider — ибо это такая же реализация SqlRoleProvider. Даже не удивлюсь, если вдруг можно будет подружить SimpleRoleProvider с SqlMembershipProvider и наоборот (симпл мембершип с sql role). О каких конкретно шагах речь то идет?
Существует большое количество задач, где основным объектом является профиль пользователя, соответственно выполнять операции с ним хочется напрямую с необходимыми полями в базе а не со всем объектом и напрямую через провайдер данных (Data Layer) а не через Auth Layer.
Согласен. А ещё я могу использовать доменную авторизацию и подтягивать профиль через LDAP — но мы же это минусом не называем для SimpleMembership. У каждого своя задача и от этого выбирают инструменты. Если надо напрямую оперировать профилем прямо в запросах к базе(разные джойны, например), ну, используйте для этого подходящие решения.
Написан для замены — чтобы заменить, потому что он проще в использовании, функциональнее и расширяем
Ну, вообще он не покрывает все провайдеры, о которых ведем речь. Как, например, он работать будет, если захочется использовать веб части? Если веб эвенты захочется писать встроенным механизмом в базу? Вы просто намешали всё в одну кучу. Ну, допустим, пользуемся SimpleMembershipProvider и SimpleRoleProvider — что мешает паралельно использовать провайдер для профиля, веб эвентов и персонализации веб частей?
А как вы относитесь к ручной системе авторизации (http://oxozle.com/2013/08/10/avtorizaciya-asp-net-mvc)?
Ну, я сам не фанат SqlMembershipProvider, и в каждом конкретном случае нужно выбирать подходящее решение. Я видел разные реализации, начиная от сложной системы ролей/пользователей и заканчивая списком юзеров в файлике на сервере.
П.С. Это ответ автору в тред выше. Напутал я с кнопками
Вы так категорично пишете, что у меня стойкое ощущение, что я отстал от жизни. Давайте для начала разберем о чем речь. То, что вы называете «Система ASP.NET Membership System» — я так полагаю, имеется ввиду набор поставщиков Sql Server, в которые входят
Хочется также отметить, что абсолютно необязательно использовать все эти поставщики одновременно, — можно использовать, к примеру, только членство, а управление ролями переделать под другое хранилище. Также нет необходимости весь этот огород инициализировать в базе — есть же средство регистрации, у него куча параметров. По поводу «стандартной логики работы MembershipProvider и RoleProvider» — по моему это были абстрактные классы, а то, что Вы имеете ввиду — уже SqlMembershipProvider и SqlRoleProvider.
Теперь по поводу минусов.
Требуется полный SQL Server по умолчанию
У меня на Sql Server Web 2008 абсолютно спокойно ставятся все провейдеры и работают. В 2012 версии, я думаю, проблем тоже быть не должно. Наверное, Вы имели ввиду, что это не будет рабоать, например, с Sql CE?
все необходимые данны представлены в виде набора атрибутов (UserName, Password, IsApproved, CreationDate...) и другая информация будет предоставлена используя Profile Provider
Насколько я помню, за это отвечает Membership (MembershipUser)
провайдеры по умолчанию не будут работать на SQL Azure
— к сожалению, не могу это опровергнуть, ибо не сведущ. Но мне не понятно, почему не будут?
Для работы с базой данных отличной от SQL Server необходимо переопределить набор методов провайдера
Во-первых, есть уже много готовых, например Oracle, db2, но можно спокойно писать и кастомный, о чем есть инфа в документации.
Ориентация на модель Пользователь > Роль
— даже не понял, о чем речь, ес честно. Ну, не нравится стандартная, используйте свою. Не вижу проблем никаких. Можно даже свой ролепровайдер написать.
Проблема с ASP.NET Membership в том, что она хранит дополнительную информацию об аккаунте сама. Это значит, что нельзя напрямую получить доступ к данным профиля
Ибо мембершип и профиль разделены и не связаны друг с другом. И что значит, получить доступ напрямую? И зачем?
Как он реализован я опущу, можно посмотреть в оригинальной записи SimpleMembership. Важно знать, что SimpleMembership унаследован от ExtendedMembershipProvider
ExtendedMembershipProvider унаследован от того же MembershipProvider, от которого унаследован SqlMembershipProvider. Принципы работы у них одинаковые. Они просто хранят данные по разному.
И напоследок.
SimpleMembership разработан для замены предыдущей версии ASP.NET Membership Provider (ASP.NET Role)
Я думаю, что они просто добавили новую реализацию мембершипа, которая решает самые простые задачи, от того и simple. И почему Вы пишете, что этот Simple может быть заменой стандартному — тоже не ясно, ведь это просто альтернативная реализация.
Но зачем тебе оценивать в деньгах, сколько ты приносишь пользы компании? Если претендуешь на должность ТОП менеджера (то есть у тебя есть какой то эксклюзивный продукт высшего качества) ещё может и есть в этом смысл, но на должность программиста — не вижу смысла абсолютно. Тебе по окончании испытательного срока скажут: можем тебя взять за N т.р. Дальше сам думай, надо тебе оно или нет. Знание того, сколько ты прибыли приносишь компании, ничего не даст ровным счетом. Да и иногда это невозможно посчитать! Вот я работал в компании, писали проект, проект огромный, работали несколько команд, сколько этот проект стоит я абсолютно не знал, сколько стоят фичи, что я добавил, или исправление багов, что поправил (или наделал) — не знали, я думаю, и мои руководители. Да и вообще, вот приходите вы на рынок, купить бананов. Думаете, продавец на вас так поглядит, подумает «этому челу мои бананы, если он их съест, принесут 40 рублей дополнительной прибыли, Продам как я ему их за 40 рублей!» Нет, так никто не поступает. Все ориентируются на рынок, на цену там.
По поводу Москвы. Сейчас необязательно открывать филиал, интернет везде доступен, можно нанимать удаленный сотрудников и особого дискомфорта не ощущать. А про хороших специалистов — так, я думаю, в Москве многие программисты вообще расслабились. Года полтора назад собеседование проходил в довольно известную контору, так кошмар! Задавали такие вопросы, типа поиск максимального элемента в массиве, SQL на уровне начинающего (простые запросы, join'ы), базовые знания ООП, простейшие вопросы по CLR. Я все подвоха ждал — а мне говорят, что на большинство таких вопросов не отвечают даже синьоры. У нас, в глубинках, требования может и похожие, но стоимость гораздо ниже. Потому много знакомых прокачивают свои знания и без проблем устраиваются в столице.
В действительности все иначе. Есть продавец и товар (программист, время и способности программиста), есть покупатель (работодатель), есть цена (зарплата). Сначала покупатель оценивает товар (собеседование), если ему все нравится, то продавец прикидывает и оценивает условия сделки (условия работы. проекты и тд). Если все довольны, то начинается обсуждение цены (зарплаты). И, как и на любом рынке, цель продавца подороже продать, а покупателя — подешевле купить. Никто же не взывает к совести продавца мандаринов перед новым годом, а этот продавец между прочим повышает цены дай боже. Или зайдите в любой бутик одежды — там цена за товар превышает себестоимость в несколько раз.
И, как и на любом рынке, цена тут устанавливается в соотношении со спросом и предложением. Если работодателю нужен дешевый работник, то он не найдет на эту вакансию супер-профессионала. Если новичку нужна высокая зарплата — то его не наймет ни один работодатель. Если работодатель нанимает новичка и дает ему кучу денег сразу — то это ошибка работодателя, и не надо говорить, что, мол, новичек бессовестный или неадекватный. Он просто продал свое время максимально дорого. И правильно сделал, пусть HRы в следующий раз думают, кого берут, и интервъюверы учатся определять, где дорого, а где нет.
А сейчас на рынке IT наблюдается острая нехватка специалистов. И когда хорошие специалисты с опытом устраиваются на хорошую зарплату, новички, глядя на них, тоже хотят много зарабатывать. И я думаю, что нормально, когда новичек хочет много денег. Если бы он не хотел денег — то сидел бы дома, а не искал бы работу. И если этого новичка пошлют 20 раз разные работодатели с его запросами, то ему не останется ничего, кроме как понизить зарплатную планку.
И вы так рассуждаете, адекватный\неадекватный. А что, если я живу в глубинке, где 50 тыр — это потолок, и хочу устроиться на удаленку, скажем, в Москву? Я, по вашему, должен подумать «ага, мне, живя в глубинке, много не заработать, да и траты тут куда меньше, в сравнении с Москвой, а компании-нанимателю на удаленку ведь нужны именно те спецы, которым платить меньше надо, дай ка я сразу занижу требуемую зарплату до тех же 50 тыр». И не важно, что в столице программеры и похуже получают от 100 и более. Лично я бы в таком случае помониторил, сколько получают в Москве люди примерно моего уровня, и указал бы цену выше среднего. Если меня несколько работодателей с такими запросами пошлют, то занижаем планку. Если нет — то работаем и зарабатываем.
И я не сильно понял, что такого оригинального в сюжете в сериале «Во все тяжкие». Сам сериал отличный, спору нет, но есть аналогичные не менее интересные — например «Сыны анархии», где торгуют оружием, или вообще шедевральный (для меня) «Щит» с продажными копами.
Что касается нашего ТВ — по моему оно себя изживает. Вся эта пропаганда в новостях, какие то недалекие сериалы, срежессированные передачи и прочее прочее практически никакой полезной информации не несет. Я уже несколько лет живу без телевизора, а вот девушка моя ещё не привыкла и периодически смотрит онлайн записи передач и ТВшные сериалы, и это иногда просто адово для меня. Что только стоит «Пусть говорят» — я первое время держался, но потом попросил слушать её сугубо в наушниках, так как у меня ощущение, что свора базаных бабок приехала ко мне домой и жить осталась. Даже нехитрая передача 100500 выгодно выделяется на фоне того мусора, что транслируют у нас по стране по федеральным каналам.
Отдельно стоит отметить некоторые передачи, которые откровенно вводят в заблуждение или заставляют биться головой об стену. Это, конечно, не только новости, но и «Битва экстрасенсев» (моя до сих пор не верит, что там все постановка), и была такая передача по Рен-ТВ (не помню название), где у женщины принтер печатал документы в неверной кодировке (каракулями), и она всерьез рассказывала о том, что это послания других цивилизаций и даже расшифровала каких, с какой планеты и определила молекулярный состав этой планеты (фейспалм). Помните, была шуточная передача, где утверждалось, что Ленин — гриб? У меня стойкое ощущение, что те люди, что пишут сейчас сценарии к передачам отечественных каналов, тогда шутку не поняли, но взяли на вооружение. Однако, с фантазией и оригинальностью у них иногда даже перебор :)
В первом случае буде вызван метод IEnumerable.Where и параметр будет типа Func(T, TK)
Во втором случае будет IQueriable.Where и параметр будет Expression(Func(T, TK))
То есть, при одинаковом на вид коде, вызываются методы разных интерфейсов и по сути разных сигнатур, а результат (в случае работы с БД) будет зависеть от реализации провайдера (IQueriable) и реакции конкретной БД на запрос.
Чтобы обойти эти ограничения, нужно вызвать метод AsEnumerable(T) (он определен в IEnumerable и соотв доступен в IQueriable), но, важно понимать, что все операторы после вызова этого метода (при перечислении результата) будут отрабатывать уже не в БД, а на клиенте.
Если речь идет о MembershipUser
Не понял, причем тут SimpleRoleProvider — ибо это такая же реализация SqlRoleProvider. Даже не удивлюсь, если вдруг можно будет подружить SimpleRoleProvider с SqlMembershipProvider и наоборот (симпл мембершип с sql role). О каких конкретно шагах речь то идет?
Согласен. А ещё я могу использовать доменную авторизацию и подтягивать профиль через LDAP — но мы же это минусом не называем для SimpleMembership. У каждого своя задача и от этого выбирают инструменты. Если надо напрямую оперировать профилем прямо в запросах к базе(разные джойны, например), ну, используйте для этого подходящие решения.
Ну, вообще он не покрывает все провайдеры, о которых ведем речь. Как, например, он работать будет, если захочется использовать веб части? Если веб эвенты захочется писать встроенным механизмом в базу? Вы просто намешали всё в одну кучу. Ну, допустим, пользуемся SimpleMembershipProvider и SimpleRoleProvider — что мешает паралельно использовать провайдер для профиля, веб эвентов и персонализации веб частей?
Ну, я сам не фанат SqlMembershipProvider, и в каждом конкретном случае нужно выбирать подходящее решение. Я видел разные реализации, начиная от сложной системы ролей/пользователей и заканчивая списком юзеров в файлике на сервере.
П.С. Это ответ автору в тред выше. Напутал я с кнопками
— Членство (класс SqlMembershipProvider).
— Управлением ролями (класс SqlRoleProvider).
— Профиль (класс SqlProfileProvider).
— Персонализация веб-частей (класс SqlPersonalizationProvider).
— Веб-события (класс SqlWebEventProvider).
Хочется также отметить, что абсолютно необязательно использовать все эти поставщики одновременно, — можно использовать, к примеру, только членство, а управление ролями переделать под другое хранилище. Также нет необходимости весь этот огород инициализировать в базе — есть же средство регистрации, у него куча параметров. По поводу «стандартной логики работы MembershipProvider и RoleProvider» — по моему это были абстрактные классы, а то, что Вы имеете ввиду — уже SqlMembershipProvider и SqlRoleProvider.
Теперь по поводу минусов.
У меня на Sql Server Web 2008 абсолютно спокойно ставятся все провейдеры и работают. В 2012 версии, я думаю, проблем тоже быть не должно. Наверное, Вы имели ввиду, что это не будет рабоать, например, с Sql CE?
Насколько я помню, за это отвечает Membership (MembershipUser)
— к сожалению, не могу это опровергнуть, ибо не сведущ. Но мне не понятно, почему не будут?
Во-первых, есть уже много готовых, например Oracle, db2, но можно спокойно писать и кастомный, о чем есть инфа в документации.
— даже не понял, о чем речь, ес честно. Ну, не нравится стандартная, используйте свою. Не вижу проблем никаких. Можно даже свой ролепровайдер написать.
Ибо мембершип и профиль разделены и не связаны друг с другом. И что значит, получить доступ напрямую? И зачем?
ExtendedMembershipProvider унаследован от того же MembershipProvider, от которого унаследован SqlMembershipProvider. Принципы работы у них одинаковые. Они просто хранят данные по разному.
И напоследок. Я думаю, что они просто добавили новую реализацию мембершипа, которая решает самые простые задачи, от того и simple. И почему Вы пишете, что этот Simple может быть заменой стандартному — тоже не ясно, ведь это просто альтернативная реализация.