public sealed class DataProvider : IDisposable
{
// nit: Предложил бы названия firstValue, secondValue либо более осмысленные, если возможно
public extern int LongRunningCalculation(int value, int value2);
public extern void Dispose();
}
// nit: сразу бы хотелось видеть уровень доступа и sealed (если класс не планируется наследовать)
// Class2 - дать нормальное имя
// { - перенести на 2ю строку по рекомендациям code style от microsoft (если не принято иных)
class Class2 {
// Синхронизация не нужна, если убрать метод Init, а Create вызвать в статическом конструкторе
private readonly object _sync = new object();
// _ht - дать осмысленное название
// Судя по использованию, value может быть int`ом. Не зачем иметь лишний boxing и проверки на тип
// _ht статический, значит к нему могут быть обращения из разных потоков, лучше сделать его ConcurrentDictionary
// Прям сходу не могу сказать, но, возможно, использовал бы какой то другой тип Dictionary <key, key, val> (самописный или существующий), кажется, так было бы быстрее чем массив в ключе
private static Dictionary<int[], object> _ht;
// nit: хотелось бы имена со смыслом
public int GetValue(int index, int index2)
{
// Лишний метод, удалить. Create вызовем в static конструкторе
Init();
// Если ключ у нас объект, то необходимо реализовать IEqualityComparer для этого Dictionary (иначе не понятно как по нему искать)
var key = new[] {index, index2};
// Проверка на тип не нужна, Dictionary сделаем типа int
if (_ht.ContainsKey(key) & _ht[key].GetType() == typeof(int))
// приведение типов больше не нужно
return ((int)_ht[key]);
// nit: else не обязателен
else
// int не может быть null, будет ошибка, вернуть либо default, либо возвращаемое значение должно быть int?
return null;
}
// Метод удалить, вызовем Create в статическом конструкторе без lock
public void Init()
{
if (_ht == null)
lock (_sync)
Create();
}
// Нет смысла делать метод public, сделать private
public static void Create()
{
// nit: и так видно какой тип создаём, можно использовать var
// Обернуть в using
DataProvider provider = new DataProvider();
// Тут следует инициализировать значение _ht, т.к. ранее оно нигде не создаётся
// Не забыть передать реализацию IEqualityComparer в конструктор
// nit: хотелось бы видеть использование фигурных скобок (если не принят иной code style)
// nit: вместо int можно var
// i и j, похоже, несут какой то смысл, можно попробовать придумать нормальное название (иначе не понятно почему 100 и 12, их можно в константы класса)
// nit: возможно можно использовать Parallel.ForEach
for (int i = 0; i < 100; i++)
for (int j = 1; j <= 12; j++)
_ht[new [] { i, j }] = provider.LongRunningCalculation(i, j);
}
}
public interface IDataProvider : IDisposable
{
int LongRunningCalculation(int firstValue, int secondValue);
}
public sealed class DataProvider : IDataProvider
{
public extern int LongRunningCalculation(int firstValue, int secondValue);
public extern void Dispose();
}
public sealed class DataProviderService
{
public DataProviderService(IDataProvider dataProvider)
{
_dataProvider = dataProvider;
}
private static readonly ConcurrentDictionary<int[], int?> _calculatedCache = new ConcurrentDictionary<int[], int?>(new CalculatedEqualityComparer());
private readonly IDataProvider _dataProvider;
public int? GetValue(int firstValue, int secondValue)
{
var isNotSupportedValues = firstValue > 100 || firstValue < 0 || secondValue < 1 || secondValue > 12;
if (isNotSupportedValues)
{
return null;
}
var key = new[] { firstValue, secondValue };
if (!_calculatedCache.TryGetValue(key, out var result))
{
result = _dataProvider.LongRunningCalculation(firstValue, secondValue);
_calculatedCache.TryAdd(key, result);
}
return result;
}
}
if cursor.execute( f"SELECT id FROM user WHERE id = {members.id}" ).fetchone() is None: # Если нет id то заносим в таблицу
- это вы не в таблицу заносите, это х***ей страдаете. Почему бы вам не спросить у того дауна, у которого скопипастили код?КАК ПРИШЁЛ К DJANGOда всем насрать как. Могут иногда на самом собесе спросить чтобы начать разговор
Из стоящих работ к сожалению могу предоставить код своей незавершённой социальной сети.тут и сожаление, и незаконченный проект. Заранее показываешь что ты дно, да еще и согласен с этим. Не незавершенный проект, а продолжающий развиваться. А еще лучше не говорить об этом. Кто посмотрит поймет что не закончил, кто не посмотрит не решит что ты рукожоп
Данный проект я начал создавать, чтобы проверить на что я способен это всё же интереснее, чем просто создавать сайты-блоги, визитки и тд. Я не завершил его по причине острой необходимости в подработке( начал писать на php об этом говорится в разделе СОПУТСТВУЮЩИЕ НАВЫКИ).очень интересно. На самом деле нет. Прям автобиографию написал. У hr сотни резюме, эта писанина им не нужна и не интересна. Они ищут человека с определенными навыками, не более.
В проекте "социальная сеть" начал применять паттерн MVC, но не везде отрефакторил код.Твой проект скорее всего никто не посмотрит, а если посмотрит увидит МВС, но ты сразу признался что работаешь через жопу
Postmanвпервые вижу это как некий плюс. Все в курсе что это и умеют пользоваться, если нет, то пяти минут хватит разобраться
на данный момент из-за проблем с подключением удалил его как вторую ОС при необходимости я оперативно верну linux назадопять автобиография пошла, не связанная с вакансией. Может книги лучше будешь писать?
если что-то не знаю то гугл в помощь и без проблем нахожу решениеэто ты братану расскажешь, а не в резюме. Неформальная речь, очевидные вещи, не интересно hr. Кадровику надоело читать, выкидывает не дочитав
Заранее хотел бы извинитьсяопять не успел начать уже сам говоришь что рукожоп. Нельзя так говорить в принципе
фриланс это больше про коммерцию нежели про программированиеэто вообще о чем? типа ты за интерес собираешься работать? Ну и что положительного тут должен увидеть хр?
но зато я точно знаю, что могу находить решения для реальных задачпафосно. Только все так говорят, а доказательства где.
также почерпал много информацииахахах, великий черпий) много проблем с языком, если не знаешь, попроси того кто знает русский отчитать
Я быстро разбираюсь во всём новомэто уже давно стало позорным клише в резюме
Просматривая вакансии я заметил, что у самых интересных (вакансии от банков с шестизначным окладом, дмс и прочим), обязательным требованием идет техническая вышка. Неужели без вышки в нормальные компании путь закрыт?
Неужели мой потолок - это работа фронтом в микростудии с оплатой в виде % за проект?
Как попасть в хорошие компании (банки, крупные продуктовые, топы индустрии с шестизначным окладом и топовым соцпакетом) без высшего образования?
А Python разработчики имеют дело в основном только с бэкенд - и понятия про фронтенд у них будут на уровне dummy html, css, bootstrap.
# HELP
bot.remove_command("help")
@bot.command(command/help.py)
# PROFILE
bot.remove_command("profile")
@bot.command(command/profile.py)