AWS |
AWS Networking and Content Delivery |
Upgrading AWS Direct Connect to 100 Gbps in 5 steps |
https://aws.amazon.com/blogs/networking-and-content-delivery/upgrading-aws-direct-connect-to-100-gbps-in-5-steps/
|
Upgrading AWS Direct Connect to Gbps in stepsNative Gbps connections are now available at select AWS Direct Connect Locations worldwide If you are using a Gbps or Gbps Direct Connect Dedicated Connection today moving up to Gbps can be done in five steps This post walks through those steps and what to consider while planning your migration These … |
2021-04-12 16:00:06 |
AWS |
AWS Open Source Blog |
Introducing OpenSearch |
https://aws.amazon.com/blogs/opensource/introducing-opensearch/
|
Introducing OpenSearchToday we are introducing the OpenSearch project a community driven open source fork of Elasticsearch and Kibana We are making a long term investment in OpenSearch to ensure users continue to have a secure high quality fully open source search and analytics suite with a rich roadmap of new and innovative functionality This project includes OpenSearch derived from … |
2021-04-12 15:53:34 |
AWS |
AWS Government, Education, and Nonprofits Blog |
Celebrating 40 years of space exploration |
https://aws.amazon.com/blogs/publicsector/celebrating-40-years-space-exploration/
|
Celebrating years of space explorationSpace exploration has advanced significantly over the past years With missions like the space shuttle NASA has led the way demonstrating for the world their ability to push the boundaries of technological innovation to explore space collect data and enable scientific knowledge to make the world a better place We are now in an exciting and daring new age as more organizations around the world are looking to explore space and achieve a sustainable operating presence And fulfilling space based missions demands innovation Learn how AWS is supporting customers globally to push the boundaries of space exploration |
2021-04-12 15:56:24 |
AWS |
AWS Japan Blog |
VMware Cloud on AWSの耐障害性設計に関する考慮事項とベストプラクティス |
https://aws.amazon.com/jp/blogs/news/resiliency-design-considerations-and-best-practices-for-vmware-cloud-on-aws/
|
本稿では、VMwareCloudonAWSを活用するお客様の耐障害性設計に関する主な考慮事項と責任について説明します。 |
2021-04-12 15:52:16 |
AWS |
AWS |
CloudPlex Media: Fully-Managed, Serverless Online Video Platform on AWS (Korean) |
https://www.youtube.com/watch?v=zqiNLMmEeSo
|
CloudPlex Media Fully Managed Serverless Online Video Platform on AWS Korean CloudPlex Media is a SaaS that can create publish deliver the media content efficiently the platform intuitively analyzes service usages and provides a dashboard They use Elemental Media series and AWS AI Services for video recognition and language features on media The platform was guided to build through AWS SaaS Enablement Framework Check out more resources for architecting in the AWScloud AWS |
2021-04-12 15:44:13 |
python |
Pythonタグが付けられた新着投稿 - Qiita |
BigSleepで憧れだった画家になろう! |
https://qiita.com/NGOhiroshi/items/74029052ff777ad5082f
|
百聞は一見に如かず、ということでGitHubのsampleでも書かれているfireintheskyをBigSleepに流し込んでしばらくすると以下のような画像が得られました。 |
2021-04-13 00:30:14 |
js |
JavaScriptタグが付けられた新着投稿 - Qiita |
CanvasOverlay (Leaflet 地図) |
https://qiita.com/kkdd/items/9724d4161ae87a988079
|
kkddlcanvasoverlayjs |
2021-04-13 00:48:24 |
Program |
[全てのタグ]の新着質問一覧|teratail(テラテイル) |
C++のincludepathの更新の方法がわかりません。 |
https://teratail.com/questions/332903?rss=all
|
Cのincludepathの更新の方法がわかりません。 |
2021-04-13 00:58:08 |
Program |
[全てのタグ]の新着質問一覧|teratail(テラテイル) |
[Docker] Mysql3::Error::ConnectionError: Unknown MySQL server host 'db' (-2) |
https://teratail.com/questions/332902?rss=all
|
DockerMysqlErrorConnectionErrorUnknownMySQLserverhostxdbx前提・実現したいことDockercomposenbspupの後、Dockercomposenbsprunnbspwebnbsprailsnbspdbcreateを実行しようとした時に課題のErrorが発生しました。 |
2021-04-13 00:45:32 |
Program |
[全てのタグ]の新着質問一覧|teratail(テラテイル) |
<Kotlin/Soundpool>ボタンタップ時の効果音が正しく再生されない |
https://teratail.com/questions/332901?rss=all
|
ボタンをタップすると音が鳴ることにはなるのですが、指定しているファイルファイル名tapstartwavをかなり早送りしたような音になっています。 |
2021-04-13 00:29:06 |
Program |
[全てのタグ]の新着質問一覧|teratail(テラテイル) |
自前の画像データから機械学習用のデータセットを作りたい |
https://teratail.com/questions/332900?rss=all
|
自前の画像データから機械学習用のデータセットを作りたい前提・実現したいこと自前の画像データから機械学習用のデータセットを作成し学習させたいのですが、下記エラーにより実行できません。 |
2021-04-13 00:25:28 |
Program |
[全てのタグ]の新着質問一覧|teratail(テラテイル) |
java if文について |
https://teratail.com/questions/332899?rss=all
|
cnbspnbspdiscountnbspnbsp |
2021-04-13 00:21:53 |
Program |
[全てのタグ]の新着質問一覧|teratail(テラテイル) |
【ExcelVBA】パスを指定して開いたブックの表の行数がカウントできない |
https://teratail.com/questions/332898?rss=all
|
【ExcelVBA】パスを指定して開いたブックの表の行数がカウントできない前提・実現したいことExcelVBAで、以下の要領でマクロを作成しています。 |
2021-04-13 00:18:21 |
Program |
[全てのタグ]の新着質問一覧|teratail(テラテイル) |
vueで外部から取得するiframeの状態を取得したい |
https://teratail.com/questions/332897?rss=all
|
vueで外部から取得するiframeの状態を取得したい前提・実現したいことVue初心者です。 |
2021-04-13 00:11:11 |
Program |
[全てのタグ]の新着質問一覧|teratail(テラテイル) |
HTML/CSSにて自動的に画面の大きさを測って画面の中央に配置するようにしたいです。 |
https://teratail.com/questions/332896?rss=all
|
HTMLCSSにて自動的に画面の大きさを測って画面の中央に配置するようにしたいです。 |
2021-04-13 00:03:31 |
Ruby |
Rubyタグが付けられた新着投稿 - Qiita |
【Rails6】ゲストユーザー機能の実装例 |
https://qiita.com/yamaday0u/items/0ad329ff90b6da0ecd8f
|
ltlinktoLoginasaguestusersguestloginpathmethodpostgtゲストユーザーの編集ができないようにするアクションポートフォリオを公開した時にゲストユーザーを編集可能な状態していると、イタズラを受けてしまう危険性もあるので、編集できないようにするアクションを定義します。 |
2021-04-13 00:26:37 |
Linux |
Ubuntuタグが付けられた新着投稿 - Qiita |
LinuxでもLED LightningしてPCを光らす |
https://qiita.com/yakitatata/items/786e8f6be1ffd2cc681a
|
環境OSUbuntuKernelgeneric【LED関連部品】マザボMSIMEGXACEATXPCケースNZXTHiHueコントローラーっぽいのがついているやつCPUクーラーNZXTKRAKENRLKRZHueコントローラー内蔵らしいキーボードLGGファンNZXTAerRGBファンINWINSiriusLoopASLLEDストリングケースについているのが本Hueコントローラーから出ているOpenRGBのインストールdebから入れる公式のreleasesページから最新のdeb自身のOSにあったものをDLして実行するだけ。 |
2021-04-13 00:00:26 |
Docker |
dockerタグが付けられた新着投稿 - Qiita |
Laravel カラム追加 migrationが反映されない |
https://qiita.com/ayanokobayashi103/items/4208401f6e78a9663dbc
|
Laravelカラム追加migrationが反映されないやりたいことpostsテーブルにpartというカラムを追加する。 |
2021-04-13 00:34:21 |
Git |
Gitタグが付けられた新着投稿 - Qiita |
【初心者向け】git stashまとめ |
https://qiita.com/gehnmai/items/75998b10f37b8d232a1e
|
【初心者向け】gitstashまとめgitstashがありがたい状況自分がgitstashを利用するケースは以下のつです他にも利用シーンがあればぜひコメントでこれらの状況では作業中の変更差分を一時的に退避させるgitstashコマンドが便利①今作業中のブランチとは別のブランチで急ぎで対応すべき作業が発生した。 |
2021-04-13 00:30:06 |
Ruby |
Railsタグが付けられた新着投稿 - Qiita |
【Rails6】ゲストユーザー機能の実装例 |
https://qiita.com/yamaday0u/items/0ad329ff90b6da0ecd8f
|
ltlinktoLoginasaguestusersguestloginpathmethodpostgtゲストユーザーの編集ができないようにするアクションポートフォリオを公開した時にゲストユーザーを編集可能な状態していると、イタズラを受けてしまう危険性もあるので、編集できないようにするアクションを定義します。 |
2021-04-13 00:26:37 |
海外TECH |
DEV Community |
Prevent others sending emails using your domain name |
https://dev.to/xcs/prevent-others-sending-emails-using-your-domain-name-9en
|
Prevent others sending emails using your domain name Prevent others sending emails using your domain nameYesterday a user contacted me on Twitter saying that she has received a scam email sent from an email address originating from my domain usertrack net You might know that anyone can set any address in the from field when sending an email I thought there was nothing I could do about it but upon looking deeper into it I realized that some of my email settings were wrong which might allow attackers to send spoofed emails on my behalf I did have DMARC setup but my SPF and DKIM records were invalid After looking into it I realized that there s a lot more to learn about it than I thought so here s a summary of what I learned What should you do Correctly setup DMARC There are some email security policies that can be set at the DNS level You can specifically allow only some IP addresses usually your email server or domains to send emails on your domain s behalf I do think those policies are mostly just a suggestion that tells other email servers and email clients to mark an email as spam or not send it if the authentication checks are failing That being said most popular email clients should do a pretty good job of blocking emails that don t respect those policies Add those email policies to your DNS TXT recordsThe DMARC SPF and DKIM policies DMARC Domain based Message Authentication Reporting and ConformanceUseful for receiving reports about who is sending emails using your domain name This also enables you to specify what to do with the emails that are not originating from allowed sources do nothing flag them or reject them Here is what DNS record I had added TXT recordName dmarcValue v DMARC p reject rua mailto reports usertrack net v Version should be DMARCp Policy can be none quarantine and reject Reject is recommended once you know your other policies are setup correctly so the spoofed email won t be delivered rua Reporting URI s for aggregate data Where to send reports that mail services generate about who tried to send emails from your domain SPF Sender Policy FrameworkWith SPF you can say who is allowed to send emails using your domain name This is the value I used TXT recordName Value v spf mx ip include websitewelcome com include servers mcsv net allv Version should be spf mx Allow emails for all domains mentioned in the MX records of this domain ip Allow emails sent from this IP address this was the address of my mail server hosted on HostGator include websitewelcome com Allow emails sent from this domain it s the mail server domain of HostGator include servers mcsv net MailChimp I use them to send newsletters from someemail usertrack net all If none of the previous rules are met deny all other emails All those rules are tested left to right and means allow means reject and there is also which is like a soft reject maybe mark as spam or something like that DKIM DomainKeys Identified MailUsing DKIM all emails sent will be digitally signed using a private key and the DNS record provides a public key to test if the emails are correctly signed If there is a missmatch the DKIM policy will fail and the email won t be sent or marked as spam My DKIM record looks something like this TXT recordName default domainkeyValue v DKIM k rsa p MIIBIjANBgkqhkiGwB very long key AB v Version should be DKIMk Key type encryption algorithm usedp Public keyI got my DKIM TXT record value from Hostgator gt cPanel gt Email Authentication my email server provider but I had some issues making it valid as their TXT record had a limited number of characters and showed my public key p as two distinct strings that I had to manually remove the quotes around and merge concatenate them together Some tools that I usedTo test if the policies are correct the tools I found more useful are MXToolBox Email Deliverability mxtoolbox com deliverabilityThis allows you to test if your DMARC policies are correctMailTester SPF and DKIM Checker mail tester com spf dkim checkQuickly test if your SPF and DKIM records are valid strings I hope that by fixing my email authentication on my domains it will be a lot less likely for phishing emails to be sent using my domain names I hope you found this post useful I tried to make this as concise as possible and provide examples as I spent several hours trying to understand all those policies and how to set them up having a hard time finding a TL DR on how to quickly setting up email authentication |
2021-04-12 15:49:44 |
海外TECH |
DEV Community |
Top 10 VSCode Extensions as a Web Developer |
https://dev.to/pawanbhayde/top-10-vscode-extensions-as-a-web-developer-35bd
|
Top VSCode Extensions as a Web DeveloperVSCode or Visual Studio Code is the most popular editor for web development in One of VSCode s most popular features is its extensions Every month people from around the world build open source extensions to help with the VSCode experience I will show you my favourite VSCode extensions for web development Installing VSCode and VSCode ExtensionsIn order to use VSCode s extensions you need to download it You can download it here To install extensions click on the extension s icon shown below and type in the extension Once found click install to install the extension to VSCode PrettierHere it is My favourite VSCode extension for web development Prettier is a lifesaver when it comes to formatting and productivity Prettier formats your files on a save once you configure it in your settings Instead of spending hours a day making your code look clean use Prettier This extension is by far the most popular on the list with over downloads at the time of writing this article This is why Prettier is my favourite VSCode extension for web development Auto Rename TagAuto rename tag is an extension which changes both tags when one is changed example above Once again I love this extension because of its JSX support This extension is one which will improve your productivity noticeably Git LensGit lens git with superpowers This extension is the best one for git and GitHub Know who contributed each line seamlessly navigate and explore git repositories and perform powerful comparisons and so much more This is a must have if you work with git and GitHub Live ServerThis is the easiest way to get a server up and running in seconds On a click of a button your site is up and running locally The benefits of using this instead of putting your index html file on Google is that every time you save your file the changes are directly implemented in front of your eyes no reloading necessary HTML SnippetsThis extension allows you to type something like div container and get This extension allows you to write HTML super quickly The main reason why I like this extension so much is its JSX support I m a React dev and this makes me much more productive Material Theme amp Material Icon ThemeThis extension gives you amazing icons for your files and a wonderful theme My favourite theme in Material theme is the palenight theme that s a lot of themes These two extensions our my favourite when it comes to design themes in VSCode Bracket Pair Colorizer This extension gives the same colour to matching brackets and parenthesis This extension prevents you from taking too long looking for the correct closing bracket This is a must have if you are using a language which uses brackets and not indentation sorry python users Import CostThis extension provides the import cost as the name suggests next to every module package you import It s very important to know if you are optimizing your imports and dependencies so that you can ensure the fastest and most efficient experience for your users This extension works well with ES import and ES and below require syntax Error LensError Lens is an extension which shows your errors on the lines where they are present example above This extension is a lifesaver when looking for the small bug which crashes your whole application Additionally this extension is extremely customizable which enables you to change things like colours fonts font size excluding some errors and much more Better CommentsBetter comments is an extension which will help improve your code by commenting by alerts information TODOs questions and more This is just an overall great extension to make your code more readable and have comments be sorted neatly ClosingI hope you got some new VSCode extensions to download Let me know if I missed out on any in the comments Pawan |
2021-04-12 15:40:47 |
海外TECH |
DEV Community |
HAProxy Basic Login Authentication |
https://dev.to/vumdao/haproxy-basic-login-authentication-48l2
|
HAProxy Basic Login Authentication In haproxy config there is no limit to the number of http request statements per instance so we can add the rules to request basic login to the site but whitelist specials IPs Setup HAProxy config which contains basic login to access the dashboard and allow access for special resource IPGenerate haproxy encrypted passwordprintf thepassword mkpasswd stdin method sha Modify haproxy cfg which allow access for requests from source but requires login for othersuserlist AuthUsers user haproxyreport password VeorKXxvgRseQ VBkOPCYenWZsas CXIifFPHDknXXXXXXXXXfrontend fe verify bind ssl crt etc certs acl haproxy report hdr host haproxy report cloudopz co http request set header X Forwarded Proto https if ssl fc use backend haproxy report backend if haproxy report haproxy report backendbackend haproxy report backend acl authorized http auth AuthUsers acl nagios src http request allow if nagios http request auth realm haproxyreport if authorized server haproxy report More about haproxyHow To Set HTTP Request Header In HaproxyHow To Block IP Addresses In HAProxyHAProxy With Resolvers In Case Of AWS Application LoadBalancerUse GoAccess To Analyze HAProxy LogsReference Blog · Github · Web · Linkedin · Group · Page · Twitter |
2021-04-12 15:19:25 |
海外TECH |
DEV Community |
Creating a Haskell Application Using Reflex. Part 2 |
https://dev.to/typeable/creating-a-haskell-application-using-reflex-part-2-4jaa
|
Creating a Haskell Application Using Reflex Part Author Nikita AnisimovPart Hi there Let s continue with our series of tutorials devoted to the development of Reflex based web applications In this part we ll add the ability to carry out various manipulations on the task list Operations on TodoLet s make it possible to tick the tasks off as completed as well as edit and delete them First of all we extend the Todo type by adding the state If the task is not completed you can edit it data TodoState TodoDone TodoActive stateEdit Bool deriving Generic Eq Show data Todo Todo todoText Text todoState TodoState deriving Generic Eq Show newTodo Text gt TodonewTodo todoText Todo todoState TodoActive False After that we define the events occurring in the system In our business projects we used two approaches to this end The first approach implies enumerating all possible events as individual constructors and implementing the handler function that will update the state depending on the occurred event data TodoEvent NewTodo Todo ToggleTodo Int StartEditTodo Int FinishEditTodo Text Int DeleteTodo Int deriving Generic Eq Show The advantages of this approach include the ability to see what event specifically is taking place in the system and the update it s carrying all this is done by the traceEvent function Nevertheless it s not always possible to use the advantages especially when the event carries a lot of data which is eventually hard to analyze If you still need to see the values change the events change Dynamic in any case and you can also trace its value using the function traceDyn The second approach is to use the update functions represented as the monoid Endo roughly speaking this is an abstraction of the functions whose argument and result types coincide The essence of this approach is that the value carried by the update event is the function that defines the update logic itself In this case we lose the ability to display the event value as it turns out this ability is not always useful but the obvious advantage is that you don t need to have access to the current status create the type including all possible events which can be quite numerous or define an individual handler to update the state according to the received event In this tutorial we will use the second approach Let s change the structure of the root widget rootWidget MonadWidget t m gt m rootWidget divClass container do elClass h text center mt text Todos newTodoEv lt newTodoForm rec todosDyn lt foldDyn appEndo mempty leftmost newTodoEv todoEv delimiter todoEv lt todoListWidget todosDyn blankWhat we see here in the first place is the use of the RecursiveDo extension so you need to enable it This is one of the most widespread practices in the development of reflex applications because the situations when the event occurring at the bottom of the page affects the elements at the top of the page happen pretty often In this case the event todoEv is used to define todosDyn while todosDyn in its turn is the argument for the widget the todoEv event comes from After that we see the update of the foldDyn function parameters Here the new function leftmost is used It accepts the events list and returns the event occurring at the moment when any of the events from the events list occurs If two events from the list occur at a given moment the leftmost event will be returned hence the name The task list is not a list now but IntMap for the sake of simplicity we ll use type Todos IntMap Todo In the first place this is done to allow us to access an element directly by the identifier appEndo is used to update the list If we defined each event as an individual constructor we d have also had to define the handler function which would look approximately as follows updateTodo TodoEvent gt Todos gt TodosupdateTodo ev todos case ev of NewTodo todo gt nextKey todos todo lt gt todos ToggleTodo ix gt update Just toggleTodo ix todos StartEditTodo ix gt update Just startEdit ix todos FinishEditTodo v ix gt update Just finishEdit v ix todos DeleteTodo ix gt delete ix todosThough it s not necessary to define this function we are using several other auxiliary functions here which we ll need further anyway startEdit Todo gt TodostartEdit todo todo todoState TodoActive True finishEdit Text gt Todo gt TodofinishEdit val todo todo todoState TodoActive False todoText val toggleTodo Todo gt TodotoggleTodo Todo Todo todoState toggleState todoState where toggleState case TodoDone gt TodoActive False TodoActive gt TodoDonenextKey IntMap Todo gt IntnextKey maybe succ fst fst maxViewWithKeyThe function adding a new element has also changed and now returns the event not the task itself Let s also add the field cleanup after the new task is added newTodoForm MonadWidget t m gt m Event t Endo Todos newTodoForm rowWrapper el form divClass input group mdo iEl lt inputElement def amp initialAttributes type text lt gt class form control lt gt placeholder Todo amp inputElementConfig setValue lt btnEv let addNewTodo todo gt Endo todos gt insert nextKey todos newTodo todo todos newTodoDyn addNewTodo lt gt value iEl btnAttr class btn btn outline secondary lt gt type button btnEl lt divClass input group append elAttr button btnAttr text Add new entry let btnEv domEvent Click btnEl pure tagPromptlyDyn newTodoDyn domEvent Click btnElFunction todoListWidget now returns the task change It has slightly changed too todoListWidget MonadWidget t m gt Dynamic t Todos gt m Event t Endo Todos todoListWidget todosDyn rowWrapper do evs lt listWithKey M fromAscList IM toAscList lt gt todosDyn todoWidget pure switchDyn leftmost M elems lt gt evsThe first thing we notice is that the simpleList function is replaced with listWithKey They differ from each other in the type of the first parameter the first function accepts the list the second one accepts Map The list will be sorted by the key Here the returned value is important Each task returns an event deletion change In our specific case the listWithKey function will look as follows listWithKey MonadWidget t m gt Dynamic t Map Int Todo gt Int gt Dynamic t Todo gt m Event t TodoEvent gt m Dynamic t Map Int TodoEvent Note this function is a part of the reflex package and has a more complex type Here we show the specialized type Here we are using the familiar leftmost function for all Map values The expression leftmost elems lt gt evs is of the following type Dynamic t Event t TodoEvent We use function switchDyn to retrieve the Event from the Dynamic This function operates in the following way it returns the event occurring when the internal event takes place If the Dynamic and Event occur simultaneously the previous Event will be returned until the event in the Dynamic is updated The function switchPromtlyDyn operates differently if the Dynamic update occurrence of the event existing before the Dynamic update and triggering of the event now containing the Dynamic take place simultaneously the new event containing the Dynamic will be returned If this situation is not possible it s always better to use the switchDyn because the switchPromtlyDyn function is more complex performs additional operations and moreover can create cycles The task has acquired different states which is why the function representing one task has also changed todoWidget MonadWidget t m gt Int gt Dynamic t Todo gt m Event t Endo Todos todoWidget ix todoDyn do todoEvEv lt dyn ffor todoDyn td Todo gt case todoState of TodoDone gt todoDone ix todoText TodoActive False gt todoActive ix todoText TodoActive True gt todoEditable ix todoText switchHold never todoEvEvHere we re using the new function dyn It has the following type dyn Adjustable t m NotReady t m PostBuild t m gt Dynamic t m a gt m Event t a It accepts the widget wrapped in the Dynamic as the input parameter This means that each update of the Dynamic will be followed by the DOM update The output value is the event carrying the value the widget returns In our case the specialized type will look as follows dyn MonadWidget t m gt Dynamic t m Event t Endo Todos gt m Event t Event t Endo Todos Here we come across an event nested into another event Two functions from the reflex package can perform operations on such type coincidence and switchHold The first function returns the event occurring only when the external and internal events occur simultaneously That s not our case Function switchHold is of the following type switchHold Reflex t MonadHold t m gt Event t a gt Event t Event t a gt m Event t This function switches to the new event each time the external event occurs The event passed as the first parameter will hold until the external event occurs for the first time This is exactly the way we re using this function in our example No event can come from the list until the list is changed for the first time so we use the never event As the name implies this is a special event that never occurs Function todoWidget uses different widgets for different states todoActive MonadWidget t m gt Int gt Text gt m Event t Endo Todos todoActive ix todoText divClass d flex border bottom do divClass p flex grow my auto text todoText divClass p btn group do doneEl lt elAttr button class btn btn outline secondary lt gt type button text Done editEl lt elAttr button class btn btn outline secondary lt gt type button text Edit delEl lt elAttr button class btn btn outline secondary lt gt type button text Drop pure Endo lt gt leftmost update Just toggleTodo ix lt domEvent Click doneEl update Just startEdit ix lt domEvent Click editEl delete ix lt domEvent Click delEl todoDone MonadWidget t m gt Int gt Text gt m Event t Endo Todos todoDone ix todoText divClass d flex border bottom do divClass p flex grow my auto el del text todoText divClass p btn group do doneEl lt elAttr button class btn btn outline secondary lt gt type button text Undo delEl lt elAttr button class btn btn outline secondary lt gt type button text Drop pure Endo lt gt leftmost update Just toggleTodo ix lt domEvent Click doneEl delete ix lt domEvent Click delEl todoEditable MonadWidget t m gt Int gt Text gt m Event t Endo Todos todoEditable ix todoText divClass d flex border bottom do updTodoDyn lt divClass p flex grow my auto editTodoForm todoText divClass p btn group do doneEl lt elAttr button class btn btn outline secondary lt gt type button text Finish edit let updTodos todo gt Endo update Just finishEdit todo ix pure tagPromptlyDyn updTodos lt gt updTodoDyn domEvent Click doneEl editTodoForm MonadWidget t m gt Text gt m Dynamic t Text editTodoForm todo do editIEl lt inputElement def amp initialAttributes type text lt gt class form control lt gt placeholder Todo amp inputElementConfig initialValue todo pure value editIElAll functions used here were described before so we won t go into detail explaining each individual function OptimizationLet s get back to the listWithKey function listWithKey MonadWidget t m gt Dynamic t Map Int Todo gt Int gt Dynamic t Todo gt m Event t TodoEvent gt m Dynamic t Map Int TodoEvent The function operates in such a way that any update of the transmitted Dynamic will initiate the update of each individual element Even if we say change a single element the update will be passed to each element though it won t change the value Now let s get back to the todoWidget function todoWidget MonadWidget t m gt Int gt Dynamic t Todo gt m Event t Endo Todos todoWidget ix todoDyn do todoEvEv lt dyn ffor todoDyn td Todo gt case todoState of TodoDone gt todoDone ix todoText TodoActive False gt todoActive ix todoText TodoActive True gt todoEditable ix todoText switchHold never todoEvEvAs you remember the dyn function updates the DOM every time the todoDyn is updated Considering that the change in one element of the list is passed to each element individually it turns out that the entire DOM section which displays our tasks will be rebuilt you can check this using the developer panel in the browser Obviously this is not what we want This is when the holdUniqDyn function comes to the rescue todoWidget MonadWidget t m gt Int gt Dynamic t Todo gt m Event t TodoEvent todoWidget ix todoDyn do todoDyn lt holdUniqDyn todoDyn todoEvEv lt dyn ffor todoDyn td Todo gt case todoState of TodoDone gt todoDone ix td TodoActive False gt todoActive ix td TodoActive True gt todoEditable ix td switchHold never todoEvEvWe ve added the line todoDyn lt holdUniqDyn todoDyn What s going on here The matter is that though the Dynamic operates the value it contains remains unchanged Function holdUniqDyn works just this way so that if the Dynamic passed to it operates and hasn t changed its value the output Dynamic won t operate and consequently in our case the DOM won t be rebuilt unnecessarily The result we obtained can be viewed in our repository In the next part we ll consider another way of managing the events and the use of the GHCJS DOM library |
2021-04-12 15:13:09 |
海外TECH |
DEV Community |
Two ways to keep gitlab CI files maintainable |
https://dev.to/lek890/two-ways-to-keep-gitlab-ci-files-maintainable-26de
|
Two ways to keep gitlab CI files maintainableOnce we had a gitlab CI file It was short and sweet One year later it grew lines long There were these problems Too much content too much scrolling hard to work on Hard to disable some jobs temporarily mostly for debugging infra or test environment or emergency deployment let that never happen Let s try to solve it with some features from gitlab Leverage templatingGitlab CI supports using templates within the gitlab ci yml file Consider a sample gitlab ci yml file as followsstages setup soft qa lint and unit tests build hard qa ee s deploy storybook pack notify devs staging can be deployed deploy staging notify devs prod can be deployed deploy production suggest release notesvariables var and so onconditions only master configs branches configs and more cache related configs setup related configs jobs for each for the stages start lines later jobs endI will still keep the stages in the gitlab ci yml untouched so that I can get a preview of all the stages right at the start of the file Let s now split this into smaller templates For templates I will create a folder in the repo root called ci templates Now let s extract out one job from the main file and place it in a template in this folder Note all these files has to YAML to be included into a gitlab ci yml file ci templates soft qa ymlsoft qa image node stage soft qa lt lt npm cache pull allow failure false script yarn lint yarn test unit ci artifacts paths coverage lcov infoTime to use the template Go to gitlab ci yml and include this file like below I will place it at the position of the replaced job include ci templates soft qa yml We are using this syntax with relative path as we are using the file from the same repo You can keep the file in another repo on the same gitlab instance or even in a public remote repository and use it Just look up the syntax and update accordingly like below For another repo include project my space my another project file templates build template yml For remote include remote In a similar way extract out other jobs as well and remove them from the gitlab ci file I have abstracted the notify stages to a file called notifications yml and deployment related jobs to deploy yml thus separating the concerns from one single file Now include becomes a list like below include ci templates soft qa yml ci templates build yml ci templates hard qa yml ci templates deploy storybook yml When pipeline starts all included files are evaluated and deep merged into the gitlab ci file Catch Catch CatchThings are getting interesting I have certain conditions like only tag only branches in these jobs How would I provide them to these files without duplicating it in every files Enter extends I will consolidate my conditions in a file say conditions yml ci templates conditions yml only tag only v d d d and more To use it in a template include it first in the gitlab ci fileinclude ci templates conditions yml ci templates soft qa yml ci templates build yml ci templates hard qa yml ci templates deploy storybook yml Then in the template file add extend Extend is a way of extending the congfigurations to another file YAML anchors can be used but only from the same file So this is a way to use jobs from another template deploy staging extends only tag lt lt deployNow deploy staging will be created only for tags Finally the gitlab ci file will look something like stages setup soft qa lint and unit tests build hard qa ee s deploy storybook pack notify devs staging can be deployed deploy staging notify devs prod can be deployed deploy production suggest release notesvariables var and so on cache related configs setup related configsinclude ci templates conditions yml ci templates soft qa yml ci templates build yml ci templates hard qa yml ci templates deploy storybook yml ci templates pack yml ci templates notifications yml ci templates deploy yml ci templates suggest release notes yml Now let s go back to the initial problems and check whether they are fixed Too much content to scroll now we can view whole content in the IDE window FixedHard to disable jobs now we just have to comment the template in the include list FixedHow will I know if I commented out a required job Like by mistake I commented the pack job For deployment packed resources are necessary Here we will know that the deployment failed much later when the deployment runs To solve this there is a way to mark dependencies on previous jobs That is explained in next step Use needs or dependencies as applicableOne way to track that you have the dependent artifacts are available before starting a job is by using dependencies or needs keyword By default all artifacts from previous stages are passed to each job However you can use the dependencies keyword to define a limited list of jobs to fetch artifacts from build frontend stage build script yarn builddeploy stage deployment dependencies build frontendIn this case if the build frontend is not available while merging the templates the pipeline will report error that the build frontend is not available Easy to understand Another utility is the needs It is mainly used when you are running jobs out of order and still ensure that the dependency job is completed before starting a job The difference of needs from dependencies is that in needs no artifacts from previous steps are downloaded by default You need to use artifacts true config on the job like below to download them deploy needs job build artifacts true job build artifacts falseThis helped me reduce the complexity of the CI file Hope it helps you too Peace ️ |
2021-04-12 15:07:54 |
海外TECH |
DEV Community |
Basic mail merge script for Gmail (using Google Apps Script) |
https://dev.to/frenchcooc/basic-mail-merge-script-for-gmail-using-google-apps-script-4ok4
|
Basic mail merge script for Gmail using Google Apps Script Sending mass emails from Gmail is sometimes seen as a challenge I can tell you it s not In this article we ll look at the basics of building a mail merge script for Gmail and how it can fit your email marketing needs First here s what you need to send emails in bulk with Gmail a Gmail or Google Workspace accounta list of contactsa template of the emails you want to sendbasic development skillsNow let s see the steps to reproduce to create your Google script to send emails Tutorial Building a mail merge script for GmailOpen Google Apps ScriptClick on the New project button to create a new project You should now see the script editor From the editor copy and paste the following script Update the recipients variable with your list of recipients Also update the template subject and content to make it fit your needsClick on Save to save your changesThen click on ️Run to send your emails Note the first time you use this script it will ask for the permission to send emails on your behalf Then it won t ask you again Emails are usually immediately delivered but sometimes it takes a few seconds Check your Sent folder in Gmail to confirm that all emails have been sent As you will see all your recipients receive a unique email sent from your email address You don t need to use bcc or any other techniques ConclusionSome say that it s impossible to send emails in bulk with Gmail It s totally untrue Of course this is a very basic macro for Google Sheets to send lots of emails with Gmail You might need to adapt it a little bit more but thanks to Google Apps Script you can do lot of things Before you go here are two things to keep in mind when using Gmail as an email marketing tool Be sure to abide by Gmail bulk senders guidelines Especially note that you are limited to send a reasonable amount of emails per day If you have a gmail com email address you can send at most emails day while with a Google Workspace account you sending limit hits emails per day That s probably well enough for of Gmail users but it s good to have in mind those limits If you are looking for more a advanced script for example that let you send personalized emails e g Hi firstname I d recommend you to use a Gmail mail merge tool such a Mailmeteor that does it for you It already handles personalization as well as dozens of features from attachments to aliases Learn more about the features and benefits of Mailmeteor here This article is part of an extended guide on Mail merge in Gmail If you want to learn much more go check it out |
2021-04-12 15:04:32 |
Apple |
AppleInsider - Frontpage News |
Apple Stores in UK reopen, as coronavirus lockdown eases |
https://appleinsider.com/articles/21/04/12/apple-stores-in-uk-reopen-as-coronavirus-lockdown-eases
|
Apple Stores in UK reopen as coronavirus lockdown easesAll Apple Stores in the UK are now open following the easing of coronavirus lockdown restrictions in England and Wales Apple White City in LondonAs all Apple Stores in France remain closed over COVID lockdown restrictions the UK s stores are now open It follows the easing of restrictions put in place in England and Wales which began in January Read more |
2021-04-12 15:37:07 |
Apple |
AppleInsider - Frontpage News |
App Store economy in Canada now supports 243,000 jobs, up 18% |
https://appleinsider.com/articles/21/04/12/apple-highlights-app-store-economy-in-canada-during-the-pandemic
|
App Store economy in Canada now supports jobs up Apple says that the App Store now supports more than jobs in Canada an increase of year over year adding that the marketplace has become a resilient source of opportunity Credit AppleThe Cupertino tech giant on Monday highlighted the App Store as an engine of economic growth in Canada particularly during the global health crisis Apple says that developers have generated more than billion CAD in total earnings growing year over year in Read more |
2021-04-12 15:38:21 |
Apple |
AppleInsider - Frontpage News |
Pro Display XDR marketing drops 'far beyond HDR' label in UK |
https://appleinsider.com/articles/21/04/12/apple-drops-far-beyond-hdr-claim-for-uk-pro-display-xdr-marketing
|
Pro Display XDR marketing drops x far beyond HDR x label in UKApple has changed how it markets the Pro Display XDR in the United Kingdom following complaints to an advertising regulator with it no longer using the words Far beyond HDR to describe the screen Apple s Pro Display XDR is an impressively powerful monitor capable of displaying HDR content as well as Dolby Vision and HLG playback While Apple routinely proclaims the display s virtues it s had to modify its messaging in the United Kingdom at least Following complaints made to the Advertising Standards Authority Apple has updated its website to remove the phrase Far beyond HDR from descriptions of the Pro Display XDR The second paragraph on the page eliminates the terms from the final statement which previously read Far beyond HDR it s Extreme Dynamic Range XDR Read more |
2021-04-12 15:39:22 |
Apple |
AppleInsider - Frontpage News |
Apple TV+ launches new 'Mythic Quest' season 2 trailer |
https://appleinsider.com/articles/21/04/12/apple-tv-launches-new-mythic-quest-season-2-trailer
|
Apple TV launches new x Mythic Quest x season trailerContinuing its build up to the May premiere of hit comedy Mythic Quest Apple TV has released a new two minute trailer Charlotte Nicdao and Rob McElhenney in Mythic Quest season two on Apple TV Apple has already released a teaser video a Testers promo and even a special bonus episode Now though Apple TV has unveiled the official trailer for season two of Mythic Quest Read more |
2021-04-12 15:07:10 |
Apple |
AppleInsider - Frontpage News |
Former iPod, Apple Music creative director joins Impossible Foods |
https://appleinsider.com/articles/21/04/12/former-ipod-apple-music-creative-director-joins-impossible-foods
|
Former iPod Apple Music creative director joins Impossible FoodsSteve Turner formerly an Apple Creative Director who worked with Steve Jobs on launching the iPod and iPhone has joined Impossible Foods as Chief Experience Officer Steve Turner source Impossible Foods Impossible Foods maker of plant based meat substitutes like the Impossible Burger has hired former Apple executive Steve Turner to a new position of Creative Experience Officer Turner will oversee marketing for the sustainable food system company Read more |
2021-04-12 15:10:18 |
海外TECH |
Engadget |
Uber says March was its biggest month ever |
https://www.engadget.com/uber-march-2021-rider-bookings-record-154447690.html
|
Uber says March was its biggest month everAccording to The Wall Street Journal Uber had a record March with gross bookings hitting their highest ever level in the company s history Uber also said that demand has recovered faster than driver availability ーsomething that means you might be paying a surge price or waiting a little bit for a car when you need one |
2021-04-12 15:44:47 |
海外TECH |
Engadget |
GM's Cruise will operate a robotaxi service in Dubai |
https://www.engadget.com/cruise-self-driving-taxi-dubai-150322039.html
|
GM x s Cruise will operate a robotaxi service in DubaiCruise has struck a deal to operate a robotaxi service in Dubai in ーthe first time it will offer commercial self driving service outside of the US |
2021-04-12 15:28:22 |
海外TECH |
Engadget |
Uber, PayPal and Walgreens set up a Vaccine Access Fund |
https://www.engadget.com/uber-paypal-walgreens-vaccine-access-fund-donations-150056875.html
|
sites |
2021-04-12 15:00:56 |
ラズパイ |
Raspberry Pi |
Edge Impulse and TinyML on Raspberry Pi |
https://www.raspberrypi.org/blog/edge-impulse-and-tinyml-on-raspberry-pi/
|
Edge Impulse and TinyML on Raspberry PiRaspberry Pi is probably the most affordable way to get started with embedded machine learning The inferencing performance we see with Raspberry Pi is comparable to or better than some of the new accelerator hardware but your overall hardware cost is just that much lower However training custom models on Raspberry Pi ーor any The post Edge Impulse and TinyML on Raspberry Pi appeared first on Raspberry Pi |
2021-04-12 15:30:55 |
Cisco |
Cisco Blog |
Hannover Messe 2021: The Journey to Industry 4.0 |
https://blogs.cisco.com/manufacturing/hannover-messe-2021-the-journey-to-industry-4-0
|
Hannover Messe The Journey to Industry There s an adage in the world of race car drivers the car goes where the eyes go They don t focus on the immediate obstacle or the driver next to them Being clear eyed about where you want to go gives you the visibility you need to circumvent any challenge that may arise The same mindset can |
2021-04-12 15:04:26 |
Cisco |
Cisco Blog |
Environmental impact in Cisco’s supply chain |
https://blogs.cisco.com/csr/environmental-impact-in-ciscos-supply-chain
|
inclusive |
2021-04-12 15:00:45 |
海外科学 |
BBC News - Science & Environment |
France moves to ban short-haul domestic flights |
https://www.bbc.co.uk/news/world-europe-56716708
|
domestic |
2021-04-12 15:04:03 |
金融 |
RSS FILE - 日本証券業協会 |
J-IRISS |
https://www.jsda.or.jp/anshin/j-iriss/index.html
|
iriss |
2021-04-12 15:33:00 |
金融 |
金融庁ホームページ |
金融事業者における顧客本位の業務運営のさらなる浸透・定着に向けた取組みについて公表しました。 |
https://www.fsa.go.jp/news/r2/kokyakuhoni/202104/fd_2021.html
|
金融事業 |
2021-04-12 16:00:00 |
金融 |
生命保険おすすめ比較ニュースアンテナ waiwainews |
今年初、福岡へ!せっかく行くなら地元の方に「声かけ」しましょう! |
http://seiho.waiwainews.net/view/12291
|
newsallrightsreserved |
2021-04-13 00:16:48 |
金融 |
生命保険おすすめ比較ニュースアンテナ waiwainews |
2021年4月度小金井書道教室 |
http://seiho.waiwainews.net/view/12289
|
newsallrightsreserved |
2021-04-13 00:16:47 |
ニュース |
ジェトロ ビジネスニュース(通商弘報) |
3月の自動車生産・輸出・販売、大幅な伸びを記録 |
https://www.jetro.go.jp/biznews/2021/04/89039505969761cd.html
|
輸出 |
2021-04-12 15:40:00 |
ニュース |
ジェトロ ビジネスニュース(通商弘報) |
カナダの1月のGDPは前月比0.7%増、9カ月連続で増加 |
https://www.jetro.go.jp/biznews/2021/04/a1890f790f79885a.html
|
連続 |
2021-04-12 15:30:00 |
ニュース |
ジェトロ ビジネスニュース(通商弘報) |
欧州自由貿易連合との包括的経済連携協定、批准へ前進 |
https://www.jetro.go.jp/biznews/2021/04/78af4c749670d9e0.html
|
欧州自由貿易連合 |
2021-04-12 15:20:00 |
ニュース |
ジェトロ ビジネスニュース(通商弘報) |
小鵬汽車、武漢工場建設プロジェクトに調印 |
https://www.jetro.go.jp/biznews/2021/04/cfb28d70e177e976.html
|
汽車 |
2021-04-12 15:10:00 |
海外ニュース |
Japan Times latest articles |
After delay, Japan begins COVID-19 vaccinations for older people |
https://www.japantimes.co.jp/news/2021/04/12/national/coronavirus-japan-vaccines-elderly/
|
centers |
2021-04-13 00:03:55 |
海外ニュース |
Japan Times latest articles |
Hideki Matsuyama wins Masters to become first Japanese man to claim major title |
https://www.japantimes.co.jp/sports/2021/04/12/more-sports/golf/matsuyama-wins-masters/
|
Hideki Matsuyama wins Masters to become first Japanese man to claim major titleMatsuyama survived some late slip ups and a determined challenge down the back nine from Xander Schauffele who finished under to claim the iconic green jacket |
2021-04-13 00:14:05 |
海外ニュース |
Japan Times latest articles |
A new Syria process cuts out Iran to bring in Gulf Arabs |
https://www.japantimes.co.jp/opinion/2021/04/12/commentary/world-commentary/syria-iran-russia-turkey-civil-war/
|
A new Syria process cuts out Iran to bring in Gulf ArabsThe goal it would appear is to pave the way for broader Gulf Arab re engagement with Syria and a concomitant marginalization of Iranian influence |
2021-04-13 02:00:33 |
ニュース |
BBC News - Home |
Prince Philip: William and Harry pay tribute to grandfather |
https://www.bbc.co.uk/news/uk-56721559
|
harry |
2021-04-12 15:41:21 |
ニュース |
BBC News - Home |
Covid lockdown eases: 'Sense of celebration' as pubs and shops reopen |
https://www.bbc.co.uk/news/uk-56710858
|
rules |
2021-04-12 15:18:30 |
ニュース |
BBC News - Home |
Baroness Shirley Williams: Former cabinet minister dies aged 90 |
https://www.bbc.co.uk/news/uk-politics-56720985
|
baroness |
2021-04-12 15:55:48 |
ニュース |
BBC News - Home |
Covid: Asthma drug 'speeds up recovery at home' |
https://www.bbc.co.uk/news/health-56717486
|
england |
2021-04-12 15:30:48 |
ニュース |
BBC News - Home |
Manchester Arena Inquiry: Mum noticed 'odd' bomber before blast |
https://www.bbc.co.uk/news/uk-england-manchester-56720975
|
arena |
2021-04-12 15:39:46 |
ニュース |
BBC News - Home |
Shirley Williams: Pioneer who tried to reshape politics |
https://www.bbc.co.uk/news/uk-10258493
|
cabinet |
2021-04-12 15:06:16 |
ニュース |
BBC News - Home |
What are the rules for weddings and can I hold a reception? |
https://www.bbc.co.uk/news/explainers-52811509
|
wedding |
2021-04-12 15:40:07 |
ニュース |
BBC News - Home |
Prince Philip: How can Prince Harry attend the funeral? |
https://www.bbc.co.uk/news/uk-56709506
|
duties |
2021-04-12 15:45:54 |
仮想通貨 |
BITPRESS(ビットプレス) |
[techcrunch] もしものときにNFTや暗号資産を失わないようにする方法 |
https://bitpress.jp/count2/3_9_12418
|
techcrunch |
2021-04-13 00:27:47 |
仮想通貨 |
BITPRESS(ビットプレス) |
[Bloomberg] ビットコイン、過去最高値に迫る-米最大の交換業者が14日上場 |
https://bitpress.jp/count2/3_9_12417
|
bloomberg |
2021-04-13 00:24:55 |
コメント
コメントを投稿