Giter Club home page Giter Club logo

scala_text's People

Contributors

aiya000 avatar avtomat2023 avatar bleis-tift avatar cm-wada-yusuke avatar cympfh avatar dependabot[bot] avatar github-actions[bot] avatar hexx avatar hyamaguchi-dw avatar i10416 avatar javakky avatar kenji-h avatar kmizu avatar koba-e964 avatar kxbmap avatar matsu-chara avatar muojp avatar nooby-noob avatar pocketberserker avatar qllll avatar rinotc avatar saka1 avatar scala-text-bot[bot] avatar solareenlo avatar watiko avatar whirakawa avatar xuwei-k avatar y-yu avatar yoshinorin avatar youta32449999 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

scala_text's Issues

abstract overrideに関する記述が不正確?

社内チャットより引用

つまりabstract overrideはsuperの束縛を具象クラスを作るまで遅延させる機能と言えるでしょう。

これってそもそもabstract overrideでなくとも(つまり、ただのtraitでsuperを使った場合でも)線形化により、superが指す対象は変わるので、微妙に正しくない気がした

https://github.com/dwango/scala_text/blob/511ee274c1659b041a6c67d4d70c105cc1a173a5/src/trait.md#abstract-override

playframeworkが採用してるテストライブラリについての記述

現状以下のようになっているが

よく利用されるWebフレームワークであるPlay Frameworkの中では現在Specs2が採用されているのですが、マクロによるpower assertが便利なため、今回はscalatestを利用します。

  • play2.5以降はscalatestのテンプレートがデフォルトで生成されるようになった
  • playのorganizationにリポジトリが出来て https://github.com/playframework/scalatestplus-play 半公式的によりspecs2と同等程度にscalatestもサポートされてきている雰囲気?

という意味では、不正確というか説明不足?
(ただし、playのユーザーとは別に、play本体のテストは現状でもspecs2、という違う観点はあるが)

@pocketberserker さんがテストの章色々書き直し and 書き足しをしてるので、その変更も任せるか、ここだけ先に書きなおすか、みたいな状態

データ構造の実装に関する章を追加する

コレクションの章では、ListやMap、Vectorといったデータ構造が紹介されているが、性能の議論をするうえではこれらのデータ構造がどのような実装になっているのか、ということはおさえておいた方がよいと思われる。
そこで、Vectorなどのデータ構造がどのように実装できるのかという話題を、ケースクラスの章の後などに追加するのがよいと思う。

Monoidの説明で、結合則が抜けているような…?

def leftIdentity[F](a: F)(implicit F: Monoid[F]): Boolean = a == F.append(F.zero, a)
def rightIdentity[F](a: F)(implicit F: Monoid[F]): Boolean = a == F.append(a, F.zero)

これに加えて、

def associativeLaw[F](a: F, b: F, c: F)(implicit F: Monoid[F]): Boolean = {
  F.append(F.append(a, b), c) == F.append(a, F.append(b, c))
}

が必要なのではないかと。

implicit parameterの解説でのMonoidの説明を、Monoidという単語を使わずに行う

4. sbtでプログラムをコンパイル・実行するで sbt の起動方法を勘違いしやすい

さて、このようにファイルを配置したらsandboxディレクトリに入り、sbtを起動します。するとsbtのプロンプトが出て、sbtのコマンドが入力できるようになります。

というところで、ここまで sbt console しか出てこなかったので、 盲目的に sbt console を使うものだと誤解してしまう例が見られました。起動方法に関する注釈が必要そうです。

Scala 2.12 で非推奨になる機能

まだScala 2.12がfinalではないので優先度低めだが(?)、ひとまずメモしておく。簡単に書き換え可能なものは、今のうちに先に書き換えてしまう?もしくは、非推奨になることを軽く言及する?

travis-ciのビルドが通らなくなった

たまたまtravis上のcacheがあるおかげで動いてただけかもしれない。そもそも最初にtravis-ci設定した時も似たような状況になったが、いろいろと詳細不明

https://travis-ci.org/dwango/scala_text/builds/110520573#L281

--\/|\|/-\\\\--/|\/||\npm WARN deprecated [email protected]: this package has been reintegrated into npm and is now out of date with respect to npm

