I’ve been working with typescript for quite a while and had a decent amount of problems understanding its modules and correspondent settings and I gotta say that there’s a lot of confusion around it. Namespaces, import * as React from 'react', esModuleInterop and so on. So let me try to explain what the fuss is all about.

I won’t talk about namespaces as a module system in typescript cause the idea turned out to be not so good (at least considering the current direction of development) and nobody use them at the moment.

So, what did we have before esModuleInterop option…


A lot of people love Next.js. A lot of people love Typescript. So, eventually a bunch of people will want to use them together and, as you can guess, it’s already happening. So, what options do we have? The default one would be to use next-typescript package from Zeit, the official one. It uses ts-loader and it works fine, but there’s figure number two (if not even one) on webpack-typescript-loaders market: it’s awesome-typescript-loader. The main reason to use it is its performance optimizations: integration with babel (which is the perfect case for Next.js) and running type checker in separate process…


Next.js + Github Pages

Click here to share this article on LinkedIn »

Recently, I’ve decided to finally create my homepage. For this task I decided to go with Next.js and it’s amazing static export functionality. Without thinking twice I also decided to use github pages, since the fact that I’ll github. And I was like: “It should be plain and simple, just export the app into the docs folder (with the next build and next export -o docs) and you’re done”. Those, who are already giggling, are actually right, because it turned out to be not a piece of a cake.

First of…


Здравствуйте, Я Михаил и у меня есть проблема. Иногда во время ревью моё видение решения задачи не совпадает с чужим и мне хочется воскликнуть: “На кой хер ты так сделал, ты что мудила?!”. Естественно я этого не делаю, ведь цель ревью это обмен знаниями о кодовой базе и дистиляция наилучших решений, а не срач и испорченные отношения (вот кстати хорошая статья по азам конфликтологии). Всегда можно найти способ перефразировать, сместить фокус с личности на сам код и т.п. Но иногда этот способ дает сбой. Чтобы объяснить когда я хочу препарировать конфликты в рамках ревью на три куска:

Маленький дисклеймер: в…


Предыстория: раньше я жил на jspm и systemjs, но меня подкупила быстрота webpack-а и его возможность горячей замены. Посему я приступил к переезду. TLDR Source code

Начнем с того, что установим jquery и semantic-ui

npm install --save jquery@2.1.4 semantic-ui-css

Semantic-ui-css это тот же semantic-ui, но который не надо собирать (он просто с дефолтной темой). jquery нужен 2-ой версии, ибо с 3-ей семантик местами не дружит (может быть ситуация уже поменялась).

Установим также и то, чем мы это всё будем собирать и показывать

npm install --save-dev webpack babel-core babel-loader babel-preset-es2015 http-server

Babel здесь лишь потому что я привык к ES2015, но…


Подразумевается что у вас есть понимание что такое IoC, структурное логирование, docker и уже есть контейнер поддерживающий интерсепторы. В моем случае это Autofac. Вот так выглядит код без какого бы то ни было логирования.

public static class IocContainer
{
static IocContainer()
{
var containerBuilder = new ContainerBuilder();
containerBuilder.RegisterType<ClassWithVirtualMethodsToLog>();
Container = containerBuilder.Build();
}
public static IContainer Container { get; set; }
}
public class ClassWithVirtualMethodsToLog
{
public void SomeMethodToLog()
{
Thread.Sleep(1234);
}
}

С этого момента начинаем модифицировать. Подключаем три пакета

Install-Package Serilog
Install-Package Elasticsearch.Net
Install-Package Serilog.Sinks.ElasticSearch

Если вылетает ошибка

‘Serilog’ already has a dependency defined for ‘Microsoft.CSharp’

То это значит…

Mikhail Bashurov

@SaitoNakamura

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store