• MVC4. (C#) Как лучше экспортировать данные из Excel в базу данных?

    newross
    @newross
    Product owner
    Берите EPPlus или SpreadsheetLight и вперед. Только зачем обратно экспортировать неизменные данные, какой в этом сакральный смысл?
    Ответ написан
    2 комментария
  • Где правильнее проверять пользовательские данные? В контроллере или модели?

    IvanCher
    @IvanCher
    Мысли шире
    За работу с данными должна отвечать модель. Именно модель должна знать какие данные допустимы, а какие нет, потому что на ней лежит функция обработки/записи этих самых данных.
    У контролера цель - обрабатывать пользовательские запросы и решать, как на них ответить.
    Иными словами, вы принимаете данные с формы контролером и говорите модели сказать валидные ли данные пришли. Модель отвечает контролеру, контролер принимает решение, как на это ответить пользователю (ошибкой, каким-то конкретным представлением и т.п.).
    UPDATE
    MVC советую всем прочесть, прежде, чем давать странные советы. Особенно внимательно прочесть "Наиболее частые ошибки", как раз говориться, что делать из контролера Толстый Тупой Уродливый Контролер - не правильно по определению шаблона. Можно спорить сколько угодно, но об этом прямо многие авторитеты. Другое мнение сформировано отсутствием глубокого понимания MVC и малым опытом на крупных проектах.
    Ответ написан
    17 комментариев
  • Странный баг при переносе программы и смене версии Qt, как отлавливать?

    PavelK
    @PavelK Автор вопроса
    Ппц, оно заработало =(
    Нажал очистить и пересобрать...
    Ааааа, когда версию менял moc файлы от прежней остались.
    Сейчас все пересобрались.
    Ну ок...
    Ответ написан
    Комментировать
  • На чем лучше программировать визуальные приложения?

    becks
    @becks
    MFC стара как этот мир, сопровождать старые проекты еще можно, но новые писать в наше время просто маразм. Возьмите Qt, для студии есть плагин, не хотите плагин, поставьте Qt Creator. У нее отличная документация (вероятно, одна из лучших, какие я встречал). Есть хорошие книги для базового уровня и есть хорошие уроки на ютубе: www.youtube.com/playlist?list=PL2D1942A4688E9D63
    Ответ написан
    2 комментария
  • В каких сферах сейчас очень востребован c++?

    GavriKos
    @GavriKos
    Высокопроизводительные системы, игры, микроконтроллеры. +системы где очень четко нужно контролировать расход ресурсов.
    Ответ написан
    6 комментариев
  • Как сделать так, чтобы main() возвратила double?

    @raiboon
    Не путайте вывод команды и код выхода. Испльзуйте печать в stdout, к примеру, а из c# читайте.
    "тандартная возможность передачи объекта через буфер между языками" - часто используют для этого очереди. zeromq, к примеру.
    Ответ написан
    1 комментарий
  • Какие самые печальные/курьезные по последствиям баги в вашей практике (или о которых знаете)?

    @AlexLIn
    Selective Service System в америке, перепутала года с 1893 по 1897 с 1993 по 1997.
    И призвала на службу в армии ~14.000 умерших.
    Если они за пару дней не написали ответ, то им грозит 250.000 долларов штрафа и 5 лет тюрмы.
    Ответ написан
    Комментировать
  • Кто постоянно открывает Общий доступ к папке Users?

    @yellowmew
    Cloud infrastructure, monitoring engineer. SRE
    Есть два варианта подобного поведения по умолчанию от MS:
    1. Компьютер присоединен к "домашней группе"
    В таком случае система автоматически дает сетевой доступ к C:\users группе "Все", в том числе и для совместимости со старыми ОС. Ограничения доступа в папке C:\users в таком случае реализуются правами NTFS (таким образом, это достаточно безопасно)
    2. Пользователь пытается поделиться файлом или папкой из своего профиля (например c:\users\%USERNAME%\Desktop\%SharedFOLDERNAME%)
    В таком случае система также открывает доступ к папке Users (а не создает целевую папку)
    https://technet.microsoft.com/en-us/library/ff660257(v=ws.10).aspx

    Возможно, система будет пересоздавать папку users время от времени. даже если вы отключили сетевой доступ к данному ресурсу.
    Как решение - отключать галку "Использовать мастер общего доступа" в параметрах папок(панель управления)
    Ответ написан
    Комментировать
  • C++ Это нормально обьявлять пустой чисто виртуальный метод только ради обьявления абстрактоного класса?

    @mayorovp
    Нет, это ненормально. Тех же целей можно добиться отсутствием публичных конструкторов.
    Ответ написан
    6 комментариев
  • Какую лучше взять книгу по C++ для начинающего?

    fuzz0
    @fuzz0
    1. Стенли Липпман - Язык программирования C++. Базовый курс
    2. Стивен Прата - Язык программирования C++. Лекции и упражнения.
    можно и страуструпа нового
    Ответ написан
    Комментировать
  • C++. Почему при добавлении к адресу переменной +1, адрес увеличивается на8?

    @vilgeforce
    Раздолбай и программист
    Потому что указатель начинает указывать на следующий элемент той размерности, для которой указатель создавался. Сделаете unsigned char* - будет на размер char увеличиваться (1 скорее всего), unsigned long long* - на 8. void* скорее всего вообще не даст такой фокус провернуть (и правильно сделает).
    Ответ написан
    8 комментариев
  • Как повысить уровень программирования в общем и в C++ в частности?

    afiskon
    @afiskon
    Присоединяйтесь к open source проекту или начните свой большой проект. Разбивайте его на части, двигайтесь постепенно. Так, чтобы несколько часов работы - и уже какая-то фича, пусть и небольшая. Не обязательно делать прям ну очень большой проект, можно начать с чего-то простенького - todo-шка, простенький irc клиент, и так далее, и потом постепенно развивать. Если удастся найти что-то, что вам лично сейчас нужно, будет больше мотивации. Еще как вариант, посмотрите в backlog у вас на работе. Всегда есть какие-то большие, но на данный момент не приоритетные задачи. Попробуйте взять одну из таких задач и написать PoC в свободное время. Если получится хорошо, покажите начальству, так и С++ на свою работу протащите! Ну а вообще самый-самый крутой способ прокачать в чем-то скил - устроится все-таки на работу где это используется.
    Ответ написан
    Комментировать
  • Что такое нарушения принципов ООП?

    @Mercury13
    Программист на «си с крестами» и не только
    Нарушение инкапсуляции. Наружу (т.е. public) торчат какие-то данные, которые можно изменить, и объект уходит в противоречивое состояние.

    Инверсия абстракции. Простые вещи, которые, вероятно, понадобятся потомкам, недоступны даже через protected.

    Нарушение принципа Лисков (ломаная абстракция). Для отца вы сделали некое предположение, которое неверно для сыновей. Классический пример — прямоугольник и квадрат — предполагается, что отец может произвольно масштабироваться, что неверно для сына.

    Класс вместо интерфейса. Если можно, родителя делайте классом без данных с двумя видами функций: public virtual = 0, и protected/public не-virtual (т.н. интерфейс с утилитами). Наследоваться от нескольких классов с данными очень некузяво (а во многих языках вообще невозможно).

    Всемогущий родитель. Слишком много функциональности придумали родительскому классу.

    В общем, покажите интерфейсы (protected/public, без точных реализаций) ваших классов, и погоняем, что там неверного.
    Ответ написан
    Комментировать
  • Какой путь выбрать?

    God-emperor
    @God-emperor
    create a golden path
    Фрилансить на C# - себя не любить. Имхо.
    Ответ написан
    4 комментария
  • Какие ЯП не требуют кучу прикладнухи для устройства на работу?

    Я постараюсь подключить философию, примеры и "как если бы я говорил в баре с вами".

    ЯП - это инструмент. Инструмент всегда взаимодействует с объектом и со средой. Соответственно, вам точно нужно что-то знать про объект и уметь пользоваться инструментом внутри среды, а это потащит дополнительные знания, назовем их "естественными" зависимостями. Насколько глубоко их нужно знать? Тут ответа не бывает: настолько, насколько нужно и хочется. Тут важен баланс и акцент. Если нет строгих параметров на уровне разума, нужно верить интуиции, потому что больше нечему. Для JS-программиста JSON/jQuery/AJAX - это естественные зависимости, их в любом случае не получится обойти. Даю зуб, что вам хватит вечера и немного гугла, чтобы стать чуть ли не LIKE A PRO в этом. Это все форматы хранения данных, либы, парадигмы. Это примерно как прочитать состав у шоколадки по сложности и входному порогу. Скорее всего, вас пугают сложные слова. Примерно как сказать "НАПРАВЛЕННЫЙ АЦИКЛИЧЕСКИЙ ГРАФ", и вы сразу знаете теорию графов, хотя с практической точки зрения суть настолько элементарна, что аж страшно, а вы будете долго прокрастинировать и искать что попроще.

    Это что касается близких и неизбежных естественных зависимостей. Но есть и более далекие, но тем не менее все равно естественные, их знание позволяет развиваться, иметь более полную картину в голове. Вот есть гитарист, он может быть просто технарем. Есть гитарист-музыкант, который чувствует дорийский лад в блюзе. А есть гитарист-музыкант-звукорежиссер, который наконец-то понял, как надо жирно сводить гитары и теперь в симбиозе со звукарем. Кто из них самый крутой, очевидно.

    Вы можете просто верстать (html/css) и игнорировать программирование в целом. Но естественная среда противится: вы уже (!) пишете на декларативном языке, неплохо было бы узнать об этом подробнее (о языках или даже о типизации), тем более, что крайне близко к вам находится интереснейший язык js, а там моментально вылезут проблемы связывания html и js, разные подходы к этому, целые парадигмы и фреймворки; и вот вам выпадает интересная задача по анимированию svg, вы курите мануал по нужной либе, читаете что-то про reflow/repaint, внезапно узнаете что-нибудь про селекторы. И через какое-то время, будучи все тем же верстальщиком, вы видите архитектурный косяк дизайна, который очень неудобно укладывается в используемые технологии, предлагаете его пофиксить и спасаете команду от факапа через месяц, когда какой-нибудь транзишн наложится на какой-нибудь position: fixed и еще и в Safari упадет анимация и только там, а тут и новая тудушка: "Переделать, нафиг, всю шапку, чтобы ок было". Что-то изменилось в мышлении и картина стала полнее. ВНЕЗАПНО вы уже и инженер, можно сказать, ЗП растет, все дела, рутины меньше стало.

    Так вот, о инженерах. Можно выучить, например, Python за пару дней, там же отличный мануал. Но настоящий программист - это инженер, потому что вся суть в архитектуре, во взаимодействии объектов/компонентов и в том, как все это соотносится с задачей. Какой молоток взять, это уже без разницы, как состав на банке прочитать. То есть суть вашей работы заключается как раз в объекте и среде, а не в инструменте. Образно говоря, когда вы сидите в кафе, суть не в чашке чая, а в атмосфере и как вы себя в ней чувствуете, но при этом чашка чая нужна, чтобы заставить вас что-то делать и вписать тем в самым во взаимодействие со средой, поэтому придется научиться красиво пить чай.

    Подведу тут черту: естественные зависимости - это норма, а суть в инжиниринге. Можно двигаться по зависимостям дальше. У вас есть интервал, где есть минимальный порог, ниже которого нельзя, и максимальный, где вы "мастер на все руки", что тоже плохо. Между минимальным и максимальным порогом можно двигаться. Взять те же сети: разворачиваете приложение, видите линуху, настраиваете сеть. Можно немного заморочиться и прочитать про основы маршрутизации, буквально 2 вечера, можно еще про сетевой стек в линукс, еще 2 вечера, и уже будет во много раз проще. Кроме того, возрастет культура в целом и если вы программист на бэке, то вам будет проще взаимодействовать с админами. Про OSPF, очевидно, читать не надо, важен баланс. Баланс - это понимание того, на что у вас акцент (вы программист? какой? фронт/бэк? насколько важны сети/ос? проектируете бд? верстаете? интересен ли прикладной кодинг под какую-то ос и так далее...) и насколько интересны естественные далекие зависимости выбранной области.

    Так вот, теперь у нас есть естественные зависимости, инжиниринг и баланс между порогами. А не php/jquery/html/css.

    Важно также отметить, что все очень быстро развивается сейчас, а это еще один аргумент, что привязываться к инструменту не стоит. Кто-то может сказать, мол, взять тот же js, программирование на нем - это целая парадигма, иной подход, свои фичи. Это так, но дело тут не в js, а в целом в динамичных/интерпретируемых языках.

    Кстати, что касается SEO: с технической точки зрения это пара мануалов от гугла и не более того. Там сеошники наговорить могут много, с ними надо быть осторожнее :)

    А теперь, собственно, выводы:

    1) Вакансий крутых много, надо пробовать. Нужно только отличать близкие и необходимые естественные зависимости от мастера на все руки. Я считаю, что мастером на все руки нужно поработать хоть однажды, чтобы просто понять, почему это плохо. Но зависимости будут всегда, и это норма. Вы перечислили слишком радикально, конечно.
    2) Себя пилить под вакансию не нужно. Нужно просто идти туда, где интересно, всегда стараться быть инженером и не убить в себе искусство (то есть не бояться делать так, как кажется правильно, чтобы либо убедиться в правоте, либо ошибиться и стать круче).
    3) Не нужно думать в стиле "а что если завтра рубионреилс развалится, комьюнити разойдется, вакансий не будет, что я буду делать". Вы же инженер. У вас опыт в проектировании IT-систем, перейти на что-то смежное, если будет понятно, что технология умирает, не составит труда.
    4) По естественным зависимостям нужно двигаться по мере интереса, вы станете от этого только лучше.

    Это, конечно, если вам действительно все это интересно. Все это области, очень близкие к искусству, и тут надо любить все это делать.
    Ответ написан
    8 комментариев
  • Какие ЯП не требуют кучу прикладнухи для устройства на работу?

    barmaley_exe
    @barmaley_exe
    Никакие.

    Один лишь ЯП в вакууме с точки зрения применения в конечном продукте абсолютно бесполезен. Ибо, как правило, программный продукт существует не обособленно, а, так или иначе, взаимодействует с другими программами (операционной системой, например). Более того, зачастую разумно не изобретать велосипед, а воспользоваться уже готовым решением, которое было проверено временем. Таким образом, приходится знакомиться с кучей уже существующих технологий.

    Вообще, в области server / desktop / mobile очень сложно уйти далеко без, как минимум, следующего:
    • Объектно-ориентированное программирование и проектирование — ведь код не должен быть говном
    • Параллельное программирование — ведь делать нужно много и быстро, а у нас уже 10 лет как многоядерные машины есть
    • Сети — ведь нельзя жить без интернета
    • Базы данных — ведь данные надо где-то хранить, и хранить надёжно


    hardware не комментирую, но там ещё хардкорнее.

    Собственно, для программиста не столько важно знать какой-либо конкретный ЯП, а важно владеть технологиями разработки. ЯП, конечно, входит в это множество, но им оно совсем не ограничивается.
    Ответ написан
    3 комментария
  • Чем WCF лучше Remoting?

    В WCF можно создать прокси класс (студия умеет создавать автоматически) и работать с ним как с обычным локальным классом.

    По сути Remoting это реализация протокола SOAP поверх HTTP, в WCF пошли дальше, так есть понятия биндинга и привязок, что позволяет выполнять вызовы в том числе и по TCP, что хорошо для производительности.

    имхо WCF не столько новая технология сколько попытка объединить несколько ранее реализованных технологий (включая Remoting)
    Ответ написан
    Комментировать
  • Как лучше реализовать такой демон?

    @protven
    Вы, судя по описанию, придумали Connection Pool. Не надо его писать самому, посмотрите в сторону готовых реализаций. BoneCP, Tomcat connection pool и тд.
    Ответ написан
    Комментировать
  • Self hosted web-archive?

    @vikarti
    если все же именно аналог Internet Wayback Machine и надо старые копии хранить и все такое: использовать WAIL (matkelly.com/wail ) + планировщик.

    если не надо старые и на сервере Windows - использовать (платный) Offline Explorer (если страниц много то лучще Enterprise-версию). Windows-GUI + встроенный (слабый) вебсервер
    Ответ написан
    Комментировать
  • Какое тестовое задание "на дом" для junior C++ вы посоветуете?

    donkaban
    @donkaban
    Умею рисовать тени
    Построить гистограмму "Войны и Мира" в один поток.
    Постороить ее же в несколько.
    Замерить время, обосновать выбор.
    Ответ написан
    3 комментария