Акценти
Потреблението вече отчита всеки час, до който се докосва вашият период на таксуване, така че общият брой кредити на страницата Usage & Limits покрива периода от първата му секунда. Организациите получиха завършека, който им липсваше миналата седмица: добавеният потребител бива уведомен, собственикът, чийто план плаща сметката, също, а селекторът за роли най-накрая описва какво може да прави дадена роля. Прегледахме и Dashboard и пренаписахме съобщенията, които бяха форматирани за нас, а не за вас.
Какво ново
Всеки час от периода ви се отчита
Вашият период на таксуване започва в точната секунда, в която сте се регистрирали. Потреблението се измерва във фиксирани интервали. Тези две неща почти никога не съвпадат идеално, затова аритметиката, която ги напасва, трябва да бъде точна по краищата.
Вече е така. Всеки период се разделя на цели интервали с най-високата резолюция, налична за всяка част, без нищо да се дели на части и без двойно отчитане. И трите места, които четат потреблението, споделят една и съща имплементация, което е същинското решение. Три копия на една и съща аритметика е начинът едно от тях да се окаже грешно.
Какво ще забележите: всяко число в Usage & Limits е малко по-високо спрямо миналата седмица. Същият трафик, по-пълен отчет. Никой не надвишава лимита на плана си заради тази промяна. Същата аритметика определя вашата квота, така че промяната имаше значение и в двете посоки.
Никой не се присъединява към организация тихо
Организациите стартираха миналата седмица и вече можехте да добавяте колега, да му зададете роля и да му позволите да използва ключове, плащани от компанията. Това, което не можехте, беше да го уведомите. Подсказката под формуляра ви казваше да го направите сами.
Вече изпращаме два имейла. Добавеният човек получава имейл с името на организацията, кой го е добавил, какви са правата на ролята му и откъде може да я напусне, ако не е очаквал това. Собственикът получава имейл при присъединяване на нов потребител, тъй като ключовете на организацията се таксуват от неговия план, а още един човек, който харчи кредитите му, е негова пряка отговорност, а не формалност. Нито един от тези имейли не отива при човека, натиснал бутона. Не ви трябва потвърждение за собственото ви действие.
Известието до собственика се задейства и в двата случая: при директно добавяне и при приета покана при първо влизане, където няма извършител на действието, защото потребителят се е логнал сам.
Ролите също вече имат ясни обяснения. Текст под падащото меню се променя при избор, а колоната Role съдържа tooltip, покриващ и трите роли, включително owner. Изборът между "Member" и "Admin" без ясна представа какво прави всяка от тях е причината хората да раздават права на admin по подразбиране.
Една стъпка за добавяне на колега
Въведете имейл адрес, натиснете Add. Ако вече използват FourA, те се присъединяват веднага. Ако не, изпращаме им покана по имейл и те влизат в момента, в който се регистрират. Един и същ бутон, едно и също потвърждение, един и същ резултат и в двата случая, като страницата описва двата изхода в едно изречение, вместо да уточнява кой точно се прилага за въведения адрес.
Този втори диалог вече го няма, както и отговора, който преди ви показваше дали даден адрес вече има акаунт тук. Дали даден произволен имейл е регистриран при нас не е въпрос, на който отговаряме.
Dashboard спря да пише в лога
"Failed to fetch organizations" е ред за нас. Появяваше се пред вас.
Тридесет и пет от тях се превърнаха в изречения, по които човек може да предприеме действие, като "Не можахме да заредим вашите организации. Опитайте отново след малко." Съкратени форми навсякъде, където чете човек. "Invalid member id" и подобните му вече казват какво се е объркало, вместо да именуват променлива. Конзолните редове, с които преди се бъркаха, са непокътнати, защото те наистина са за нас. Същото важи и за валидацията на формата на API, която получавате обратно, когато ни викате от код, както и за машинночетимите кодове, по които Dashboard се разклонява.
Имейлите преминаха през същия преглед. Поканата, молеща непознат да се присъедини към "организация", е писмото, което хората изхвърлят в кошчето, така че имената на нещата, които сте избрали, се върнаха: акаунтът, ключът, организацията, който и да ви е поканил. Свободният текст, въведен от клиент, все още остава извън всеки имейл, който изпращаме.
Под капака
Browser изпускаше по един file handle на rendering сесия и не нашият код беше причината за това. Upstream зависимост затваря един от двата си log handle, след което връща резултат преждевременно и пропуска втория, но само когато извикващият предостави собствена директория за профил. Ние предоставяме такава при всяко стартиране, което направи теча както гарантиран, така и постоянен.
Пачът обвива този конкретен метод, вместо да форква зависимостта. Той изпълнява оригинала първо и действа само ако handle все още е отворен, така че в деня, в който upstream премести този ред над return оператора, нашият пач тихо ще спре да прави каквото и да било. Тестовете възпроизвеждат теча, преди пачът да бъде инсталиран, така че файлът заявява от какво се защитава, вместо просто да твърди, че всичко е наред.
Практически ефект: дълго работещите инстанции на Browser запазват капацитета си, вместо да се изтощават с натрупването на сесии. Ако искате да контролирате как изглеждат тези сесии в мрежата, browser profiles бяха пуснати редом с това.
И двете поправки по-горе започнаха от едно и също място. Нещо премина проверка, която не беше съществената проверка: зелен тестов пакет, докато един час липсваше от всеки период, процес, който се отчита като готов за работа, докато е изчерпал единствения ресурс, от който се нуждае. Зеленото се постига лесно. По-трудният въпрос е какво трябва да видят вашите инструменти, преди да светнат в червено, и дали изобщо могат да го видят.