ПРОПИТАЙТЕ ЛАТЕКСОМ листинг исходного кода как в профессиональных книгах

Есть несколько вещей, чтобы рассмотреть.

Во-первых, размер таблицы не очень интересен, если вы не знаете, какие типы запросов вам нужно выполнить. Как уже говорили другие, не нужно бояться таблиц с сотнями миллионов строк, и если вы запрашиваете индексируемые поля, вы, вероятно, можете масштабировать до миллиардов строк, не переходя к экзотическим решениям просто покупка большего и лучшего оборудования. Итак, решение, в котором 90% ваших запросов - это

select * from users where user_id not in (select interacted_user_id from interactions where interacting_user_id = $current_user) limit 10

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

Более сложной задачей будет геопространственный аспект - по-видимому, вы хотите упорядочить результаты по расстоянию от текущего пользователя.

Один из способов разделить ваши данные - это собрать «взаимодействия» по регионам. Это требует некоторых размышлений - вам, вероятно, не нужны «жесткие» границы, а скорее перекрывающиеся географии. Каждое место на карте может иметь несколько перекрывающихся «регионов», каждый со своей таблицей. Чем больше пользователей у вас в регионе, тем меньше у вас перекрывающихся кругов - у Манхэттена может быть 3 региона, у Гренландии может быть только 1. Ваш запрос затем просматривает таблицы для каждого перекрывающегося региона и объединяет пользователей, которые ранее не имели взаимодействовал с текущим пользователем.

323
задан SeeYouInDisneyland 27 August 2018 в 01:59
поделиться

6 ответов

Мне кажется, что то, что вы действительно хотите, это настроить внешний вид подписей. Это легче всего сделать с помощью пакета caption. Инструкции по использованию этого пакета см. в руководстве (PDF). Вероятно, вам потребуется создать свой собственный формат подписи, как описано в главе 4 руководства.

Редактировать:Проверено с помощью MikTex:

\documentclass{report}

\usepackage{color}
\usepackage{xcolor}
\usepackage{listings}

\usepackage{caption}
\DeclareCaptionFont{white}{\color{white}}
\DeclareCaptionFormat{listing}{\colorbox{gray}{\parbox{\textwidth}{#1#2#3}}}
\captionsetup[lstlisting]{format=listing,labelfont=white,textfont=white}

% This concludes the preamble

\begin{document}

\begin{lstlisting}[label=some-code,caption=Some Code]
public void here() {
    goes().the().code()
}
\end{lstlisting}

\end{document}

Результат:

Preview

184
ответ дан Tormod Fjeldskår 23 November 2019 в 00:56
поделиться

Попробуйте пакет листингов . Вот пример того, что я использовал некоторое время назад, чтобы иметь цветной листинг Java:

\usepackage{listings}

[...]

\lstset{language=Java,captionpos=b,tabsize=3,frame=lines,keywordstyle=\color{blue},commentstyle=\color{darkgreen},stringstyle=\color{red},numbers=left,numberstyle=\tiny,numbersep=5pt,breaklines=true,showstringspaces=false,basicstyle=\footnotesize,emph={label}}

[...]

\begin{lstlisting}
public void here() {
    goes().the().code()
}

[...]

\end{lstlisting}

Вы можете настроить его. Есть несколько ссылок на пакет объявлений. Просто погуглите их.

21
ответ дан slugster 23 November 2019 в 00:56
поделиться

Я доволен пакетом листингов :

Listing example

Вот как я его настраиваю:

\lstset{
language=C,
basicstyle=\small\sffamily,
numbers=left,
numberstyle=\tiny,
frame=tb,
columns=fullflexible,
showstringspaces=false
}

Я использую это так:

\begin{lstlisting}[caption=Caption example.,
  label=a_label,
  float=t]
// Insert the code here
\end{lstlisting}
48
ответ дан Bastien Léonard 23 November 2019 в 00:56
поделиться

Посмотрите на пакет алгоритмов , особенно среду алгоритма .

9
ответ дан avakar 23 November 2019 в 00:56
поделиться

И, пожалуйста, что бы вы ни делали, настройте пакет листингов на использование шрифта фиксированной ширины (как в вашем примере; вы найду вариант в документации). В настройках по умолчанию используется пропорциональный набор шрифтов на сетке, что, IMHO, невероятно некрасиво и нечитабельно, как видно из других ответов с картинками. Лично меня очень раздражает, когда я должен прочитать какой-то набор кодов пропорциональным шрифтом.

Попробуйте установить шрифт фиксированной ширины с помощью этого:

\lstset{basicstyle=\ttfamily}
31
ответ дан JasonMArcher 23 November 2019 в 00:56
поделиться

Есть еще несколько вещей, которые вы можете сделать, например, выбрать новые шрифты:

\documentclass[10pt,a4paper]{article}
% ... lots of packages e.g. babel, microtype, fontenc, inputenc &c.
\usepackage{color}    % Leave this out if you care about B/W printing, obviously.
\usepackage{upquote}  % Turns curly quotes in verbatim text into straight quotes. 
                      % People who have to copy/paste code from the PDF output 
                      % will love you for this. Or perhaps more accurately: 
                      % They will not hate you/hate you less.
\usepackage{beramono} % Or some other package that provides a fixed width font. q.v.
                      % http://www.tug.dk/FontCatalogue/typewriterfonts.html
\usepackage{listings} 
\lstset {                 % A rudimentary config that shows off some features.
    language=Java,
    basicstyle=\ttfamily, % Without beramono, we'd get cmtt, the teletype font.
    commentstyle=\textit, % cmtt doesn't do italics. It might do slanted text though.
    \keywordstyle=        % Nor does cmtt do bold text.
        \color{blue}\bfseries,
    \tabsize=4            % Or whatever you use in your editor, I suppose.
}
\begin{document} 
\begin{lstlisting}
public final int ourAnswer() { return 42; /* Our final answer */ }
\end{lstlisting} 
\end{document}
8
ответ дан 23 November 2019 в 00:56
поделиться
Другие вопросы по тегам:

Похожие вопросы: