並び順

ブックマーク数

期間指定

  • から
  • まで

1 - 40 件 / 516件

新着順 人気順

programming language python exampleの検索結果1 - 40 件 / 516件

  • もしもいま、Rustをイチから学び直すとしたら? Rust入門書著者・matsu7874さんに聞く学習ロードマップ - Findy Engineer Lab

    めまぐるしく変化するテックの世界。技術を身に着けるうえで学ぶべきポイントや学習環境なども年々変わっています。 そこで「もしもいまの環境で、テックのことをイチから学び直すことになったら、自分はどんな風に勉強したいか」というIFストーリーを通じて、技術との向き合い方を考え直してみる企画「テック転生」。 今回は『Rust実践プログラミング入門』共著者の松本健太郎(@matsu7874)さんに“自分だったらこう進めたい、Rustの学習ロードマップ”をご寄稿いただきました。 無理なく2ヶ月でWeb開発をRustで始めるロードマップ 株式会社estieでソフトウェアエンジニアをしているmatsu7874です。2024年8月の今、イチからRustを学び直すロードマップ(あるいはリソースガイド)を考えてみました。仕事の合間にやっていくとして数週間、長くとも2ヶ月くらいでRustで開発している会社に入っても

      もしもいま、Rustをイチから学び直すとしたら? Rust入門書著者・matsu7874さんに聞く学習ロードマップ - Findy Engineer Lab
    • 関数名、メソッド名、変数名でよく使う英単語のまとめ

      プログラミングをしていると関数名、メソッド名、変数名をどうするか悩みます。 ロジックより命名に時間を費やすこともざらにあります。翻訳したり、一般的な命名規則なのかいつも検索して大変です。 よく使うサイトの内容をコピってメモしておく 関数名とメソッド名の違いについて よく使う英単語のまえに、いつもごっちゃにして使っているけど、定義はこんな感じ 「関数」と「メソッド」の違い 似ているところ どちらも何か(引数)を入れると処理をして何か(戻り値)を返してくれます。 違うところ やってること自体は大差ありません。概念としては違います。 メソッドはオブジェクト指向で登場する用語で、オブジェクトの動作を定義したものです。 まずオブジェクトありきなのですね。一方の関数は、オブジェクト云々は関係ありません。 個人的な使い分け Java で登場する関数は「メソッド」です。C 言語で登場する関数は「関数」と呼

        関数名、メソッド名、変数名でよく使う英単語のまとめ
      • The Best Programmers I Know | Matthias Endler

        I have met a lot of developers in my life. Lately, I asked myself: “What does it take to be one of the best? What do they all have in common?” In the hope that this will be an inspiration to someone out there, I wrote down the traits I observed in the most exceptional people in our craft. I wish I had that list when I was starting out. Had I followed this path, it would have saved me a lot of time

          The Best Programmers I Know | Matthias Endler
        • The End of Programming as We Know It

          There’s a lot of chatter in the media that software developers will soon lose their jobs to AI. I don’t buy it. It is not the end of programming. It is the end of programming as we know it today. That is not new. The first programmers connected physical circuits to perform each calculation. They were succeeded by programmers writing machine instructions as binary code to be input one bit at a time

            The End of Programming as We Know It
          • vscode.dev(!)

            Join a VS Code Dev Days event near you to learn about AI-assisted development in VS Code. October 20, 2021 by Chris Dias, @chrisdias Back in 2019, when the .dev top-level domain opened, we picked up vscode.dev and quickly parked it, pointing at our website code.visualstudio.com (or, if you are from the Boston area like me, we "pahked it"). Like a lot of people who buy a .dev domain, we had no idea

              vscode.dev(!)
            • 大実験!ChatGPTは競プロの問題を解けるのか (2024年5月版) - E869120's Blog

              1. はじめに 2024 年 5 月 14 日、OpenAI 社から新たな生成 AI「GPT-4o」が発表され、世界に大きな衝撃を与えました。これまでの GPT-4 よりも性能を向上させただけでなく1、音声や画像のリアルタイム処理も実現し、さらに応答速度が大幅に速くなりました。「ついにシンギュラリティが来てしまったか」「まるで SF の世界を生きているような感覚だ」という感想も見受けられました。 しかし、いくら生成 AI とはいえ、競技プログラミングの問題を解くのは非常に難しいです。なぜなら競技プログラミングでは、問題文を理解する能力、プログラムを実装する能力だけでなく、より速く答えを求められる解法 (アルゴリズム) を考える能力も要求されるからです。もし ChatGPT が競技プログラミングを出来るようになれば他のあらゆるタスクをこなせるだろう、と考える人もいます。 それでは、現代最強の

                大実験!ChatGPTは競プロの問題を解けるのか (2024年5月版) - E869120's Blog
              • OpenAIのBatch APIを使ってお得にプロンプトを一括処理してみる - Taste of Tech Topics

                はじめに こんにちは。データサイエンスチームYAMALEXのSsk1029Takashiです。 最近はOpenAIに日本支社が出来て、日本語対応が加速するというニュースにわくわくしています。 今回はそんなOpenAIから発表されたBatch APIという機能が便利、かつお得な機能だったのでどのように使えるのか試してみます。 Introducing the Batch API: save costs and get higher rate limits on async tasks (such as summarization, translation, and image classification). Just upload a file of bulk requests, receive results within 24 hours, and get 50% off API pri

                  OpenAIのBatch APIを使ってお得にプロンプトを一括処理してみる - Taste of Tech Topics
                • コンセプトから理解するRust | 技術評論社

                  概要 Rustはメモリ安全、スレッド安全を保ちつつ、高パフォーマンスなプログラムを開発できるプログラミング言語です。また、手続き型、オブジェクト指向型、関数型でのプログラミングに対応できるマルチパラダイムの言語でもあります。ただ、そういったRustのポテンシャルを引き出すには、所有権やライフタイム、ジェネリクスやトレイトといった特徴的な仕様の理解が求められ、これらは初学者の壁にもなっています。本書ではそれら難解な仕様をピックアップし、他のプログラミング言語とコードレベルで比較しながら、「なぜそのような仕様になっているか」という言語のコンセプトからRustの理解を試みます。加えて、Rustのこまやかなエラーメッセージを読みつつ、Rustをうまく書くための知識もお伝えします。 目次 第1章 Rustを学ぶにあたって 1.1 Rustの特徴 パフォーマンスと信頼性 生産性 そのほかの特徴 1.2

                    コンセプトから理解するRust | 技術評論社
                  • RustのWebフレームワークで実現する“爆速アプリ開発” 「こういうのやりたい」がすぐできる、actix-webの活用

                    ウェブアプリケーションをRustで開発している、株式会社estie。今回開催された「Rust、何もわからない…」では、実サービスで活用されているRustについて、その活用方法の事例を紹介しました。estieでアルバイトとしてRustを用いたウェブアプリの開発に取り組んでいるkenkoooo氏。「actix-web」の活用について発表しました。 アジェンダの紹介 kenkoooo氏:では僕、kenkooooが「actix-webで快適Webアプリ生活」というタイトルで発表します。よろしくお願いします。 (スライドを示して)今日発表したいことは、actix-webというRustのWebフレームワークが、どれだけ使いやすいかということです。それから、これは立ち入った話なのですが、actix-webのミドルウェアという機能があって、それも今estie(株式会社estie)でけっこう使っているので、

                      RustのWebフレームワークで実現する“爆速アプリ開発” 「こういうのやりたい」がすぐできる、actix-webの活用 
                    • あらゆるプログラミング言語の最先端を行くScala 3のマクロ - 貳佰伍拾陸夜日記

                      この記事はScala Advent Calendar 2023の11日目です. 最近, 趣味でScala 3のコードをだいぶ書いていて, マクロの使い心地のよさに感心しました. 理論的な背景も含めて, 産業界で多く使われているプログラミング言語の中では筆者の知る限りぶっちぎりに優れたマクロを備えています. 他の言語にも見習ってほしいですね. たぶん見習おうとすると処理系を作り直す羽目になりますが. この記事ではScala 3のマクロのすごいところを例を使って紹介します. マクロの実践的な例 準備 実践的な例: NamedArray – 名前でアクセスできる配列 NamedArrayのマクロ実装 記述が明瞭 メタレベルのプログラムの扱い クォートとスプライスがある パターンマッチもある 生成コードに型がつく 多段階計算に基づいている クォートとスプライスの本当の意味 ネストしたスプライス ネ

                        あらゆるプログラミング言語の最先端を行くScala 3のマクロ - 貳佰伍拾陸夜日記
                      • REST API Design Best Practices Handbook – How to Build a REST API with JavaScript, Node.js, and Express.js

                        By Jean-Marc Möckel I've created and consumed many API's over the past few years. During that time, I've come across good and bad practices and have experienced nasty situations when consuming and building API's. But there also have been great moments. There are helpful articles online which present many best practices, but many of them lack some practicality in my opinion. Knowing the theory with

                          REST API Design Best Practices Handbook – How to Build a REST API with JavaScript, Node.js, and Express.js
                        • Why MCP Was Always a Bad Idea

                          Why MCP Was Always a Bad Idea Recently I went to an all-day event centered around the latest and greatest in the MCP world. While all of the presenters were awesome and seemed to be passionate about the work they were doing, I’m honestly tired of MCP. It’s a horrible protocol built for a time when LLMs weren’t that smart, and we’ve outgrown it. A Brief History MCP was released in November 2024 by

                            Why MCP Was Always a Bad Idea
                          • Pythonが遅い理由とその対策 - Qiita

                            Sharma氏の実験では、Pythonでの処理に70ナノ秒かかるところが、Cythonでは約14ナノ秒に短縮されました。これは、インタプリタによる型チェックなどの間接処理を省略できるためです。 SPy:静的型付けPython AnacondaのAntonio Cuni氏は、SPyという新しい静的型付けを必要とするPythonのサブセットを紹介しました。SPyの目標は、CやC++のスピードを持ちながら、Pythonの使いやすさを維持することです。SPyでは、すべてのグローバル定数が不変として固定され、JITコンパイラによって最適化されます。 Cuni氏は、Pythonが命令を実行する前に多くの準備作業を行う必要があることを指摘しました。SPyでは、この準備作業の多くをコンパイル段階で行うため、実行速度が向上します。現在、Cuni氏はSPyをCPythonの拡張として、または独自のJITコンパ

                              Pythonが遅い理由とその対策 - Qiita
                            • vscode.dev(!)

                              Join a VS Code Dev Days event near you to learn about AI-assisted development in VS Code. October 20, 2021 by Chris Dias, @chrisdias Back in 2019, when the .dev top-level domain opened, we picked up vscode.dev and quickly parked it, pointing at our website code.visualstudio.com (or, if you are from the Boston area like me, we "pahked it"). Like a lot of people who buy a .dev domain, we had no idea

                                vscode.dev(!)
                              • What it was like working for GitLab

                                I joined GitLab in October 2015, and left in December 2021 after working there for a little more than six years. While I previously wrote about leaving GitLab to work on Inko, I never discussed what it was like working for GitLab between 2015 and 2021. There are two reasons for this: I was suffering from burnout, and didn't have the energy to revisit the last six years of my life (at that time)I w

                                • Building LLM applications for production

                                  [Hacker News discussion, LinkedIn discussion, Twitter thread] Update: My upcoming book, AI Engineering (late 2024/early 2025) will cover building aplications with foundation models in depth. A question that I’ve been asked a lot recently is how large language models (LLMs) will change machine learning workflows. After working with several companies who are working with LLM applications and persona

                                    Building LLM applications for production
                                  • The Prompt Engineering Playbook for Programmers

                                    Developers are increasingly relying on AI coding assistants to accelerate our daily workflows. These tools can autocomplete functions, suggest bug fixes, and even generate entire modules or MVPs. Yet, as many of us have learned, the quality of the AI’s output depends largely on the quality of the prompt you provide. In other words, prompt engineering has become an essential skill. A poorly phrased

                                      The Prompt Engineering Playbook for Programmers
                                    • Don't write clean code, write CRISP code — Bitfield Consulting

                                      I’m sure we’re all in favour of “clean code”, but it’s one of those motherhood-and-apple-pie things that no one can reasonably disagree with. Who wants to write dirty code, unless maybe it’s for a porn site? The problem, of course, is that few of us can agree on what “clean code” means, and how to get there. A rule like “methods should only do one thing”, looks great on a T-shirt, but it’s not so

                                        Don't write clean code, write CRISP code — Bitfield Consulting
                                      • WebVM: server-less x86 virtual machines in the browser

                                        TL;DR — We made a server-less virtual Linux environment that runs unmodified Debian binaries in the browser. This is powered by CheerpX, a WebAssembly virtualization platform. Feel free to play with it and report bugs: https://webvm.io WebVM — a server-less virtual Linux environment running fully client-side in HTML5/WebAssembly. The web platform is well on its way to becoming the dominant platfor

                                          WebVM: server-less x86 virtual machines in the browser
                                        • GitHub - modelcontextprotocol/servers: Model Context Protocol Servers

                                          Official integrations are maintained by companies building production ready MCP servers for their platforms. 21st.dev Magic - Create crafted UI components inspired by the best 21st.dev design engineers. 2slides - An MCP server that provides tools to convert content into slides/PPT/presentation or generate slides/PPT/presentation with user intention. ActionKit by Paragon - Connect to 130+ SaaS inte

                                            GitHub - modelcontextprotocol/servers: Model Context Protocol Servers
                                          • OOP: the worst thing that happened to programming

                                            > BTC: bc1qs0sq7agz5j30qnqz9m60xj4tt8th6aazgw7kxr ETH: 0x1D834755b5e889703930AC9b784CB625B3cd833E USDT(Tron): TPrCq8LxGykQ4as3o1oB8V7x1w2YPU2o5n Ton: UQAtBuFWI3H_LpHfEToil4iYemtfmyzlaJpahM3tFSoxomYQ Doge: D7GMQdKhKC9ymbT9PtcetSFTQjyPRRfkwTdismiss OOP: the worst thing that happened to programming [2/24/2025] In this article, we will try to understand why OOP is the worst thing that happened to prog

                                              OOP: the worst thing that happened to programming
                                            • プロと読み解くRuby 4.0 NEWS - STORES Product Blog

                                              プロと読み解くRuby 4.0 NEWS テクノロジー部門技術推進グループの笹田(ko1)と遠藤(mame)です。Ruby (MRI: Matz Ruby Implementation、いわゆる ruby コマンド) の開発をしています。お金をもらって Ruby を開発しているのでプロの Ruby コミッタです。 本日 12/25 に、恒例のクリスマスリリースとして、Ruby 4.0.0 がリリースされました(Ruby 4.0.0 リリース | Ruby)。今年も STORES Product Blog にて Ruby 4.0 の NEWS.md ファイルの解説をします(ちなみに、STORES Advent Calendar 2025 の記事になります。他も読んでね)。NEWS ファイルとは何か、は以前の記事を見てください。 プロと読み解く Ruby 2.6 NEWS ファイル - クック

                                                プロと読み解くRuby 4.0 NEWS - STORES Product Blog
                                              • サーバレスにおけるRustについて - NTT docomo Business Engineers' Blog

                                                この記事は、 NTT Communications Advent Calendar 2023 22日目の記事です。 はじめに こんにちは、イノベーションセンターの鈴ヶ嶺です。普段は、クラウド・ハイブリッドクラウド・エッジデバイスなどを利用したAI/MLシステムに関する業務に従事しています。 本記事は、各クラウドベンダーのサーバレスにおけるプログラミング言語Rustについて調査・比較した結果を紹介します。 まず初めにサーバレスでRustを利用するメリットをエネルギー効率の観点から説明し、次に各クラウドベンダーの関連記事をピックアップします。 さらに、それぞれのクラウドでRustを使ったサーバレスアプリの代表的な作成方法を紹介して比較します。 Rustのエネルギー効率 Rustは、次の公式ページでも宣伝している通りパフォーマンスを強くアピールしています。 Rustは非常に高速でメモリ効率が高く

                                                  サーバレスにおけるRustについて - NTT docomo Business Engineers' Blog
                                                • Introducing Ezno

                                                  Ezno is an experimental compiler I have been working on and off for a while. In short, it is a JavaScript compiler featuring checking, correctness and performance for building full-stack (rendering on the client and server) websites. This post is just an overview of some of the features I have been working on which I think are quite cool as well an overview on the project philosophy ;) It is still

                                                    Introducing Ezno
                                                  • Rust でも学べる関数型ドメイン駆動設計 - Domain Modeling Made Functional の読書感想文 - じゃあ、おうちで学べる

                                                    はじめに なぜ 2026 年に、2018 年出版の本を再読するのでしょうか。正直に言えば、『Architecture Modernization』の翻訳作業で DDD の概念が頻出し、「分かったつもり」の理解では訳せなくなったからです。初読から 7 年。関数型の視点で DDD を説明する本書を、今度こそ腹落ちさせたかった。 読む動機 『Domain Modeling Made Functional』は、DDD と関数型プログラミングを組み合わせたアプローチを解説する書籍です。 Domain Modeling Made Functional: Tackle Software Complexity with Domain-Driven Design and F# (English Edition) 作者:Wlaschin, ScottPragmatic BookshelfAmazon 著者の

                                                      Rust でも学べる関数型ドメイン駆動設計 - Domain Modeling Made Functional の読書感想文 - じゃあ、おうちで学べる
                                                    • The End of Programming – Communications of the ACM

                                                      The end of classical computer science is coming, and most of us are dinosaurs waiting for the meteor to hit. I came of age in the 1980s, programming personal computers such as the Commodore VIC-20 and Apple ][e at home. Going on to study computer science (CS) in college and ultimately getting a Ph.D. at Berkeley, the bulk of my professional training was rooted in what I will call “classical” CS: p

                                                      • Techniques for improving text-to-SQL | Google Cloud Blog

                                                        Getting AI to write good SQL: Text-to-SQL techniques explained Organizations depend on fast and accurate data-driven insights to make decisions, and SQL is at the core of how they access that data. With Gemini, Google can generate SQL directly from natural language — a.k.a. text-to-SQL. This capability increases developer and analysts’ productivity and empowers non-technical users to interact dire

                                                          Techniques for improving text-to-SQL | Google Cloud Blog
                                                        • Does code quality still matter?

                                                          I honestly don't know, but I guess we'll find out. You can't open a social-media feed or listen to a podcast without being bombarded with stories of how LLMs write code faster than programmers. Not only for greenfield development, but also in already-established code bases. As long as you use LLMs as a tool to generate code that humans are ultimately responsible for, the quality of the code still

                                                            Does code quality still matter?
                                                          • 型安全かつシンプルなAgentフレームワーク「PydanticAI」の実装を解剖する - ABEJA Tech Blog

                                                            はじめに こちらはABEJAアドベントカレンダー2024 12日目の記事です。 こんにちは、ABEJAでデータサイエンティストをしている坂元です。最近はLLMでアプローチしようとしていたことがよくよく検証してみるとLLMでは難しいことが分かり急遽CVのあらゆるモデルとレガシーな画像処理をこれでもかというくらい詰め込んだパイプラインを実装することになった案件を経験して、LLMでは難しそうなことをLLM以外のアプローチでこなせるだけの引き出しとスキルはDSとしてやはり身に付けておくべきだなと思うなどしています(LLMにやらせようとしていることは大抵難しいことなので切り替えはそこそこ大変)。 とはいうものの、Agentの普及によってより複雑かつ高度な推論も出来るようになってきています。弊社の社内外のプロジェクト状況を見ていても最近では単純なRAG案件は減りつつあり、計画からアクションの実行、結果

                                                              型安全かつシンプルなAgentフレームワーク「PydanticAI」の実装を解剖する - ABEJA Tech Blog
                                                            • LogLog Games

                                                              The article is also available in Chinese. Disclaimer: This post is a very long collection of thoughts and problems I've had over the years, and also addresses some of the arguments I've been repeatedly told. This post expresses my opinion the has been formed over using Rust for gamedev for many thousands of hours over many years, and multiple finished games. This isn't meant to brag or indicate su

                                                              • Making a 3D Modeler, in C, in a Week

                                                                Last fall I participated in a week long programming event called the Wheel Reinvention Jam. The point of the Jam was to revisit existing software systems with fresh eyes. I ended up making a 3D modeler called “ShapeUp”. This post will make more sense if you watch the video demo of ShapeUp before reading more. You can try ShapeUp in your browser. This is what it looks like: Mike Wazowski modeled in

                                                                  Making a 3D Modeler, in C, in a Week
                                                                • Announcing .NET 10 - .NET Blog

                                                                  Today, we are excited to announce the launch of .NET 10, the most productive, modern, secure, intelligent, and performant release of .NET yet. It’s the result of another year of effort from thousands of developers around the world. This release includes thousands of performance, security, and functional improvements across the entire .NET stack-from languages and developer tools to workloads-enabl

                                                                    Announcing .NET 10 - .NET Blog
                                                                  • Replit — How to train your own Large Language Models

                                                                    Learn how Replit trains Large Language Models (LLMs) using Databricks, Hugging Face, and MosaicML IntroductionLarge Language Models, like OpenAI's GPT-4 or Google's PaLM, have taken the world of artificial intelligence by storm. Yet most companies don't currently have the ability to train these models, and are completely reliant on only a handful of large tech firms as providers of the technology.

                                                                      Replit — How to train your own Large Language Models
                                                                    • 転職活動の記録〜クラウドと英語〜 - fu3ak1's tech days

                                                                      2023年8月で新卒から約13年半勤めたSIerを退職します。関係者の方々、本当にお世話になりました。 9月から新しい職場で働くのですが、転職活動が初めてということもあり、色々と試行錯誤しながら進めたのでここにまとめたいと思います。 なお、具体的な企業名やそのプロセス、オファー条件はここには記載しません。企業名、特に前職は色々調べるとわかる情報なのですが、企業名で検索してこの記事が出てくるのもちょっと違う気がするのであえて書いておりません。 転職に向けてどう準備、活動したかにフォーカスして書こうと思うので何かしら参考になれば幸いです。 自己紹介、私の経験値 なぜ転職するのか 企業探し 選考準備 読んだ本 問題解決力を鍛える!アルゴリズムとデータ構造 データ指向アプリケーションデザイン [試して理解]Linuxのしくみ システム設計の面接試験 世界で闘うプログラミング力を鍛える本 コーディン

                                                                        転職活動の記録〜クラウドと英語〜 - fu3ak1's tech days
                                                                      • Lessons from Writing a Compiler

                                                                        The prototypical compilers textbook is: 600 pages on parsing theory. Three pages of type-checking a first-order type system like C. Zero pages on storing and checking the correctness of declarations (the “symbol table”). Zero pages on the compilation model, and efficiently implementing separate compilation. 450 pages on optimization and code generation. The standard academic literature is most use

                                                                        • Functional programming is finally going mainstream

                                                                          Functional programming is finally going mainstream Object-oriented and imperative programming aren’t going away, but functional programming is finding its way into more codebases. Klint Finley // July 12, 2022 Paul Louth had a great development team at Meddbase, the healthcare software company he founded in 2005. But as the company grew, so did their bug count. That’s expected, up to a point. More

                                                                            Functional programming is finally going mainstream
                                                                          • Claude Mythos Preview \ red.anthropic.com

                                                                            Assessing Claude Mythos Preview’s cybersecurity capabilities April 7, 2026 Nicholas Carlini, Newton Cheng, Keane Lucas, Michael Moore, Milad Nasr, Vinay Prabhushankar, Winnie Xiao Hakeem Angulu, Evyatar Ben Asher, Jackie Bow, Keir Bradwell, Ben Buchanan, David Forsythe, Daniel Freeman, Alex Gaynor, Xinyang Ge, Logan Graham, Kyla Guru, Hasnain Lakhani, Matt McNiece, Mojtaba Mehrara, Renee Nichol, A

                                                                            • Beyond agentic coding

                                                                              I'm generally pretty pro-AI with one major exception: agentic coding. My consistent impression is that agentic coding does not actually improve productivity and deteriorates the user's comfort and familiarity with the codebase. I formed that impression from: my own personal experiences Every time I use agentic coding tools I'm consistently unimpressed with the quality of the results. my experience

                                                                                Beyond agentic coding
                                                                              • Making a Small RPG

                                                                                I’ve always wanted to try my hand making an RPG but always assumed it would take too much time. However, I didn’t want to give up before trying so I started to think of ways I could still make something compelling in 1-2 months. Looking Into Prior ArtTo help me come up with something, I decided to look into older RPGs as I had a hunch they could teach me a lot about scoping because back in the 80s

                                                                                  Making a Small RPG
                                                                                • The future of AI is Ruby on Rails

                                                                                  Large language models are very good at generating and editing code. Right now, it’s probably the “killer app” of AI: the companies actually making money from language models — like GitHub Copilot, Cursor, Windsurf — are all doing code generation. This works astonishingly well at small scale, but there’s an obvious problem when the codebase grows larger. Tools that write the code for you will hit a

                                                                                    The future of AI is Ruby on Rails