IT |
InfoQ |
Presentation: Microservices Retrospective – What We Learned (and Didn’t Learn) From Netflix |
https://www.infoq.com/presentations/microservices-netflix-industry/?utm_campaign=infoq_content&utm_source=infoq&utm_medium=feed&utm_term=global
|
Presentation Microservices Retrospective What We Learned and Didn t Learn From NetflixAdrian Cockcroft does a retrospective on microservices what they set out to do at Netflix how it worked out and how things have subsequently permeated across the industry By Adrian Cockcroft |
2023-07-28 08:19:00 |
IT |
ITmedia 総合記事一覧 |
[ITmedia News] 「銅製のHHKB」、公式X(Twitter)で披露 コンセプトモデルで販売はせず |
https://www.itmedia.co.jp/news/articles/2307/28/news159.html
|
happyhackingkeyboard |
2023-07-28 17:29:00 |
python |
Pythonタグが付けられた新着投稿 - Qiita |
【ChatGPTに聞く】PythonでOpenAI API使って質問に返答できる簡単なアプリを作成してみた |
https://qiita.com/ryou110216/items/a8e9521bb9821f4f7925
|
chatgpt |
2023-07-28 17:49:36 |
js |
JavaScriptタグが付けられた新着投稿 - Qiita |
Reactで画像アップロード機能を作成する |
https://qiita.com/shin0909/items/5e73fe40169c982032f8
|
react |
2023-07-28 17:50:26 |
Azure |
Azureタグが付けられた新着投稿 - Qiita |
Dapr と Express と Spring Boot でマイクロサービスを構成する:Azure 編 |
https://qiita.com/fsdg-adachi_h/items/0609130d905a46acd546
|
azure |
2023-07-28 17:53:34 |
技術ブログ |
Developers.IO |
【アップデート情報】 BigQueryで主キーと外部キーが正式にサポートされるようになりました |
https://dev.classmethod.jp/articles/bigquery-primary-foreign-key/
|
bigquery |
2023-07-28 08:15:39 |
海外TECH |
DEV Community |
Implementing OAuth 2.0 social login with Facebook: A comprehensive guide |
https://dev.to/hackmamba/implementing-oauth-20-social-login-with-facebook-a-comprehensive-guide-330o
|
Implementing OAuth social login with Facebook A comprehensive guideOpen Authorization popularly known as OAuth is a secure and fast security mechanism that enables users to access websites and applications Beyond the safety and ease of use it gives users total control of the information shared with the requesting websites applications In this post we will learn how to set up OAuth social login in a Flutter application using Facebook as the provider The project repository can be found here PrerequisitesTo fully grasp the concepts presented in this tutorial the following are required Basic understanding of Dart and Flutter Flutter SDK installed Xcode with a developer account Appwrite account sign up is completely free Facebook developer account sign up is completely free Getting startedTo get started we need to clone the project by navigating to the desired directory and running the command below git clone Running the projectFirst we need to install the project dependencies by running the command below flutter pub getThen run the project using the following command flutter runThe command above will run the application on the selected device Set up a project on AppwriteTo get started we need to log into our Appwrite console click the Create project button input flutter auth as the name and then click Create Add platform supportTo add support for our Flutter app navigate to the Home menu and click the Flutter App button Next we must modify the Flutter application as detailed below To obtain our Bundle ID navigate to the path below ios gt Runner xcodeproj gt project pbxprojOpen the project pbxproj file and search for PRODUCT BUNDLE IDENTIFIER Finally open the project directory on Xcode open the Runner xcworkspace folder in the app s iOS folder select the Runner project in the Xcode project navigator select the Runner target in the primary menu sidebar and then select iOS in the deployment info s target Enable Facebook as the preferred OAuth providerTo do this we need to navigate to the Auth menu click the Settings tab and enable Facebook as a provider We will fill in the required details later however we must copy and keep the redirect URI it will come in handy when setting up our application on Facebook Set up Facebook OAuth With our project partly configured on Appwrite we also need to set up our project on the Facebook developer portal To do this log into the portal navigate to the My Apps section click the Create App button select the Set up Facebook Login option and click Next Next we need to input our application name contact email and then select Create app Finally we navigate to the Products menu select Settings under Facebook Login input the redirect URI we copied from Appwrite earlier and Save changes Lastly we need to click on the Products menu again select the QuickStart option and select iOS as the preferred platform Configuring the iOSAfter selecting the iOS option click the Next button input the Bundle ID Save and Continue Click Next on the Enable Single Sign On for Your App step Next we need to copy and configure our Application using the provided XML snippet To do this we need to modify the info plist file in our source code and paste the copied snippet below the lt dict gt body tag We can find the file using the path below ios gt Runner gt info plistWe must also update the snippet with our Application ID Client Token and App name We can get the required parameter as shown below Sample of a properly filled snippet below lt key gt CFBundleURLTypes lt key gt lt array gt lt dict gt lt key gt lt key gt lt array gt lt string gt lt string gt lt array gt lt dict gt lt array gt lt key gt FacebookAppID lt key gt lt string gt APP ID lt string gt lt key gt lt key gt lt string gt acfdettryetabadrt lt string gt lt key gt flutter auth lt key gt lt string gt APP NAME lt string gt Putting it together on AppwriteWith our application configured on Facebook we need to create a link to it on Appwrite To do this we need to first navigate to the Basic tab under Settings menu and copy the App ID and App secret Lastly we need to update the Facebook provider details on Appwrite with the copied parameters and Update Integrating Facebook OAuth with Flutter using AppwriteWith all that done let s build the social login into our application First we need to create a class for storing our Appwrite credentials To do this we need to create a utils dart file in the lib folder and add the snippet below class AppConstant final String projectId REPLACE WITH PROJECT ID final String endpoint PS We can get our Project ID from the Appwrite console Second we need to create a service file to separate the application core logic from the UI To do this we need to create an auth service dart file in the same lib folder and add the snippet below import package appwrite appwrite dart import package flutter auth utils dart class AuthService Client client Client late Account account AuthService init initialize the application init async client setEndpoint AppConstant endpoint setProject AppConstant projectId account Account client Future loginWithFacebook async try return await account createOAuthSession provider facebook catch e throw Exception Error login into Facebook The snippet above does the following Imports the required dependencies Creates an AuthService class with client and account properties to connect to the Appwrite instance Creates an init method that configures Appwrite using the properties Creates a loginWithFacebook method that uses the account property to login with OAuth using facebook as the providerLastly we need to modify the login dart file inside the screens folder to use the service import package flutter material dart import package flutter auth auth service dart class Login extends StatefulWidget const Login super key override State lt Login gt createState gt LoginState class LoginState extends State lt Login gt bool isLoading false loginWithFacebook setState isLoading true AuthService loginWithFacebook then value gt setState isLoading false catchError e setState isLoading false ScaffoldMessenger of context showSnackBar const SnackBar content Text Error login into facebook override Widget build BuildContext context return Scaffold backgroundColor Colors white body Center child Column mainAxisAlignment MainAxisAlignment center crossAxisAlignment CrossAxisAlignment center children Image asset images lock png const SizedBox height Padding padding const EdgeInsets symmetric horizontal child Container width double infinity height child TextButton onPressed isLoading null loginWithFacebook child Text Login with Facebook style TextStyle fontSize fontWeight FontWeight bold color Colors white style ButtonStyle backgroundColor MaterialStateProperty all Color xffb padding MaterialStateProperty all lt EdgeInsets gt const EdgeInsets symmetric horizontal The snippet above does the following Lines Import the required dependencies Line Creates an isLoading property to manage the application state Lines Create a loginWithFacebook method to log in users using the AuthService loginWithFacebook service and set state accordingly Lines Update the button to use the method createdWith that done we restart the application using the code editor or run the command below flutter runFacebook update on business verificationFacebook recently updated its permission system for applications using OAuth It requires the developer to do a Business Verification to gain full access If we decide to log in using our credentials we will get an error about permissions as shown below ConclusionThis post detailed a step by step guide to implementing Facebook OAuth social login in a Flutter application using Appwrite Beyond Facebook Appwrite supports up to other providers These resources may also be helpful Appwrite official documentation Appwrite OAuth support Facebook developer portal |
2023-07-28 08:50:22 |
海外TECH |
DEV Community |
Assertions: How to Assert Conditions and Types |
https://dev.to/zirkelc/assertions-how-to-assert-conditions-and-types-mep
|
Assertions How to Assert Conditions and TypesThe asserts statement was introduced in TypeScript It s a special type of function signature that tells the TypeScript compiler that a particular condition is true from that point on Essentially assertions serve as macros for if then error statements allowing us to encapsulate precondition checks at the beginning of function blocks enhancing the predictability and stability of our code Basic AssertionsConsider a basic assertion that checks for a truthy condition Pay attention to the return type of the function function assert condition any msg string asserts condition if condition throw new Error msg The asserts condition return type within this function signals to TypeScript that given the function s successful execution the provided condition is true Otherwise an error will be thrown with the specified message Here s how this assert function can be used to check unknown parameters type Point x number y number function point x unknown y unknown Point assert typeof x number x is not a number assert typeof y number y is not a number gt from here on we know that x and y are numbers return x y TypeScript evaluates the condition typeof x number and infers the appropriate type for the parameters After the assert calls TypeScript is aware that x and y are numbers Asserting Specific TypesBeyond asserting a condition the asserts keyword can validate that a variable matches a specific type This is achieved by appending a type guard after asserts Consider the following example function assertPoint val unknown asserts val is Point if typeof val object amp amp x in val amp amp y in val amp amp typeof val x number amp amp typeof val y number return throw new Error val is not a Point If the assertPoint function executes without errors TypeScript assumes that val is a Point This knowledge is retained throughout the block as demonstrated in this function function print point unknown assertPoint point gt from here on we know that p is a Point console log Position X point x Y point y Asserting Complex TypesThe asserts isn t confined to simple types or distinct conditions It also enables us to assert more intricate types One such example is ensuring a value is defined using TypeScript s NonNullable lt T gt utility type Let s consider the following example function assertNonNull lt T gt val T asserts val is NonNullable lt T gt if val undefined val null throw new Error val is val undefined undefined null Here the assertNonNull function verifies that the supplied value is neither null nor undefined The return type asserts val is NonNullable lt T gt signals to TypeScript that if the function successfully executes val has a defined value Lastly this example demonstrates how this assertion can be paired with the prior one to check multiple conditions function move point unknown assertNonNull point assertPoint point gt from here on we know that point is defined and is a Point console log Moving to point x point y Here the two assertions at the beginning of the function help TypeScript to gain knowledge about the nature of the given parameter After these conditions TypeScript knows that point is defined and it s an object of type Point If you re intrigued by assertions and wish to learn more I recommend exploring the GitHub PR that brought assertions into TypeScript For a quick hands on experience head over to thePlayground from Microsoft Assertions in control flow analysis ahejlsberg posted on Aug With this PR we reflect the effects of calls to assert functions and never returning functions in control flow analysis We also improve analysis of the effects of exhaustive switch statements and report unreachable code errors for statements that follow calls to never returning functions or exhaustive switch statements that return or throw in all cases The PR introduces a new asserts modifier that can be used in type predicates declare function assert value unknown asserts value declare function assertIsArrayOfStrings obj unknown asserts obj is string declare function assertNonNull lt T gt obj T asserts obj is NonNullable lt T gt An asserts return type predicate indicates that the function returns only when the assertion holds and otherwise throws an exception Specifically the assert x form indicates that the function returns only when x is truthy and the assert x is T form indicates that the function returns only when x is of type T An asserts return type predicate implies that the returned value is of type void and there is no provision for returning values of other types The effects of calls to functions with asserts type predicates are reflected in control flow analysis For example function f x unknown assert typeof x string return x length x has type string here function f x unknown assertIsArrayOfStrings x return x length x has type string here function f x string undefined assertNonNull x return x length x has type string here From a control flow analysis perspective a call to a function with an asserts x return type is equivalent to an if statement that throws when x is falsy For example the control flow of f above is analyzed equivalently tofunction f x unknown if typeof x string throw return x length x has type string here Similarly a call to a function with an asserts x is T return type is equivalent to an if statement that throws when a call to a function with an x is T return type returns false In other words givendeclare function isArrayOfStrings obj unknown obj is string the control flow of f above is analyzed equivalently tofunction f x unknown if isArrayOfStrings x throw return x length x has type string here Effectively assertIsArrayOfStrings x is just shorthand for assert isArrayOfStrings x In addition to support for asserts we now reflect effects of calls to never returning functions in control flow analysis function fail message string never throw new Error message function f x string undefined if x undefined fail undefined argument x length Type narrowed to string function f x number number if x gt return x fail negative number function f x number number if x gt return x fail negative number x Unreachable code error Note that f is considered to not have an implicit return that contributes undefined to the return value Without the call to fail an error would have been reported A function call is analyzed as an assertion call or never returning call whenthe call occurs as a top level expression statement andthe call specifies a single identifier or a dotted sequence of identifiers for the function name andeach identifier in the function name references an entity with an explicit type andthe function name resolves to a function type with an asserts return type or an explicit never return type annotation An entity is considered to have an explicit type when it is declared as a function method class or namespace or as a variable parameter or property with an explicit type annotation This particular rule exists so that control flow analysis of potential assertion calls doesn t circularly trigger further analysis EDIT Updated to include effects of calls to never returning functions Fixes Fixes Fixes Fixes Fixes Fixes Fixes Fixes Fixes Fixes Fixes View on GitHub I hope you found this post helpful If you have any questions or comments feel free to leave them below If you d like to connect with me you can find me on LinkedIn or GitHub Thanks for reading |
2023-07-28 08:34:01 |
海外TECH |
DEV Community |
Building Smart Decision Models with Sitecore Personalize: The Power of Programmable Nodes |
https://dev.to/annagevel/building-smart-decision-models-with-sitecore-personalize-the-power-of-programmable-nodes-b24
|
Building Smart Decision Models with Sitecore Personalize The Power of Programmable NodesIn our recent research of Sitecore CDP and Personalize my colleague and I delved into the world of Decision Models aiming to understand how to dynamically recommend the most relevant content variants based on specific rules We soon discovered that Decision Models offer much more than a simple drag and drop canvas At the heart of it all lies the power of Programmable Nodes a crucial element in crafting personalized experiences for users Understanding Decision ModelsDecision Models are the foundational element of personalised content delivery in Sitecore Personalize They incorporate several essential components Programmable Nodes These nodes are where the magic happens Technical users familiar with JavaScript can employ programmable nodes to define custom business logic for dynamic decision making Offers Content repositories that can be used for generating recommendations Offers are what users eventually see on your platform External Systems Connections to external Analytical Models or Data Systems that help drive decisions within the models A typical reason for using an external system in a decision model is to retrieve data or perform a calculation and then pass it into another decision component Decision Tables A powerful tool for crafting decision logic that allows you to map conditions and outcomes efficiently The Importance of Programmable NodesProgrammable nodes are where developers and marketers collaborate to fine tune the Decision Models They allow you to incorporate server side JavaScript to process and analyse user behaviour data captured from Sitecore CDP across multiple sessions Why are Programmable Nodes crucial Flexibility Programmable nodes offer unparalleled flexibility enabling you to implement custom business logic tailored to your specific requirements Access to User Data You can access a wealth of guest objects from the Programmable node including data extensions sessions orders and more This rich data allows you to make informed decisions Endless Possibilities With JavaScript expertise at your disposal the possibilities are limitless You can easily write custom code to meet your business expectations and create unique engaging user experiences Creating Custom Programmable Nodes in Sitecore PersonalizeTo illustrate the process let s look at an example of a custom programmable node Imagine you want to calculate the total number of VIEW events across all sessions for a given user and output it as an integer In this code snippet we define a function getNumberOfEvents that calculates the number of VIEW events within each session and returns the total count Custom Programmable Nodes for unique use casesBesides event calculations you can build programmable nodes to cater to various other use cases For instance you could check the session state to determine if a user s session is still active Alternatively you might want to trigger specific actions based on the last event type such as completion of checkout Empowering Personalised ExperiencesProgrammable nodes in Sitecore Personalize provide a powerful tool to craft highly personalised user experiences By leveraging server side JavaScript and collaborating with technical experts marketers can fine tune Decision Models to cater to diverse scenarios and user preferences So unlock the potential of Programmable Nodes and deliver outstanding content tailored precisely to your users needs For a detailed guide on creating Decision Models check out my colleague s article here Once you have that foundation you re all set to start your journey of customisation with Programmable Nodes In my next articles I will talk more about other technical features of Sitecore Personalize Stay tuned |
2023-07-28 08:32:47 |
Java |
Java Code Geeks |
Introduction to Data Structures: Understanding Linear and Non-Linear Data Structures |
https://www.javacodegeeks.com/2023/07/introduction-to-data-structures-understanding-linear-and-non-linear-data-structures.html
|
Introduction to Data Structures Understanding Linear and Non Linear Data StructuresData structures form the backbone of computer science and programming acting as essential building blocks for organizing and managing data efficiently They are like containers that allow us to store retrieve and manipulate data in various ways In this article we will embark on a journey to explore the fundamental concepts of data structures with |
2023-07-28 08:25:39 |
医療系 |
医療介護 CBnews |
少子化財源「秋以降が勝負」健保連・佐野副会長-診療報酬と介護報酬の同時改定も |
https://www.cbnews.jp/news/entry/20230728172400
|
介護報酬 |
2023-07-28 17:48:00 |
医療系 |
医療介護 CBnews |
コロナ新規患者報告数、45都道府県で増加-厚労省が第29週の発生状況を公表 |
https://www.cbnews.jp/news/entry/20230728173440
|
医療機関 |
2023-07-28 17:40:00 |
ニュース |
BBC News - Home |
NatWest chair Sir Howard Davies says he won't quit over Farage row |
https://www.bbc.co.uk/news/business-66333091?at_medium=RSS&at_campaign=KARANGA
|
shareholder |
2023-07-28 08:41:10 |
ニュース |
BBC News - Home |
Randy Meisner: Eagles founding member dies aged 77 |
https://www.bbc.co.uk/news/entertainment-arts-66334524?at_medium=RSS&at_campaign=KARANGA
|
california |
2023-07-28 08:18:41 |
ニュース |
BBC News - Home |
Alpha-gal syndrome: Meat allergy linked to tick bites rising, CDC says |
https://www.bbc.co.uk/news/world-us-canada-66333478?at_medium=RSS&at_campaign=KARANGA
|
dangerous |
2023-07-28 08:47:38 |
ニュース |
BBC News - Home |
Israel-Lebanon border tension raises fears of bloody escalation |
https://www.bbc.co.uk/news/world-middle-east-66304498?at_medium=RSS&at_campaign=KARANGA
|
front |
2023-07-28 08:34:39 |
ニュース |
BBC News - Home |
BBC finds police BMWs at risk of exploding still on the roads |
https://www.bbc.co.uk/news/uk-england-cumbria-64471386?at_medium=RSS&at_campaign=KARANGA
|
kathryn |
2023-07-28 08:44:17 |
ニュース |
BBC News - Home |
Women's World Cup 2023: Lauren James fires England into early lead against Denmark |
https://www.bbc.co.uk/sport/av/football/66335362?at_medium=RSS&at_campaign=KARANGA
|
Women x s World Cup Lauren James fires England into early lead against DenmarkWatch the moment England s Lauren James scores brilliantly to fire England into the lead as they take on Denmark at the Fifa Women s World Cup |
2023-07-28 08:48:43 |
マーケティング |
MarkeZine |
クレジットカード、約3割が5枚以上所持/5割以上が楽天カードユーザー【400F調査】 |
http://markezine.jp/article/detail/42685
|
楽天カード |
2023-07-28 17:30:00 |
IT |
週刊アスキー |
怨念に囚われた古いアプリがスマホの個人情報を夜な夜な流出!? |
https://weekly.ascii.jp/elem/000/004/147/4147234/
|
個人情報 |
2023-07-28 17:30:00 |
IT |
週刊アスキー |
全品オール500円! 天神渡辺通沿いに「炉端屋台 正」オープン |
https://weekly.ascii.jp/elem/000/004/147/4147358/
|
炉端 |
2023-07-28 17:30:00 |
IT |
週刊アスキー |
『サンバ DE アミーゴ』でダンス対決!「セガにゅー」第25回が7月28日20時より配信 |
https://weekly.ascii.jp/elem/000/004/147/4147380/
|
youtubelive |
2023-07-28 17:30:00 |
IT |
週刊アスキー |
魅惑の“ふわぁしゅぁ”食感! 台湾カステラ専門店「台楽蛋糕」が京王百貨店新宿店に出店中 |
https://weekly.ascii.jp/elem/000/004/147/4147359/
|
京王百貨店 |
2023-07-28 17:15:00 |
IT |
週刊アスキー |
『DQウォーク』で神戸/京都を舞台とする「ポートピア連続殺人事件」コラボイベントが開催! |
https://weekly.ascii.jp/elem/000/004/147/4147374/
|
位置情報 |
2023-07-28 17:15:00 |
IT |
週刊アスキー |
Apple Arcadeのサンリオキャラ箱庭ゲーム「Hello Kitty Island Adventure」かわいすぎ |
https://weekly.ascii.jp/elem/000/004/147/4147363/
|
applearcade |
2023-07-28 17:10:00 |
IT |
週刊アスキー |
NTT東日本、「フレッツ・ISDN」を2026年1月31日に終了 |
https://weekly.ascii.jp/elem/000/004/147/4147382/
|
年月日 |
2023-07-28 17:45:00 |
コメント
コメントを投稿