Это копия, сохраненная 8 декабря 2015 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
ITT элита продолжает обсуждает будущее этого прекрасного и современного продукта компании Microsoft. Только в этом треде элитные разработчики ответят на самые острые вопросы индустрии.
Скачать VS2015: https://www.visualstudio.com/en-us/products/vs-2015-product-editions.aspx
Community версии будет достаточно в большинстве случаев: она поддерживает и C#, C++, VB.NET и F#, а так же имеет возможность установки дополнений
Что почитать:
- Bart De Smet - C# 5.0 Unleashed
- Joseph Albahari и Ben Albahari - C# 5.0 in a Nutshell (на русском: C# 5.0, Справочник. Полное описание языка)
- Pro C# 5.0 and the .NET 4.5 Framework (Andrew Troelsen)
- Jon Skeet - C# in Depth (на русском: C# для профессионалов. Тонкости программирования)
- Jeffrey Richter - CLR via C# (на русском: Программирование на платформе Microsoft .NET Framework 4.5 на языке C#)
- Writing High Performance .NET Code (Ben Watson)
- Pro WPF 4.5 in C# (Matthew MacDonald)
- Windows Presentation Foundation 4.5 Cookbook (Pavel Yosifovich)
Что посмотреть:
- Programming with C# - https://www.edx.org/course/programming-c-microsoft-dev204x-0
- Beginning Game Programming with C# - https://www.coursera.org/course/gameprogramming
- C# Fundamentals: Development for Absolute Beginners - https://goo.gl/meyyxO
- https://nnm-club.me/forum/viewtopic.php?t=891636 - коллекция видеоуроков, по всему дотнетовскому.
Ресурсы:
- http://stackoverflow.com/questions/tagged/c%23
- http://www.tutorialspoint.com/csharp/
- http://professorweb.ru
- http://net-informations.com
- http://habrahabr.ru/hub/csharp/
Онлайн-компиляторы:
- http://ideone.com/
- https://dotnetfiddle.net/
- http://csstub.com
- http://www.tutorialspoint.com/compile_csharp_online.php
FAQ
Q: Что с IDE для других систем?
A: Самый юзабельный вариант - MonoDevelop ( http://www.monodevelop.com/download/ )
Для vim можно использовать OmniSharp ( https://github.com/OmniSharp/omnisharp-vim )
VS Code ( https://www.visualstudio.com/en-us/products/code-vs.aspx )
Также существуют плагины для Atom'а и Sublime Text, но функциональность там достаточно сильно урезана.
SharpDevelop - еще одна IDE для C#, отличается малым размером (около 20мб) и опциональной портабельностью, при этом имея дизайнер WinForms и WPF, а также интеграцию с FxCop, StyleCop и прочими.
Q: Пригоден для C# для мобильной разработки?
A: Да, можно выбрать в окне выбора компонентов студии при установке VS
Дополнительные инструменты для разработки на C#
LINQPad - сорт оф REPL, с возможностью быстрого подключения к БД и удобной визуализацией данных
dnSpy - декомпилятор, малоизвестный форк ILSpy, где реализована возможность модификации IL-кода прямо в EXE и DLL файлах, отладка IL-кода и много других фич для reverse engineering'а. Плюс няшные темы как в студии
dotPeek - бесплатный декомпилятор от JetBrains
scriptcs - для запуска C# кода как скриптов, возможность использовать как REPL
Обзор Roslyn: https://github.com/dotnet/roslyn/wiki/Roslyn%20Overview
Новые возможности C# 6.0: https://github.com/dotnet/roslyn/wiki/New-Language-Features-in-C%23-6
Код этой шапки: http://pastebin.com/mUAJ6Ugz
Прошлый тред сагается обиженными детьми здесь: https://2ch.hk/pr/res/563725.html
А чому у тебя так горит с шарпа-то, уебок?))))
>2015
>вайп вручную
Я знаю, чем это делается.
Но ты же не просто по фану вайпаешь тред, уйдя пить чаёк, ты следишь за его перекатами, отвечаешь мне - именно что проебываешь своё время.
Вангую в тебе баттхертнутого безработного/студентика/свидетеля опенсорса и швабодки, ибо представить адекватного человека, который бы стал проебывать свободное от трудовой деятельности время я не могу.
Можешь верещать что угодно в ответ, мне похуй, я выводы сделал, омежка ты обоссаный)))))
Так он же мамкин воен с дотнетом, который не нужен. А на деле даже на доширак себе заработать не может и завидует черной завистью успешным крудошлёпам на asp.net за 3к $ в месяц :)
Подловил, какой находчивый. Сделаю вид что ты мне просто так пожелал приятного аппетита и продолжу наворачивать пельмешки.
бамп вопросу
Разработка энтырпрайза под десктопы. Хули, только дон тен нормально поддерживает десктоп на винде.
А в чем отличия от джавы тогда? Кроме того, что сишарп анально под винду. Я не толщу, просто ньюфаг.
Я тебе только что объяснил, десктоп под винду. На джаве писать гуишные приложения — боль. Паттерн мввм реализуется через жопу. А си шарп берёшь и хуячишь на одной платформе всё. ВЦФ тоже удобен, в целом на сишарпе гораздо легче писать, чем на джаве. Если хочешь знать различия на более низком уровне, то тебе в соответствующие статьи, там тебе каждую мелочь объяснят.
Ты, кажется, не понимаешь, что язык - это просто инструмент и каждый язык нужно применять сообразно задачам. Дотнет был запилен для быстрого написания корпоративного говна и вполне хорошо себя показывает там, тем более что лучше всех остальных. Написание программ на нём дает мне неплохие деньги, выше чем у других программистов (кроме javaребят) и все пищущие для микроконтроллеров за еду/швидители швабодки давятся от озвученной суммы заработка и начинают что-то там верещать.
Ты просто показываешь себя невероятным дауном, говоря такие глупости. А самое что ужасное - ты показываешь себя очень некомпетентным, а это в данной профессии хуже рака.
Это как кричать
>ДРЕЛЬ - ГАВНО, А ВОТ МОЛОТОК - ЗАЕБИСЬ РЯЯЯ
В общем, смотри свои бурятские мультики под пельмешки дальше, пока дяди зарабатывают деньги, дружок.
Но ведь для сисярп/жабы нет подходящих задач. А твои мантры я уже слышал тысячу раз про инструмент под задачу.
Чего тебе нужно?
Окей, мы идиоты, изучающие платформу, которая бесполезна и не востребована. Можешь считать, что у нас такое странное хобби.
Какое тебе дело? Наши вкусы так важны для тебя, что ты будешь тратить время и энергию, чтобы нас переубедить?
>Но ведь для сисярп/жабы нет подходящих задач
Потому что ты сказал? Просто кек.
>А твои мантры я уже слышал тысячу раз про инструмент под задачу.
И это как-то отменяет их правдивость?
Хотя чего я вообще разговариваю с дауном, все вскукареки которого сводятся к
>оппонент сказал X = Y
>я скажу что X != Y и не приведу ни одного аргумента
>бессмысленно деятельности.
Ну, во-первых, мы этим зарабатываем себе на весьма небедную жизнь, в отличие от маминого борщехлеба.
А во-вторых... впрочем, на этом и закончим.
А теперь быстренько пояснил мне в каких сферах ты используешь вцф? Также хотелось бы услышать как там поживает асп.нет? С седьмой беты до восьмой ты обновлялся? Заебись?
Ухожу в армию и боюсь, что мне придется чуть ли не переучиваться полностью по возвращению из неё.
Тут даже два анона всё время службы провели в учебке.
Да ты и шарп не вспомнишь через год без компьютера.
2. Почему поддержки МакОс нету? Это намеренные действия МС, чтобы конкурентную ОС не поддерживать?
Да ничего кардинально не изменится за 1 год. Вон asp.net 5 планируют релизуть только в первом квартале 2016. Пока его обкатают, пока народ переучится, пока проекты новые пойдут, глядишь только в 17-18 годам на него пересядут, если пересядут вообще.
https://github.com/aspnet/Home/wiki/Roadmap
В прочем вебе тоже ничего не поменяется. Сейчас попиливают не спеша функционал es6. Пока допилят, пока старые браузеры с поддержки снимут.
http://kangax.github.io/compat-table/es6/
Ангуляр новый, например, пилят чисто под новые спеки и хуй знает когда его допилят и использовать будут. Кто может уже пилит на нем и под новые спеки, пользуясь каким-нибудь транспайлером, типа бейбл. Даже не хочу в этот хипстерский фронтенд лезть.
Что там мс с десктопом делает для меня вообще загадка. Какие-то, блеать, приложения для вин8, приложения для вин10, хуйня какая-то. WPF никуда уже не денется, отомрет вместе с дестопом разве что.
За мобильные приложения особо не скажу, ибо никогда не писал, но на последней презентации мс хвастались разработкой кроссплатформенных мобильных приложений. Xamarin все дела. Может выстрелит и все начнут писать говноприложения под андроид на дотнете.
Вообще, мс начал двигаться в сторону кроссплатформенности. Запилили переносимое ядро coreclr. Написали рантайм поверх рантайма и радуются. В отдаленной перспективе будем писать один раз и дебажить на всех платформах.
http://docs.asp.net/en/latest/dnx/overview.html
Все, что угодно. Можно писать серверные приложения без какого-либо UI. Можно писать движки баз данных (RavenDB). Можно поддерживать говно на винформах. Можно писать десктопные приложения на винформах и впф. Можно веб на асп.нет мвц. Можно еще REST сервисы хуярить, только они не нужны.
Как пить дать.
Привет, пошёл нахуй!
Можно устроиться в Майкрософт и писать Бинг, он на шарпе.
Потому что я так захотел. Сейчас и этот завайпаю, только переделаю вайпалку чуток чтоб вы куклой не могли скрывать.
double [] a, b, c;
или
double [] a, []b, []c;
Справедливо, хз зачем я в тред написал. За 10 секунд в студии можно убедиться, что второй вариант вообще не компилится.
Написать что угодно и на крестах можно. Я просто хотел узнать, что светит мне, если я захочу податься в шарп. На данный момент прохожу испытательный срок в фирме, пишу десктоп на Qt. Подумал, что не так уж и плохо. До этого учил джаву, но заебался на туевой куче фреймворков ебучие бины и связанные с ними эксепшены до сих пор мне снятся в снах.Но так как я студентота без опыта работы, хотел бы узнать основные направления в топовых ныне на рынках языках в моем мухосранске это джава, сисярп и кресты, пхп и прочая ебень мне малоинтересна.
inb4: всем похуй
Когда я загружаю страничку все текстбоксы заполнены значениями модели, хоть нигде во View присваивание атрибуту value не делается и в конструкторе там где должно блыть value передается null.
То есть получается указав текстбоксам id, name соответствующие именам свойств модели эти текстбоксы будут автоматически заполняться значениями модели?
мод-крестоблядь
Раз уж вы перекатились, то я тот тред просто закрою, чтобы двух сразу не висело.
Потому что ты дискредитируешь наш язык, хуиная голова. Я не сру в чужих тредах, и ты так делай.
А в своих тредах срать можно?
http://pastebin.com/M2gDJbnr
Хотя вот попробовал скачать с vk и файл загрузился в обычном объеме.
Ну так как скачать в нормальном объеме файл?
Думаю это не проблма хттпклиента или вебклиента, что-то макабовское.
К сожалению не понимаю чего ты хочешь, т.к. мой хром и фф тоже скачивают 85кб файл.
Ах, мои вангования оказались успешными.
Ну тогда думаю это тебе у разработчиков макабы нужно узнавать.
Сап, шарпач. Сейчас упарываюсь созданием простенького редактора картинок\иконок с упором на пиксельарт. Но вот возникла большая проблема: вменяемого примера редактирования картинок с масштабированием пикселей я не нашёл. Всякие извращения типа отрисовки пикселей панелями не в счёт.
Можете посоветовать направление, в котором стоит копать?
https://en.wikipedia.org/wiki/Image_scaling
Вероятно, тебе надо один из алгоритмов прикрутить.
http://www.cambridgeincolour.com/tutorials/image-interpolation.htm
Впрочем, там есть картинка увеличения без интерполяции пикселей. В целях редактирования тебе, наверно, нужно показывать увеличенные оригинальные пиксели, а не их интерполированные вариации.
Можно создать кастомную сетку пикселей поверх холста и кисть, работающую на основе разрешения этой сетки. Каждый квадрат сетки соответствует пикселю исходного изображения. При увеличении масштаба сетка увеличивается и ее ячейки заполняются цветом соответствующего пикселя, аналогично при уменьшении масштаба. При этом масштаб изображения при редактировании не может быть меньше оригинального, чтобы не приходилось смешивать пиксели. Редактирование, соответственно, будет заключаться тупо в заполнении сетки кистью с разрешением клетки.
Хуйня, канешь, какая-то. Надо смотреть как работают аналогичные редакторы пиксельной графики.
В интернете. Кеп. Можешь глянуть что тут пилят в треде и повторить. Или можешь погуглить базовые алгоритмы и структуры данных cs и реализовать их.
Архитекторы, подскажите.
Общий вид задачи: нужны две перегрузки конструктора в обобщенном классе ClassName<T>
1. public ClassName (T)
2. public ClassName (string)
Проблема в том, что если юзер вызовет ClassName (string) при typeof(T)==String, возникнет неопределенность.
Как быть?
Я пока что додумался до следующих вариантов, но все они уродливы.
а) Добавить лишний пустой объект к одному из методов, для предотвращения неопределенности.
public ClassName (T)
public ClassName (object Null, string)
б) Единственный метод. Ненужный параметр отправлять как null (или значение по умолчанию для нессылочных типов). Пользователь класса ни за что не догадается, как им пользоваться.
Method<T>(T, string)
в) Сделать конструктор скрытым. Добавить два статических метода, вызывающих конструктор.
public static ClassName<T> CreateByT (T)
public static ClassName<T> CreateByString (string)
Сам конструктор оформить сигнатурой из варианта б. И молиться, чтобы этот говнокод никто никогда не увидел.
Делаю класс типа Result<T>, который хранит в себе результат операции, либо сообщение об ошибке. Очень не люблю type-unsafe код, поэтому делаю обертки вместо работы с object. Это нормальная практика?
Если что я две недели в C#, так что любым советам рад.
Архитекторы, подскажите.
Общий вид задачи: нужны две перегрузки конструктора в обобщенном классе ClassName<T>
1. public ClassName (T)
2. public ClassName (string)
Проблема в том, что если юзер вызовет ClassName (string) при typeof(T)==String, возникнет неопределенность.
Как быть?
Я пока что додумался до следующих вариантов, но все они уродливы.
а) Добавить лишний пустой объект к одному из методов, для предотвращения неопределенности.
public ClassName (T)
public ClassName (object Null, string)
б) Единственный метод. Ненужный параметр отправлять как null (или значение по умолчанию для нессылочных типов). Пользователь класса ни за что не догадается, как им пользоваться.
Method<T>(T, string)
в) Сделать конструктор скрытым. Добавить два статических метода, вызывающих конструктор.
public static ClassName<T> CreateByT (T)
public static ClassName<T> CreateByString (string)
Сам конструктор оформить сигнатурой из варианта б. И молиться, чтобы этот говнокод никто никогда не увидел.
Делаю класс типа Result<T>, который хранит в себе результат операции, либо сообщение об ошибке. Очень не люблю type-unsafe код, поэтому делаю обертки вместо работы с object. Это нормальная практика?
Если что я две недели в C#, так что любым советам рад.
То, что ты под пунктом в) указал, чем тебе не нравится? Нормально все, если тебе нравится, конечно, с result возится.
private Result<T> (T value, bool isValid, string error);
public static Result<T> CreateResult<T>(T value)
{
return new Result<T>(value, true, default(error));
}
public static Result<T> CreateErrorResult(string error)
{
return new Result<T>(default(T), false, error);
}
Result<User> result = service.GetUser(id);
if (!result.IsValid)
{
Console.WriteLine(result.Error);
}
else
{
Console.WriteLine($"{result.Value.Id} - {result.Value.Name}");
}
Но, вообще, лучше в таком случае кидать ексепшоны, ибо что-то нехорошое у тебя в методе произошло и он ошибку выдал. Если тебе надо валидацию произвести, то это отдельная тема и там только сообщение о невалидных значениях нужно:
IEnumerable<ValidationResult> valResults = Validate(user);
if (valResults.Any())
{
valResults.ForEach(Console.WriteLine);
}
else
{
service.UpdateUser(user);
}
>То, что ты под пунктом в) указал, чем тебе не нравится?
В конструкторе лишний параметр, который не используется. Некрасиво же.
>если тебе нравится, конечно, с result возится.
Посмотрел сейчас на вызов... И теперь мне больше не нравится с Result возиться. С тем же успехом мог исключение сгенерировать и поймать в вызывающем методе.
При обоих подходах каждая содержательная строка кода превращается в пять. И код становится нечитаемым. Печалька.
Ну, это проблемка, да.
Если у тебя много участков кода такого содержания:
try
{
service.Update(user);
}
catch(Exception e)
{
Console.WriteLine(e.Message);
}
То ты можешь вынести это в отдельный метод:
public static void SafeRun(Action action)
{
try
{
action();
}
catch(Exception e)
{
Console.WriteLine(e.Message);
}
}
и использовать уже его:
SaveRun(() => service.Update(user));
или подцепить aop фреймворк и заюзать аспект с логированием ексепшенов:
[LogExceptions]
public void MthodName()
{
....
service.Update(user);
....
}
Вариантов по скрытию бойлерплейта, в принципе, масса.
Ну, это проблемка, да.
Если у тебя много участков кода такого содержания:
try
{
service.Update(user);
}
catch(Exception e)
{
Console.WriteLine(e.Message);
}
То ты можешь вынести это в отдельный метод:
public static void SafeRun(Action action)
{
try
{
action();
}
catch(Exception e)
{
Console.WriteLine(e.Message);
}
}
и использовать уже его:
SaveRun(() => service.Update(user));
или подцепить aop фреймворк и заюзать аспект с логированием ексепшенов:
[LogExceptions]
public void MthodName()
{
....
service.Update(user);
....
}
Вариантов по скрытию бойлерплейта, в принципе, масса.
Разницы-то получается нет. Только класс лишний написали (ValidationResult).
Можно было из Validate выбрасывать InvalidArgumentException вместо ретурна. И ловить его уровнем выше. То же самое по объему кода и по читаемости:
try
{
Validate(user);
}
catch (InvalidArgumentException ex)
{
cw(ex.Message);
}
service.UpdateUser(user);
Ты не сможешь несколько проверок провести, если будешь кидать ексепшоны при валидации. Либо тебе придется несколько раз ловить эксепшоны при валидации и собирать их в агрегатный ексепшон и выбрасывать его. Все равно новый класс создашь и производительность посадишь немного.
С делегатами хорошая идея. Можно сделать string вариант с возвратом ошибки. Если в вызывающем методе нужно узнать о результатах - ловить ретурн. Если не нужно - не ловить. (тогда проверка в одну строку будет, супер)
>или подцепить aop фреймворк и заюзать аспект с логированием ексепшенов
Интересно, сейчас погуглю.
Спасибо.
Да, точно, я не подумал об этом. Ошибочное действие предотвратил только, всю информацию о вводных данных не собрал. Если пять ошибок в пяти полях - придется юзеру пять раз данные отвравлять и пять раз по одной ошибке ловить лол. Жестоко.
Поясните за бд. Делаю приложение для прослеживания средств. Озадачился как хранить данные. В случае сервера понятно - коннектишься к базе и все хорошо. Но я пилю приложение для клиентской стороны. Получается нужно будет запускать бд и соединяться с ней, или есть менее упоротый вариант (Пару раз видел как С++ приложение использует Sqlite).
Ты либо так же коннектишься к бд на сервере напрямую, либо пишешь сервис и получаешь данные через него, либо используешь локальную бд, если приложение не требует многопользовательского режима с общими данными. Можешь так же хранить данные в обычных файлах. It depends, короче.
>Отличные знания HTML/CSS/JavaScript и связанных технологий
>знание технологий HTML/DHTML, JavaScript, CSS;
>Базовые знания HTML, CSS, JavaScript/TypeScript;
Как это понимать? Что значит "знания"? Что там знать? Что <head> находится выше <body>?
От программистов реально требуют навыки верстки? Разве для этого не существует специальной профессии под названием "верстальщик"?
"Знания" они сука требуют. Если бы вам знания нужны были - вы бы книжки искали, а не работников.
А ты слишком тупой чтобы осилить профессию "верстальщик"?
Зря ты так на самом деле, там у них дохуище заебов, хорошего версталу знакомого с инструментами и стандартами найти сложнее дотнетчика ну и они просто экономят, лол
Помоги, чем сможешьплеас.
Есть один проэкт ASP.NEP с MVC.
Значит создаяю я такой 2 модельки:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace hg.Models
{
class Hui_govno
{
public string name { get; set; }
public int dcp { get; set; }
public int dmg { get; set; }
public int qwe { get; set; }
public bool shit { get; set; }
}
}
и
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data.Entity;
namespace hg.Models
{
class Hui_govnoContext
{
public DbSet<Hui_govno> Hui_govnos { get; set; }
}
}
А потом создаю хоумКонтроллерлалка ААЗАЗАЗ))))0)0)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using hg.Models;
namespace hg.Controllers
{
public class HomeController : Controller
{
Hui_GovnoContext db = new Hui_GovnoContext();
// GET: Home
public ActionResult Index()
{
IEnumerable<Hui_Govno> hui_govnos = db.Hui_govnos;
ViewBag.Hui_govnos = hui_govnos;
return View();
}
}
}
На индексе добавляю представление:
@{
Layout = null;
}
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width" />
<title>HUI_GOVNO!!</title>
</head>
<body>
<div>
<h3>HUI_GOVNO!!</h3>
<table>
<tr>
<td><p>HUI_GOVNO!!</p></td>
<td><p>HUI_GOVNO!!</p></td>
<td><p>HUI_GOVNO!!</p></td>
<td><p>HUI_GOVNO!!</p></td>
</tr>
@foreach (var b in ViewBag.Hui_govnos)
{
<tr>
<td><p>@b.name</p></td>
<td><p>@b.dcp</p></td>
<td><p>@b.dmg</p></td>
<td><p>@b.qwe</p></td>
<td><p><a href="/Home/Change/@b.Id">Dinahooj</a></p></td>
</tr>
}
</table>
</div>
</body>
</html>
и оно мне выдает ошибку в файле index.cshtml в строке : @foreach (var b in ViewBag.Hui_govnos)
Исключение типа "System.NullReferenceException" возникло в App_Web_benjc5qp.dll, но не было обработано в коде пользователя
Дополнительные сведения: Ссылка на объект не указывает на экземпляр объекта.
че делать, Анон?
Помоги, чем сможешьплеас.
Есть один проэкт ASP.NEP с MVC.
Значит создаяю я такой 2 модельки:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace hg.Models
{
class Hui_govno
{
public string name { get; set; }
public int dcp { get; set; }
public int dmg { get; set; }
public int qwe { get; set; }
public bool shit { get; set; }
}
}
и
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data.Entity;
namespace hg.Models
{
class Hui_govnoContext
{
public DbSet<Hui_govno> Hui_govnos { get; set; }
}
}
А потом создаю хоумКонтроллерлалка ААЗАЗАЗ))))0)0)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using hg.Models;
namespace hg.Controllers
{
public class HomeController : Controller
{
Hui_GovnoContext db = new Hui_GovnoContext();
// GET: Home
public ActionResult Index()
{
IEnumerable<Hui_Govno> hui_govnos = db.Hui_govnos;
ViewBag.Hui_govnos = hui_govnos;
return View();
}
}
}
На индексе добавляю представление:
@{
Layout = null;
}
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width" />
<title>HUI_GOVNO!!</title>
</head>
<body>
<div>
<h3>HUI_GOVNO!!</h3>
<table>
<tr>
<td><p>HUI_GOVNO!!</p></td>
<td><p>HUI_GOVNO!!</p></td>
<td><p>HUI_GOVNO!!</p></td>
<td><p>HUI_GOVNO!!</p></td>
</tr>
@foreach (var b in ViewBag.Hui_govnos)
{
<tr>
<td><p>@b.name</p></td>
<td><p>@b.dcp</p></td>
<td><p>@b.dmg</p></td>
<td><p>@b.qwe</p></td>
<td><p><a href="/Home/Change/@b.Id">Dinahooj</a></p></td>
</tr>
}
</table>
</div>
</body>
</html>
и оно мне выдает ошибку в файле index.cshtml в строке : @foreach (var b in ViewBag.Hui_govnos)
Исключение типа "System.NullReferenceException" возникло в App_Web_benjc5qp.dll, но не было обработано в коде пользователя
Дополнительные сведения: Ссылка на объект не указывает на экземпляр объекта.
че делать, Анон?
Да я ничего против верстальщиков не имею, отличная профессия. Просто верстка - это на 1% знания и на 99% руки и опыт. Очень практическая и прикладная область. Синтаксис html за полчаса выучить можно. Но чтобы нормально верстать - нужны месяцы практики.
Такие требования, это то же самое что в вакансии водителя написать "требуется человек со знанием автомобилей".
Я не против научиться верстать, просто я сильно сомневаюсь, что asp пацаны реально в конторах сидят макеты верстают. Подозреваю, что это требование ничего не значит и 99% дотнет разработчиков версткой никогда не занимаются. Написали требование просто для выебонов. Известно же, что чем больше сложных слов в объявлении, тем круче контора.
Ну и соответственно я не хочу тратить несколько месяцев на практику верстки, если мне никогда в жизни этим заниматься не придется (а так скорее всего и есть).
Бесят эти ушлепки, почему они не могут нормально по-русски написать РЕАЛЬНЫЕ требования? Друг у друга какую-то хуйню копипастят, в которой большинство написанного - пустые ничего не значащие слова.
А нахуй работу, лучше буду дальше хикковать и питаться дошираком. Противно с этими мудаками связываться. Вдруг это заразно.
>ну и они просто экономят, лол
Экономят? Нанимают программиста, чтобы он делал работу верстальщика? Вместо того, чтобы нанять верстальщика, который за ту же работу возьмет меньше денег и сделает ее в три раза быстрее и лучше? Офигенная экономия.
Ну, скорее всего придется не верстать, а подправить макет или набросать прототип на бутстрапе каком-нибудь, такое сложно назвать версткой понятное дело.
А экономия. Ну что поделать, расеянскей бизнесмен считает что если посадить человека и принтеры заправлять и код писать и верстать то он охуительно сэкономит, а на деле проебет проект по срокам, сломает принтеры и заебет сотрудника так, что тот просто уволится нахуй дропнув базу.
Реалии.
>Реалии.
Понятно...
>Ну, скорее всего придется не верстать, а подправить макет или набросать прототип на бутстрапе каком-нибудь, такое сложно назвать версткой понятное дело.
Ну да, я так и думал.
Могли бы написать "Умение найти и изменить одну строчку в разметке". Но нет, они напишут "отличное ЗНАНИЕ html/css".
Типовые каменты о погоде запили. Потом будешь их анализировать с умным видом, а в резюме напишешь что работал с бигдатой.
Ну на ргхосте общаются про брата, а у тебя будут писать многозначительное "Ясно". Чому нет?
hui_govnos должно в качестве модели подключаться к View.
И проверь подключение к базе данных вообще происходит или нет
Ну зайди в предыдущий тред и посмотри сколько там полезной инфы лол.
1. String s;
Method(s);
2. String s = null;
Method(s);
У нас же в обоих случаях ссылка пустая и на объект не указывает?
Какой API используешь, чтобы людей током бить удаленно? В WCF какие-то библиотеки для этого есть?
Парни, посоветуйте либу для msvc2012, чтобы пользоваться gl, glu, glut в winforms. По учебе нужно нырнуть в это говно, хочу нырнуть поудобнее.
Не нашел у них опенгл треда. Видимо все на юнити перекатились. Да и меня с легаси опенглом там быстро бы отхуесосили.
Попенсорс такой попенсорс.
Можете заглянуть на dreamspark и проверить если ли там в XAMARIN (списке доступных продуктов)?
Русская раскладка не нужна, очевидно же
Стандартная проблема GовноTыКа и прыщеинтерфейсов вообще.
>сайт о погоде с комментариями, смайлами и кармочкой
Эта идея настолько ебанутая, что мне кажется, что оно даже взлетит при нормальной реализации.
Наверняка где-то уже есть.
Анон выше посоветовал OpenTK, его и используй. Писать приятнее, чем на OpenGL на крестах, но документация посасывает.
В прилаге есть 2х колонный грид с бесконечной загрузкой. В каждом итеме - картинка, которая подгружается с тырнета. Короч проблема в том, что если проскролить быстро его например до 100го элемента - прилага будет качать все предыдущие 100 картинок. И потому то место куда я проскролил отобразится очень не скоро.
Что можно придумать чтобы подгружать только то, что надо? Я думал насчет сценария типа "если айтем больше секунды на экране - то загрузить картинку", но это выглядит как говно.
Помоги, анончик.
Не знаю бага какая-нибудь опять, наверно. Я эту штуку отключил за ненадобностью. Что ты там под дебаггером в хосте студии замерять собрался?
У меня в проекте работа с памятью через Marshal встречается, наверняка где нибудь память течет.
Элитные разработчики, снова нужны ваши пояснения.
У меня есть два метода, инкапсулирующих хорошо понятные операции. Выглядит каждый из них как 20 строк абсолютно нечитаемого кода - условия, циклы. Есть одноуровневая мини-рекурсия, реализованная тупой копипастой куска кода внутрь самого себя.
Выглядит уродливо, нечитаемо, занимает в два раза больше места, чем могло бы.
Можно сделать вот что: вынести за скобки рекурсивную функцию (с делегатом в параметре).
NonameFunc(()=>{ NonameFunc(()=>{SimpleCode();}); });
Если так сделать, то объем кода сократится вдвое, а каждый метод будет состоять буквально из пары строк.
Вроде все хорошо, но проблема в том, что у этой функции нет никакого ООП-смысла. То есть, я не могу дать ей название, которое объяснит ее назначение. Это просто кусок алгоритма, сам по себе не имеющий никакого смысла, который нигде и никогда больше использоваться не будет.
Насколько я понимаю, это противоречит парадигме ООП. Если мы не можем разбить логику метода на понятные смысловые части, значит этого делать не нужно и весь код следует писать в одном методе.
С другой стороны, у нас есть принцип DRY (dont repeat yourself), согласно которому китайский код (копипаста) недопустим.
Как быть в такой ситуации?
С точки зрения читаемости оба варианта проигрышные, даже не знаю какой хуже. Низкоуровневые алгоритмы (уровень которых ниже, чем уровень основных объектов программы) вообще можно читаемыми сделать?
У всего твоего кода нет никакого ооп смысла. Щито поделать. Невозможно рефакторить чужой код, не зная что он делает, а тем более не наблюдая этот код. Вангую, что тебе надо сам алгоритм переписать.
Теоретический вопрос же.
>есть китайский говнокод
>можно вынести повторяющийся кусок и уменьшить размер кода в два раза
>но у этого куска нет никакого ООП-смысла.
>это противоречит парадигме ООП.
>китайский говнокод потиворечит парадигме DRY
>Как быть в такой ситуации?
Я покажу код, какой-нибудь знаток математики сразу заявит, что у функции таки есть логичное название и проблема как бы решена. Но я ответа на свой вопрос так и не получу.
http://habrahabr.ru/post/130850/
>Признаки плохого программиста
>«Бульдозерный код», который создает впечатление рефакторинга посредством разбития кусков кода на процедуры, которые, правда, затем невозможно использовать где-либо еще (высокая когезия).
Ты архиватор или кодер? Если разбиение не добавляет читаемости, то в жопу разбиение, а если добавляет - в жопу принципы.
Всё-таки, Хабр — загончик для школоты.
Нет ничего плохого в том, чтобы разделить длинную функцию на две и по отдельности их отладить.
>C# — прекрасный детектор современного, умного и успешного человека. Изучение платформы .NET безошибочно указывает на успешного в будущем человека.
кекнул с дауна
>но у этого куска нет никакого ООП-смысла.
>это противоречит парадигме ООП.
>ооп смысл у куска кода
Две инъекции ассемблерных вставок этому олуху. ООП смысл есть только у объектов и их взаимодействий. Твои попытки рефакторинга никакого отношения к ооп не имеют. Думай как объект, стань объектом. Только тогда ты сможешь решить свою проблему.
>Вообще не понял, что ты хотел сказать.
Вот от этого у тебя и проблемы. Ты пытаешься следовать принципам ООП, но ты не понимаешь сути явления.
Если у меня в модели 20 полей, всех их херачить в форму?
>Ну блин. Противоречия. Голова бобо.
Слушай старших, они завещали нам пейсать краткий и выразительный код.
public delegate void DelegateName(object param1, object param2, object param3);
public static event DelegateName DelegateEvent;
должна подписываться на любой евент с тремя параметрами.
Ну, тебе же надо как-то передать эти значения серверу? Или думаешь, что он сам как-нибудь догадается что там пользователь вводит?
Причем здесь ООП вообще? Это функциональная декомпозиция, пока ты внутри одного объекта функции теребишь.
А всякая дутнетовская диагностика разве показывает unmanaged память?
Хорошие знания джавы.
- высшее образование;
- уверенный пользователь пк; That's all.
- английский B1;
- знания теории cs стек на массивах должен уметь у доски реализовать когда тебя посреди ночи поднимут;
- знания теории устройства ЭВМ, ОС, сетей;
- знания теории БД;
- продвинутые знания C#;
- уверенные знания .Net FCL, включая ADO.Net, ASP.Net, WPF, WCF;
- уверенные знания фронтенда: ES5, HTML5, CSS3;
- уверенные знания T-SQL;
- знания XML, XPath, XSD, XSLT etc;
- уверенные знания протокола HTTP;
- знания внутреннего устройства .Net (сборки, CIL, CLR, JIT, все это вот);
- знания процесса сборки .Net приложений под вин. MSBuild;
- начальные знания VCS (GIT, SVN, TFS);
- начальные знания юнит тестирования (MSTest, NUnit etc);
- начальные знания CI;
- начальные знания процессов разработки ПО.
И дописываешь модули под вордпресс потом с таким багажом.
Мне наоборот рассказывали.
Что на работку обычно приходят в первый раз обычно все почти нулевые, а потом их на месте обучают. Так выгодней работодателю, потому что зп
Я тоже так думал, в итоге просрал тупо 5 лет, почти нихуя не делая
Если в фирме настроен процесс обучения персонала, то, да, требования пониже чутка. Некоторые конторы мониторят студентоту, приглашают на внутренние курсы и после берут на позицию джуна. В идеале. Могут и нахуй послать, если необучаемый.
Очевидно, что надо менять и позицию и размер на половину значения дельты перемещения курсора в соответствующих измерениях. Кэп.
Ну, как бы нет, но я никогда подобным не страдал с формами, поэтому можешь еще погуглить. Кто знает, может найдешь чего. Скажешь потом.
да забил уже. до того, как здесь спросить, в около 6 запросах в гугле пролистал по 2 страницы результатов. ничего по этому поводу нет.
может подскажешь заодно, как воспроизвести звук щелчка мыши? на данный момент попробовал в пространстве имен system.media system sound и sound player. есть ли вариант попроще именно со звуком щелчка мыши? (как при открытии папки, например. кстати, чому то не смог его найти в c:\windows\media
Спасибо.
Очевидный вариант: глобальные поля в классе MainWindow. Но по слухам, это быдлокод. Это правда? Чем такой вариант плох? Какие альтернативы?
Мимо си\asm\vb\html\css\txt\гуманитарий
@
ОПТИМИЗИРУЕШЬ АЛГОРИТМЫ
@
ПИШЕШЬ АНСЭЙФ КОД
@
ЭКОНОМИШЬ НЕСКОЛЬКО БАЙТ
@
ПУСТАЯ WPF ФОРМА ЖРЕТ 100 МБ
Теперь это бугурта от дотнет тред.
Но ты уже угораешь по быстродействию, похуй на память.
Вопрос с собеседования на .net junior:
>Как установить в единицы самый правый нулевой бит в произвольном целом числе не используя циклов и рекурсии?
Поясните, о чем речь? В дотнет существуют какие-то способы манипуляции данными на таком низком уровне? Я ничего мельче byte не встречал никогда.
Я не понимаю в принципе, о чем речь. Какие биты? Что такое бит? Ну то есть я знаю в теории, что такое бит, но как до него добраться в программе?
Вот у меня код
Int32 randomInteger = Random.Next(-2000000, 2000000);
Что дальше?
Если я пойму модель и получу к ней доступ - алгоритм придумаю, в этом проблемы нет.
>стек на массивах должен уметь у доски реализовать когда тебя посреди ночи поднимут
Что это значит? Пикрилейтед что ли? Нахуя?
Ок, нагуглил.
Троэлсен пидорас ничего мне про них них не сказал. Гандон, вечно у него какие-то секреты от меня.
Я не понял, стек на массивах, это стек из массивов, стек из массива или массив стеков?
Ниже уровень возьми, шутник
Но черти ебут в жопу только верующих
>>572554
Так что ли?
class StackOnArray
{
private int[] stack;
public StackOnArray(int firstElement)
{
stack = new int[] { firstElement };
}
public int Peek()
{
return stack[stack.Length - 1];
}
public void Push(int element)
{
Array.Resize(ref stack, stack.Length + 1);
stack[stack.Length - 1] = element;
}
public void Pop()
{
if (stack.Length > 0)
Array.Resize(ref stack, stack.Length - 1);
}
}
Зачем так делать вообще? Какой наркоман будет немасштабируемые дотнет массивы использовать для подобных задач?
>>572554
Так что ли?
class StackOnArray
{
private int[] stack;
public StackOnArray(int firstElement)
{
stack = new int[] { firstElement };
}
public int Peek()
{
return stack[stack.Length - 1];
}
public void Push(int element)
{
Array.Resize(ref stack, stack.Length + 1);
stack[stack.Length - 1] = element;
}
public void Pop()
{
if (stack.Length > 0)
Array.Resize(ref stack, stack.Length - 1);
}
}
Зачем так делать вообще? Какой наркоман будет немасштабируемые дотнет массивы использовать для подобных задач?
Ты его неправильно реализовал, наркоман. Иди еще погугли. Сорцы стека в дотнете посмотри, например.
Что конкретно неправильно?
Вполне уверен, что все правильно. Pop void вместо ретурна, но это мелочь.
У тебя на каждый вызов память по-новой выделяется. Ты когда последний раз у психиатра проверялся, Антош?
Потом удивляются почему это их на работу не берут. Реализовать стек — дел-то на пять минут, казалось бы.
Задали мне такую штуку, сравнивать поля двух объектов с одинаковыми именами, имя поля Name, а список объектов Courses, с именами course.
А сравнивать с помощью переопределённого метода Equals.
И я вот сижу и чешу репу, как сравнивать поля у объектов и вывести в одном случае труе, а в другом фолс.
Простите за косноязычие, в проге не шарю.
Удваиваю, в питоне например все просто и понятно
В пять утра очнулся?
На хабре даже статьи про это есть
http://habrahabr.ru/post/137680/
http://habrahabr.ru/post/168195/
x | (x + 1)
Алсо, раньше угорал по битам и мог щелкать такие как орехи, а потом забил и вот теперь такие вещи прерывают меня минут на 5+
Почитай hacker's delight, первые пару глав, больше не нужно
Нахуя тебе здеся эксепшны выкидывать? Просто потому что можешь? Какие же вы, жарподебилы дураки...
Эээ, парень, может по существу вопроса? про языки срач это наверное в другой тред.
>Course.Equals
нихуя не понял.
Для начала переопредели GetHashCode, хули ты не слушаешься компилятора. И сравнивай либо значения этих hash'ей, либо через String.Equals
А почему нет? Не контракты же использовать
Сидишь такой сраниваешь-сравниваешь, и тут вруг кровь кишки распидорасило ARGUMENTEXCEPTION!!!1
я вообще нихуя не понимаю что от меня требуется, ну вернее понимаю и сделал без ебучего оверрайда.
public bool Equals(Course course)
{
return (this.Name == course.Name);
}
В задании дословно "Override the “Equals” method for “Grade” and “Course”
classes. Two courses are considered equal when they have the same name.
Two grades are equal when they reference the same course.
"
Я тебя люблю анончик, спасибо большое.
>метод
Мозги текут, оператор конечно же.
https://msdn.microsoft.com/uk-ua/library/ms173147(v=vs.80).aspx
Смотри, если ты применишь к своему классу интерфейс IConvertible то тебе придется описать все эти методы
public int ToInt32(IFormatProvider provider)
{
throw new NotImplementedException();
}
public long ToInt64(IFormatProvider provider)
{
throw new NotImplementedException();
}
public sbyte ToSByte(IFormatProvider provider)
{
throw new NotImplementedException();
}
public float ToSingle(IFormatProvider provider)
{
throw new NotImplementedException();
}
public string ToString(IFormatProvider provider)
{
throw new NotImplementedException();
}
public object ToType(Type conversionType, IFormatProvider provider)
{
throw new NotImplementedException();
}
public ushort ToUInt16(IFormatProvider provider)
{
throw new NotImplementedException();
}
public uint ToUInt32(IFormatProvider provider)
{
throw new NotImplementedException();
}
public ulong ToUInt64(IFormatProvider provider)
{
throw new NotImplementedException();
}
очевидно что из всего этого дерьма тебе нужно только ToInt32. Мне кажется лучше просто == оверлоадить.
Смотри, если ты применишь к своему классу интерфейс IConvertible то тебе придется описать все эти методы
public int ToInt32(IFormatProvider provider)
{
throw new NotImplementedException();
}
public long ToInt64(IFormatProvider provider)
{
throw new NotImplementedException();
}
public sbyte ToSByte(IFormatProvider provider)
{
throw new NotImplementedException();
}
public float ToSingle(IFormatProvider provider)
{
throw new NotImplementedException();
}
public string ToString(IFormatProvider provider)
{
throw new NotImplementedException();
}
public object ToType(Type conversionType, IFormatProvider provider)
{
throw new NotImplementedException();
}
public ushort ToUInt16(IFormatProvider provider)
{
throw new NotImplementedException();
}
public uint ToUInt32(IFormatProvider provider)
{
throw new NotImplementedException();
}
public ulong ToUInt64(IFormatProvider provider)
{
throw new NotImplementedException();
}
очевидно что из всего этого дерьма тебе нужно только ToInt32. Мне кажется лучше просто == оверлоадить.
Если тебе надо будет сравнивать с несколькими разными типами то очевидно IConvertible.
>как сравнить произвольный класс с числом через "=="?
Как оказалось легче всего это сделать через implicit.
https://dotnetfiddle.net/z6UHei
Почоны, решил запихнуть Entity Framework в универскую лабу. Получилось, захотел допилить. А именно: сделать так, чтоб каждые пару секунд БД в моём приложении переподгружала записи (информация об экзаменах в моём случае). Запилил всё втупую (для начала хотя бы так хочу сделать, потом улучше). В параллельном потоке запускается обновление таблицы в приложении, затем Thread.Sleep на пару секунд, снова обновление и так, пока приложение не закровешь. Но всплыла проблема пикрелейтед. Мой тред, который должен каждые N секунд рефшеришь мой ListBox с данными из БД не может трогать БД, потому что она создана в другом потоке. Посоветуйте, как решить эту проблему, ну или альтернативные способы решения такой задачи.
>чтоб каждые пару секунд БД
Ты вот щас просто взял главную идею ado.net и в говно ее опустил.
Какого хуя?
По-моему, будет гораздо читабельнее и УНИФОРМНЕЕ, если правую часть (после "=>") всегда делать с новой строки. Сразу видишь тело функции, все дела.
Разве не будет то же самое, что и если их просто убрать?
Еще как отхуесосят.
В принципе, если там что-то потенциально асинковое, тоже можно тот же аргумент насчёт униформности, что и "всегда ставьте {} для if, даже если внутри только один стейтмент". Если везде сокращаешь - тогда и здесь надо сокращать, если униформноблядствуешь - тогда пожалуй и здесь стоит асинк лепить, и с новой строки писать.
Фича с однострочными лямбда методами сама по себе спорная. Кому-то, видимо, лень стало 2 скобочки ставить. Теперь все ломаем глаза стрелочками.
И какая же идея?
Вот пара скринов моего долбоебизма. Единственная зацепка, это поле id на втором пике. Записи c SomeObj добавляются но не привязываются к моему Itemу.
Что нужно знать, чтобы стать .Net разработчиком?
https://www.youtube.com/watch?v=8x1Sr8j5Bgs
Какие требования к разработчику уровня junior?
https://www.youtube.com/watch?v=L2c6t9lNuds
Вебинар на тему "Анализ требований на позицию Junior
https://www.youtube.com/watch?v=cvhyoUa42uY
Семинар Junior Middle Web Developer. Анализ
https://www.youtube.com/user/CBSystematicsTV/search?query=junior"
Пролог.
От предпочтений конкретного человека зависит. Шарп как язык лучше, но немного меньше вакансий и анальная привязка к операционной системе виндоуз (по крайней мере пока, в будущем может что поменяется).
До c# учил haskell и не о чем не жалею.
Кстати, почему в c# такой ебанутый async?
В хаскеле async делает что то асинхронно, а await получает результат. Что с шарпом то не так?
А моно? Не хочу менять удобную бубунту на шиндовс
Petooh
Swift
Построчно читать и обрабатывать файл не получится, потому что важно содержание файла в целом.
Слишком мало исходных данных. Если количество памяти ограничено, то тогда может быть есть возможность как-то перестроить файл, чтобы его можно было читать порциями, иначе даже хуй знает.
Ты забыл про yoba-сервер.
Это Anagram Solver, идея решения (с созданием ключа, представляющего слово, отсортированное по алфавиту) взята из книги "Жемчужины программирования", задание примерно такое:
Составить программу ANAGRAM, которая:
1) вводит словарь, длина слов в котором не превосходит 20 символов, из текстового ASCII-файла, имя которого задано первым параметром командной строки;
2) находит в словаре все анаграммы (слова одинаковой длины, составленные из одних и тех же букв);
3) выводит в результирующий текстовый ASCII-файл списки всех анаграмм по одному списку в строке.
Да, ограничение по памяти. Этот приём никак нельзя приспособить под такое ограничение? Других нормальных идей решения в голову не приходит
Ну сходу могу предложить работать с БД, либо извернуться с файлом, но в любом случае промежуточный вариант нужно хранить на диске.
А это нормальный путь с точки зрения программиста: создавать БД ради отработки одного скрипта?
Тут вопрос не в количестве кода, а в объемах данных. Если данных много, то скорее всего использование БД будет оправдано, даже если это скрипт из пары десятков строк.
http://metanit.com/sharp/mvc5/ тут вроде по полочкам всё, да практических примеров мало.
http://habrahabr.ru/post/175999/ тут вроде всё на практических примерах, но уже со второго урока втирается какая то дичь про ninject, да и в комментах местами не очень лестно отзываются о гайде.
Помогите.
Учебник 2010 года, Трей Нэш, "Ускоренный курс для профессионалов" (и вот там-то самые азы-основы и разобраны).
Торент ссылка на видеоукорсы в оппосте.
http://www.asp.net/mvc/overview/getting-started майрософтовский гайд
Там все подкрепляется примером
http://professorweb.ru/my/ASP_NET/gamestore/level1/
простенький интернет магазин на формах и mvc
>.net source
private int _size;
private int _version;
На что обычно указывает знак подчеркивания в именовании полей? Или это просто соглашение об именовании, чтобы отличать поля экземпляра от параметров, передаваемых в методы?
В таблице будет больше полей чем свойств в базовом классе, оно само будет проставлять null неуказанным свойствам и заполнять нужными значениями поля отображающие свойства унаследованных классов?
>// malicious caller from mutating the array after this check.
>for (int i=0;i<lengths.length;i++) if="" (lengths="" <="" 0)="" throw="" new="" argumentoutofrangeexception("lengths["+i+']',="" environment.getresourcestring("argumentoutofrange_neednonnegnum"));="" fixed(int="" plengths="lengths)" return="" internalcreate((void)t.typehandle.value,lengths.length,plengths,null);="" }="" public="" static="" array="" createinstance(type="" elementtype,="" params="" long[]="" lengths)="" {="" if(="" lengths="=" null)="" argumentnullexception("lengths");="" int[]="" intlengths="new" int[lengths.length];="" for="" (int="" i="0;" lengths.length;="" ++i)="" long="" len="lengths;" (len=""> Int32.MaxValue || len < Int32.MinValue)
>throw new ArgumentOutOfRangeException("len", Environment.GetResourceString("ArgumentOutOfRange_HugeArrayNotSupported"));
Непонятны куски вида
>public="" static="" array=""
>type="" elementtype,="" params="" long[]="" lengths)
Код отсюда:
http://www.dotnetframework.org/default.aspx/DotNET/DotNET/8@0/untmp/whidbey/REDBITS/ndp/clr/src/BCL/System/Array@cs/2/Array@cs
// malicious reader from reading the code after this check.
Что-то у них протекло, лучше возми это http://referencesource.microsoft.com/#mscorlib/system/array.cs,138
Точно. Зря я испугался значит. Спасибо.
Это же вроде однои и тоже и там и там мы вызываем все связанные данные с помощью только с помощью разных методов
http://www.entityframeworktutorial.net/EntityFramework4.3/eager-loading-with-dbcontext.aspx
http://www.entityframeworktutorial.net/EntityFramework4.3/explicit-loading-with-dbcontext.aspx
Тебе обязательно ключ-значение хранить? Если нет, то предложу индексы построить и по ним впоследствии использовать поиск в файле.
Читаешь последовательно кусками, используя буффер мегабайт на 200, например (или больше, сам смотри).
http://www.infragistics.com/products/aspnet-mvc
http://www.telerik.com/download/aspnet-mvc
https://awesome.codeplex.com/
Мне нужно сделать нормальный веб-интерфейс, а я вообще не знаю как это делается. Насколько понял чтобы свои контролы писать нужно еще хорошие знания js, которых у меня нет. Бутстрап классы для внешнего вида приписать к тегам я в состоянии, но вот чтобы все еще интерактивно отзывалось. Проект должен быть в каком-то виде готов через месяц-полутора поэтому времени особого на изучение нету, нужно сразу что-то применять.
Может есть гайды, туториалы про фронтэнд для асп нет мвс?
Что мешает сделать WebAPI + Angular?
Angular для написания чего-то рабочего за 3-5 дней изучается и понимание javacsript для него практически не требуется.
> Что мешает сделать WebAPI + Angular?
Наверное то что я этим вообще не занимался и понятия не имею что есть что.
А хорошо выглядящие контролы для фронтэнда нужны, вот и не знаю за что взяться и откуда лучше учить. Пока разбираюсь пользуясь жеквери на кодакадеми и кодскул и джаваскрипт ру.
И посмотрю еще платные контролы под асп мвс, которые доступны на халяву на торрентах.
Поэтому и спрашиваю за что тут лучше.
>>575290
Хотя бы тот же paging таблицы бутстрапом не сделаешь, свой хтмл хелпер несложно сделать для такого случая, но если нужно будет что-то еще посложнее.
у тебя каша в голове, братишка.
для большинства задач подходят бесплатные либы.
таблиц с пейджингом бесплатных - миллион в гугле.
для того чтобы написать что то приличное, придется курить либо жкваири, либо ангуляр, либо любую другую фронтэнд технологию.
просто купить контролов и слепить из них какуюто хуйню - нихуя не выйдет.
ничего не происходит. зато я распаковал его. Но тоже эффекта ноль
Вот у меня есть там таблица Person, у нее есть поле CountryId, которое ссылается на таблицу словарь со списком стран.
Я же не должен создавать класс для стран? Может нужно сделать как-то отдельное поле под контринейм, которое при апдейте сразу отображает его в бд как айдишник страны со словаря.
Единственное адекватное решение.
Некоторые пишут что обязательно так как соединение с бд не всегда закрывается, другие пишут наоборот что оно само все закрывает, вот здесь какбы разработчики EF подтверждают
http://blog.jongallant.com/2012/10/do-i-have-to-call-dispose-on-dbcontext.html#.U6WdzrGEeTw
Тут обсуждается нужно или не нужно реализовывать паттерны репозиториев, Unit of work, потому что оно все встроено в последние версии EF
Обсуждают всякие абстракции и прочее, я в этом пока ничего не понимаю, поэтому ответьте прямо. Что мне нужно для моего говноприложения: репозиторий с дженериками, этот репозиторий имплементит интерфейсы для реализации CRUD операций которые можно будет потом прицепить через Dependency Injection. Этого будет достаточно?
https://dotnetfiddle.net/vCAY8B
Можно внутри тела конструктора посчитать id, а потом вызвать base.ParentClass(id);
>репозиторий с дженериками
Лол нет, сейчас не 2003й.
Репозитории были ничо так, когда у нас не было ОРМ, а работа с базой проходила через хранимки. В те годы у тебя было два стула: создавать повсюду инстансы SqlConnection и дальше пердолиться через него, вызывая хранимки, либо пытаться организовать это все в репозиторий.
Проблема конкретно с репозиториями в том, что, как бы кто не пиздел, что DAL это такая вещь в себе и полностью отделен от бизнес-логики, это ни разу не правда в реальном мире. В прекрасном мире тырпрайза на одно отношение в базе может понадобиться пара десятков запросов с различными фильтрами (и все это в различных представлениях). Исходя из этого факта репозитории у тебя могут получиться двух видов (и оба сорта говна): реально дженерик репозиторий, без какой-либо сложной логики получения данных. Проблема в том, что он такой нахуй не нужен, потому что смотри про фильтры. Второе: ты пердолишь по методу на каждый вид запроса и твой женерик репозиторий уже нихуя не женерик, а огромная хуйня с протекающей абстракцией.
Далее, вернемся к ОРМ. Дело в том, что когда у тебя есть ОРМ, тебе нахуй не упали репозитории. У тебя уже, считай, готовый репозиторий, но с кучей охуенных вещей, которые ты все равно сам не реализуешь. Городить лишний слой абстракции над существующей абстракцией это одновременно и аутизм, и долбоебизм.
Тут, конечно, кто-нибудь прокукарекает про то, что если мы захотим сменить в будущем ОРМ или БД (лел), то с репозиториями не нужно будет пердолиться с DAL, а вот если везде таскать ISession или IDataContext, то нам пизда. На это можно только ответить, что в зрелом проекте менять ОРМ (а уж тем более СУБД) будет либо компания, которая может себе это позволить и это в любом случае будет больно, либо конченный долбоеб.
Опять же, что касается тестов. Не знаю, как там в EntityFramework, но в NHibernate стабы на ISession делаются не сложнее, чем стабы на любой другой интерфейс, да и поднять быстро прямо в памяти и потестить сложную логику сохранения и\или получения данных - дело пяти минут.
tl;dr: репозитории не нужны уже лет 8-10 как, просто сделай нормальный DAL с EF (или любым другим ОРМ) и внедряй интерфейс везде, где он нужен.
>репозиторий с дженериками
Лол нет, сейчас не 2003й.
Репозитории были ничо так, когда у нас не было ОРМ, а работа с базой проходила через хранимки. В те годы у тебя было два стула: создавать повсюду инстансы SqlConnection и дальше пердолиться через него, вызывая хранимки, либо пытаться организовать это все в репозиторий.
Проблема конкретно с репозиториями в том, что, как бы кто не пиздел, что DAL это такая вещь в себе и полностью отделен от бизнес-логики, это ни разу не правда в реальном мире. В прекрасном мире тырпрайза на одно отношение в базе может понадобиться пара десятков запросов с различными фильтрами (и все это в различных представлениях). Исходя из этого факта репозитории у тебя могут получиться двух видов (и оба сорта говна): реально дженерик репозиторий, без какой-либо сложной логики получения данных. Проблема в том, что он такой нахуй не нужен, потому что смотри про фильтры. Второе: ты пердолишь по методу на каждый вид запроса и твой женерик репозиторий уже нихуя не женерик, а огромная хуйня с протекающей абстракцией.
Далее, вернемся к ОРМ. Дело в том, что когда у тебя есть ОРМ, тебе нахуй не упали репозитории. У тебя уже, считай, готовый репозиторий, но с кучей охуенных вещей, которые ты все равно сам не реализуешь. Городить лишний слой абстракции над существующей абстракцией это одновременно и аутизм, и долбоебизм.
Тут, конечно, кто-нибудь прокукарекает про то, что если мы захотим сменить в будущем ОРМ или БД (лел), то с репозиториями не нужно будет пердолиться с DAL, а вот если везде таскать ISession или IDataContext, то нам пизда. На это можно только ответить, что в зрелом проекте менять ОРМ (а уж тем более СУБД) будет либо компания, которая может себе это позволить и это в любом случае будет больно, либо конченный долбоеб.
Опять же, что касается тестов. Не знаю, как там в EntityFramework, но в NHibernate стабы на ISession делаются не сложнее, чем стабы на любой другой интерфейс, да и поднять быстро прямо в памяти и потестить сложную логику сохранения и\или получения данных - дело пяти минут.
tl;dr: репозитории не нужны уже лет 8-10 как, просто сделай нормальный DAL с EF (или любым другим ОРМ) и внедряй интерфейс везде, где он нужен.
> DAL с EF
Похоже я неправильно понял что такое репозиторий, в моем понимании это и был DAL класс, мы же и там и там методы доступа к данным определяем.
не площадь, а каждый пиксель(эелемент массива) внутри этого прямоугольника.
При этом, когда я ставил его на пустой проект тем же способом
Install-Package Ninject, Ninject.Web.Common, Ninject.MVC3 все было ок.
Но теперь в созданном классе NinjectWebCommon
Во-первых подчеркивается, кажется, решапером класс бутстраппер
Во-вторых компилятор не видит IKernel хоть библиотека Ninject подключена
Разобрался, Nuget писал что присутствует библиотека, которой фактически не было в проекте
http://www.thereformedprogrammer.net/is-the-repository-pattern-useful-with-entity-framework/
Вот похоже статья на эту тему как раз.
шарпобоги, помогайте:
я юнете програмист(ладно-алдно, кодер). вполне себе успешный, но нихуя не загадка, что юнити не будет жить вечно.
сабж: осмыслить шарп как таковой(интырпрайзовый) дохуя ли нужно будет ума? или пойдет?
вот такую вот хуету навалял, уверен что всё это говно можно заменить простеньким циклом. подскажите как.
я совсем дибил, нашел сайтец с модулями по с# и пытаюсь их делать. Изначально задача выглядит так:
есть 3 переменных типа дабл, нужно чтоб програма их сравнивала и сумировала 2 самых больших, если все 3 переменные равные должно выбить ЕРОР.8
Методы доступа к данным тебе не нужны, у тебя есть интерфейс контекста, через него ты дергаешь базу.
Если у тебя относительно сложная логика получения (сохранения, удаления, изменения) данных, то в этом случае лучше воспользоваться паттерном Query Object. Суть его (коротко) в том, что ты инкапсулируешь сам запрос в отдельный объект. Плюс его в том, что он больше соответствует OOP way и такие объекты-запросы даже можно использовать в нескольких местах (хотя тут уже от организации данных и способа их получения зависит).
Вот тут можешь про него глянуть http://crosscuttingconcerns.com/CommandQuery-Object-pattern
Работа есть (не в сфере программирования), решил как хобби геймдевом заняться, как движок подходит юнити, а там шарп знать нужно. И если графин я пилить могу, то с кодом, конечно, проблема.
>array.All(x=>array[0])
array.all(элемент=>предикат) проверяет каждый элемент на соответствие предикату, возвращает true если соответствуют все или коллекция пуста.
x=>array[0] - краткая альтернатива x=>x==array[0]. Т.е. каждый элемент сравнивается с первым.
Не слушай этого линкозависимого.
0) Просто отсортируй входной массив (загугил как).
1) Сложи первых два элемента.
2) Опционально проверь все значения на равенство.
Все просто.
Я тут вообще мимоходом. LINQ - true, просто сокращение непонятное.
http://ideone.com/Es8zta
Видимо мне надо книжку какую-нибудь почитать, чтобы в такое говно не вляпываться.
Кстати насчет -= что он будет если такого действия нет в делегате? Можно как то проверить?
А самому взять и попробовать? Просто ничего не будет. Если зачем-то еще нужно проверить - есть метод .GetInvocationList(), возвращает Delegate[]
{
var image = _images.Count > 0 ? _images.Last() : null;
return image?.GetImageAsync();
}
Ничего не забыл? или нужно await у GetImageAsync ставить?
Да сам не знаю, вроде и без него работает. Но VS при наведении на метод говорит usage await GetImageAsync. Вот и подумал, что может надо.
Писать на жабе.
А не проще сделать View на все случаи жизни и потом извлкать из них данные в нужные сущности? А изменять/удалять уже не сложно будет, имея список записей с примененным на них фильтром.
Я в свое время с такой же проблемой столкнулся, только хитровыебанные костыли
http://stackoverflow.com/questions/5905563/c-sharp-generic-operators
Сам я просто взял и на фшарпе переписал, там такое сделать несложно
Как раз таки в шершавом это нормально делается через дженерики, в отличии от явок-скалок там всяких. Просто параметризуй это дело объектами-полями ( https://en.wikipedia.org/wiki/Field_(mathematics) ), содержащими реализацию операций для нужного типа. Можешь дефолтануть (реализовать default(Field<int/float/etc>)) и тогда не надо будет инжектировать всюду.
В таблице к каждому работнику может приписана несколько должностей, но при этом он может быть приписан только к одному департменту. Поэтому мне подходит любая запись из таблицы Staff которая относится к данному сотруднику, чтобы бы потом через нее выйти на Id Департмента, а через него к Id Компании. В LINQ так сделал, но оно не прокатывает, потому что к индексу нельзя обращаться в LINQ to Entities
List<Employee> employees =
context.Employee.Where(
e => (e.Staff[0].DepartmentId == 3) && (e.Staff[0].Department.CompanyId == 1))
.ToList();
Вот, держи: http://ideone.com/fsQSkw
Вместо Magma можешь там сделать тот Field, в котором будет больше операций и нейтральные элементы по ним (см вики). Ну и по-дизайну уже сам думай, скармливать ли алгебры параметрами в Sum/Mul/Div, или лучше один раз в конструктор, или в методы, но как-нибудь задефолтить, чтоб не надо было вручную передавать постоянно и тд.
Нашел конвретер генерации LINQ с SQL http://www.sqltolinq.com/help
Сразу то что надо сгенерировал даже править не нужно было
2 часа на один запрос потратил, пиздос.
Ну охуеть икспертиза. Вот quick-and dirty snippet
(писал на ideone, поэтому лень было делать правильно).
http://ideone.com/SHd9XQ
Извини, в
> в шершавом это нормально делается через дженерики, в отличии от явок-скалок там всяких
Я имел в виду что в сишарпе есть value-типы, и генерики корректно и юниформно работают с ними. В Java/Scala ты даже не можешь сделать анбоксед массив кастомного типа. Ты даже не можешь объявить матрицу нормально, потому что каждая матрица - это будет выделение в куче, которое внутри содержит ссылку на другое выделение в куче (сам массив). Там, где вообще нужны матрицы - это всё важно.
В скале начали делать http://docs.scala-lang.org/overviews/core/value-classes.html но этого слишком мало.
> Там, где вообще нужны матрицы
Там строго кресты, потому что в них можно подсунуть специализированную реализацию для нужных типов.
Вообще да. Но если нет возможности, то здесь хотя бы модель памяти можно проконтролировать. Оверхед на косвенные вызовы численных операций по сравнению с тем, как их бы заинлайнили в цпп, менее критичен и более равномерно размазан по времени.
В крестах можно написать Vec3[A], где для A = float можно указать полностью специализированную реализацию класса, которая является инлайн-оберткой для __m128 (SIMD vector4)
В джаве можно было благодаря этому писать постые дженерики типа такого
public <T> void edit(T f, Class<T> type) {
EntityManager em = emf.createEntityManager();
try {
em.getTransaction().begin();
em.merge(f);
em.getTransaction().commit();
} catch (IllegalArgumentException e) {
System.out.println("Не найдено такого объекта");
} finally {
em.close();
}
}
Если речь идёт о частоиспользуемых в 3д фиксированных матрицах (3х3, 4х4), операции которых можно анрольнуть и слегка заоптимизировать через SSE, на C# остаётся только ручная мономорфизация и http://docs.go-mono.com/?link=N%3aMono.Simd
Правда, если речь о симуляциях и играх, там один фиг лучше везде использовать флоаты и хотеть гарантированного SSE, так что проблема полиморфизма стоит не слишком остро.
Я не понимаю по байтоёбски, уёбывай.
Спасибо огромное, заюзал твой способ, задавать операцию параметром в метод это то, что нужно. В эту сторону вообще голова не думала.
>Методы доступа к данным тебе не нужны,
Начал делать без методов, тогда весь DAL находиться непосредственно в контроллере, в котором используется. Это норма?
Говно со смехуёчками.
Нужно, чтобы определенный метод запускался, когда DateTime.Now станет равным определенному значению. То есть, в определенное время чтобы он запускался.
Можно это сделать красиво? Какие-нибудь системные события может существуют?
Сравнивать в бесконечном цикле текущее время с целевым - какой-то совсем убогий способ.
Таймер на (целевое время - текущее время) тоже мне не нравится. Помню на С++ таймеры делал, они от системного времени отставали. Незначительно, но если на 10 часов вперед задачу поставить, то погрешность несколько минут накапливалась.
на сколько мне известно, у тебя не особо много вариантов:
- цикл;
- таймер;
- расписание задач в вине;
- какая-нибудь либа для выполнения задач, типа кварца http://www.quartz-scheduler.net/
Винда/моно. В рамках моего проекта надо обеспечить эксклюзивный доступ к папкам на лежащим на шаре. То есть у меня где-то создался объект, в папке что-то произошло (допустим локфайл создался), остальные все видят, что папка залочена и не лезут.
Создавать/удалять файлы - не айс, в случае проблем сети. Если подымаю FileStream с эксклюзивным локом на рид, то проблемы сети просто не замечаю. И еще если в том же потоке пытаюсь поднять еще один стрим на рид, то он фейлится, говорит что кто-то залочил.
Как такое реализовывать или гуглить?
Состояние генерируемому компилятором автомату добавляет.
IEnumerable<int> Items()
{
yield return 1;
yield return 2;
yield return 3;
}
ver e = Items().GetEnumerator();
e.MoveNext(); // 1
e.MoveNext(); // 2
e.MoveNext(); // 3
а чем отличается от простого return? Тем, что он завершит выполнение метода, сразу после вызова?
Тем, что он, во-первых, скажет компилятору сгенерировать и вернуть реализацию IEnumerable c автоматом на основе метода, в котором указан. Во-вторых, yield return — это состояния, по которым этот автомат будет ходить, если дергать его метод MoveNext. С обычным return, который переходит на адрес возврата функции, нет ничего общего. Не знаю, возьми рефлектор и просвети хелоу ворлд с yield return. Может понятнее станет.
Ну, ты все же под рефлетором сборку-то глянь.
>Дотнет изучают ради комбы ASP.NET + WCF.
Тащемта да, вся денежная работа находится в этом сегменте. Плюс за последние год-полтора очень сильно подтянулось Mono, теперь кроссплатформенность во все поля.
Бета MVC 6 уже нормально работает на линуксе главное, кучу всего правильно скомпилировать на хост-машине, лол.
Бизнес-информатик в треде, все в кирпич
using (var conn = new OracleConnection(connectionString))
using (var adapter = new OracleDataAdapter(query, conn))
{
var table = new DataTable();
adapter.Fill(table);
return table.Copy();
}
}
Почему в дататабе только заголовки от запроса? Запрос верный.
Разобрался, все таки, запрос был в CP-1251.
бамп вопросу
вы блять поехавшие? стек на массивах можно нормально только через указатели реализовать, те на плюсах онли
второкурсота
Ну вот код контроллера(круд для работников), там в целом я по примеру делал, только код доступа к данным вынес в сам контроллер и таблицы из базы другие. В примере использовали паттерн репозитория.
Контекст я через нинджект внедрял, только непонятно зачем. Пришлось переопределить метод SaveChanges, например, хоть он ничего нового не добавляет в функционал а вызывает родительский метод. Наверное, нужно было создавать контекст сразу в контроллере конструктором и без нинджекта.
И еще тот здоровый запрос дважды исользовал, можно было выгрузить в память и применить Count к коллекции, но это же вроде неоптимально — выгружать все записи в память.
https://ideone.com/efNvCE LINQ здесь поехало, в студии ровненько выглядело.
Такой хуйни быть не должно, ты очевидно что-то делаешь не так.
рефлексия же.
MethodInfo hui = typeof(Pizda).GetMethod("method_"+i);
hui.Invoke();
как-то так ёпта
согласен, а где я не прав?
Поясните обывателю или ткните где почитать в чем разница между int a = 5; и int a = new int(5); Конструктор по умолчанию бла бла В чем профит от второго варианта? И где лучше всего почитать про свистопляски с типами?
>tl;dr: репозитории не нужны уже лет 8-10 как, просто сделай нормальный DAL с EF
Если разбираться, то DbContext и есть дженерик-репозиторий о чём многие даже не подозревают, только напичканный всякими плюшками до усрачки. Городить отдельные репо, используя EF - это, как минимум, просто тупо и потеря времени.
Используй коллекцию делегатов или лямбд, если знаешь какие методы надо вызывать. А иначе остаётся только reflection.
Вот только я забыл сказать, что EF - лютый слоупок. Когда нужна скорость, быстрее всего работают именно те самые "немодные" SQL-запросы (это даже быстрее дэппера и прочего говна).
Когда нужна скорость, используют хранимые процедуры и смотрят план выполнения запроса.
Проверяю я примерно так:
foreach(RadioButton Rb in GridName.Children)
if(Rb.IsChecked)
//тут надо вызвать событие Checked конкретного радиобаттона (у каждого оно своё)
Какие навороты? У Int32 нет конструкторов. Про то, как значимые типы хитро прикручены к объектной модели, можно, наверно, у Рихтера почитать, но по-сути это не особо важно знать.
Мне надо проверять не в момент когда меняется значение, а когда пользователь в текстбокс. Т.е. вызывается из другого события.
По-моему, ты делаешь что-то не то. Вызывать событие другого класса напрямую не есть хорошо. Но возможно:
http://stackoverflow.com/questions/4378339/raise-an-event-of-a-class-from-a-different-class-in-c-sharp
Это понятно. Просто сам EF имеет нехилый оверхед. За удобство нужно платить.
>>581017
>тогда весь DAL находиться непосредственно в контроллере
Есть разные мнение на этот счёт. Обычно принято считать, что контроллеры должны быть максимально "тонкими", т.е. вообще не иметь понятия о том откуда берутся данные и как они обрабатываются. Задача контроллера - передавать модель во вью и наоборот.
Посмотри в сторону паттерна
controller <-> service <-> repository (DAL)
Вот в службу и можно вынести все операции с данными и генерацию/обработку моделей. При необходимости сделать взаимодействие службы с репо. А после экземпляр службы внедрять в контроллер инжектом.
Пример как это может выглядеть:
http://stackoverflow.com/questions/5049363/difference-between-repository-and-service-layer
На вид нормально, контроллер аккуратный получился.
Только я бы ещё вот это
service.SelectEmployees(1, 3)
.OrderBy(e => e.Id)
.Skip((page - 1) * pageSize)
.Take(pageSize),
упаковал бы в отдельный метод сервиса
Понимаю в нем все, кроме public override bool Equals(Object obj)
{
if (obj == null || GetType() != obj.GetType())
return false;
Point p = (Point)obj;
return (x == p.x) && (y == p.y);
}
public override int GetHashCode()
{
return x ^ y;
} Поясните, пожалуйста, мне, каким образом у точек а и b одинаковый хэщкод и зачем вообще нужно тело метода Equals. Все остальное понятно. Заранее благодарю.
Он нужен, чтобы правильно работал оператор ==
У двух точек одинаковый хэшкод, потому что поля имеют одинаковые значения.
https://msdn.microsoft.com/library/336aedhh%28v=vs.100%29.aspx
Одинаковый Хэшкод им обеспечивает переопределение метода Equals? Если закомментить оба переопределения, везде получу False
Одинаковый хэшкод им обеспечивает переопределение GetHashCode.
Есть проблемка, нужно изящное решение.
Кароч, есть xml файл примерно такой структуры:
<doc>
<object name="allah" bdate="00.00.00">
<attr name="hui" value="0"/>
<attr name="pizda" value="1.5"/>
<attr name="jigurda" value="lol"/>
</object>
<object name="erokhin" bdate="01.01.1995">
<attr name="hui" value="30"/>
<attr name="iq" value="10"/>
<attr name="car" value="bmw"/>
</object>
</doc>
т.е. у нас дохуя object и у каждого из них неограниченное количество attr имеющих одинаковую структуру. У object'ов могут быть разные attr, заранее мы ничего не знаем о том сколько их и какие у них attr.name.
Так вот, мне надо вывести в DataGrid(wpf) все object'ы, причем так, чтобы выглядело таким образом:
В каждой строке по одному object
заголовки столбцов - attr.name
если у object нет такого attr.name, то выводим прочерк.
Сделал StringDictionary для каждого object, вношу в него и атрибуты самого object и все его attr, но при бинде на этот List<StringDictionary> получается хуйня, выводятся проперти StringDictionary.
Может у кого есть еще адекватные идеи?
задумывался на счет ExpandoObject, но нихуя не понял как они работают
Дай я тебя поцелую, милашка
Не знаю как там играют каловдуные #yoba школяры по которым (или по себе?) вы судите ферму как убийцу времени, но я в игре больше времени провел играя в адвенчуру, стэлс и симс (пол дня стэлсил, второю половину дня опрыскивал грядки пестицидами, чтобы ни один колорад не прошел, но это уже другая история...) и один из лучших сурвйавал симуляторов, хотя когда созревала куча овощей то игра превращалась в раннер... и тут еще залипал в имитациях классических 8 битных игр вроде Донки Конга
Какой блин тайм киллер, мать вашу? У меня от всего времени в игре (что-то около суток), тайм киллера было от силы на 30 минут! Тут несколько десятков игр в одной, и тайм киллер - очень малая часть из этого списка!
Я прихожу к выводу, что все кто орут "УБИЙЦА ВРЕМЕНИ" - просто вообще не играли и даже толком на ютюбе и твитче игру не видели. Тут столько всего можно и нужно делать!
На фоне этого разнообразия игровых механик, витчер в котором можно только ходить пешком и на плотве, а так же болтать, готовить зелья и закликивать врагов до смерти - смотрится как бедный родственник..
Вот уверен, что каждый орущий про "говно" - поиграв в фермочку 4 - 5-10 часов уже не сможет от нее оторваться пока не наиграет сотню-другую часов.
БД - Oracle
Веселая ферма написана на сишарпе.
Создавай новое.
Нужно отправить в метод сторонней библиотеки (доступа к коду нет) массив объектов размером 5+ ГБ. Приложение х86, то есть занимать больше 1.2 ГБ нельзя, иначе будет OutOfMemoryException .
Можно эту проблему решить?
Возможно в дотнет есть какой-нибудь класс вида Image<T>, который не хранит сами объекты, а динамически подгружает их с жесткого диска при необходимости?
Даже если изображения будут читаться с диска, грузится они все равно будут в память. А ты уверен что твоя библиотека вовремя выгрузит эти изображения?
>грузится они все равно будут в память.
Но не целиком, а по кусочкам. Чтобы единовременно в памяти 5 ГБ не занимать. Чтобы в памяти были только те данные, которые в данный момент нужны для работы.
Это не изображения, там массивы double длиной в сотни тысяч. Слово Image взял по аналогии с образами физических дисков, которые в англоязычном софте тоже называются Image.
>А ты уверен что твоя библиотека вовремя выгрузит эти изображения?
Идея была в том, чтобы библиотека не знала, что работает с Image<T>, чтобы она воспринимала это как T , а вся черновая работа по подгрузке производилась фоном.
Наверное в дотнет нет такой функциональности, она бы на слуху была.
Можно, например, чтение из файла реализовать итератором а-ля File.ReadAllLines(). Хотя, если библиотека ждет массив, то уже не попляшешь.
Вот про отображение файлов в память: https://msdn.microsoft.com/en-us/library/dd997372%28v=vs.110%29.aspx?f=255&MSPPError=-2147217396 . Признаюсь, сам не читал, но вроде в C++ работают с большими файлами так.
Есть ли какая-то нативная реализация netstring http://cr.yp.to/proto/netstrings.txt в .NET/mono
?
Выручайте.
Не был там никогда.
public class Storage
{
public string Name;
public int Id;
public Dictionary<string,int> Products; //string - name, int - count
public string IdName
{
get{return string.Format("{0}:{1}",Id,Name);
}
}
чтобы выглядело так:
Склад |Product1|Product2|Product3|...
----------------------------------------------------------
0:Главный |1 |2 |3 |...
1:Дополнительный|3 |2 |0 |...
Чего такая ненависть к сиплюсплюс?
Я никогда не писал на них, только на читстом си когда-то давно
Но все же?
))
Высер типичного первокурсника.
Это защита от дурака. В сисарпе и джаве все так сделано, чтобы было сложнее выстрелить себе в ногу. Так же, как и бреак в свитче, и ретурн из файнали, и неявное приведение типов.
В каком-нибудь С у тебя была бы локальная переменная на стеке, и содержался бы там совсем не налл, а непонятная муть, и получилось бы undefined behaviour
Проиграл.
>>An unhandled exception of type >>'System.InvalidOperationException' occurred in WindowsBase.dll
>>Additional information: Вызывающий поток не может получить доступ к данному объекту, так как владельцем этого объекта является другой поток.
Как изменить myLabel.Context из потока, который не является основным? lock вешаю - ничего не меняется.
Если никак, то зачем вообще многопоточность нужна, если дополнительные потоки не могут получить доступ ни к каким данным из основных потоков? Только какие-то методы странные запускать, которые работают в вакууме и ни с какими данными из основной программы не взаимодействуют.
Гуйный поток работает в изолированном окружении. К его данным обратиться можно только через диспетчер, который шедулит делегаты на исполнение в цикле сообщений. Если мне не изменяет память, то в винформс — это (Begin)Invoke метод у контрола, а в впф — класс Dispatcher.
var scanImage = dgv?.CurrentRow?.DataBoundItem as ScannedImage;
if (scanImage == null) return;
Нормальный код или умные люди так не пишут?
Почему Троэсен говорит не использовать var (кроме LINQ), но его все-равно используют поголовно все, в том числе сами МС? Это уебанство же, невозможно код читать.
>куча пустой работы на ровном месте
Никто не заставляет, lock в руки и синхронизируйся сам. Или даже не синхронизируйся, если ты опасный и любишь жить на краю.
var fdvkjshfdjvksehrd = new jdfhsdfgiusfdj();
foreach (var item in fdsajkfshdfvhfds)
{
gdlkgudishgdrgh.gdrkuvhfdkurfh();
}
private рекомендуют.
Правильный вопрос: имеется ли хоть какой-нибудь задачник по C#, чтобы охватил хоть какие-то фичи языка?
Нет, не имеется.
Все книги - просто документация, пересказанная своими словами.
Не знаю. Сижу дома, ем. В офис ехать лениво.
Плюсы - нативный язык, шарп - скриптовая хуйня для виртуальной машины дотнет.
На плюсах программируют. На дотнет конструируют. Из уже написанного кем-то кода. Соответственно, навыки нужны совсем разные. На шарпе можно заправски кодить, не зная половины синтаксиса. Достаточно знать самые основы и уметь пользоваться документацией.
Ты же не удивляешься, что по 1С нет книг с задачками программирования? А в чем разница с сишарп? Такой же скриптовый язык, специально созданный для применения в одной единственной программе.
Вообще-то я на шарпе пишу, с++ знаю на уровне второго курса деревенского говновуза (именно тогда прекратил им заниматься).
Зачем факты отрицать? Сишарп - это использование стандартного функционала нескольких встроенных фреймворков дотнет. На этом область применения заканчивается. Ах да, есть еще школьники, которые делают контерстрайки на юнити.
Если ты знаешь основы синтаксиса и как Бог владеешь документацией - ты без затруднений решишь 99% задач, которые ставятся перед дотнет разработчиком.
Мы не программисты, мы - прослойка между настоящими программистами и блондинками-верстальщицами.
По идее, для нашей профессии должны были новое слово придумать, но не сложилось. Верстальщиков вот не называют программистами, хотя они тоже "пишут код".
Такое слово есть — прикладной программист. Байтоеб — системный.
Спроси, как программисту в мухосранске заработать больше 10к$ за год.
>В потоках, не связанных с WF/WPF такой проблемы нет, можно спокойно обмениваться данными?
Писать из чужих потоков нельзя только в элементы гуя, остальное объявляешь используемые поля через volatile и ебашишь многопоточность.
>Спасибо, сделал, работает. Ужасно неудобно, куча пустой работы на ровном месте.
На самом деле ты еще просто молод, чуток привыкнешь работать с асинхронными методами и почитаешь что-нибудь про то как нормально писать код и поймешь, что вся эта "пустая работа" это на самом деле здорово упрощает жизнь когда начинаешь что-то менять.
Очень неудобный способ. Он бы ещё вагон делегатов делал как в 2008-м.
Так гораздо короче:
http://stackoverflow.com/questions/571706/shortest-way-to-write-a-thread-safe-access-method-to-a-windows-forms-control
1. void Method (object[] bigArray) {}
2. void Method (ref object[] bigArray) {}
В первом варианте внутри метода создается копия объекта. Во втором - используется уже существующий объект.
Все верно?
Если так, то мы должны использовать ref для входных параметров почти всегда. Просто чтобы экономить память. Зачем нам клонировать объекты лишний раз, если мы ни один из них редактировать не собираемся?
Почему так обычно не делают? В родных библиотеках ref вообще не помню, чтобы встречал где-то.
В первом случае копируется ссылка на объект, во втором ты передаешь ссылку на ссылку на объект.
Можно же использовать await для получения данных из другого твоего потока, он возвращает в ui поток, псоле этого можно просто обращаться к контролам, без диспатчеров и инвоков.
https://dotnetfiddle.net/3CCNa2
Это, по-сути, равносильно говнокоду на си:
http://pastebin.com/KQjpq1a3
>В родных библиотеках ref вообще не помню, чтобы встречал где-то.
В методах для копирования массивов есть. Array::
хотелось-бы начать писать что-нибудь серьезное
Фреймворки изучай. Для чего-то серьезного нужны не замысловатые алгоритмы, а знание библиотек и умение писать простой понятный масштабируемый код.
x86 не индексирует больше 2 гигов ОЗУ
@
x64 не работает с СОМ библиотекой
@
разделяешь приложение на две сборки
Тех же что и джава
>>582010 (OP)
Стандартный набор второкурсника: ado, entity, asp, wcf, wpf, wwf.
>синтаксис шарпа знаю неплохо
Знаешь, что такое Linq и лямбда-выражения? Умеешь перегружать операторы и расширять методы? Знаешь, что такое BinaryFormatter и ленивая инициализация? Уверенно применяешь асинхронное программирование в повседневном коде? Знаешь, как используется позднее связыванние и атрибуты? Знаешь, зачем нужны анонимные и динамические типы? Знаешь, чем абстрактный класс отличается от интерфейса?
Если ты настроен всерьез - не ищи лучший вариант, используй все варианты одновременно. Прочти все книги, какие найдешь, пройди все курсы, какие найдешь. В одной книге чего-то недопоймешь - уточнишь в другой/в документации/в гугле/на практике.
Из одной книги или одного курса ты ничему не научишься, это будет слишком однобоко и объем информации будет мизерный.
Если ты не готов тратить от года ежедневных занятий на учебу, то даже не начинай.
Где это можно лучше всего подтянуть? книги/видео/сайты?
Т.е. запускается таймер, которые каждые 100 мс делает что-то, и он останавливается через timelimit мс. Когда он остановится, внутри метода надо сделать кое-что и возвратить значение. Как это реализовать?
Это копия, сохраненная 8 декабря 2015 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.