IT |
ITmedia 総合記事一覧 |
[ITmedia エグゼクティブ] 東京、痺れる担々麺3選 |
https://mag.executive.itmedia.co.jp/executive/articles/2301/03/news027.html
|
itmedia |
2023-01-03 07:06:00 |
AWS |
AWSタグが付けられた新着投稿 - Qiita |
【初心者向け】【AWS SAA合格へ向けて】AWSにおけるネットワークの概要について |
https://qiita.com/shun198/items/06d2c9cb6eb553278ff3
|
awssaa |
2023-01-03 07:42:38 |
海外TECH |
MakeUseOf |
What's the Best Browser for Android TV? 5 Top Apps, Ranked |
https://www.makeuseof.com/tag/best-browser-for-android-tv/
|
rankedandroid |
2023-01-02 22:15:19 |
海外TECH |
DEV Community |
Cheaply running ruby on rails apps (for side projects) |
https://dev.to/alexspark/cheaply-running-ruby-on-rails-apps-for-side-projects-4na6
|
Cheaply running ruby on rails apps for side projects With Heroku s free tier gone this is my work in progress configuration for a new ruby on rails apps that I want to run as cheaply as possible Here s the gist of it Rails cache uses file storeUse SQLite for a databaseUse redis for sidekiq and actioncableRun Sidekiq in embedded modeUse disk storage for ActiveStorageRun ActionCable s websocket server in embedded modeUse hatchbox to deploy all of my apps on a single VPS on linode vultr aws digital oceanUse Cloudflare as a CDNThe main theme here is taking advantage of how cheap disk storage is on VPS providers per GB as well as Hatchbox allowing unlimited apps to be deployed on a single machine The cost per months follows this formula cost per server VPS cost of appsSo if I had apps running a single Linode server and each app would cost me per month apps on a server would cost my apps per app CaveatsThis stack does make some assumptions about the app ideas I have a lot of reads and very few writesvery small chance of going virallow to medium trafficwary of every gem you use to manage memory usageAnd this stack does nudge coding your app a certain way to squeeze as many apps as possible in a single server heavily use russian doll cachingSQLite should be running in WAL modeSidekiq workers should not do anything that requires a lot of compute adding things together reading files etc Remove cookies from page responses so that they can be cached in a CDN and use lazy turbo frames to fetch user specific content Possible further optimizationsThis same configuration could be done on fly io instances in addition to scaling down to after hitting idle timeout I learned about this here Although I don t have a lot of experience optimizing rails boot times in order to respond to a waking request fast enough Given what has happened to heroku I d bet that a simple VPS provider would outlast a niche platform as a service If anyone is interested in a tutorial let me know Thanks for reading I am partially running this stack sqlite and file store caching in production today at reipricetracker If you are concerned about performance you can see the top left speed badge be adding rails to any URL |
2023-01-02 22:08:13 |
海外TECH |
DEV Community |
Monthly Challenge #3: Morse Code 🆘 |
https://dev.to/codedex/monthly-challenge-3-morse-code-4d97
|
Monthly Challenge Morse Code Morse CodeMorse code is a communication method to encode characters as dots and dashes developed in the s January ChallengeCreate a translate Python function that takes in a message and converts it to morse code Post the code output screenshot in the Twitter thread by Jan th for a chance to win a Codédex hoodie Codédex codedex io January Morse Code Challenge Morse code A communication method to encode characters as dots and dashes developed in the s Create a Python function that takes in a message and converts it to morse code by Jan th for a chance to win a Codédex hoodie twitter com i web status … PM Jan |
2023-01-02 22:06:09 |
海外TECH |
DEV Community |
Angular Internals: How Reactivity Works with Zone.js |
https://dev.to/this-is-angular/angular-internals-how-reactivity-works-with-zonejs-302m
|
Angular Internals How Reactivity Works with Zone jsThis article is an advanced look at how Angular works under the hood The contents within may not be clear if you re not already fairly familiar with JavaScript If you want to learn how to use Angular and haven t before look at my book The Framework Field Guide which teaches React Angular and Vue from scratch instead If you ve been following the JavaScript framework ecosystem you may have heard the term Reactivity lately they ve been a hot commodity to talk about from SolidJS fine grained reactivity to Preact adding in a reactive primitive with the name of Signals The concept of reactivity at least at first glance is a straightforward one When you change a bit of code here it updates a bit of code there automatically This is commonplace within front end frameworks where it s imperative to re render updated content when you update the data stored in JavaScript During discussions of reactivity and front end frameworks one odd duck stands out as a vastly different implementation from the others Angular Take the following button counter reactivity example in each framework Angularimport Component from angular core Component selector my app template lt button click addOne gt count lt button gt export class AppComponent count addOne this count Reactconst App gt const count setCount useState const addOne gt setCount count return lt button onClick addOne gt count lt button gt Vue lt template gt lt button click addOne gt count lt button gt lt template gt lt script setup gt import ref from vue const count ref function addOne count value lt script gt In this example we can see that React uses explicit update calls setX to track when the state changes and Vue uses a proxy and a special property name value to seemingly magically track state But what about Angular Angular just mutates the count variable and the framework seems to count the state changes How does that work under the hood What mechanism is being used to tell the template to re render The short answer is that Angular uses something called Zone js to track all asynchronous APIs via a series of polyfills and uses those Zones to re render dirty content in Angular s tree What does any of that mean That s a lot of words that don t seem to mean very much if you re not already in the know I agree let s answer this better with a longer step by step explanation of how Angular does its rendering and reactivity using Zone js This step by step explanation will have us explore How Angular s template compiler outputs functions that render contentsHow Angular s templates are called in order to update contents on screenHow Angular detects user changes and re renders screen contents automaticallyWhat Zone js is and how to use it with and without AngularHow Angular has its own internal instance of Zone js called NgZoneHow Angular s change detection would work without Zone js and why it s a DX nightmare How Zone js Monkey patches async APIs to call change detection How Angular s template compiler worksEarlier last year the Angular team published a blog post titled How the Angular Compiler Works In it they demonstrated how the NGC compiler takes the following code import Component from angular core Component selector app cmp template lt span gt Your name is name lt span gt export class AppCmp name Alex And outputs something like this import Component from angular core import as i from angular core export class AppCmp constructor this name Alex AppCmp ɵfac function AppCmp Factory t return new t AppCmp AppCmp ɵcmp i ɵɵdefineComponent type AppCmp selectors app cmp decls vars template function AppCmp Template rf ctx if rf amp i ɵɵelementStart span i ɵɵtext i ɵɵelementEnd if rf amp i ɵɵadvance i ɵɵtextInterpolate Your name is ctx name encapsulation function typeof ngDevMode undefined ngDevMode amp amp i ɵsetClassMetadata AppCmp type Component args selector app cmp template lt span gt Your name is name lt span gt null null While their article goes more in depth into how the compiler works it s a great read let s keep our focus narrow for the intention of this article Namely let s look at the template property function on the ɵɵdefineComponent function call template function AppCmp Template rf ctx if rf amp i ɵɵelementStart span i ɵɵtext i ɵɵelementEnd if rf amp i ɵɵadvance i ɵɵtextInterpolate Your name is ctx name Here we re receiving two arguments rf short for render flags and ctx short for context This function is called by Angular itself when the template is ready to either Be rendered for the first time Have its contents updated afterward Depending on how the template needs to be re run the render flag rf will be passed differently allowing Angular more control over how code is updated There are only two flags that are currently defined in Angular Source code from angular core angular packages core src render interfaces definition tsexport const enum RenderFlags Whether to run the creation block e g create elements and directives Create b Whether to run the update block e g refresh bindings Update b The first render flag that will be passed to the template function is the Create flag which will call the first if statement Let s strip away everything but the first if statement i ɵɵelementStart span i ɵɵtext i ɵɵelementEnd Here very generally Angular is saying create a span element and mark it such that text should be placed within it After this is run Angular runs the Update render flag through the template compiler i ɵɵadvance i ɵɵtextInterpolate Your name is ctx name Here it s saying that we should interpolate the string Your name is Alex based on the property received from ctx name and place it into the element s text area By having our template function contain two distinct render phases triggered by flags passed into the function we re able to create the span on the first render and update the text values of the span on subsequent renders without the need for re initializing the span element each time we change the element s text Exactly how is the template compiler run by Angular As mentioned previously Angular calls this render function with two different render flags Create and Update But don t take my word for it Let s take a look at Angular s source code Defined in angular core is a function called renderComponent Angular source code angular packages core src render instructions shared tsfunction renderComponent hostLView LView componentHostIdx number ngDevMode amp amp assertEqual isCreationMode hostLView true Should be run in creation mode const componentView getComponentLViewByIndex componentHostIdx hostLView const componentTView componentView TVIEW syncViewWithBlueprint componentTView componentView renderView componentTView componentView componentView CONTEXT This function very generally accesses a component s View a concept I ve written about before core to Angular s internal reference to HTML elements and renders it using Angular s renderView function Let s look in said renderView function Angular source code angular packages core src render instructions shared tsexport function renderView lt T gt tView TView lView LView lt T gt context T void ngDevMode amp amp assertEqual isCreationMode lView true Should be run in creation mode enterView lView try const viewQuery tView viewQuery if viewQuery null executeViewQueryFn lt T gt RenderFlags Create viewQuery context Execute a template associated with this view if it exists A template function might not be defined for the root component views const templateFn tView template if templateFn null executeTemplate lt T gt tView lView templateFn RenderFlags Create context Here we can see the executeTemplate function being called with the RenderFlags Create flag just like we outlined before There s no special magic happening inside of the executeTemplate function either In fact this is the whole thing Angular source code angular packages core src render instructions shared tsfunction executeTemplate lt T gt tView TView lView LView lt T gt templateFn ComponentTemplate lt T gt rf RenderFlags context T const prevSelectedIndex getSelectedIndex const isUpdatePhase rf amp RenderFlags Update try setSelectedIndex if isUpdatePhase amp amp lView length gt HEADER OFFSET When we re updating inherently select so we don t have to generate that instruction for most update blocks selectIndexInternal tView lView HEADER OFFSET ngDevMode amp amp isInCheckNoChangesMode const preHookType isUpdatePhase ProfilerEvent TemplateUpdateStart ProfilerEvent TemplateCreateStart profiler preHookType context as unknown as templateFn rf context finally setSelectedIndex prevSelectedIndex const postHookType isUpdatePhase ProfilerEvent TemplateUpdateEnd ProfilerEvent TemplateCreateEnd profiler postHookType context as unknown as If we simplify this function a bit to narrow our focus we re left with Simplified Angular source code angular packages core src render instructions shared tsfunction executeTemplate lt T gt tView TView lView LView lt T gt templateFn ComponentTemplate lt T gt rf RenderFlags context T templateFn rf context Here in this narrowed focus we can see that when we execute Simplified Angular source code angular packages core src render instructions shared tsconst templateFn tView template executeTemplate lt T gt tView lView templateFn RenderFlags Create context We re simply calling the component s template function with a RenderFlags Create argument as well as the function s context What about when the component updates Just as there is a clear demonstration of when the component s template function is called with RenderFlags Create there s also a pretty cut and dry example of the template function being called with RenderFlags Update This Update flag is passed by Angular s refreshView function which is called by Angular when a component is ready to update Angular source code angular packages core src render instructions shared tsexport function refreshView lt T gt tView TView lView LView templateFn ComponentTemplate lt gt null context T ngDevMode amp amp assertEqual isCreationMode lView false Should be run in update mode const flags lView FLAGS if flags amp LViewFlags Destroyed LViewFlags Destroyed return enterView lView Check no changes mode is a dev only mode used to verify that bindings have not changed since they were assigned We do not want to execute lifecycle hooks in that mode const isInCheckNoChangesPass ngDevMode amp amp isInCheckNoChangesMode try resetPreOrderHookFlags lView setBindingIndex tView bindingStartIndex if templateFn null executeTemplate tView lView templateFn RenderFlags Update context That last line should look pretty familiar the executeTemplate shows up again and is passed RenderFlags Update this time While this is pretty neat to see so plainly it leaves an important question out in the open How does the component know when it s ready to update Inside Angular s change detection when refreshView is calledTo answer the question of how does Angular know when a component is ready to update let s follow the stack trace of when the refreshView function is called If we take a step one level up we can see that refreshView is called within a function called detectChangesInternal Angular source code angular packages core src render instructions shared tsexport function detectChangesInternal lt T gt tView TView lView LView context T notifyErrorHandler true const rendererFactory lView RENDERER FACTORY Check no changes mode is a dev only mode used to verify that bindings have not changed since they were assigned We do not want to invoke renderer factory functions in that mode to avoid any possible side effects const checkNoChangesMode ngDevMode amp amp isInCheckNoChangesMode if checkNoChangesMode amp amp rendererFactory begin rendererFactory begin try refreshView tView lView tView template context catch error Which is called within the exposed angular core detectChanges function Angular source code angular packages core src render view ref tsdetectChanges void detectChangesInternal this lView TVIEW this lView this context as unknown as Calling Change Detection ManuallyLet s use Angular s NgZone s runOutsideOfAngular to run some code outside of Angular s typical change detection import ApplicationRef Component NgZone from angular core Component selector my app template lt h gt Hello name lt h gt lt button click changeName gt Change Name lt button gt export class AppComponent constructor private ngZone NgZone name changeName this ngZone runOutsideAngular gt setTimeout gt this name Angular Don t worry if you re not already familiar with NgZone we ll explain how it works fully in this article Here you ll notice that when you press the lt button gt for the first time it does not show Hello Angular as you might expect It s only on the subsequent button presses that the proper greeting shows up This is intentional behavior after all we ve told our code to execute outside of Angular s typical change detection To solve this we can manually run detectChanges ourselves import ChangeDetectorRef Component NgZone from angular core Component selector my app template lt h gt Hello name lt h gt lt button click changeName gt Change Name lt button gt export class AppComponent constructor private ngZone NgZone private cd ChangeDetectorRef name changeName this ngZone runOutsideAngular gt setTimeout gt this name Angular this cd detectChanges This detectChanges then calls the refreshView call that we saw earlier That in turn calls executeTemplate with RenderFlags Update which gets passed to the component s template function which was output by NGC How does Angular know to call detectChanges Assuming you ve done your research and detectChanges really is what calls our component to Update what within Angular calls detectChanges itself Well Angular has a global instance of your application that s spun up during your application s initialization either via bootstrapModule or bootstrapApplication called ApplicationRef This ApplicationRef contains methods and metadata Angular needs to keep about your application as a whole in order to operate Within this ApplicationRef is a method called tick This method is more or less more on this soon called after the application has detected the user has made an interaction with the app when everything has calmed down Angular calls this tick method because since the user has interacted with some part of the webpage the application might need to re render to show updated information from said interaction What does this have to do with detectChanges Well dear reader ApplicationRef tick calls detectChanges Angular source code angular packages core src application ref tstick void NG DEV MODE amp amp this warnIfDestroyed if this runningTick throw new RuntimeError RuntimeErrorCode RECURSIVE APPLICATION REF TICK ngDevMode amp amp ApplicationRef tick is called recursively try this runningTick true for let view of this views view detectChanges This means that we re able to replace our previous detectChanges with ApplicationRef tick and it will accomplish the same fix we were able to see before import ApplicationRef Component NgZone from angular core Component selector my app template lt h gt Hello name lt h gt lt button click changeName gt Change Name lt button gt export class AppComponent constructor private ngZone NgZone private appRef ApplicationRef name changeName this ngZone runOutsideAngular gt setTimeout gt this name Angular this appRef tick A quick detour into Zone js land Zone js basicsBefore we continue diving deeper into Angular s internals I need to introduce a magical library that was developed by Google for usage within Angular Zone js The very basic idea behind Zone js is that you re able to create a context to run your code inside This context can then be used to keep track of what s currently running run custom error handling code and more Let s look at a minimal example of what Zone js is capable of import zone js const newZone Zone current fork name error onHandleError function error console log error message newZone run gt setTimeout gt throw new Error This is an error thrown in a setTimeout Here Zone current is a global that s defined when you import zone js for the first time We then fork the current zone in order to create our own execution context or zone This zone is defined with an error handler onHandleError that in our example simply logs the error message using a console log rather than displaying a console error as is the default for the browser We then run a task by passing a function to newZone Even though our Error is thrown inside of a setTimeout it is caught by our onHandleError Angular uses Zone jsOK now that we understand the fundamentals of Zone js let s see how Angular uses Zone js See Angular has a Zone called NgZone as part of ApplicationRef to keep a context of the application s code While the code to set up NgZone is a bit too complex to showcase in this article cleanly you can roughly think of NgZone as This is not how ngZone is really defined it s just a really rough approximationconst ngZone Zone current fork Setup the ngZone here This NgZone is then passed to the ApplicationRef s constructor like so Angular source code angular packages core src application ref tsconstructor private zone NgZone private injector EnvironmentInjector private exceptionHandler ErrorHandler this onMicrotaskEmptySubscription this zone onMicrotaskEmpty subscribe next gt this zone run gt this tick You may notice that this zone is then subscribed such that when the microtask queue is empty it runs this tick aka ApplicationRef tick This my dear reader is what triggers Angular s detectChanges seemingly invisibly Don t believe me Let s disable Zone js from our Angular app and see if change detection works as we d typically expect Disabling Zone js from AngularTo disable Zone js from our Angular application we simply need to pass ngZone noop to our application s bootstrapping main tsplatformBrowserDynamic bootstrapModule AppModule ngZone noop catch err gt console log err Now with Zone js disabled we can see that no matter how many times we press our button in the following example the change detection is never run This does not work with a noop NgZoneimport Component from angular core Component selector my app template lt h gt Hello name lt h gt lt button click changeName gt Change Name lt button gt export class AppComponent name changeName setTimeout gt this name Angular We can either fix this by manually calling change detection either via appRef tick or cd detectChanges This works with a noop NgZoneimport ApplicationRef Component from angular core Component selector my app template lt h gt Hello name lt h gt lt button click changeName gt Change Name lt button gt export class AppComponent constructor private appRef ApplicationRef name changeName setTimeout gt this name Angular Developer experience suffers since we MUST call this every time we change state this appRef tick Or by re enabling Zone js main ts Re enable NgZoneplatformBrowserDynamic bootstrapModule AppModule catch err gt console log err This works again now that we re enabled Zone js Component selector my app template lt h gt Hello name lt h gt lt button click changeName gt Change Name lt button gt export class AppComponent name changeName setTimeout gt this name Angular Huh so you can use Angular without Zone js but the developer experience suffers interesting But wait we re not explicitly calling ngZone run inside of our changeName method how does it call Zone js to trigger Angular s tick Our changeName method is able to trigger Angular s tick thanks to something called a monkey patch Zone js Patches APIs for AngularA zone within Zone js is only able to see code that is executed within its context Take the following minimal Zone js example from earlier newZone run gt setTimeout gt throw new Error This is an error thrown in a setTimeout Let s pause and think about this code for a moment from a theoretical level setTimeout sets a timer internally using the JavaScript engine of the code s execution This code then has a callback which is called after the timer has passed How does Zone js know that it should treat the throw new Error as part of its execution context if the callback is called externally by the JavaScript engine The answer is Well it doesn t by default If Zone js is implemented in a trivial manner it does not handle setTimeout or any other asynchronous API properly Unfortunately for us our apps regularly make use of asynchronous operations to function Luckily Zone js is not implemented trivially and does its best to patch all of the async APIs your application might use to redirect the execution of tasks back into its context While the specifics of how this is done are a bit complex the gist of it is that Zone js calls a bit of code after the async code finishes to notify Zone js to pick up the execution from where it left off This might look something like this This is not how Zone js really works this is a trivial implementation to demonstrate how Zone js patches async APIsconst originalSetTimeout setTimeout setTimeout callback delay args gt const context this return originalSetTimeout gt callback apply context args Zone current run delay Here we can see that we re overwriting the global setTimeout with our custom one but calling Zone current run once the async operation is finished This conceptually isn t too far from how Zone js patches global async APIs For example this is the bit of code that tells Zone js to patch setTimeout Zone js source code angular packages zone js lib browser browser tsZone load patch timers global any gt const set set const clear clear patchTimer global set clear Timeout patchTimer global set clear Interval patchTimer global set clear Immediate Notice how it patches setTimeout clearTimeout setInterval clearInterval setImmediate and clearImmediate all at once This means that when we run our Angular component with setTimeout This does not work with a noop NgZoneimport Component from angular core Component selector my app template lt h gt Hello name lt h gt lt button click changeName gt Change Name lt button gt export class AppComponent name changeName setTimeout gt this name Angular The changeName function calls Zone js s patched setTimeoutThis patched setTimeout adds a task to the forked NgZone s queue Once the queue is empty it will trigger onMicrotaskEmptyThis then triggers the tick function in ApplicationRefWhich then calls detectChangesThis in turn calls refreshView on the componentrefreshView is a wrapper around calling the component s template function with RenderFlags UpdateWhich provides the correct flag for the template function built by the NGC compiler to update the DOM s contents Zone js patches more APIs than you might thinkHang on a moment If Zone js is what triggers ApplicationRef tick why does it seem to run change detection even when there is seemingly no asynchronous API involved That s a good point After all the following Angular component doesn t use setTimeout and yet it still triggers ApplicationRef tick so long as you have NgZone enabled import ApplicationRef Component NgZone from angular core Component selector my app template lt h gt Hello name lt h gt lt button click changeName gt Change Name lt button gt export class AppComponent name changeName this name Angular Why is that Well the answer lies within the word asynchronous and its literal definition See it doesn t just mean a timer it means any kind of operation that s non blocking That s not just output that includes user input You might have an inkling that this means that Zone js patches the click listener and you d be right If we think about how an HTML element is created in JavaScript without a framework it might look something like this const el document createElement button el addEventListener click gt console log I have been pressed Well under the hood the NGC compiler does this same thing with our click template syntax Knowing that the component s template function utilizes addEventListener let s see how Zone js patches this API The first step to understanding how Zone js patches addEventListener it s important to know where the browser implements that specific function You might assume it s a method on the browser s HTMLElement built in type but it actually exists on the browser s built in EventTarget type instead HTMLElement just inherits this function from EventTarget This is why in Zone js source code it patches EventTarget directly Zone js source code angular packages zone js lib browser browser tsZone load patch EventTarget global any Zone ZoneType api ZonePrivate gt patchEvent global api eventTargetPatch global api If we look into eventTargetPatch we can even see where it patches ADD EVENT LISTENER specifically export function patchEventTarget global any api ZonePrivate apis any patchOptions PatchEventTargetOptions const ADD EVENT LISTENER patchOptions amp amp patchOptions add ADD EVENT LISTENER STR const REMOVE EVENT LISTENER patchOptions amp amp patchOptions rm REMOVE EVENT LISTENER STR This all means that when the user presses the button in the following example import ApplicationRef Component NgZone from angular core Component selector my app template lt h gt Hello name lt h gt lt button click changeName gt Change Name lt button gt export class AppComponent name changeName this name Angular It will Run the click changeName functionRun Zone js s patched addEventListener functionTrigger the onMicrotaskEmpty subscriptiontick the ApplicationRefThis is why even in our runOutsideOfAngular example pressing the button more than once will show the live data The event is being bound and as a result the component is being re rendered with App tick once the bound event is triggered Demonstration of Event PatchingAs a fun aside it s worth mentioning that even an empty function will trigger change detection although it will not cause a re render because no data has changed We can verify this assumption by simply subscribing to onMicrotaskEmpty ourselves import Component NgZone from angular core Component selector my app template lt button click test gt Test lt button gt export class AppComponent constructor private zone NgZone zone onMicrotaskEmpty subscribe next gt console log EMPTY MICROTASK RUN TICK This is empty but will still cause an ApplicationRef tick if NgZone is enabled test ConclusionHopefully this has been a helpful insight into how Angular s change detection works under the hood both with and without Zone js With this knowledge you should be able to optimize your applications by discovering the patterns where your code may be causing too many re renders at once If you found this article useful you should check out my upcoming book series The Framework Field Guide where I teach React Angular and Vue from the basics all the way to super advanced deep dives such as this psst all three books are free |
2023-01-02 22:04:43 |
海外TECH |
Engadget |
LockBit ransomware gang apologizes for SickKids hospital attack and offers free decryptor |
https://www.engadget.com/lock-bit-ransomware-gang-apologizes-sick-kids-attack-224245439.html?src=rss
|
LockBit ransomware gang apologizes for SickKids hospital attack and offers free decryptorOne of the world s most notorious ransomware gangs has issued a rare apology after claiming that one of its partners was responsible for a cyberattack on Canada s largest pediatric hospital On December th the Hospital for Sick Children SickKids in Toronto fell victim to a ransomware attack that left the institution unable to access many of its critical systems The incident led to an increase in patient wait times As of December th SickKids said it had regained access to almost percent of its priority systems including those that had caused diagnostic and treatment delays SickKids is aware of a statement from a ransomware group offering a decryptor to restore systems impacted by the cybersecurity incident on December Read more pic twitter com HSERgihーSickKids TheHospital SickKidsNews January Over the weekend security researcher Dominic Alvieri spotted an apology from the LockBit gang for its involvement in the incident The group said it would provide a free decryptor to SickKids and that it had blocked the “partner who carried out the attack for violating the gang s rules As BleepingComputer notes the LockBit group runs what s known as a “ransomware as a service operation The organization has affiliates that do the dirty work of finding targets to compromise and extract payment from while the primary operation maintains the malware that partners use to lock systems As part of that arrangement the gang takes a percent cut of all ransom payments Additionally the group claims to prohibit affiliates from targeting “medical institutions where an attack could lead to someone s death On Sunday SickKids acknowledged the statement and said it was working with outside security experts to “validate and assess the use of the decryptor adding that it had not made any ransom payments The hospital also said it recently restored access to about percent of its priority system It s unclear why it took the LockBit gang nearly two weeks to offer help to SickKids if the attack was against its code It s also worth noting that the group has a history of targeting hospitals and not sending them a decryptor Earlier this year for instance the group demanded a million ransom from the Center Hospitalier Sud Francilien in France and eventually leaked patient data after the hospital refused to pay |
2023-01-02 22:42:45 |
ニュース |
BBC News - Home |
Times Square: Teenager charged over New York NYE machete attack |
https://www.bbc.co.uk/news/world-us-canada-64146815?at_medium=RSS&at_campaign=KARANGA
|
celebrations |
2023-01-02 22:13:34 |
ニュース |
BBC News - Home |
PDC World Championship: Michael van Gerwen to play Michael Smith in 2023 final |
https://www.bbc.co.uk/sport/darts/64148287?at_medium=RSS&at_campaign=KARANGA
|
darts |
2023-01-02 22:45:41 |
ニュース |
BBC News - Home |
Masters: Invite sent to US golfer Scott Stallings' namesake |
https://www.bbc.co.uk/sport/golf/64148773?at_medium=RSS&at_campaign=KARANGA
|
scott |
2023-01-02 22:09:22 |
ニュース |
BBC News - Home |
Queens Park Rangers 1-1 Sheffield United: John Egan's late goal salvages point for Blades |
https://www.bbc.co.uk/sport/football/64092515?at_medium=RSS&at_campaign=KARANGA
|
Queens Park Rangers Sheffield United John Egan x s late goal salvages point for BladesJohn Egan s last ditch goal salvages a point for second placed Sheffield United at a spirited Queens Park Rangers |
2023-01-02 22:16:25 |
北海道 |
北海道新聞 |
鳥インフル、過去最多に 千葉の養鶏場で感染確認 |
https://www.hokkaido-np.co.jp/article/783120/
|
高病原性鳥インフルエンザ |
2023-01-03 07:33:00 |
北海道 |
北海道新聞 |
スタッド・ランス伊東はフル出場 フランス1部、リール戦 |
https://www.hokkaido-np.co.jp/article/783119/
|
共同 |
2023-01-03 07:13:00 |
北海道 |
北海道新聞 |
「景気拡大」56%に大幅減 物価高、米中減速を懸念 |
https://www.hokkaido-np.co.jp/article/783118/
|
共同通信社 |
2023-01-03 07:03:00 |
ビジネス |
東洋経済オンライン |
インド進出の寿司チェーンがまずまず成功のワケ 「小僧寿し」をイメージして2011年に立ち上げた | 外食 | 東洋経済オンライン |
https://toyokeizai.net/articles/-/639890?utm_source=rss&utm_medium=http&utm_campaign=link_back
|
小僧寿し |
2023-01-03 07:30:00 |
ビジネス |
プレジデントオンライン |
「セクハラを受けた女性なんてそんなにいるの?」MeToo後も男女の温度差が埋まらない根本原因 - 火付け役のニューヨークタイムズ記者に直撃 |
https://president.jp/articles/-/64941
|
metoo |
2023-01-03 08:00:00 |
ビジネス |
プレジデントオンライン |
「セクハラを受けた女性なんてそんなにいるの?」MeToo後も男女の温度差が埋まらない根本原因 - 火付け役のニューヨークタイムズ記者に直撃 |
https://president.jp/articles/-/64861
|
metoo |
2023-01-03 08:00:00 |
コメント
コメントを投稿