Программная инженерия

Q & A для профессионалов, преподавателей и студентов, работающих в жизненном цикле разработки систем

4
Что делать, если ваша компания не шифрует пароли
Фон Я был заключен контракт, чтобы помочь компании поддерживать свой сервер. Я работаю над небольшими PHP-проектами, но также смотрю на проблемы с производительностью и в последнее время сканирую логи на хакеров. Эти ребята уже некоторое время работают на своем сервере, и у меня на последних ногах есть то, что я …
13 php  apache  security  mysql 

5
Как смоделировать REST API?
Я работаю над новым проектом, который будет запрашивать данные из стороннего REST API. Это канал спортивных данных в реальном времени, поэтому он работает только тогда, когда происходит игра. Хотя сторонние поставщики предоставляют хорошую документацию (XSD и т. Д.), У них нет возможности имитировать происходящее в игре, и поэтому для тестирования …
13 api  rest 

2
Почему отдельный класс CommandHandler с Handle () вместо обработки метода в самой Command
У меня есть часть шаблона CQRS, реализованного с использованием S # arp Architecture, например: public class MyCommand { public CustomerId { get; set; } // some other fields } public class MyCommandHandler<MyCommand> : ICommandHandler<MyCommand, CommandResult> { Handle(MyCommand command) { // some code for saving Customer entity return CommandResult.Success; } } …

2
Стираются ли типы в Haskell?
У Haskell есть понятие «универсальных функций», которое имеет некоторое очевидное сходство с обычным языком - не имея опыта работы с Haskell или с обычным языком, я могу быть здесь весьма приблизительным. Это означает, что можно определить универсальное to_stringсредство для определения строкового представления для всех типов. Конечно, средство должно быть определено …

6
Контрактное программирование против модульного теста
Я несколько оборонительный программист и большой поклонник контрактов Microsoft. Теперь я не всегда могу использовать C #, и в большинстве языков единственный инструмент, который у меня есть, это утверждения. Поэтому я обычно получаю такой код: class { function() { checkInvariants(); assert(/* requirement */); try { /* implementation */ } catch(...) …

4
Какой способ прервать цикл чтения является предпочтительным?
Когда вам нужно перебрать читателя, где количество элементов для чтения неизвестно, и единственный способ сделать это - продолжить чтение до конца. Это часто место, где вам нужен бесконечный цикл. Существует Всегда trueчто указывает на то , должно быть , breakили returnзаявление где - то внутри блока. int offset = 0; …

1
Почему добавление к списку в Scala имеет O (n) сложность по времени?
Я только что прочитал, что время выполнения операции добавления для List(: +) растет линейно с размером List. Присоединение к a Listкажется довольно обычной операцией. Почему идиоматический способ сделать это состоит в том, чтобы предварительно добавить компоненты, а затем перевернуть список? Это также не может быть ошибкой проекта, поскольку реализация может …

2
Реализовать класс типов Haskell с интерфейсом C #
Я пытаюсь сравнить классы типов Haskell и интерфейсы C #. Предположим, что есть Functor. Haskell: class Functor f where fmap :: (a -> b) -> f a -> f b Как реализовать этот тип класса в качестве интерфейса в C #? Что я пробовал: interface Functor<A, B> { F<B> fmap(Func<A, …
13 c#  haskell 

2
Поскольку сборщик мусора недетерминирован, почему он не используется для безопасной генерации случайных чисел?
Я понимаю, что / dev / random - хороший источник энтропии, и это то, что обычно используется. Как раз когда я читаю GC, по крайней мере в Java, кажется приемлемым, что демон сборки мусора выполняется недетерминированно , Если это правда, почему бы нам не использовать время сбора мусора в качестве …

6
Как практиковать объектно-ориентированное программирование? [закрыто]
Закрыто . Этот вопрос основан на мнении . В настоящее время он не принимает ответы. Закрыто 6 лет назад . Locked . Этот вопрос и его ответы заблокированы, потому что вопрос не по теме, но имеет историческое значение. В настоящее время он не принимает новые ответы или взаимодействия. Я всегда …

6
Какие функциональные возможности стоят немного путаницы ООП для выгоды, которые они приносят?
Изучив функциональное программирование на Haskell и F #, парадигма ООП кажется задом наперед с классами, интерфейсами, объектами. Какие аспекты ПС я могу использовать на работе, чтобы мои коллеги могли понять? Стоит ли говорить с моим боссом о каких-либо стилях FP о переподготовке моей команды, чтобы мы могли их использовать? Возможные …

4
Является ли linq более эффективным, чем кажется на поверхности?
Если я напишу что-то вроде этого: var things = mythings .Where(x => x.IsSomeValue) .Where(y => y.IsSomeOtherValue) Это так же, как: var results1 = new List<Thing>(); foreach(var t in mythings) if(t.IsSomeValue) results1.Add(t); var results2 = new List<Thing>(); foreach(var t in results1) if(t.IsSomeOtherValue) results2.Add(t); Или под покровами есть какая-то магия, которая работает …
13 c#  linq 

3
Как менеджер, не являющийся ИТ-специалистом, должен обеспечить долгосрочное обслуживание и разработку необходимого устаревшего программного обеспечения?
Мы - небольшая, очень специализированная, предоставляющая преимущества административная фирма с чрезвычайно полезным и надежным набором программного обеспечения, некоторые из которых написаны на языке COBOL, но большинство написаны на бейсике. Два штатных консультанта умело поддерживали и совершенствовали эту систему в течение более 30 лет. Излишне говорить, что они скоро уйдут на …
13 legacy 

5
Может ли * любая * задача программы быть выражена без состояния?
Это теоретический вопрос, но после многих лет программирования в том, что, как я теперь понимаю, является «нормальной» императивной техникой, в основном с использованием C ++, я открыл для себя этот другой мир функционального программирования, на который я наткнулся случайно, случайно изучая JavaScript. Это заставило меня задуматься, не могли бы вы …

3
Мы в очереди и сериализации правильно?
Мы обрабатываем сообщения с помощью различных сервисов (одно сообщение будет касаться, вероятно, 9 сервисов, прежде чем оно будет выполнено, каждое из которых выполняет определенную функцию, связанную с IO). Прямо сейчас у нас есть комбинация наихудшего случая (сериализация контракта данных XML) и наилучшего (производительность в памяти MSMQ) для производительности. Характер сообщения …

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.