Вы видите копию треда, сохраненную 3 февраля 2017 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Шапка: https://github.com/CSharpShapka/SharpHat/wiki
(пока просто перенесена шапка из ОП-поста, в ближайшее время приведу к более-менее адекватному виду, не стесняйтесь слать свои пулл-реквесты)
>>902381
Посмотрю еще раз.
>>902497
>это исключительно вопрос внутреннего понимания собеседников
Я, допустим, гуглю этот вопрос и читаю такой ответ.
>The basic concept of OOP is this: Class >> Object >> Instance.
>The class = the blue print. The Object is an actual thing that is built based on the 'blue print' (like the house). An instance is a virtual copy (but not a real copy) of the object.
Его считать безграмотной хуйней или нет?
я ж пишу:
> это вопрос внутреннего понимания собеседников
кроме того, люди с разной тягой к языкам программирования, трактуют понятия по-разному. от многих я вообще видел непонимание слова "instance" как такового, уже без опускания в разницу между ним и "object"
конечно,
> считать безграмотной хуйней или нет?
нет
но если ты найдешь супер-пруф от какого-нибудь Рихтера, который водит хуем по лбу из-за неправильного использования этих понятий, нуок, выкладывай. я спорить не буду
Оке, спс.
Add.Rows здесь не робит
не изменяй домен
> for(...) {
> someMethod();
> ...
> }
> ... someMethod(){
> string str = "intern pool";
> ...
> }
Вот это поворот. Вяло ковыряя мануалы, я узнал что в дотнете есть такая вещь как "пул интернирования строк". А это значит, что строка будет создана единожды. И переживать о постоянным выделением памяти для такой строки в цикле нет необходимости. Хардкор в лице разбора работы оптимизатора для других типов, пока не проверял.
не, такое работает только для строк ибо с ними возможно интенсивное засирание памяти
причем, если отключить оптимизацию и сделать что-то вроде "intern "+"pool", или сымитировать такое поведение в коде, то сиэлэр создаст четыре отдельных экземпляра
Дважды, блять.
> взять лишь определенные по условию значения из data set, пропустить ряд таблицы, а потом снова взять определенные значения из data set
это что все значит?
Я хочу в один data grid view записать результаты нескольких запросов, делая между ними пропуск в одну строку таблицы.
Вот мой нерабочий код. Обосрите, пожалуйста..
http://pastebin.com/3mG3j0QZ
Без внешнего цикла, перебирающего номера складов, работает хорошо.
Все починил. Вот почти (все еще не хватает пары проверок) нормальный код, если кто-то вдруг столкнется с похожей проблемой.
http://pastebin.com/aRK4D2At
Вообще, это вель лютейший говнокод. Мне вообще не нравится посылать запросы таким образом, но через tableadapter нельзя нормально форматировать результат запроса, особенно если в запросе используются джойны. Короче, параша, блять. Реквестирую более адекватных способов реализовать всю эту хуйню.
Приложение собрано в VS15 через Publish.
А теперь суть проблемы: когда я кликаю по ексешнику то открывается установочник и сразу же сворачивается.
Как решить эту проблему?
Я первый раз имею дело с Windows Server 2012
забей хуй, новый год жы
Я думал, что сборщик мусора просто рекурсивно пробегает по корням и маркирует используемые объекты. Сегодня я таки добрался до Рихтера и прочитал про поколения.
Вопрос - как сборщик мусора в фазе маркировки может игнорировать объекты из 1-2 поколений, ведь, для поиска всех неиспользуемых объектов из 0 поколения, нужно пройтись по всем корням, включая объекты из 1-2 поколений?
вроде jit конпелятор генерирует барьеры записи при присвоении части объекта поколения >0 инстанса поколения 0. наткнувшись на такой барьер, сборщик понимает, что все серьезно
Добавляю стороннюю библиотеку CsQuery в пока еще пустой проект. Intellisense при вводе ее видит, решарпер даже предлагает включить ее пространство имен при вводе класса этой библиотеки (CQ), однако потом говорит что такого не существует.
Что делать с этой хуйней?
Я сам слабый конечно.
Если ребилднуть - упадет?
Если очистить кеш решарпера - починится?
Если добавить эту зависимость через нугет - проблема повторится?
>Если ребилднуть - упадет?
Нет
>Если очистить кеш решарпера - починится?
Нет
>Если добавить эту зависимость через нугет - проблема повторится?
А вот тут выдает что не существует для Mono данной библиотеки. Видимо, в этом проблема.
Но тогда идем дальше.
Окей, нахуй CsQuery, если нугет на него ругается. Создаю проект Android-библиотеки. Беру связку HTMLAgilityPack+Fizzer для той же благородной цели HTML-парсинга. Они отлично без вопросов накатываются из нугета. Сборка завершается без ошибок.
Забираю dll-ку, добавляю к пустому стороннему Android-проекту, и... Скрин1. Ноупраблем, может я что-то не так подключил? Переношу код классов из библиотеки напрямую в сторонний проект, подключаю ту же связку библиотек - проблема остается. Удаляю свой класс - проблема остается.
Ладно, окей, накатим эту библиотеку. Авотхуй, скрин 2.
И как мне дописывать курсач?
Из /bin/debug|realise
Мне кажется это знание здесь не особо критично с учетом нижесказанного.
Как я понял, если создавать проект андроид-библиотеки, то после подключения через nuget Fizzer'а все окей, если просто андроид-проект - то вываливается ошибка. PInvoke после установки виден нугетом и лежит в папке проекта, но реакции у студии 0.
Ты вообще какой-то неведомой хуйней занимаешь
System.Runtime.InteroptService.PInvoke - это часть Core CLR и не совместим с моно.
В mono есть свой pivoke из его стандартной библиотеки и он должен использовать, а не выкаченный из нугета.
А в Xamarin надо вообще юзать pcl версию agility pack
https://www.nuget.org/packages/HtmlAgilityPack-PCL/
Ок, благодарю. Но что тогда вместо Fizzler-а использовать? HAP.CssSelectors тоже не под моно. Как-то без него слишком геморрно выходит.
Ну, или посоветуй другую библиотеку для парсинга.
AngleSharp
>designed as a PCL - supporting .NET Standard 1.0
>The advantage over similar libraries like HtmlAgilityPack is that the exposed DOM is using the official W3C specified API, i.e., that even things like querySelectorAll are available in AngleSharp
если ты преследуешь задачу увеличить коллекцию при достижении потолка, то сей >>905641 крендель прав, List внутри так и делает
если это единичный случай, то this._array = new TextBox[_array.Length * n]. но только есть микронюанс, ссылки на старый массив не перепишутся магическим образом но адрес нового объекта
разве так не по феншую?
>прет. карочь надо на атомную станцию устроится
>да этово работал на стройки
>физику в школяндии прагуливал еси чё))))
>падскажите че как вайти карочь
>>906224
Бля ну хуй знает как конкретизировать. Ну например, хочу я бота написать к ммошке какой. на самом деле не хочу, это пример
Спасибки
студент-слоупок, относительно много писал на шарпе (и не только), но опыта работы ноль. На что надеяться поначалу?
открываешь hh.ru, выкидываешь из указанной з/п 25%.
алсо там указаны навыки, что тебе придется выучить до устройства на работу.
В программировании ничего не шарю, был убогий курс шарпа на первом курсе и все.
Сейчас понадобилось выучить шарп, так как через пол года придется активно работать с программой Petrel (геологическое моделирование и всякие такие штуки), для работы с ней очень важно знать шарп, чтобы можно было быстро дописать какие-то модули/плагины, которые не предусмотрены в стандартном пакете.
Собственно вопрос, с чего начинать? Есть что-то такое, чтобы после какой-то темы следовало что-то типа домашнего задания, задачи, через решение которой можно было бы усвоить материал? Просто тупое заучивание в голове плохо откладывается, а хорошо бы, чтобы все ключевые вещи остались со мной.
Нашел на ютубе канал
https://www.youtube.com/user/CBSystematicsTV
годнота? Что именно оттуда смотреть, от курсов шарпа для новичков там разбегаются глаза и непонятно, есть ли разница между ними и что выбирать.
Спасибо за совет, анон!
на курсере для курсов есть самостоятельные/домашние задания
часик в радость.
Глубоко уважаемые аноны, расскажите, пожалуйста, какие вопросы будут задавать junior-у ASP.NET.
> не делает тебя хорошим джуниором
А что делает?
Я нихуя не делал, почти нихуя для себя не писал, но на работу взяли. Также и знакомый, кодит только на работе, работает ради бабла, так ему кодинг нахуй не сдался.
Ты такой, смешной)))
Спасибо, уже читал. Хотелось бы книгу про ASP наподобии прикла.(по нему я синтаксис учил как раз), чтобы быстро освоиться и написать простой сайт.
Там очень много полезной инфы по .НЕТ, так что дерзай, советую начать ASP.NET MVC 5, потом почитать про Web Api
Значит так. Тебе нужен asp.net Web api или asp.net core.
Для фронт-энда тебе нужен будет ангуляр или реакт, главное помоднее, конечно и ещё куча всякой херни, конечно всё это ставится через npm, далее тебе конечно нужен инструмент для минификации и прочего прямиком из npm, бери webpack, далее тебе нужен конечно babel, чтобы превращать твой ES2016 код в привычный джаваскрипт, ты же не плебей какой-нибудь. Ну и стили пишутся на less или sass, а потом уже конвертятся в css, и это всё делается через webpack, у него и сервер свой есть, кстати.
Далее тебе нужен Nlog для логирования, IoC контейнер типо ninject, structure map вполне хватит. И конечно нужна база данных, которая поддерживает async, ведь все операции ввода/вывода должны быть асинхронными, 2017 же. И конечно, должна быть поддержка LINQ и Code First, и Entity Framework. SQLite подойдёт, если прикрутить пару штук костылями. На самом деле тебе почти по каждому наименованию выше придётся просидеть пару часов на стэк оверфлоу, но это неважно, важно написать modern приложение.
Чуть не забыл про тестирование, ты же не быдло какое-нибудь. Нужен Moq фреймворк для тестирования, юнит-тесты, интеграционные тесты и acceptance-тесты, которые тестируют через UI, ну селениум там, все дела, ну и лоад-конечно же, ты же профессионал. Для нормального лоад-тестирования не подойдёт твой IIS с компа (Кстати, нужна же прослойка типо OWEN), нужен нормальные Windows Server. А, да ещё с докером можешь поиграться, я пока до него не дошёл.
мимо с разорванной жопой
Мужики, как сделать пересохранить картинку с измененным размером на си шарпе в консольном приложении?
Стековерфлоу говорит, что нужно юзать System.Drawing, но когда я подключаю это, студия говорит, что нет классов Image, BitMap и прочих, наверно потому что приложение консольное.
неправильное предположение
откуда ты берешь Сустем.Дравинг? в референсах к проекту -> Ассемблиез?
Нужно программировать с 10 лет, написать несколько десятков рабочих коммерческих проектов для крупнейших компаний России, иметь опыт фриланса не менее 5 лет, и только тогда ты можешь претендовать на работу джуниором за 10к в Москве
Т.е. надо как int[][] v = new int[5][], хотя если читать левую часть как массив целых массивов - (int[])[], что логично, то правая должна быть new (int[])[5] или опуская мета скобки int[][5].
>что логично
Нет.
Допустим ты пишешь
int[][] v = new int[][5];
v[0] = new int[10];
Как по твоему должна работать вторая строка?
Т.е. цель такого синтаксиса что бы при индексации размерности стояли в тех же местах где и в объявлении. Просто в книжках пишут что это просто рекурсивное взятие массива от массива, а почему при этом синтаксис немного меняется не поясняют.
Кстати, вторая строка работает вполне понятно как, строго по определению, никаких противоречий не вижу.
У первого индекса не задана размерность, поэтому непонятно к чему идет обращение. Поэтому нужно было бы писать что-то вроде
v[][0] = new int[10];
У меня получилось. Вот так:
dataGridView2.Rows[lastGridRow].Cells[0] = new DataGridViewCheckBoxCell();
dataGridView2.Rows[lastGridRow].Cells[0].Value = false;
dataGridView2.Rows[lastGridRow].Cells[0].ReadOnly = false;
Проблема в том, что чекбоксы нельзя чекнуть. Как сделать так, чтобы было можно? Отключение РидОнли не помогло.
собираюсь создавать вложенные классы в один надкласс, который будет содержать методы обращения и извлечения инфы из вложенных.
Где найти годное руководство по такому шаманству? Гугл выдает какие-то наркоманские примеры, в литературе практически не описывается.
В С# есть другие способы это сделать?
Спасибо.
> найти годное руководство
создаешь класс Pizda. в тем создаешь класс Hui. и получается у тебя одно в другом, тебя такое руководство не устраивает?
> другие способы это сделать
другие способы вытягивания данных/обращения к методам другого класса? ну композиция например
Зачем такие сложности, инициализация только говорит о том что создается массив массивов, дальше ты с ним обращаешься как с обычным массивом, т.е. v[0] = new int[10]
Я просто недавно тут.
WCF
>создаешь класс Pizda. в тем создаешь класс Hui. и получается у тебя одно в другом, тебя такое руководство не устраивает?
Лол, можно пример с конструкторами вложенных классов, про условии что внешний - static?
> пример с конструкторами вложенных классов
нипанятна какими конструкторами. ты про такие? https://dotnetfiddle.net/eLvuYa
Да, спасибо большое. Все гораздо проще, чем я думал.
Уже голова кругом идет, в простых вещах путаюсь.
Тимлид не кодит, тимлид смотрит чтобы остальные кодили правильно и продумывает архитектуру приложения чтобы не въебаться на кучу человекочасов, тк это убытки. Но не для галеры, что там делают тимлиды я вообще хз.
спасибо
Класс Отзыв с полями "Автор", список "Лайкнувших" и список "Комментарии", которые также имеют поля "Автор" и "Лайкнувшие". Нужно отобразить их на странице. Запроси имееешь вид:
db.Include(x => x.Author).Include(x => x.LikedUsers).Include(x => x.Comments).Include(x => s.Select(y => y.Author).Include(x => x.Select(y.LikedUsers)....
Всё приводится к ViewModel.
Как это можно оптимизировать?
это норма.жпг
Можешь свой запрос разбить на куски попроще тип посты с комментами, потом отдельно всех людишек нужных, в надежде что и sql уменьшится. Можешь хранимочку написать или view лучше. Можешь забить
Хуй знает, где это тимлиды не кодят. Кодят, и ещё как, только попутно ещё и распределяют задачи по команде. А архитектуру продумывают выше. Хотя, конечно, от размера организации зависит. Если в компании пара десятков человек, то всё может быть.
Если производительность критична, рекомендую самому расписать. Парсинг формата отнимает нехило ресурсов.
Тебе, скорее всего, все данные не нужны. Первая очевидная оптимизация - сделай Select(x => new {x.Field1, x.Field2, ...}), тогда тащиться будут только те поля, которые тебе реально нужны.
Во-вторых, рекомендую расписать джоинами: это нагляднее, и в процессе, скорее всего, станет очевидно, что где можно сократить.
[code]
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data.OleDb;
using System.IO;
using System.Windows.Forms;
namespace tiny_basket
{
public partial class AddProduct : Form
{
public AddProduct()
{
InitializeComponent();
}
private void button2_Click(object sender, EventArgs e)
{
this.Close();
}
private void AddProduct_Load(object sender, EventArgs e)
{
}
private void textBox1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyValue == 13)
textBox2.Focus();
}
private void Price_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyValue == 13)
button1.Focus();
}
private void textBox2_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyValue == 13)
Price.Focus();
}
private void AddProduct_Click(object sender, EventArgs e)
{
{
if (textBox1.Text == "")
{
MessageBox.Show("Заполните все поля.", "Ошибка.");
}
else
{
DataSet ds = new DataSet(); // создаем пока что пустой кэш данных
DataTable dt = new DataTable(); // создаем пока что пустую таблицу данных
dt.TableName = "Table"; // название таблицы
dt.Columns.Add("Название"); // название колонок
dt.Columns.Add("Где");
dt.Columns.Add("Цена");
ds.Tables.Add(dt); //в ds создается таблица, с названием и колонками, созданными выше
foreach (DataGridViewRow r in dataGridView1.Rows) // пока в dataGridView1 есть строки
{
DataRow row = ds.Tables["Table"].NewRow(); // создаем новую строку в таблице, занесенной в ds
row["Название"] = r.Cells[0].Value; //в столбец этой строки заносим данные из первого столбца dataGridView1
row["Где"] = r.Cells[1].Value; // то же самое со вторыми столбцами
row["Цена"] = r.Cells[2].Value; //то же самое с третьими столбцами
ds.Tables["Table"].Rows.Add(row); //добавление всей этой строки в таблицу ds.
}
}
}
}
}
}
[/code]
[code]
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data.OleDb;
using System.IO;
using System.Windows.Forms;
namespace tiny_basket
{
public partial class AddProduct : Form
{
public AddProduct()
{
InitializeComponent();
}
private void button2_Click(object sender, EventArgs e)
{
this.Close();
}
private void AddProduct_Load(object sender, EventArgs e)
{
}
private void textBox1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyValue == 13)
textBox2.Focus();
}
private void Price_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyValue == 13)
button1.Focus();
}
private void textBox2_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyValue == 13)
Price.Focus();
}
private void AddProduct_Click(object sender, EventArgs e)
{
{
if (textBox1.Text == "")
{
MessageBox.Show("Заполните все поля.", "Ошибка.");
}
else
{
DataSet ds = new DataSet(); // создаем пока что пустой кэш данных
DataTable dt = new DataTable(); // создаем пока что пустую таблицу данных
dt.TableName = "Table"; // название таблицы
dt.Columns.Add("Название"); // название колонок
dt.Columns.Add("Где");
dt.Columns.Add("Цена");
ds.Tables.Add(dt); //в ds создается таблица, с названием и колонками, созданными выше
foreach (DataGridViewRow r in dataGridView1.Rows) // пока в dataGridView1 есть строки
{
DataRow row = ds.Tables["Table"].NewRow(); // создаем новую строку в таблице, занесенной в ds
row["Название"] = r.Cells[0].Value; //в столбец этой строки заносим данные из первого столбца dataGridView1
row["Где"] = r.Cells[1].Value; // то же самое со вторыми столбцами
row["Цена"] = r.Cells[2].Value; //то же самое с третьими столбцами
ds.Tables["Table"].Rows.Add(row); //добавление всей этой строки в таблицу ds.
}
}
}
}
}
}
[/code]
>>907368
Не работает если вложенные - private, а они мне нужны именно private.
Внешний класс - содержит только конструкторы внутренних и способы вытягивания информации.
Есть такой вариант?
public class Program
{
public static void Main()
{
new Outer.Inner();
new Outer.Huinner();
}
}
public static class Outer
{
private class Inner
{
}
private class Huinner
{
}
}
оптимизировать запросы EF это дела такое болотное и неблагодарное, что я ебу
если есть задача реально оптимизировать, то иди в SP. если тебе никак от еф не отвертеться, то в Include включай только тот набор полей таблицы, который тебе действительно нужен для маппинга (а не для условий) во ВМ
>>907710
если вложенные private, манипулировать ими может только тот класс, в которые он вложен. в любом другом случае ничего не выйдет
>если вложенные private, манипулировать ими может только тот класс, в которые он вложен. в любом другом случае ничего не выйдет
Извини, я наверное неправильно объяснил.
Доступ к полям внутреннего класса - только через внешний, который static.
Но почему конструктор не может быть privat? Я же нигде не вызываю его
Не работает:
http://pastebin.com/3315c1gK
И еще, объясни пожалуйста область видимости public конструктора в privat вложенном классе, в коде выше.
>Но почему конструктор не может быть privat? Я же нигде не вызываю его
а это что?
> new Nested(a);
он может быть private, но ты тогда не вызовешь его вне собственно же самого себя
> область видимости public конструктора в privat вложенном классе
если класс-контейнер приватный, то весь доступ к вложенному классу, включая конструктор, происходит не далее, чем в самом контейнере, не считая рефлексии
>он может быть private, но ты тогда не вызовешь его вне собственно же самого себя
Стоп, ты же говорил
>если вложенные private, манипулировать ими может только тот класс, в которые он вложен.
Вложен он в static Outer, но Outer его не может вызвать, дает ошибку.
ну так при области видимости private объект доступен только его непосредственному окружению:
outerClass -> innerClass -> ctor
- приватный конструктор может только inner
- приватный inner может только outer
- ???
- PROFIT
но прелесть вложенных классов такова, что ctor может в приватные объекты outerClass, но это не суть разговора
Как мне сделать так, чтобы в Abbreviation не писать string[] str = s.Split(' '), а раскомментировать зеленое? Тогда у меня получается ошибка на втором пике.
Программач, скажи, что нужно написать, чтобы избавиться от этого, или дай полезную ссылку, второй день мучаюсь. Я уже пытался использовать implicit operator, но это забивание гвоздей телескопом.
извините за код
indexer о напиши своему классу
Зачем тебе собственный класс? Зачем ты в статичном методе класса создаешь инстанс этого класса?
С линком это в одну строку написать можно вообще.
return s.Split(' ').Select(s=>s[0]);
DbSet для работы с данными предоставляет как обычные, так и асинхронные версии методов(например, Single и SingleAsync, SaveChanges и SaveChangesAsync и тд).
Когда лучше использовать обычные версии, а когда асинхронные?
Сейчас по возможности везде использую асинхронные. Правильно делаю?
Хочу и называю, законом не запрещено.
Допустим, есть случай, когда асинхронный метод не выполнился, не успел, а твоя программа вызывает его результат по ссылке. Итутуру ты соснёшь nullцов и похаваешь ексепшанав. Удачи.
Обычно асинки ебашат к большим данным и ессно расчитывают их поведение
Есть способ сделать это в 3 клика?
пиздец, знаток асинков в итт
>>908220
с поддержкой асинхронно выполняемых методов, конечно, желательнее использовать их, если ситуация позволяет
Подскажите, как реализовать следующее:
Есть Модель привязанная к вьюхе;
Суть - List из объектов;
У каждого из объектов есть category;
Я хочу чтобы при нажатии соответствующей кнопки/радиобатона назначалась соответствующему объекту category равная value кнопки/радиобатона;
Соответственно кнопки/батоны рендерятся в фориче для каждого объекта как и его текст;
category это просто стринг-свойство;
Желательно без обновления всей страницы.
Не шарю в js, шарю в C#
>есть случай, когда асинхронный метод не выполнился, не успел
Я использую await.
>твоя программа вызывает его результат по ссылке
Насколько я знаю, если я Обращаюсь к свойству Result работающего таска, то текущий поток "заморозится" до завершения выполнения этого таска. Хз про какие null'ы и исключения ты пишешь. >_<
>>908268
Спасибо. ^_^
Только недавно на .NET Core + Angular 2 делал тестовое задание. Проект собирается через Docker и крутится на дебиане. Брат жив, зависимость есть.
Спасибо, анонс, попробую и тоже со вторым ng!
>как там дела с .NET и в частности ASP.NET Core под прыщами?
Качаешь и устанавливаешь .net core с https://dot.net/
Вбиваешь в консоли dotnet new -t web
И у тебя сразу готовый "толстый" asp net проект с авторизацией, razor и прочей хуетой
Спасибо, теперь в голове порядок.
Вообще, если есть задача (я повторюсь):
1. Внешний класс static, и содержит методы доступа к объектам вложенного класса.
2. Вложенный класс private.
Проблемы: %The name '_kList' does not exist in the current context%
http://pastebin.com/gqgT7aZj
Ты запихал _kList в функцию, а не в поле класса. Вытащи его наружу и сделай статическим.
>Вроде же писали что System.IO еще не реализован
Наверное какой-то узкий кейс или это очень старая инфа.
Обычные операции с файлами читать/писать/удалять и тд работают на Linux/OSX как минимум уже год.
Написал пару консольных утилит (качалку webm и простенький DSL для сборки приложений).
У меня реально проблемы с пониманием области видимости.
http://pastebin.com/zgaAGxB4
Выдает 'Outer.Nested.field' is inaccessible due to its protection level
Почему, ведь обращение к полю field только внутри класса Outer? Неужели надо использовать свойство Field?
>>908344
Тебе хорошо, а я, кроме сишечки и протухшего паскаля, ни с чем дело не имел.
в сишке и паскале область видимости работает также
твой филд field является приватным. т.е. доступ к нему возможен только в рамках объявленного контейнера коим является класс nested
Вот, собственно, весь код
http://pastebin.com/RmQdcCnT
А вот с чем возникли проблемы
Чому-то не добавляется строка
http://pastebin.com/C77dE0PM
Спасибо!
Интересует вопрос, на просторах есть слитый этот полный курс (на трубе только первых 2 части полные)?
https://itvdn.com/ru/video/csharp-starter?utm_source=yb_full_csstart
https://www.youtube.com/watch?v=xsaRhgD7XL4
Есть. Ищи.
Вот я делаю тут ебалу для вывода показаний с датчиков и т.д. и т.п.
Вот у меня например 100 лейблов, я получаю с сервера данные каждую секунду в словарь Dictionary<String, Object>, где String - название датчика(устройства), Object - значение, оно может быть и Int, и Double и Bool, и даже String.
В общем мне надо каждую секунду обновлять значения на этих 100 Label из словаря, как это лучше сделать, как привязать каждый Лейбл к своему элементу словаря?
Пока придумал говнокод или не знаю, Ставлю в лейб в x:Name="Dictionary.Key(определенный ключ словаря". Делаю Foreach по всем элементам словаря и если Findname(Dictionary.Key) != Null, тогда ((Label)Findname(Dictionary.key)).Content = Dictionary.Value.
Есть ли нормальный способ?
M V C
Зачем тебе 100 отлельных лейблов, поехавший? Возьми любой контрол для работы с коллекциями и бинди его к своему словарю.
Ну нужно физически в разных местах, на разных вкладках разной вложенности и с разными фонами, разными шрифтами отображать значения.
Например на вкладке 1 вверху нужно отобразить "15 м3ч" 14 шрифтом. На вкладке 6, внутри контейнера, нужно отобразить "23 МПа" 20 шрифтом динамически с разным цветом фона(красный, зеленый, желтый).
Как это по-другому сделать? Кроме как лейблами или текстблоками?
>Дай код на OPC
Что ты имеешь ввиду? Код для подключения к OPC-серверу? Или код на самом контроллере?
Сделай словарь устройство-лэйбл и в фориче labels[dic.Key].Content = dic.Value.
Но нужно предварительно все лейблы закинуть в этот словарь при старте программы.
решарпер тупой и не понимает датаконтекста, который ты применяешь на окно
>>909665
если ты совсем не в многопоточность, статья рдсн даст тебе многое
>>909682
ты юзаешь впф, но не применяешь мввм?
http://pastebin.com/DRpVWApN
Вот, это я сейчас переделал немного, на работоспособность еще не проверял полностью в сравнении со старой версией, вроде соединяется, берет все теги, значения и т.д. Заодно подскажите, как можно тут лучше сделать?
Сразу скажу, что на сервере, почему-то нумерация идет не с 0, а с 1. Поэтому такие костыли. И использую List вместо уже существующего browser, потому что перечисление элементов из браузера идет в 10 раз дольше.
WPF начал применять только потому что заказчику не нравится winforms, про MVVM ничего еще не знаю, поэтому и спрашиваю, как лучше реализовать это все, если кратко - да, юзаю впф, но не применяю мввм, совет какой по вышеописанному мной, кроме "читай мввм"?
C помощью мввм создаешь модель где свойства (твои теги) сами сообщают о своем изменении и передают новое значение. Те тебе будет достаточно лишь присвоить новое значение во ViewModel части. Выглядит оче удобно, но я пока не пробовал - руки никак не доходят Все вожусь с многопоточностью и компортом, блядская прокрастинация
>>909705
Вот же я дал код. Там есть метод для записи одного итема, там минутное дело поменять его для массива, вместого одного элемента, соответственно тебе нужно будет передавать в него не string в качестве названия тега, а string[], и не object value, а object[] values, например.
С записью прокатит, а как читать? Проблема в том что нужно как-то грамотно через Item передать число байт для чтения. Каждый раз выделять в Value память нужного размера как-то тупо по-моему.
Вон в методе GetAllValuesDictionary().
Смотри в _group.SyncRead((short)OPCDataSource.OPCCache, _items.Count, ref _handlers, out _values, out _errors, out _qualities, out _timestamps);
Вместо _items.Count сколько нужно тебе значений забрать и _handlers - массив адресов этих итемов на сервере, изначально я просто ВСЕ итемы занес в _handlers, ты соответственно можешь в него занести только те, что тебе нужно и соответственно с сервера заберешь то что нужно.
Я так понял это массив айтемов? А мне надо прочитать айтем который на сервере (удаленном устройстве) представлен динамическим массивом байт (но перед запросом клиент знает из других источников его размер).
Я такого не помню, но тут насколько я знаю 2 варианта.
1)Если этот массив как один итем на сервере, то используй GetItemValue, он примет этот массив в виде Object, потом его преобразуй в Array да и все
2)Насколько я работал с массивами в контроллерах и передавал их по протоколам передачи они все передаются не как массив, а как набор элементов, то есть есть у тебя массив Byte из 8 элементов, то ты передаешь 8 отдельных item, тогда тебе нужно массив[0].serverhanle, массив[1].serverhandle.
Как-то так.
Я должен сам реализовать этот сервер, но не могу придумать как грамотно выразить это в терминах OPC. Т.е. GetItemValue как-то должен получить инфу сколько ему запросить у устройства.
>Я должен сам реализовать этот сервер
Ааа, даже так. Не, то что я дал это пример клиента, а не сервера, он соединяется с сервером, который все это берет с контроллера.
Ну если ты реализуешь сервер, то тебе нужно ссылаться на адрес этого массива и соответственно забирать значения по этим адресам, по какому протоколу все это передается? Modbus, Can, Ethernet? Смотри настройки в зависимости от протокола передачи, какой адрес у этого массива, если это через модбас, то первая переменная адрес 0, вторая 1 и т.д. А по езернету я серверную часть никогда не реализовывал, в интернете и так 1000 OPC серверов.
По modbus, с адресами легко выкрутился, коды айтема OPC я отобразил в адрес регистра modbus (тут повезло, у них даже тип один - ushort), а вот как передать через OPC еще и скоко регистров брать хз.
Накидай функционалку и сбегай в воркач, там переодически теребятся в асу треде парни с хорошим опытом программирования этого дерьма, могу чего толкового посоветовать.
http://pastebin.com/cq9xFBin
http://pastebin.com/mwGFwQDz
Вот сделал, не понял зачем конвертер, можешь пояснить? Вот все работает, при старте выводит 2.3, потом жму на 1 кнопку, выводится false, жму на вторую - выводится 5.
> private void Button_Click(object sender, System.Windows.RoutedEventArgs e)
mvvm/binding предполагает отсутствие подобного дерьма в коде Window. иначе нахера тебе делать привязку, если ты прекрасно общаешься событиями?
конвертер нужен для правильной связки данных. например в твоем случае, где нужно в текст загнать словарь. в общем случае стандартный механизм просто сделает valueObj.ToString(CultureInfo) и получишь ты вместо адекватной записи какую-то хуиту. конвертер добавляет кастомной логики в эту операцию
Не, это я просто для примера сделал. Сейчас все эти кнопки убрал, сейчас все работает без событий. Насчет конвертера понял, спасибо.
Это ты в каком году написал? Какие нахуй датасеты, маня? Но ваще тут посмотри http://stackoverflow.com/a/10049875/229949
Ну что за ебля со свойствами, гетами сетами хуетами!
Немогли зделать friend как в C++!!!Не рекоминдую такой язык!!!
ну и надо же какие-то фичи добавлять в новых версиях
о, так тут же фигня в том, что lambda != Action
для обычных типов оно автоконвертит одно в другое. а для динамиков -- нет.
когда делается вызов динамика, оно ищет нужную перегрузку метода по типам передаваемых аргументов. А тут у лямбды тип хуй знает какой, при том, что метод ожидает Action.
А тут у лямбды тип хуй знает какой, при том, что метод ожидает Action.
Но для обычных переменных компилятор же может определит тип лямбды, чому в динамиках он этого не может?
потому что по факту ебаться с этой лямбдой будет DLR, а она наверное не хочет быть очень умной, чтобы не отгрести говна случайно.
Конечно, компилятор мог бы понять, что там лямбда, и она превратиться в Action, но, возможно есть какие-то edge cases, когда это будет плохо работать. И поцоны выбрали явный кастинг к Action.
Столкнулся с точно такой проблемой. Код похож. Есть какие советы?
Точнее, если у меня много кнопок и полей, у которых нужно по-разному менять цвет фона.
>>910499
Хуево написал наверое, в общем вот код http://pastebin.com/SwUM54Jc
Вот у меня например в словаре поменялись значения с ключами ["BackGroundGreen"] = 0, ["BackGroundRed"] = 1, ["BackgroundGray"]=0. Значит я должен изменить цвет фона кнопки на красный, в какую сторону смотреть?
Тереблю многопоточность и выявил какой-то косяк в работе приложения, закинул в дотфидл - там все работает так, как нужно! В чем моя проблема?
https://dotnetfiddle.net/EAfBxN
в голове проблема
А как это делается с помощью TPL?
вообще, на твой вопрос можно по разному ответить. зависит от того, при каких условиях тебе необходимо менять цвет и активность кнопки.
можно
а) Расширить класс кнопки, создав CustomControl, наследующий Button и имеющий какой нибудь dependency property, на изменение которого есть триггер в стиле/шаблоне нового кастомного контрола, который тебе необходимо еще и написать и применить к каждому экземпляру (или просто оставить стиль/шаблон без свойства Key в заголовке, чтобы он автоматом применялся ко всем экземплярам)
б) для каждой кнопки, если их не очень много, создать свойство, изменение которого дергает событие PropertyChanged. думаю, наврядли у тебя 500 абсолютно не связанных кнопок, то есть их можно условно разделить на категории. тогда кнопкам своим, в зависимости от категории хуячишь
<button IsEnabled="{Binding Path=SomeCategoryEnabled}" Content="#YOLO" Background="{Binding Path=SomeCategoryBackground}"/>
где SomeCategoryEnabled - булевое свойство, дергающее PropertyChanged при изменении, а SomeCategoryBackground - свойство цвета SolidColorBrush/RadialGradientBrush/LinearGradientBrush.
в) ну или, если тебе пиздец как хочется скастовать "анус-запеканус" и привязать всю эту хуйню к ОДНОМУ словарю для РАЗНЫХ полей и кнопок, то...
ну хз. я не до конца понял твой проблемы, но если всё оставлять в том виде, в котором ты это предполагаешь, то тебе для каждой ебучей кнопки придется делать свой ключ, и биндить параметр следующим образом:
<Button IsEnabled={"Binding Path=theDictionary[\"theButtonKey\"]"}
Да ты там вообще охуел чтоли? Хуйню какую то пишешь. Менять, блять, цвет фона по словарю через значения 0 и 1 для разных оттенков? Совсем наглухо пизданулся? Иди нахуй.
>а ты там вообще охуел чтоли? Хуйню какую то пишешь. Менять, блять, цвет фона по словарю через значения 0 и 1 для разных оттенков? Совсем наглухо пизданулся? Иди нахуй.
Ну а хуле делать, на сервере только 3 адреса по которым я могу отследить, во что красить кнопку, если первый в true - авария, цвет красный, если второй в true - нормально - цвет зеленый, если третий в true, то неактивно - серый.
Соответственно все значения с сервера ко мне приходят словарем <string, object> где string - название, object - значение.
Не я это придумал, лол.
если верить их сайту - возможно. сам хз, я сайты клепаю. xamarin.com/customers
обязательно на русском? сам же знаешь, перевод добавляет ошибки + часто отстаёт на год минимум
Нет. Просто внезапно залез посмотреть а там блядь награмождено всего пиздец. Не пойму как написать сранную кнопку с хелоуворлдом. Все какие то блядские сдк и фреймворки ставлю. Ой блядь.
Ебанный ксамарин уже просто доебал.
http://stackoverflow.com/questions/41552653/xamarin-android-player-is-installed-but-not-recognized
Как пофиксить эту хуйню?
Я установил блядский андройд плеер, так какого хуя ВС его не видит?
У меня уже сука зла не хватает.
ВС 2015 комьюнити, спермерка 64бита.
Спасибо, создал отдельно ссылочный тип и с ним вроде даже заработало. А почему так криво работает с кастом инта?
> 0.6.5
> Released: November 4th, 2015
Забей, они его убили.
Юзай VS Android Emulator или из Android SDK
Если ставлю галочки, то в программе System.Reflection.Assembly.GetExecutingAssembly() меняется, а когда захожу в папку - bin - Release, то версия файла все еще 1.0.0.0 и версия продукта 1.0.*
ну почему криво. экземпляр ссылочного типа создается у тебя в момент упаковки. т.е. при каждом lock(int) ты будешь получать упаковку текущего инта и размещение его в куче. если бы ты обьявил где-нибудь в пределах класса object syncObj = someInternalIntValue, то было бы все окей
а как ты ожидал? что в случае с (object)int CLR будет искать каждый раз тот инт в памяти, который по значению равен упаковываемому? это ж охуеть не встать. ну и, к тому же, сам смысл упаковки терял бы смысл по большому счету
>>910987
ну ничего себе мы серьезные какие
Stored Procedure, мог бы и знать-то в 2017
Красавчик. Просто ты пишешь софт так, что его и тестировать не нужно.
>а тестировщики, а мне что-то вроде "МММ... ясно" ответили и не перезвонили
Кекнул. А если я, например, пишу функции для крипторов с ограниченным числом способов применения, которые просто не могут быть багнутыми, если их использовать по назначению? Это у десктоп-опущенок что ли ехал баг через баг?
Пишу на работе софт для своего отдела, оче удобно.
Написал тебе за щеку
Ооой я затупил, снмиаю вопрос
Плеер от студии вроде как работает через Hyper-V, а в семёрке его нет по дефолту, надо отдельно ставить.
Всё, с плеером разобрался.
Но теперь почему то мой хелоуворлд не запускается в киткате. Просто загружается оболочка. В меню приложения тоже нет.
Может есть какая то комбинация клавишь?
Попробуй файрвол вырубить. Ещё можно логи девайса каким-то образом вывести, может там будет ошибка.
Поставь десяточку то, ну не будь 2007к. И новую студию, и новое все.
>есть ли в студии уже встроенный механизм?
Есть же, там можно даже настроить чтобы все тесты при билде запускались, и есть всякие либы типо NUnit, если честно я не знаю что сейчас в тестах модно.
Но вообще тебе как разработчику должно быть известно о концепции Unit тестов и интеграционных тестов, и писать их тоже должен ты, по идее. Может поэтому и не перезвонили, кек, кто их знает.
Где прочитать - сам не знаю, гугли по ключевым словам сверху. Ещё заодно к этому тебе нужно иметь представления о Moq и роли IoC в тестировании.
Там есть такая штука как категории. Категория состоит из двух частей: дружелюбная для человека строка вроде "Audio - Lossless" и строка для URL вроде "3_14".
Я не совсем понимаю как по-нормальному протащить их в библиотеку. Т.е. я хочу в свой метод поиска передавать что-то вроде "Category.Audio_Lossless" или "Category.Software_Games" и чтобы оно под капотом превращалось в строчку для URL.
Пока самое лучшее что я придумал это создать класс с кучей свойств вроде "public string Audio_Lossless => "3_14"".
ну, либо Disctionary<string, string>, либо перечислялка с атрибутом. в такой ситуации - все говно, нужно выбирать по обстоятельствам/перфомансу
Вытягивай актуальные категории с этого же сайта, делов то
Спасибо за ответ :)
>Disctionary<string, string>
Я забыл уточнить 1 важную штуку. Хочу чтобы работало автодополнение в IDE. С ключами словаря оно не работает.
>перечислялка с атрибутом.
т.е. мне нужно будет доставать значение через рефрексию? Это ж вроде "дорого". Зато с автодополнением.
>нужно выбирать по обстоятельствам/перфомансу
На производительность похуй. У меня ж по сути качалка торрент файлов, а не крупная корпоративная йоба.
>приложение для работы IO (диск/интернет)
>рефрексия - дораха
Хватит блять перформанс в уме считать.
Тормозит приложение - берешь профайлер.
Нужны микробенчмарки тебе не нужны - берешь https://github.com/dotnet/BenchmarkDotNet АндреяА
И как его завести?
Я пытался прописывать в командной cd [путь до csc.exe]/csc.exe D:[путь до файла]/TestApplication,cs
Что я сделал не так?
>Это ж вроде "дорого"
дорого делать через рефлексию то, для чего уже существуют конструкции в коде, т.е. доставать значение филда, вызывать метод и т.д. атрибут - это же метаданные типа или его членов, и не является чем-то катастрофическим для перфоманса
А если список категорий или урлы в них изменятся? А? Новую версию будешь пилить?
Скорее всего да т.к. я не знаю как "на ходу" сгенерировать пары "название категории" - "url" чтобы оно потом работало с автодополнением IDE. Я мог бы просто закинуть в словать, но это без автодополнения.
Отладку на телефоне включил.
USB Сдк от гугла скочал.
Мое устройство автоматически должно появится в меню отладки, или надо включать?
А все разобрался.
Если у кого то будет та же проблема - надо просто в диспетчере устройств выбрать свой телефон и в ручную подключить драйвер который качает СДК на комплюктер.
А нет нихуя. Иде видит устройство.
Дебаг идет нормально, за исключением того что блядь приложение на телефоне не запускается.
Блядь.
Android application is debugging.
The application could not be started. Ensure that the application has been installed to the target device and has a launchable activity (MainLauncher = true).
Additionally, check Build->Configuration Manager to ensure this project is set to Deploy for this configuration.
Че он хочет? Мне надо самому ставить свою приложуху на телефон? Так это же уже релиз а не отладка.
Не уверен что поможет, но советую проверить что:
1). В качестве целевой платформы ты выбрал ARM.
2). У тебя стоит галочка с картинки.
3). Посмотри появилась ли твоя приложуха на телефоне вообще.
Сам я юнга в C#, изучаю в свободное время.
Я пишу небольшое приложение с формочками, для работы.
Формочки расписал, логику расписал, каждый ввод проверяется и каждый шаг расписан. Логику создавал исходя из предположения, что использовать приложение будет контуженный идиот мой начальник
Приступил собственно к написанию кода - и тут вопросы на каждом шагу.
Создавать классы на каждый объект? А если они отличаются не значительно, наверное, нужен базовый класс и от него наследовать? Каждому классу свои методы, или один статический класс со всеми методами?
Я понимаю, что это все приходит с опытом, но есть какое-то направление?
Спасиб.
ну создаешь отдельный тип на какой-то отдельный процесс или параметр, имеющий состояние. статический метод подходит для случая, когда нет зависимости от состояния. хз, понял ты или нет
> Создавать классы на каждый объект?
Смотря что у тебя там за объект. Если дохрелион мелких, то лучше ограничится структурой. Если парочка больших, то можно и классы хуярить. А может быть достаточно массива строк.
> А если они отличаются не значительно, наверное, нужен базовый класс и от него наследовать?
Наверное нужен. Я хз что ты называешь объектом.
> Каждому классу свои методы, или один статический класс со всеми методами?
Опять же, сколько у тебя классов? Сколько методов? Если надрачивать ООП, то там лучше много специализированных методов, чем один универсальный. Ну ты понел.
> Я понимаю, что это все приходит с опытом, но есть какое-то направление?
Напрвавлен е одно - "Хуяк-Хуяк и в продакшн". Главное что бы тебе самому было удобно потом этот код поддерживать.
>но есть какое-то направление?
Читать книжки до просветления минимального. Ты такие вопросы создаёшь как будто в первый раз что-то на ООП пишешь.
var ModalWindow = new ModalWindow();
задаю овнера и вызываю ShowModal() делаю что надо закрываю окно, но из памяти оно почему-то не удаляется, то есть каждое открытие приложение кушает еще памяти.
Почаны что гуглить, как быть? Нагуглил что сборщик мусора сам придет и съест ненужное говно, но я стремаюсь, хочу подразобраться.
значед где-то есть ссылка на эт окно, ест сборщик не сжирает мусор, либо внутренности окна зависят от какого-то хлама, от которых зависит еще какое-то еще не удаленное дерьмо. либо проблема не в конкретно этом окне, такие дела
хочешь разобраться - читай про модель памяти и сборку мусора
Сборщик мусора запускается не в тот момент, когда объект перестал быть нужен, а когда приложение суммарно начинает потреблять много оперативной памяти, т.е. ненужные объекты могут долго болтаться в памяти (если ты не создаёшь новых объектов), это нормально.
> суммарно начинает потреблять много оперативной памяти
ну нет. эта фраза довольно неоднозначна, и, скорее всего, незнающим будет расценена неверно. посему не путай людей
Поясни, пожалуйста. Не понял суть претензии.
Из Рихтера:
"При инициализации CLR выбирает пороговый размер для поколения 0, например 256 Кбайт (конкретный размер может варьироваться). Если в результате выделения памяти для нового объекта размер поколения 0 превышает пороговое значение, должна начаться сборка мусора."
пороговый размер поколения 0 в какой-то момент времени работы приложения != потреблять много оперативной памяти
> суть претензии
->фраза довольно неоднозначна
Да, пожалуй, ты прав.
Издательство Питер7
Есть ли последнее издание, четвертое вроде, на торрентах? Которое в зелененькой обложке.
Его вроде переводил как раз специалист.
Мне надо закинуть АПК своего приложения на телефон самому, или оно появляется автоматически?
Проблема походу в самой студии.
А то я сделал релиз своего хелоуворлда. Закинул на телефон АПК из папки прожект/бин/релиз.
У меня оно не устанавливается.
На других телефонах устанавливается но не появляется иконка приложения.
Наверное я проебланил какой то СДК или ЕКСТРА для несосания залуп.
Где можно полный список посмотреть?
1). Правильно ли я понимаю, что увеличение Capacity значит что под капотом был создан новый массив и туда было скопировано содержимое старого?
2). Стоит ли из-за этого переживать если проект это игра?
Нужен твой совет. Меня попросили прийти на собеседование, но не в качестве нового сотрудника, а качестве рекрутера.
Собственно вопрос: какие мне задавать вопросы, так как я вообще не знаю куда копать?
Стек технологий: .NET/ASP.NET MVC 5/Web API/HTML/CSS/Jquery
Да толком сам не понял.
Вообще это маленькая кантора и там пока два с половиной дотнетчика, все остальное это пых, фронтенд, дизайнеры и т.д.
Так как начинаем новый проект нужны люди и меня попросили прийти и помочь в собеседовании.
А что спросить я хз. Чем отличается абстрактный класс от интерфейса))
Еще есть десктоп/автоматизация тестирования/Unity3D. Я, например, авто-тесты для десктопной приложухи пишу/поддерживаю.
WebAPI это суть реализация REST сервисов. Спрашиваешь все про них, какие методы используются, какие запросы приходят и какие ответы уходят, как оно все работает на низком уровне. На каком-нибудь примере типа чата.
HTML - что нового ввели в 5-й версии, как правильно задавать кодировку, чем отличается <span> от <div>.
jQuery - несколько задачек по выбору/изменению свойств с различными селекторами, AJAX.
CSS программисту помнить наизусть не нужно.
Про REST еще модно спросить, какие есть другие способы реализовать эту задачу? Если чел в теме, а не студент с хабры-жаборашей, он обязательно расскажет про SOAP, почему тот сосет, и какой у него единственный плюс (WSDL).
Можно, наверно, еще спросить, почему именно такие HTTP-методы были выбраны (например, GET для чтения данных), но это для гуру-хакеров, джун/миддл про тонкости протокола HTTP может и не знать.
А по синтаксису спрашивать не нужно, никто это глупости не помнит, тем более студия сама создает шаблон.
>WebAPI
>На каком-нибудь примере типа чата.
Это же реалтайм. Так что тут скорее SignalR чем WebAPI.
SignalR это просто оболочка для веб-сокетов. Это больше нужно для игр, видео и т.д.
Чат достаточно обновлять раз в секунду, AJAX для этого прекрасно подходит.
Если честно, я нихуя не понял твоего вопроса. Что значит, чтобы биндинг работал, когда текстбокс не в фокусе? Как тогда ты текст будешь вбивать? Или ты будешь в текстбокс данные вводить через другие источники (по нажатию кнопки/по загрузке текста и т.д.)?
Если тебе нужно, чтобы ты мог изменять значение переменной через текстбокс, то выбери режим биндинга OneWayToSource, если тебе нужно, чтобы менялся текст, когда что то другое изменит переменную - режим TwoWay. Если тебе нужно, чтобы изменения применялись только после того, как ты уберешь фокус с текстбокса - делаешь свойство UpdateSourceTrigger = LostFocus. Если тебе нужно по энтеру это делать - то можешь либо попытаться разобраться, как работает режим обновления Explicit хз, возможно у DependencyObject, который ты привязываешь и которым является text у TextBox'а есть какой нибудь метод типа submit или ещё какой нибудь AcceptChanges и вызывать сабмит командой, которую привязываешь в KeyPress, в команде которой проверяешь, что если нажат Enter - то submit, или вовсе без биндинга обойтись - вешаешь на текстбокс обычный обработчик события KeyDown/KeyUp/KeyPress, смотришь там, нажат ли энтер или хуй, ну и делаешь свои грязные дела.
>Если тебе нужно, чтобы изменения применялись только после того, как ты уберешь фокус с текстбокса - делаешь свойство UpdateSourceTrigger = LostFocus.
У меня стоит
Text="{Binding variable, UpdateSourceTrigger=LostFocus}"
При вводе текста в этот текстбокс, он заменяется на значение переменной. Может дело в том, что значение переменной изменилось, во время того когда я набирал текст в текстбокс. Эта переменная никак не привязана к текстбоксу и ее значение может поменяться и в момент ввода в текстбокс какого-то значения.
По идее там срабаывает PropertyChanged евент в ViewerModel и он обновляет текстбокс, даже если там стоит UpdateSourceTrigger=LostFocus.
>Создавать классы на каждый объект? А если они отличаются не значительно, наверное, нужен базовый класс и от него наследовать? Каждому классу свои методы, или один статический класс со всеми методами?
>
>Я понимаю, что это все приходит с опытом, но есть какое-то направление?
>
Тебе нужны Дизайн Патерны?
https://itvdn.com/ru/patterns
Вот держи книжку по шаблонам проектирования.
А нет. Я понял. Тебе нужен учебник Герберта Шилда или троелсена. Там описано как создавать классы очень просто.
Посоветуйте пж курсы/литературу по ADFS. Конкретно интересует настройка Identity Delegation между фронтендом (Angular 2) и веб-сервисами (WebAPI). Пробовал понять что-то по гайдам из гугла и из доков MSDN, но слабо могу понять о чем в них идет речь.
Заранее спасибо!
Уже не нужно, запутался в StringWriter, TextWriter, Stream, BinaryWriter;
OpenGL
OpenCV
Bullet physics
нужны костыли
Вот тут, например http://stackoverflow.com/questions/1123718/format-xml-string-to-print-friendly-xml-string в первом ответе.
Я пробовал, если его убрать, то не все информация запишется в xml документ.
Это значит что у этого XmlTextWriter буфера не хватает чтобы все за один раз записало поэтому необходимо flush вызывать чтобы остатки попали в документ? Или как?
>SignalR это просто оболочка для веб-сокетов.
Вообще-то SignalR - библиотека для двухсторонней передачи данных, которая умеет и в веб-сокеты, и в
>обновлять раз в секунду
В рот бы нассать такому "рекрутёру", который стесняется сказать "Я не знаю".
есть в студии инструмент по типу "рука" в фотошопе, чтоб можно было навигацию на коду осуществлять без скролл баров
у меня разрешение маленькое на экране и ебаться с переносом слов вообще не охота, оче не понятно получается с переносом.
Сам студентота, и в моей мухосрани особых альтернатив нет просто
Это я видел.
Спрашивал про этот конкретный случай и правильно ли я его понимаю ввиду такого определения.
Не пиши строки длинее 80 символов, скрой все ебаные панельки справа и слева, полноэкранный режим, поставь оче маленький шрифт / включи реверс-зум, купи монитор.
Ну там ты неплохо подымешь синтаксис, ооп мультитреад, асинхронность (наверное).
Но это не отменяет того что придётся освоить бд и асп.
Кароче пытаюсь на ксамарине задеплоить прожку на свой телефон, так как эмуляторы проелтают из-за отсуствия апаратной виртуализации на ноуте.
Суть в чем. Прожка деплоится. Билдится. Тут все САЦЕСС.
На телефоне появляется окно только с названием моего хелоуворлда и иконкой. Но кнопки не проприсовываются. Блядь да что не так то? Сука.
а не проще держать стрим с максимальным размером буфера чтобы не инициировать копирование данных и создание экземпляров массивов?
Похожая хуйня с замарином - компилится без ошибок, мигает иконка деплоя и эмуль висит с черным экраном. Плясал с бубном вокруг конфигов эмулятора в итоге один раз я увидел на экране эмуля свое приложение, но второй раз чудо не повторилось с теми же настройками. Я пытался читать логи и вроде сделал какие-то выводы даже. Я грешу на Win7 и проц AMD - отсутствие HyperV, что то такое. Честно, не отвечу за нюансы, но уверен, что дьявол кроется именно вот в этих деталях.
У меня базовый поток это медленный канал связи с удаленным устройством, поэтому надо минимизировать трафик по этому каналу. Типовой сценарий это сначала прочитать небольшой заголовок вначале потока и потом уже на основе этой инфы принять решение нужно ли читать его до конца. Если я сразу задам большой буфер то на первом запросе пары байт buffered stream выжрет весь буфер который может мне не понадобиться. BufferedStream сцукко запечатанный, его даже не расширить. Меня бы даже устроило если бы он внутри себя весь большой буфер выделял, главное что бы можно было контролировать у нескольких первых запросов что бы он буферизовал небольшое число байт.
не, погоди, если ты отправляешь пакет размером с буфер, то ты делаешь все не так
если БЦЛ-либа отправляет за тебя такую фуру говна - это очень странно
Почему странно, это же стандартная вещь, ровно так буферизованные потоки и работают. Ты ничего не знаешь что есть буферизация, просто пиешь в абстрактный поток по паре байт (например сериализуя разные числа). Поток буфер как накопит пачку, так целиком ее и отправит прозрачно для тебя. Тоже самое при чтении, только при запросе читается весь буфер прозапас.
Да да. Еще слышал ксамарин через жопу работает на 64 семерке.
Ну точнее анндройд СДК манаджер.
>>915879
>>915835
хуй знает что у вас за проблемы.
Вы какой эмуль юзаете? Стандартный?
Пробовали хотяб genymotion какой?
Пишу на ксамарине без каких-либо проблем.
Задавайте ответы
там рассказывают во что разворачивается await KekAsync() и про работу таскскедулера, чи так, на пальцах?
Chapter 14 The Async Compiler Transform—in Depth
The stub Method
The State Machine Struct
The MoveNext Method
Writing Custom Awaitable Types
Interacting with the Debugger
чо ты такой ленивый. По ссылке же оглавление
рекомендую прочитать ее для начала. А дальше - если маловато будет искать ещё.
> Вы какой эмуль юзаете? Стандартный?
Дефолтный замариновский. Genymotion не пробовал, он платен вроде.
Под какими проц\ОС ты запускаешься?
> Core i5/win10
Ну еп, мы ж определились что проблема в AMD\Win7x64. Олсо, Genymotion ебет мне мозги аналогичным образом. Пикрелейтед.
Hyper-V в компонентах системы выруби и переключи тип ОС в VirtualBox на x64.
>ламерский вопрос, но как вернуть диалоговое окно об ошибке сборки? Один хрен в нем на галку нажал и все. Без него жесть как не удобно. Пользуюсь Visual Studio 2015 русской версией.
>
Тебе же в аутпуте пишутся ошибки, что еще нужно?
Есть более простой вариант - получать данные в модель или в DataTable, если так хочется и потом записывать в XML-файл через XmlSerializer. XML замечательно открывается в Excel в виде красивой таблички.
Обмазался дэйта-байндингом во все поля, вроде все понятно, свои CLR объекты, INotifyPropertyChanged для two-way, DataContext, DataTemplates - все красиво и заебись.
Но в моем объекте например есть поле статуса, которое не перманентное а определяется поллингом хоста и сервиса.
Во-первых, логично было б этот геттер сделать асинхронным, чтоб не тормозился основной тред приложения, во-вторых такая херня должна по логике периодически обновляться, но вот не понятно как это все по-феншую в рамках архитектуры WPF делать
Ткните что погуглить, т.к. даже не понятно как такие вот изъебнутые свойства правилно называются
Ну и че ты тут спизданул? Вся серьезная хуйня, за которую платят деньги, пишется именно под десктоп.
спасибо, братюнь, вроде то что надо, но я тут между делом еще качнул Async c#, которая в треде пролетела
>>918266
ихули? блеать это уже терто-перетерто, ебучее поколение вбыдлятника и инстаграма считает что декстоп давно сдох, при этом на тех же хотя бы двачах, я это гарантирую, больше половины НЕ сидит с мобил, например
может такой кукаретик и веб-обезьяна как ты умеет на корню переносить всю архитектуру в облако, даже если эта архитектура подразумевает исключительное использование десктопа в силу своих особенностей?
что-то я сомневаюсь
MVVM это не просто удобно, это очень удобно и способствует построению легко расширяемого и модифицируемого приложения. У тебя на xaml темплейте будет только базовый десигн, а все изменения можешь делать в модели через вью модель. Вью модель это всего лишь класс обертка, которая имеет свойства типа моделей и в сеттерах свойств ты уведомляешь всех, кто забинжен на этом свойстве (ищи how to implement inotifypropertychanged interfaace stackowerflow например) а на темплейте ты просто пишешь, например, width={Binding MyViewModelPropertyName.SomeLenthPrperty} а в конструкторе класса окна свойству DataContext присваиваешь экземпляр класса вьюмодели)
Не надо interop, есть open xml
да просто до этой главы я все никак не добирался. и вот спрашиваю, является ли это исчерпывающим источником информации, или не?
я надеялся, что итак знаю C# на уровне мидла. контексты - это, вроде как, считается темой достаточно сложной ну, не тривиальной, не?
Очевидное Facebook api.
Письку пасаси, лох.
>это слабая/сильная ссылки?
Точнее нет. Это слабая ссылка, короткая или длинная. Я не могу нагуглить разницу между ними.
механизм WeakReference может отслеживать таргет, который был пересоздан. если я правильно понял, это когда IsAlive стало false, а потом Target внезапно перестал быть null потому, что приложение пересоздало объект. так вот, это лонг вик референс. если такого отслеживания нет, ссылка есть шорт
если я все верно понимаю, вообще
Есть WPF и MVVM Light, привязал ComboBox к публичному свойству. Требуется обновлять публичное свойство в момент раскрытия комбобокса. Понял что нужно использовать RelayCommand и чот застопорился в реализации. Ткните пальцем где подсмотреть пример, толковых книжек конкретно по мввм+впф не нашел.
- JS с шлюхами, без блек джека
- сертификация мимимикрософт
- episerver/sitecore
- ASP.net core и web-api
че как думаешь, было бы лучше изучить чтобы получать БОЛЬШЕ $3k масла на хлеб?
>>919520
web api "убил" wcf. asp.net core "убивает" web api.
>>919501
>>919533
>если я все верно понимаю, вообще
GC работает в параллельном потоке и для тяж обьектов с деструкторами увеличивают срок жизни обьекта, можно пилить WeakReference.
В двух словах: убиваете обьект, ссылка на него null, но вот ~MyClass(){} еще не отработал, по этому обьект "жив". Доступ к этому зомби можно получить через .Target.
Развлекайтесь. хз правда зачем эта инфа нужна в голове пилителя сайтов, как я, но вот.
Реальный план развития:
- записаться в спортзал
- следить за модой
- узнать в каких злачных местах обитают любители дам с сюрпризом.
вкатиться в плюсы и устроиться в валв
вцф и веб.апи решают разные задачи. из общего у них - клиент-серверная архитектура
Помохите, МВВМаны.
Сделал как написано в этих ваших интернетах, ошибки компиляции нету но событие открытие комбобокса так и не обрабатывается. В чем может быть ошибка?
тогда ставь зеленую скобку
Например у меня в списке 3 элемента, они вывелись в Listbox, добавляю 4 элемент, он добавляется в listbox. Да еще забыл, чтобы привязка была обратная, например элемент №4 это 0 элемент в Listbox(вверху чтобы был).
Должно получиться что-то вроде как окно чата. Можно даже не через Listbox, а через что-то другое.
Как через Mvvm сделать такое окно сообщений, вот у меня есть List<string> или Dictionary<DateTime, string>, как его выводить в это окно, чтобы более позднее сообщение было вверху, при добавлении элемента в список или словарь, он добавлялся по индексу 0 в Listbox.
Можно даже не через список или словарь, а просто через переменную string. Чтобы при изменении этой переменной на другую, она вставлялась в Listbox в 0 индекс(сверху).
>Посоны, как биндить List<string> к Listbox через MVVM. Чтобы данные в листбоксе обновлялись при изменении List.
Реализуй во вью модели INootifyPropertyChanged
А для вывода новых сообщений сверху на ум приходит только метод Reverse() в LINQ
я не он, но разве биндинг работает с полями? ну и еще, бы брейкпоинты ставил? релей комманд и сеттер КарентПорт срабатывают? если да, то срабатывает ли что-нибудь в RaisePropChanged?
шошо?
брейкпоинт в сеттер проперти и в тело анонимной функции. я не знаю, является ли RaiseProp доступным членом, но, если можно, то и туда
А, понял мысль. Надо попробовать.
лол. прикольно смотреть этот видос сейчас когда .нет умеет вот в это всё что в видео.
А как прикольно будет смотреться когда CLR заменит мерзкую JVM на интерпрайзах, а на ведре полностью заменится Go.
Все гавно. И все гавно. Один тупорылый макакинг на гавнофрейморках, разъебет третья мировая всех пидорасов и их гавнище.
Познал бытие.
Тебе в картавый ратешник.
корочЕ, пошел на курсы ПМов... чисто чтобы поднять свой уровень работы. прихожу значит, сожусь. контингент: HR 2шт, 1 CEO, 5 менеджеров не ИТ, 2 ПМа, 3 тестера, 2 пограмиста включая меня и еще сброд хз, других неИТ профессионалов работы в офисах. Каждый всает, говорит что его зовут Вася/Маша и какого хуя они здесь забыли.
Встает одна, пилит какой-то тупой анегдод для ПМов, типа ПМы такие распиздатые и заявляет: я поняла, на чьей стороне сила, кто тут главный, по этому я здесь.
ЕБАТЬ У МЕНЯ ПРИГОРЕЛОС СУКА ПИЗДЕЦ.
Добавляются элементы в Listbox и т.д. Но добавляются снизу, как сделать, чтобы наоборот, добавлялись сверху?
http://pastebin.com/Y4bTpvLt
Точно, туплю.
Я учусь и в С# я нуб. Техобразование у меня есть, плюс опыт инженера-конструктора.
В поисках опенсорс-проекта, в котором можно поковыряться и поучиться, наткнулся на стаковерфлоу на ссылки на проекты. Которые рекомендуют нубам.
Вот дерево одного из них.
У меня подгорает, просто пиздец.
Минимальная организация дерева - отсутсвует, все ебашится на одном уровне. Про фолдеры этот долбоеб не слышал.
Но! Самый сука пиздец! frm - это формочки, этот мудак заебашил всю логику в формочки! В проекте, где постоянное чтение/запись в DBSQL, на мой нубский взгляд просто обязан быть связующий модуль или хуй знает как он называется между выводом информации и ее обработкой.
Разве не должно быть разделения между чтением, записью, обработкой и выводом инфы? Разве это не должно быть разнесено по независимым модулям?
Это пиздец, анон, что за говно у этого дебила в голове? А самое главное - какого хуя блядь это говно советуют на стаке?
Я почти десять лет имею дело с дебилами, которые в SolidWorks не могут нормально продумать разделение сборок и агрегатов, у которых трех-тонный насос и один хуеболтик - это детали одного уровня. Которые разносят сборки без всякой логики, которые собирать - лютый, леденящий душу кошмар.
Неужели они добрались до программирования?
>хабрахабр
плюсую.
>>921183
последний тренд - это IoCи повсеместные. так что можешь глянуть сюда: https://github.com/autofac/Examples
это контейнер autofac... хотя я и привык использовать StructureMap, но похуй - они все однохуйственны в примерах.
ну а вообще, вот те помойка из открытого: https://github.com/thangchung/awesome-dotnet-core
количество всякого там зашкаливает как по мне
В MVVM Light столкнулся с IoC контейнером, который содержит в себе все представления и чот запутался. Где можно почитать толкового на русском языке по этой теме?
http://blog.byndyu.ru/2009/12/blog-post.html?m=1
Вообще рекомендую статьи этого парня. Он классный
после того, как станет ненужным ридер/райтер, основной стрим тоже сдохнет
Есть перегрузка конструктора где ты можешь указать, закрывать стрим или нет, когда гц собирает ридер/райтер
На данный момент всё, до чего я могу додуматься - по гайдам в HttpWebRequest перед .GetResponse() свойству Credentials задать new Credentials() с логином и паролем. НО! Что дальше то? Вот беру я респонс, получаю код страницы, а дальше как мне понять, прошел ли я проверку или нет?
И еще вопрос: как в HttpWebRequest работает авторизация на основе свойства Credentials? Насколько я знаю web не в контексте сисярпа, а в общем, типа основные веб протоколы, как работает дата и бизнес сервера и т.д., авторизация по сути - отправка post-запросом данных для авторизации на какой нибудь auth.php на домене, который потом в заголовке тебе отправит куки и редиректит тебя на страницу профиля, например, или к чему ты там пароль/логин вводил. И тогда у меня возникает вопрос: как HttpWebRequest знает точный путь к этому auth.php, как знает какие именно свойства в POST нужно определять? Или HttpWebRequest запрашивает у сайта типа "чувак, скажи мне кому тут нужно отлизать, чтобы авторизоваться?", а сервер ему отвечает типа "auth.php вот ему на ушко шепни пароль/логин", так?
А если в бэк энде сайта сидел дурак и на auth failed лепит какой нибудь 403/404?
Хотя, и на 200/400 уже можно понять, авторизовался или нет. Спасибо
>>921961
А вот чёт нихуя, при неправильной паре логин/пароль всё равно 200 приходит.
Еще вопрос, щас сижу читаю форумы по HttpWebRequest/Response и вижу, что чуваки везде прописывают данные в заголовок своего вопроса: описывают там юзер агент, предпочитаемый язык и прочее прочее. Это вообще обязательно описывать для корректной работы с этими классами?
С помощью средств разработчика в браузере смотришь какие запросы куда улетают во время аутентификации на сайте. Смотришь какие ответы приходят на валидный и не валидный запросы, повторяешь все это у себя в приложении.
>>922054
Если сайт норм работает без установки доп хидеров, тогда хуй на них
у модели есть две вьюмодели одна тупо унаследована от ViewModelBase<Model>
а вот для списка от ViewModelBase<IEnumerable<Model>> и я уже охуел искать как в этот ебучий список добавить айтем. в книге примерах обычно модели имели какое-нибудь свойство типа ObservableCollection<Model> _model =new ObservableCollection<Model>();
для всякой связной хуераги (но у меня то модель одна!) и с этим вроде все понятно, а вот для модели верхнего уровня в иерархии автор унаследовался вот так уебански. и чо теперь переделывать всю VM, со всеми байндингами? и от кого тогда наследоваться?
на пикрилейтет оно все неиллюзорно сосет хуев, но видимо я мало затянулся или меня этот MVVM ваще не прет.
Для каких камер пишешь софт? Хочу написать что-то подобное. Судя по таймзоне возможно даже сидим в одной компании диванон
Скинь книжку кстати, она на рунглише?
для axis, но там это особо не важно, т.к. из всего функционала используется фтп и пара REST запросов. я все книги с рутрекера обычно беру, на русском не уверен что у меня вообще что-то есть, да оно и не надо.
таймзона? хз, я в ДС2, просто живу ночью сейчас
пиздец, надо было просто поспать пару часов. помогла вот такая хуйня в RelayCommand:
((ObservableCollection<Camera>)Model).Add(camera);
OnPropertyChanged("Cameras");
хотя и заработало, походу это какой-то дикий костыль
Можешь выложить посмотреть свой код? думаю будет полезно посмотреть на чужие костыли. Сам тоже пишу пинговалку для удалённых устройств (тестовое).
приватные поля
Допустим, есть локальная сеть, и я хочу передать массив объектов с одного узла на другой. Я знаю IP узла назначения, а как мне выбирать порт отправки? Я понимаю, он должен быть таким же, какой и открывается на втором сокете/TcpListener'e, но вот нужно ли что то учитывать при выборе номера порта? Единственное ограничение, которое я знаю - количество портов ограничено 216-1. Можно ли использовать зарезервированные порты типа 80,443, 23,24 и тд?
И ещё, у TcpListener и Socket в методе начала приёма сообщений также указывается IPAddress и port. Я так понимаю, port - это просто порт, который будет открыт для приема сообщений. А IPAddress - типа ip address одной из существующих NIC на компуктере, который запускает саму программу? Просто я видел на msdn, что там вместо конкретного IP пишут IPAddress.Any. Или там указывается диапазон адресов/сетей, от которых можно принимать сообщения?
сорт оф венгерской нотации, только упрощенной
В смысле? В той же MS нет жестких требований на _.
А писать это код надо чистый без устаревших нотаций.
да там говнокод, стыдно такое выкладывать :)
полл хостов сделан асинк делегатом на DispatcherTimer, который linq-ом выбирает активные модели, в модели же метод pollState тоже асинхронный делает два await Task.Run с лямбдой в параметре, в которой уже реальный опрос доступности хоста (PingReply) и фтп ((FtpWebRequest)WebRequest) происходит. потом в свойство записывается результат и он уже в OnPropertyChanged в UI-тред уползает. говорю ж - говно.
>>922936
так вот в том и прикол что после просто добавления, почему-то болт.
>>922972
странный ты. на каком порту на сервере слушаешь, на тот клиентом и коннектишься, соответственно вторую пару для каждой точки стек за тебя сам выберет.
учитывать нужно только то что на порту уже может кто-то сидеть, чтоб прав хватило, ну и при здоровом рассудке врядли хорошая идея на общепринятых портах какоето левое говно стартовать (хотя варианты возможны, но это либо тебе чтото хитро заныкать надо, либо чтото сильно специфичное, но одном порту несколько разных сервисов держать это ты заебешься пыль глотать - правильно протоколы разобрать, так что не думай сейчас об этом).
и вообще порты не хардкодят, а в конфиге указывают.
IPAddress программу точно _НЕ_ запускает, это программа может начать что-то слушать. или куда-то подключиться.
Any это как бы 0.0.0.0 - думай об адресах интерфейсов, а не сетевых карт, т.к. кроме них есть лупбек, могут быть вланы, бриджи, туннели и еще гора всякой виртуальной хуйни, за которой ничего физического не стоит (ну почти)
вообще кури модель OSI для общего развития и конкретно стек TCP/IP, а то чото плаваешь
Поясните мне по-братски.
Есть 2 стула ситуации:
1. Класс с полем типа структура
2. Структура с полем типом класс
Как это говно хранится в памяти?
Если вторая херня более менее ясна - В структуре хранится линка на объект в куче а сама структура в стеке.
То с первой мне не совсем ясно. Куда засовывается структура?
хранится ли в классе ссылка на структуру в стеке? Либо там боксинг и хранится ссылка?
Короче, помоги анон.
лол.
Cameras.ToList() - создаёт новый список. и его ты потом обновляешь.
Ты хоть сам понял что сделал?
странная хуйня. зачем ваще нужен ViewModelBase<IEnumerable<Model>>
Почему нельзя просто сделать свойство с любой коллекцией в обычной ViewModelBase.
Короче, если не хочешь переделывать - меняй интерфейс хотя бы на ICollection
в куче хранится твоя структура, не упаковываясь. просто как составляющая большой какашки в памяти
Выкладывай давай, задачи стоят в целом смежные, мб даже по пулреквесты покидаю.
>Instance variables for a value type are stored in the same context as the variable that declares the value type. The memory slot for the instance effectively contains the slots for each field within the instance. That means that a struct variable declared within a method will always be on the stack, whereas a struct variable which is an instance field of a class will be on the heap.
Быстро отличать приватные поля от локальных переменных/параметров (из альтернатив - всегда называть по разному или дрочиться с this:
Сравни:
public ShitGenerator(int a)
{
_a = a;
}
и
public ShitGenerator(int a)
{
this.a = a;
}
или
public ShitGenerator(int a)
{
aField = a;
}
В VB.Net без этого не обойтись при именовании свойств и полей - ибо там их разным регистром не разделишь
Круто. Спасибо.
ест тебе постоянно надо лепить кастомизации на твой ui, то, наверн, неплохо
если тебе нужно хоть чутка закостомайзить контрол - будешь лупиться в сраку как последняя шлюха.
бусь тебя, анон
А зря так говоришь. Первое время будешь рвать жопу поперек шва, зато потом вообще влет любой функционал контролу будешь придавать ну если и не влёт - то хотя бы будешь знать, что, как и зачем тебе нужно сделать.
А у devexpress бесплатный функционал таксебе и хуй проссышь как это у них всё работает.
>Первое время будешь рвать жопу поперек шва, зато потом вообще влет любой функционал контролу будешь придавать
Cначала будет больно садится на хуй, а потом привыкнешь?
Бля, ну это ж хрень. Надо было запилить в их контрол что-то чего не было. Зашёл на форум - там все желчью изводятся, а разрабы - сорян не сделаем, зачем вам это нужно, нам виднее и ваще пошли нахуй.
Может сейчас оно и по-другому, но года 3 назад точно так было.
По функционалу - местами годнота, у них, например, самый лучший Pivot Control для WPF
По устройству/организации/поведению - Содом и Гоморра, Адъ и Барухи:
На любой чих нужно 20 библиотек в референсы засадить.
Кастомизация внешнего вида - игра в рулетку и возня с дебаггером/Snoop/dotPeek/DevExpress Theme Studio, в попытках определить сколько ж сотен разных ресурсов надо добавить в ResourceDictionary чтобы изменить цветовую схему ебаного компонента.
Ну и ведет себя как код-гной, код-пидор, надо постоянно отключать его попытки "улучшить" поведение приложения. Например любит при первом использовании переписывать все дефолтные стили контролов в приложении - в итоге местами верстка едет, а контролы других вендоров вообще с ума сходят.
В студию опять же срут своими шаблонами/тулзами/менюхами..
А функционал норм...
фраза не про это.
я про
>Первое время будешь рвать жопу поперек шва, зато потом вообще влет любой функционал контролу будешь придавать
А насчет десктопа - бугурта ваще не испытывал. Вполне норм тема
Я думал, в фразе спрятан подъеб, мол "WPF говно" впрочем, спустя пол года, я убедился, что это на 80% правда..
ну так-то devexpress есть не только для wpf.
Ну а сам wpf вроде не так уж и плох.
Хотя я сам переехал с него на xamarin.
Ти чиво, у тебя же есть ВЕСЬ .net
http://stackoverflow.com/questions/25120703/invoke-webrequest-equivalent-in-powershell-v2
Тебе говорили, что ты охуенен?
У меня в репозитории полтора проекта на шарпе, хоть и три года пишу на нем. Захочу работу сменить, попросят код показать, а у меня сплошная крестопоебень.
говнопет проджекты
говорю, что мой код в основном лежит в приватных репозиториях и я вам его просто так не покажу
вообще, таких вопроса было всего два за все время собеседований. люди сами прекрасно понимают, что то, что ты можешь показать в открытую, врядли скажет что-то о тебе хорошее и не будет критерием оценки кандидата. ну разве что попробуют наводящие вопросы позадавать, типа, почему тут так, а здесь не так
А какой функционал у говнопет прожектов? А то может у вас коленные поделия лучше чем я еборю.
может быть
бОльшая часть того, что я пушил - это третьесортный кал, не нужный даже мне самому. какие-то конченые имплементации алгоритмов, конечных автоматов и т.д. 2ch-парсер, куда же без него, блять. ну и пара проектов по туториалам других языков программирования.
из более-менее сурьознога присутствует только один проект, издали по функционалу напоминающий инстаграмм, наверное. не надо думать, что все так круто, я просто обкатываю донтнет коре и графы
точкасетьядро можно использовать как веб-сервис? Накидай годные статьи, а то информации по нему маловато. Хочу написать агрегирующий сервис, что-то типа народмон, только с простейшей веб-мордой тк фронтендом я вообще не знаком.
Пишет джавист с 2мя годами опыта работы.
У меня в компании проектов на джаве практически не осталось, задумываюсь над перекатом на шарпы. Что можете посоветовать почитать про C# анону с опытом программирования серверов.
ты что в джаве дно? смени работу.
Прост нагугли сравнение фич java/c# и читай, что нового, типа делегатов и событий, linq какой-нибудь. Потом также просто читаешь документашку по EF, ASP и другой йобе, которую ты/вы собрались использовать/используете
ты про WebApi? если да, то там все практически так же, как и в ASP 5 + OWIN. с учетом того, что решения MVC и Api - это теперь одно целое.
из документации ничего не знаю кроме офсайта и гуглирования по поводу отдельных случаев.
я действую по принципу "без задней мысли берешь и пишешь". по крайней мере в отношении этого вот всего. ибо от релиза к релизу меняется все, что-то описано для первых RC, что-то для alpha-v-0.000091.68954-huipizda
предположу, что модификаторы доступа private/protected/public на уровне компиляции распознаются только в описании структур и классов, и при встрече в другом контексте возникнет ошибка компилияции. ну а тебе просто IDE сообщает, что в этом контексте использование запрещено.
- ну парад ней, умножить на рейт... $250
- дорого! мне за 40 верстали!
- пиздуй
прикиньте да?
казалось бы, причем тут дотнет. а действительно, причем?
Вы видите копию треда, сохраненную 3 февраля 2017 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.