using (var ctx = new CompanyEmployees())
{
int minYear = ctx.OccupationHistories.Min(o => o.StartDate.Year);
int maxYear = ctx.OccupationHistories.Max(o => o.EndDate.HasValue ? o.EndDate.Value.Year : DateTime.Now.Year);
List<int> yearsList = Enumerable.Range(minYear, maxYear - minYear + 1).ToList();
List<int> monthList = Enumerable.Range(1, 12).ToList();
var qry1 = from y in yearsList
from m in monthList
select new DateTime(y, m, 1);
var firstDays = qry1.ToList();
var qry2 = from y in yearsList
from m in monthList
select new DateTime(y, m, DateTime.DaysInMonth(y, m));
var lastDays = qry2.ToList();
var qry = from s in
(
from o in ctx.OccupationHistories
join d in ctx.Divisions
on o.DivisionID equals d.Id
join p in ctx.Positions
on o.PositionID equals p.Id
from x in
(
from a in firstDays
join b in lastDays
on new { a.Year, a.Month } equals new { b.Year, b.Month }
select new
{
FirstDay = a,
LastDay = b
})
where DateTime.Compare(o.StartDate, x.LastDay) <= 0 &&
DateTime.Compare(o.EndDate.HasValue ? o.EndDate.Value : DateTime.Now, x.FirstDay) >= 0
orderby o.EmployeeID
select new
{
EmployeeId = o.EmployeeID,
Division = d.Name,
Position = p.Name,
Year = x.FirstDay.Year,
Month = x.LastDay.Month
})
group s by new { s.Division, s.Position, s.Year, s.Month } into g
orderby g.Key.Year, g.Key.Month, g.Key.Division, g.Key.Position
select new EmployeesCount
{
Division= g.Key.Division,
Position= g.Key.Position,
Year= g.Key.Year,
Month= g.Key.Month,
EmployeeCount = g.Count()
};
return qry.ToList();
Совершенно верно, за основу был взят код от MiniProfiler.
Проект опубликован под Apache лицензией. Насколько я понял, с некоторыми оговорками лицензия разрешает использование кода в платных продуктах.
Мне вот непонятно, почему ни одна космическая держава не пришла к варианту с возвращаемой ступенью, по крайней мере в промышленном варианте?
Должны же быть какие-то причины для отказала использования возвращаемой ступени.
Может кто-то из разбирающихся в предмете прокомментировать?
Спасибо за ответ.
Резюмирую:
1. Деньги на руки примерно 5000 USD для senior разработчика
2. Если я правильно понял, аренда жилья обходится примерно в 2000 usd.
3. Куча доп. расходов
В общем поехать отдохнуть туда можно, а перебираться большого смысла нет, особенно если есть семья, ребенок.
Председатель Совета при Президенте РФ по развитию гражданского общества попросил Валентину Матвиенко отклонить законопроект о блогерах и создать комиссию для его доработки http://www.president-sovet.ru/news/6001/
Спасибо за комментарий. Дополнил статью примером использования и обновил прикрепленный пример.
Проблема буферизации и полинга данных в данном конкретном примере не актуальна за отсутствием таковой:
1.Клиент создает подключение,
2. Передает данные,
3. Получает ответ и отключается.
Вот после каждой похожей новости я думаю что все, предел маразма и идиотизма нашей властью достигнут, но каждый раз такие новости меня убеждают в обратном(((((
Как выше отметили, в законе даже нет такого понятия как «денежный суррогат», да и само понятие какое-то странное, лично для смысл такого словосочетания не понятен. Соответственно, вся эта инициатива нашей доблестной прокуратуры бред сивой кобылы.
>Из конструктивного — WCF же.
WCF не всегда возможен / удобен, особенно если речь идет о разных платформах / языках программирования.
>Пула коннектов (с пересоединением для балансировки) не хватает.
Это правда, пример из статье не годится в промышленное применение или просто в проект с высокой нагрузкой.
>Половина статьи состоит из описания сериализатора. Далее вполне обычная работа с TcpClient/TcpListener, которая в msdn довольно подробно описана.
В свое время я потратил довольно прилично времени, чтобы это все написать и исправить все найденные ошибки, поэтому и решил написать статью с работающим примером, чтобы кто-то воспользовался результатами моей работы и сэкономил себе время.
Спасибо за комментарий, отвечу по пунктам:
>Заголовок статьи не соответствует содержимому.
На мой взгляд вполне соответствует.
>Я, посмотрев на заголовок и преамбулу, подумал, что речь пойдёт о своём сокетном велосипеде
Это и есть свой велосипед.
> В статье был изобретён свой RPC-велосипед
RPC — Remote Procudure Call, ничего такого у меня нет, просто отправка и прием команд с подробным описанием, хотя, возможно все таки описание не достаточно подробное.
>Кстати, я вот что-то не припомню, инты BinaryReader читает/пишет в big endian или little endian
Если я правильно помню, .net работает с little endian порядком. Если же вы хотите взаимодействовать с Java, то необходимо разворачивать порядок байт, я об этом упомянул в конце статьи.
>Замечание 3: Не понятно, почему вместо сериализации, нужно было руками байты вытаскивать. Команд может быть очень много, и в процессе их ручной сериализации вы очень быстро начнёте делать ошибки.
Вы правы, логичнее было бы сделать автоматический сериализатор, но я сделал именно так как сделал.
>Замечание 4: Допустим, я хакер. В процессе поиска дырочек, я перебираю все найденные порты, отправляя на них стандартный HTTP Get. Что произойдёт?
Это не понял, причем тут хакер и http get?
>Вот эта строка на нехорошие мысли наводит: CommandHeader commandHeader = CommandHeader.FromBytes(bytes);
Поясните, что именно смутило?
Да господи, никто ничего выявлять не будет.
Увидят политический пост, найдут автора, впаяют штраф на надцать тысяч рублей и потребуют прекратить безобразие.
А еще цензура явно запрещена конституцией, ага.
Буду благодарен за конструктивную критику, просто я немного сконфужен, с одной стороны в избранное добавляют, соответственно статья имеет право на жизнь, с другой, большое количество минусов.
Спасибо!
Я имел ввиду, что с такой установкой пожарная не даст разрешение на работу клубу.
Уверен, все помнят печальные события в «Хромой Лошади» и что они были вызваны именно представлением с пиротехникой.
Ужаснитесь)
http://www.visualstudio.com/products/compare-visual-studio-products-vs
Проект опубликован под Apache лицензией. Насколько я понял, с некоторыми оговорками лицензия разрешает использование кода в платных продуктах.
Должны же быть какие-то причины для отказала использования возвращаемой ступени.
Может кто-то из разбирающихся в предмете прокомментировать?
Резюмирую:
1. Деньги на руки примерно 5000 USD для senior разработчика
2. Если я правильно понял, аренда жилья обходится примерно в 2000 usd.
3. Куча доп. расходов
В общем поехать отдохнуть туда можно, а перебираться большого смысла нет, особенно если есть семья, ребенок.
Возникло ряд вопросов:
Какие зарплаты у разработчиков?
Есть ли возможность перебраться с семьей?
Сможет ли супруга работать?
Проблема буферизации и полинга данных в данном конкретном примере не актуальна за отсутствием таковой:
1.Клиент создает подключение,
2. Передает данные,
3. Получает ответ и отключается.
WCF не всегда возможен / удобен, особенно если речь идет о разных платформах / языках программирования.
>Пула коннектов (с пересоединением для балансировки) не хватает.
Это правда, пример из статье не годится в промышленное применение или просто в проект с высокой нагрузкой.
>Половина статьи состоит из описания сериализатора. Далее вполне обычная работа с TcpClient/TcpListener, которая в msdn довольно подробно описана.
В свое время я потратил довольно прилично времени, чтобы это все написать и исправить все найденные ошибки, поэтому и решил написать статью с работающим примером, чтобы кто-то воспользовался результатами моей работы и сэкономил себе время.
>Заголовок статьи не соответствует содержимому.
На мой взгляд вполне соответствует.
>Я, посмотрев на заголовок и преамбулу, подумал, что речь пойдёт о своём сокетном велосипеде
Это и есть свой велосипед.
> В статье был изобретён свой RPC-велосипед
RPC — Remote Procudure Call, ничего такого у меня нет, просто отправка и прием команд с подробным описанием, хотя, возможно все таки описание не достаточно подробное.
>Кстати, я вот что-то не припомню, инты BinaryReader читает/пишет в big endian или little endian
Если я правильно помню, .net работает с little endian порядком. Если же вы хотите взаимодействовать с Java, то необходимо разворачивать порядок байт, я об этом упомянул в конце статьи.
>Замечание 3: Не понятно, почему вместо сериализации, нужно было руками байты вытаскивать. Команд может быть очень много, и в процессе их ручной сериализации вы очень быстро начнёте делать ошибки.
Вы правы, логичнее было бы сделать автоматический сериализатор, но я сделал именно так как сделал.
>Замечание 4: Допустим, я хакер. В процессе поиска дырочек, я перебираю все найденные порты, отправляя на них стандартный HTTP Get. Что произойдёт?
Это не понял, причем тут хакер и http get?
>Вот эта строка на нехорошие мысли наводит: CommandHeader commandHeader = CommandHeader.FromBytes(bytes);
Поясните, что именно смутило?
Увидят политический пост, найдут автора, впаяют штраф на надцать тысяч рублей и потребуют прекратить безобразие.
А еще цензура явно запрещена конституцией, ага.
Спасибо!
Уверен, все помнят печальные события в «Хромой Лошади» и что они были вызваны именно представлением с пиротехникой.