> [email protected] install /home/travis/build/dwango/scala_text/node_modules/sleep
> node-gyp rebuild
\\/ake: Entering directory `/home/travis/build/dwango/scala_text/node_modules/sleep/build'
  CXX(target) Release/obj.target/node_sleep/sleep.o
|In file included from ../sleep.cc:2:0:
../node_modules/nan/nan.h:41:3: error: #error This version of node/NAN/v8 requires a C++11 compiler
/ /home/travis/.node-gyp/4.2.6/include/node/node.h:42:0,
                 from ../node_modules/nan/nan.h:45,
                 from ../sleep.cc:2:
/home/travis/.node-gyp/4.2.6/include/node/v8.h:336:1: error: expected unqualified-id before ‘using’
/home/travis/.node-gyp/4.2.6/include/node/v8.h:469:1: error: expected unqualified-id before ‘using’
/home/travis/.node-gyp/4.2.6/include/node/v8.h:852:1: error: expected unqualified-id before ‘using’
\ ../node_modules/nan/nan.h:194:0,
                 from ../sleep.cc:2:
../node_modules/nan/nan_maybe_43_inl.h:13:1: error: expected unqualified-id before ‘using’
../node_modules/nan/nan_maybe_43_inl.h:16:1: error: expected unqualified-id before ‘using’
../node_modules/nan/nan_maybe_43_inl.h:19:12: error: ‘Maybe’ does not name a type
../node_modules/nan/nan_maybe_43_inl.h:24:12: error: ‘Maybe’ does not name a type

エラー処理の章で、case objectにすべき箇所でcase classになっている箇所がある

sealed abstract class PostalCodeResult
case class Success(postalCode: String) extends PostalCodeResult
abstract class Failure extends PostalCodeResult
case class UserNotFound() extends Failure
case class UserNotHasAddress() extends Failure
case class AddressNotFound() extends Failure
case class AddressNotHasPostalCode() extends Failure

で、UserNotFound, UserNotHasAddress,AddressNotFound,AddressNotHasPostalCodecase objectにできる。

日本語が若干変?

C言語のフォールスルー動作を引き継いだことはしばしば非難されることもあります

これは

C言語のフォールスルー動作を引き継いだことはしばしば非難されます

が適切(「~こともある」、と、「しばしば~」で意味が重複している)。

travis-ci上でcalibreのダウンロードのログが数千行も占領していて辛い

現時点で思いつく選択肢を列挙

  • calibreダウンロードやめる = travisでepub生成やめる?
  • 毎回ダウンロードせず、どこかにキャッシュしておく?
  • 何らかのオプション指定などの工夫により、毎回ダウンロードはするが、ログが大量に表示されないように工夫する?
  • そこまで大きな問題ではないので、諦める?
  • その他?

Promiseの説明文

https://github.com/dwango/scala_text/blob/fa2d8bbe328aa684287ae13717eddaa92f2ba409/src/future-and-promise.md

Promiseは一度だけ成功と定義した値または値と定義した処理を与えることでFutureに変換できる型

というの、なんかわかりずらいと感じるのは自分だけでしょうか?(いや、自分だけだったらcloseしていいです)

少なくとも、どこかに 読点 があったほうがいいような・・・?
もしくはみんなわかりずらいと感じるなら、その文書き直してもいいけれど

練習問題 「〜〜を出力するコードを作成」という文言から「〜〜を返す関数」へ変更

出題する際の文言についてです。

https://github.com/dwango/scala_text/blob/master/src/control-syntax.md などで

以上のコードを利用して、 最初と最後の文字が同じアルファベットであるランダムな5文字の文字列を1000回出力してください。

とあります。この場合、forで回しながら都度printlnを呼ぶ副作用のある関数を作成する実装方法を最初に思いつく人もいると思うのですが、

以上のコードを利用して、 最初と最後の文字が同じアルファベットであるランダムな5文字の文字列が1000個含まれるリストを返す関数を作成してください。

のようにすれば List[String] を返すような、よりScalaらしい副作用のない関数を作る方法を学びやすいのではないかと思いました。

Introductionのplay frameworkに関する記述の修正または削除?

Play 2 Scala Webアプリケーションフレームワークを用いたWebアプリケーションを開発できるようになること

や、また

Playフレームワークは、Scalaの言語開発者たちが設立したTypesafe社でメンテナンスされていることもあり、Scalaの中では最も人気のあるWebフレームワークになっています。ドワンゴでも広く採用されており、新卒のみなさんが目にする機会も多くなるでしょう。

といった記述があるが、今回公開した部分にplay frameworkの具体的な使い方の記述などはないため、変なことになっている?

  • 削除か修正が必要?
  • 「Scalaの基本が身につく => Playで開発できるようになる(という準備ができる)」という意味では残しておいてよい?

型クラスの章に★表記がない

以下の表記で優先度を付けたほうが良さそうです。

本テキストでは、節や項ごとに、どの程度重要かを示すために★マークを付けていることがあります。以下に基準を示しますので、参考にしてください。

★★★: 必ず読むべき(must)
★★:読んだ方がいい(should)
★:読むといいかも(may)

https://github.com/dwango/scala_text/blob/master/src/typeclass.md

練習問題の解答を折りたたんで表示できないか?(in HTML版)

  • HTMLでよく、「続きをよむ」クリックするまで表示が折りたたまれるのがありますが、あれをgitbookで実現できないかという話です(epub版は諦める)
  • gitbookのmarkdown内で使えるHTMLタグには制限がある(+折りたたみにはたぶんCSSをいじる必要がある?)ので、難しいかもしれませんがで、それができればスマートな気がします。
  • 誰か詳しい人、情報plz

各練習問題に一意のIDを振りたい(自動生成されたものではなく)

  • 現状でも、見出しを元に自動的にIDを振ってくれるが、見出し名が変わると参照元も変えなくてはいけないのがいけてない
  • この辺をみると
# 見出し名 {#見出しID}

のようにすることで、成果物のhtmlの中で特定の見出しを参照するときに、 hoge.html#見出しIDと参照することができる。

  • 試験的にブランチ作って試してみたのが、これ で、成果物のHTMLに対しては確かにリンクを張ることができた
    • しかし、元のmarkdownをgithub上で参照したときに、 #見出しIDがそのままレンダリングされてしまう(汚染されてしまう)という欠点があるので、どうするかは微妙なところ…。
  • いいアイデア求む

Play2の最新版のチュートリアルも欲しいです。

ドワンゴさん、お世話になっております。はてなの教科書でも勉強していたのですが、
https://github.com/hatena/Hatena-Textbook/blob/master/web-application-development-scala.md
Scalatraではなく、Play2の最新版で、Akka+Slickで非同期にMySQLを使った
CRUD+WebSocket+Ajaxも扱って欲しいです。
http://www.slideshare.net/yugolf/typesafe-reactiveplatformreactivesystem-scalasummitkansai

ページ遷移が遅い

見るのに支障がでるレベルで遅いので原因調査&対策が必要そうです・・。

Semaphoreの実装例

http://dwango.github.io/scala_text/future-and-promise.html

まだ実装時間に余裕がある場合は、Semaphore(セマフォ)という常に特定個数ずつしか実行されない処理を実装してみましょう。

とあるが、答えがない。

そもそも問題として可能か、詳細な要件書かなくていいのか?、レベルとして適切か?などを考えて、この問題の答え以前に、別の問題入れるなどを検討するのもありかもしれない?

いずれにせよ、もし可能なら答えあるに越したことはないので、優先度それほど高くない(?)が、issueにしておく

type-parameterの演習問題のStackのメソッド定義について

https://github.com/dwango/scala_text/blob/f760890047eace599cd32546cc0c7d66075914b4/src/type-parameter.md#演習問題

immutableといっているし、(いずれにせよmutableだとしても) isEmpty などは副作用はないはずなので、
def isEmpty() ではなく def isEmpty にしておくべきではないか?

def pop() もある意味同様の問題があるが、空の場合は例外投げるので、副作用あると捉えることも可能(?)なので、微妙に別問題?

気がついてないだけで、同様の問題は他にもあるかもしれない

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.