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

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

2
CI бегун на том же сервере GitLab?
Я настраиваю сервер GitLab в своей компании и теперь добавляю к нему GitLab CI. Перед тем как приступить к выполнению этой задачи, я хотел бы понять, есть ли какие-либо недостатки в работе моих бегунов на одном сервере, используемом GitLab и GitLab CI. Я читал, что есть проблемы с безопасностью, но …

1
Сопоставление с образцом в Clojure vs Scala
Каковы основные различия между сопоставлением с образцом в этих двух языках? Я не имею в виду синтаксис, но возможности, детали реализации, диапазон вариантов использования и необходимость. Приложения Scala (например, Lift and Play) гордо говорят о мастерстве соответствия шаблонов языков. Clojure, с другой стороны, имеет библиотеку core.match и встроенную деструктуризацию, которая …

9
Теоретически безглючные программы
Я прочитал много статей, в которых говорится, что код не может быть без ошибок, и они говорят об этих теоремах: Проблема остановки Теорема Гёделя о неполноте Теорема Райса На самом деле теорема Райс выглядит как следствие проблемы остановки, и проблема остановки находится в тесной связи с теоремой Гёделя о неполноте. …
12 bug  theory 

2
Стратегии для устранения ошибки, которая происходит только на определенном устройстве
Как разработчик Android, целевой рынок, для которого я создаю приложения, очень фрагментирован. Хотя я могу указать определенные требования - например, мое приложение поддерживает только версию Android xx или выше, иногда могут возникать ошибки, которые очевидны только для одной конкретной модели телефона. Существуют ли какие-либо стратегии для обработки ошибок, связанных с …

1
Эвристический подход для гибкой реализации DIFF
Я создал реализацию DIFF для сравнения редакций документов на работе. Он основан на O (ND) разностном алгоритме и его вариациях . Одна вещь, которая стала важной, состоит в том, чтобы взять список изменений и интерпретировать их в удобочитаемый текст. Хотя текущий алгоритм очень эффективен, он настолько сложен, что его трудно …

1
Какова цель красной зоны?
Красная зона - это область фиксированного размера в памяти за указателем стека, которая не была «выделена». Компиляторы генерируют сборку для доступа к этой области с помощью простых конечных функций. Но я не вижу реальных преимуществ для красной зоны. Доступ к памяти за указателем стека действительно опасен и может легко привести …
12 assembly  stack 

4
Функции-члены и не-функции для математических операторов
Я пишу библиотеку линейной алгебры (короче говоря, это школьное задание), которая включает в себя матрицы, векторы и т. Д. В процессе создания этой библиотеки я буду создавать функции, которые выполняют математические операции над объектами. Например, транспонировать матрицу, инвертировать матрицу, нормализовать вектор и т. Д. Мне было любопытно, какова «лучшая практика» …
12 c++  libraries  methods 

5
Кто должен делать обзоры кода?
В моей компании в основном архитектор делает обзоры кода. Он очень опытный и умный программист, поэтому он очень хорош в этом. Когда разработчики делают обзоры кода, они делают это не наполовину. Мы пытались дать разработчикам больше обзоров кода, но качество обзоров кода не было хорошим. Мы используем Scrum для в …

3
Python - утверждать против if & return
Я пишу сценарий, который что-то делает с текстовым файлом (хотя он не имеет отношения к моему вопросу). Поэтому, прежде чем что-то делать с файлом, я хочу проверить, существует ли файл. Я могу сделать это, не проблема, но проблема больше в эстетике. Вот мой код, реализующий одну и ту же вещь …

2
Лучший способ скрыть ключ API в исходном коде
Мне нужны некоторые идеи о том, как защитить частный ключ API в приложении, особенно в приложении ac # .NET. Во-первых, я понимаю, что теоретически невозможно что-то скрыть в исходном коде, поэтому я пришел к другой идее, но я не уверен, насколько это правдоподобно. В любом случае, возможно ли каким-либо образом …
12 c#  api  authentication 

1
Какие промежуточные представления можно использовать для обоснования параллелизма?
Я пытаюсь лучше понять, что потребуется компилятору, чтобы он мог сделать разумный выбор в отношении параллелизма от имени программиста. Я понимаю, что есть много сложных аспектов этой проблемы, например: Обеспечение отсутствия условий гонки Обеспечение того, чтобы код, выполняемый одновременно, не имел побочных эффектов, влияющих на семантическое значение кода Решение о …

4
Есть ли лучший способ написания модульных тестов, чем серия «AssertEquals»?
Вот базовый пример того, каким должен быть мой модульный тест с использованием qunit: <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Insert title here</title> <link rel="stylesheet" href="qunit/qunit-1.13.0.css"> <script src = "qunit/qunit-1.13.0.js"></script> <script src = "../js/fuzzQuery.js"></script> <script> test("Fuzz Query Basics", function() { equal(fuzzQuery("name:(John Smith)"), "name:(John~ …

3
Как мне маркировать типы в программах на C и C ++?
В этом ответе я использовал _tв конце типы, которые в лучшем случае закончились противоречиво. Это практика, которую я использую в своих текущих проектах. typedef struct { int x; int y; } point_t; Предполагалось, что это будет соответствовать типам C из stddef.hlike size_tили ptrdiff_t. Однако, согласно некоторым комментариям в моих вопросах, …
12 c++  c  naming 

1
Насколько дискретным должен быть RESTful API?
Я никогда не создавал RESTful API и мне интересно, насколько дискретным он должен быть? Например, допустим, у меня есть клиент, у которого есть имя, адрес, номер телефона, адрес электронной почты, язык и т. Д. Имеет ли смысл обновлять каждое отдельное поле (адрес обновления, адрес электронной почты и т. Д.), Или …
12 api  rest 

3
Существует ли принцип разработки программного обеспечения, который связывает затраты на повторное использование и регрессионное тестирование в производственной системе?
Я работал над крупной системой финансовых транзакций для банка, который заботился о пенсиях и инвестициях. После 15 лет изменений функций стоимость ручного регрессионного тестирования поднялась до 200 тыс. Долл. За выпуск. (10 миллионов LOC, 10 миллионов долларов США в день). Эта система также взаимодействует с 19 другими системами вокруг компании, …

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