diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000..1d288326 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +locale/ diff --git a/.gitmodules b/.gitmodules index f9be339e..a52486fc 100644 --- a/.gitmodules +++ b/.gitmodules @@ -22,3 +22,6 @@ [submodule "po4gitbook"] path = po4gitbook url = https://github.com/swcarpentry-i18n/po4gitbook.git +[submodule "make-novice"] + path = make-novice + url = https://github.com/swcarpentry/make-novice.git diff --git a/.mergify.yml b/.mergify.yml new file mode 100644 index 00000000..fac2166e --- /dev/null +++ b/.mergify.yml @@ -0,0 +1,7 @@ +pull_request_rules: + - name: Automatic merge on approval + conditions: + - "#approved-reviews-by>=1" + actions: + merge: + method: merge diff --git a/.template.yml b/.template.yml new file mode 100644 index 00000000..627973b6 --- /dev/null +++ b/.template.yml @@ -0,0 +1,100 @@ +remote_theme: "carpentries-i18n/carp-theme" +#------------------------------------------------------------ +# Values for this lesson. +#------------------------------------------------------------ + +# Which carpentry is this ("swc", "dc", "lc", or "cp")? +# swc: Software Carpentry +# dc: Data Carpentry +# lc: Library Carpentry +# cp: Carpentries (to use for instructor traning for instance) +carpentry: "swc" + +# Overall title for pages. +title: "Lesson Title" + + +#------------------------------------------------------------ +# Generic settings (should not need to change). +#------------------------------------------------------------ + +# What kind of thing is this ("workshop" or "lesson")? +kind: "lesson" + +# Magic to make URLs resolve both locally and on GitHub. +# See https://help.github.com/articles/repository-metadata-on-github-pages/. +# Please don't change it: / is correct. +repository: / + +# Email address, no mailto: +email: "team@carpentries.org" + +# Sites. +amy_site: "https://amy.software-carpentry.org/workshops" +carpentries_github: "https://github.com/carpentries" +carpentries_pages: "https://carpentries.github.io" +carpentries_site: "https://carpentries.org/" +dc_site: "http://datacarpentry.org" +example_repo: "https://github.com/carpentries/lesson-example" +example_site: "https://carpentries.github.io/lesson-example" +lc_site: "https://librarycarpentry.github.io/" +swc_github: "https://github.com/swcarpentry" +swc_pages: "https://swcarpentry.github.io" +swc_site: "https://software-carpentry.org" +template_repo: "https://github.com/carpentries/styles" +training_site: "https://carpentries.github.io/instructor-training" +workshop_repo: "https://github.com/carpentries/workshop-template" +workshop_site: "https://carpentries.github.io/workshop-template" + +# Surveys. +pre_survey: "https://www.surveymonkey.com/r/swc_pre_workshop_v1?workshop_id=" +post_survey: "https://www.surveymonkey.com/r/swc_post_workshop_v1?workshop_id=" +training_post_survey: "https://www.surveymonkey.com/r/post-instructor-training" + +# Start time in minutes (0 to be clock-independent, 540 to show a start at 09:00 am). +start_time: 0 + +# Specify that things in the episodes collection should be output. +collections: + episodes: + output: true + permalink: /:path/index.html + extras: + output: true + permalink: /:path/index.html + locale: + output: true + permalink: /:path/index.html + +# Set the default layout for things in the episodes collection. +defaults: + - values: + root: . + layout: page + - scope: + path: "" + type: episodes + values: + root: .. + layout: episode + - scope: + path: "" + type: extras + values: + root: .. + layout: page + - scope: + path: "" + type: locale + values: + root: .. + layout: episode + +# Files and directories that are not to be copied. +exclude: + - Makefile + - bin/ + - .Rproj.user/ + +# Turn on built-in syntax highlighting. +highlighter: rouge diff --git a/README.md b/README.md index f1262dcf..c2041e45 100644 --- a/README.md +++ b/README.md @@ -1,199 +1,50 @@ -# Internationalisation of carpentry lessons +# Internationalisation of carpentry lessons(カーペントリーのレッスンの国際化) -Please take a look at the [quickstart guide](quickstart.md) if you wish to make small contribution(s). +## [English README](README_en.md) -If you wish to contribute by translating some of the material, please make sure you comply with the [Guideline for Translators](TranslatorGuidelines.md). +小さな貢献をしたい場合は、[クイックスタートガイド](quickstart.md)を読んでみてください。 -## Purpose of this repository +資料を翻訳する前に、[翻訳者のガイドライン](TranslatorGuidelines.md)と、[行動規則](rules.md)を、読んでください -The repository is intended to host the files and tools need to facilitate translations of the Software Carpentry lessons -from English into other languages. This repository is intended to merge with the Multi-lingual versions of the lessons -in English and Spanish. We plan for these to be compatible to be hosted along with other languages on the main -Software Carpentry website and to maintain updated copies of the Japanese lessons with new releases of the -English lessons. Therefore: +また、[Slackチャンネル](https://r-wakalang.herokuapp.com/), Tokyo R ワークスペースの #swcarpentry + に参加することをおすすめします。ここは、翻訳を進める上で発生する疑問に関して質問するのに最適の場所です。 -* Please do not remove the files for other languages (currently Spanish) from the repository. -These need to be retained to merge the lessons with the main i18n repository and existing lessons. +## 目的 -* Please do not delete the archived files for translation of previous versions of the English lessons. - These will be needed to merge translations with updated English files for future releases of the - main Software Carpentry lessons. This means that we will only need to translate updated sections and - translations to sections that have not been updated will be migrated to new releases. +レポジトリは、[ソフトウェアカーペントリー](https://software-carpentry.org/)のレッスンを英語から他の言語(現在日本語に取り組んでいます)へ翻訳するのを容易にするために必要なファイルやツールをホストするためにあります。また、英語とスペイン語のレッスンの多言語化をしてマージするためでもあります。 -* Please only submit changes specific to Japanese language translations to this repository as Pull Requests. - Please submit issues specific to the English lessons to the main lesson repository. If you have a suggestion - for a change to the content or examples, we cannot change these in the Japanese lesson and the main lessons - need to be updated in English. We ask that these changes be raised as an Issue in Japanese rather than a - Pull Request if you prefer not to submit an Issue or Pull Request in English. +ソフトウェアカーペントリーのメインのウェブサイトが他の言語と一緒にホストされ互換性があり、英語のレッスンの新しいリリースに合わせて日本語のレッスンも最新に維持するように計画しています。 -* Please contact us if you wish to join the core translation team. Any contributions to the Japanese lessons - are welcome as Pull Requests but please make sure you understand the English version of the lesson if - you are able to. +私達は、ソフトウェアカーペントリーのオリジナルのレッスンを改定するのではなく、レッスを翻訳(そして最新の状態に維持)をしています。 -* Please commit and push changes to a fork of the reposiory on your personal GitHub account and - submit a Pull Request. In this way, suggested changes can be reviewed and discussed. Please raise - any matters that you are unsure of or want help with when submitting a Pull Request. +もしあなたが、レッスン自体の問題に気づいたら、英語のレッスンに対して、issueをたてたり、プルリクエストを送ってください。 -* Please track changes to all files needed to generate the translated lessons. This way we can combine - all changes from contributors and track our progress. All contributions will be attributed to each - contributor. +## gitについて -* Please contact us via an Issue if anything is unclear in the guides to set up or use the - translation tools in this repository so we can update the README and guides. - -## How does this work? +ここでは、あなたが、GitとGitHubについて知っているという仮定をしています。 -### Using git +もし、gitをインストールするのに手助けが必要ならば、[gitのインストールガイド](git.md)を読んでみてください -This repository uses the tool `git` via the command line. On Linux and Mas OS, the `bash` terminal should come pre-installed. `git` may be installed but if not it can be installed as follows: +## About PO files -- Linux Ubuntu-based distros +各レッスンのテキストを直接翻訳するのではなく、翻訳には、[PO ファイル](https://www.gnu.org/software/gettext/manual/html_node/PO-Files.html)を使います。 -``` -sudo apt-get install git -``` - -- Linux Fedora - -``` -yum install git -``` - -or - -``` -sudo dnf install git-all -``` - -- Linux Install from Debian file - -Download the `.deb` file for your OS from here: - -https://pkgs.org/download/git - -``` -dpkg -i git_2.11.0-3+deb9u4_amd64.deb -``` - -- Linux Build from source - -Download the latest version of git: - -https://github.com/git/git/releases - -or - -https://mirrors.edge.kernel.org/pub/software/scm/git/ - -``` -tar -zxf git-2.0.0.tar.gz -cd git-2.0.0 -make configure -./configure --prefix=/usr -make all doc info -sudo make install install-doc install-html install-info -``` - -- Windows - -Download Git for Windows (Git-Bash) by following the instructions here: - -https://gitforwindows.org/ - -or - -https://git-scm.com/ - -- Mac OS - -Install usiing homebrew (requires Xcode): https://docs.brew.sh/Installation - -``` -brew install git -``` - -### Importing a lesson for the first time - -If you wish to start a translation of a lesson that has not been translated in your language before, -please follow these instructions. See the instructions below for if your lesson has an exisiting -translation and you wish to submit changes or an update. +POファイルは、複数のエントリで構成されるテキスト形式のファイルです。各エントリーは、元のテキストと、その翻訳の短い部分が含まれています。オリジナルのレッスンごとに、1つのPOファイルがあります。例えば、[Software Carpentry 'git novice' lesson](https://github.com/swcarpentry/git-novice)は、複数の markdown形式のドキュメントで構成され、日本語の翻訳に関しては1つの `git-novice.ja.po` というPOファイルがあります。これにより、手動ではなく、オリジナルのテキストの追跡を行うことができ、オリジナルのレッスンが更新されたときに、変更され翻訳が必要とされる部分を正確に把握することができます。無料のPOエディタは、いくつかあります: [PoEdit](http://www.poedit.net),[GTranslator](https://wiki.gnome.org/Apps/Gtranslator), [Lokalize](https://userbase.kde.org/Lokalize). これらのいずれかを使用して、POファイルを翻訳することをお勧めします。 -1. Create a "Fork" for this repository on your personal GitHub account. (Click "Fork" in the top right - corner of the `https://github.com/swcarpentry-ja/i18n` webpage) - -2. Clone this repository from your personal account (e.g., GitHubUser). This is your local copy to manage your version of - the translation files. - -``` -cd directory -git clone git@github.com:GitHubUser/i18n.git -cd i18n -``` - -If you already have a fork of translation repository, please pull changes for the current - version from the organisation repository: - -``` -git checkout ja -git remote add swc-ja git@github.com:swcarpentry-ja/i18n.git -git pull swc-ja ja -``` - - -3. Add a submodule for the lessons that you want to translate - -``` -git submodule add https://github.com/swcarpentry/git-novice.git -``` +## 初めてレッスンをインポートするとき -4. Run `po4gitbook/update.sh` - That creates/updates the `po` directory with the `.pot` files to use in translations. - -5. Create a `po` file and start translating! - - copy `.pot` to `..po`. e.g., - ```bash - cd po - cp shell-novice.pot shell-novice.es.po - ``` - - Edit the file with your favourite po editor ([PoEdit](http://www.poedit.net), - [GTranslator](https://wiki.gnome.org/Apps/Gtranslator), [Lokalize](https://userbase.kde.org/Lokalize), ...) - Note: - - "`Language`" field is needed to add to the header (at least with gtranslator), the rest is put by the tool. - - "`Language-Team:`" needs the first letter in upper case (e.g., `Es` or `Ja`) - - Create `po/LINGUAS` - - run `po4gitbook/compile.sh` - This creates a `locale//` tree directory - -This generates a translated version of the lessons. Please do not create a git repository within - this repository. You can copy these files to another repository as described in the - "Guide for Translators" and submit changes to the PO files via Pull Request to GitHub. - -Please note that there are files shared between lesson repositories: -``` -CODE_OF_CONDUCT.md -CONTRIBUTING.md -LICENSE.md -README.md -``` -These will be hosted on the translated Git repository but will not be included in the - webpages once they are generated. Apart from the `README`, these are the same files - between each lesson. Please check that these files have not been already translated - for another lesson. If so you can copy these to ensure they are consistent. +レッスンはサブモジュールとしてインポートされます。この作業はレッスンにつき1度だけ行われ、ほとんどの翻訳者はこれを行う必要はありません。もし、あなたが新しいレッスンをインポートしたいときには、[インポートのガイド](importing.md)を参照してください。 -While these files appear at the beginning of the PO files (since files are sorted alphabetically), - they are not a priority to translate. Please skip to the beginning of the lesson, - following the README. +## 既存のレッスンの翻訳へ貢献する -### Contributing to a translation of an existing lesson +**これは、翻訳者からの手助けが最も必要なタスクです!** -Please see these instructions if you wish to contribute to a translation in progress - on the current version the main English lessons. This is for updating or translating - sections to a translation in progress. To import updates from a new release of - the main English lessons, please see the instructions below. +これは、[インポートのガイド](importing.md)で説明されているように、`swcarpentry-ja/i18n`がサブモジュールとして既に追加されていることを前提としています。あなたは、そのレッスンの翻訳に貢献したいとします。 -1. Create a "Fork" for this repository on your personal GitHub account. (Click "Fork" in the top right +1. 個人のGitHubアカウントで、このレポジトリの"フォーク"を作成します。 (`https://github.com/swcarpentry-ja/i18n`の右上の"フォーク(fork)"をクリックします。 corner of the `https://github.com/swcarpentry-ja/i18n` webpage) -2. Clone this repository from your personal account (e.g., GitHubUser). This is your local copy to manage your version of - the translation files. +2. 個人のアカウント(GitHubUserなど)で、このレポジトリをクローンします。これは、翻訳ファイルのバージョン管理するためのローカルコピーです ``` cd directory @@ -201,64 +52,23 @@ git clone git@github.com:GitHubUser/i18n.git cd i18n ``` -If you already have a fork of translation repository, please pull changes for the current - version from the organisation repository: +3. サブモジュールを使えるようにする. ``` -git checkout ja -git remote add swc-ja git@github.com:swcarpentry-ja/i18n.git -git pull swc-ja ja +git submodule init +git submodule update ``` -This repository should already contain a translation file for the lesson that you wish to contribute to - in the `po` directory ..po such as `git-novice.ja.po` +このレポジトリはすでに、レッスンの翻訳ファイルが含まれています。翻訳に貢献したいときには、 `po` ディレクトリの中の `<レッスン名>.<言語>.po` 、例えば `git-novice.ja.po` に貢献することができます。 ```bash cd po ls git-novice.ja.po ``` -3. Add and edit translations to the PO files. - - - Edit the file with your favourite po editor ([PoEdit](http://www.poedit.net), - [GTranslator](https://wiki.gnome.org/Apps/Gtranslator), [Lokalize](https://userbase.kde.org/Lokalize), ...) - Note: - - "`Language`" field is needed to add to the header (at least with gtranslator), the rest is put by the tool. - - "`Language-Team:`" needs the first letter in upper case (e.g., `Es`) - - Create `po/LINGUAS` - - Run `po4gitbook/compile.sh` - This creates a `locale//` tree directory - -This generates a translated version of the lessons with your changes. You can add and commit - changes to the PO files and submit changes as a Pull Request on GitHub as described in the - "Guide for Translators". +4. POファイルを編集します。[ガイドラインに従って](rules.md), 頻繁に変更をコミットし、十分だとおもったらpull request を投稿してください。 - Please do not create a git repository within this repository. You can copy these files to another repository - as described in the "Guide for Maintainers and Administrators" and submit changes to translated - lesson repository to update the webpages hosted on GitHub. - -### Contributing to translation of an updated lesson with a new release of the main English lessons - -If there is an existing (complete) translation of the lesson in your language but - there has a new release of the main English lessons, the new updated version - of the English lessons needs to be merged with the current translated. This way - the sections have not been changed and have already been translated will be migrated - to the new version of the lessons and only the sections that have been changed remain - to be translated. - -1. Create a "Fork" for this repository on your personal GitHub account. (Click "Fork" in the top right - corner of the `https://github.com/swcarpentry-ja/i18n` webpage) - -2. Clone this repository from your personal account (e.g., GitHubUser). This is your local copy to manage your version of - the translation files. - -``` -cd directory -git clone git@github.com:GitHubUser/i18n.git -cd i18n -``` - -If you already have a fork of translation repository, please pull changes for the current - version from the organisation repository: +5. 正確を期すために、あなたのPRについて、レビューが行われます。レビューがパスするまで、編集を続けます。そのようなときは、まずはじめに、組織のレポジトリに対する変更を pull してください。 ``` git checkout ja @@ -266,176 +76,33 @@ git remote add swc-ja git@github.com:swcarpentry-ja/i18n.git git pull swc-ja ja ``` -3. Import the current version of the main English lessons. - -Update the submodule for the lesson that you want to translate - -``` -git submodule add https://github.com/swcarpentry/git-novice.git -``` - -Alternatively, you can update the submodules for every lesson: - -``` -git submodule foreach git pull origin master -``` - -4. Create translation files for the updated version of the lessons - -Run `po4gitbook/update.sh` - That creates/updates the `po` directory with the `.pot` files to use in translations. - -For an update: existing translations will be merged into an updated file. -```bash -cd po -ls git-novice.ja.po -``` - -5. This creates an updated `po` file with updated sections ready to translate. - - - - Edit the file with your favourite po editor ([PoEdit](http://www.poedit.net), - [GTranslator](https://wiki.gnome.org/Apps/Gtranslator), [Lokalize](https://userbase.kde.org/Lokalize), ...) - Note: - - "`Language`" field is needed to add to the header (at least with gtranslator), the rest is put by the tool. - - "`Language-Team:`" needs the first letter in upper case (e.g., `Es`) - - Create `po/LINGUAS` - - Run `po4gitbook/compile.sh` - This creates a `locale//` tree directory - -This generates a translated version of the lessons with your changes. You can add and commit - changes to the PO files and submit changes as a Pull Request on GitHub as described in the - "Guide for Translators". - - Please do not create a git repository within this repository. You can copy these files to another repository - as described in the "Guide for Maintainers and Administrators" and submit changes to translated - lesson repository to update the webpages hosted on GitHub. - -## Guide for Translators - -This assumes that you are familiar with using Git and GitHub. -We are translating (and keeping up-to-date) the Software Carpentry notes. -If you notice an issue with the lesson materials themselves, please send an issue for pull request to the English lesson materials. - -### Resources for translations - -Please follow the following Guidelines for translators when editing the lessons: - -https://github.com/swcarpentry-ja/i18n/blob/ja/TranslatorGuidelines.md - -There is a list of technical terms to refer to for ensuring that terms are consistently used between lessons, please update and refer to this as needed: - -https://github.com/swcarpentry-ja/i18n/wiki/Glossary-for-technical-terms - -### To contribute to lesson materials - -Fork this repository on GitHub and clone the **forked repo** to your local machine: -```bash -git clone git@github.com:/i18n.git -``` - -Some of the above procedure has been performed for some lessons already. -These scripts can be used to initialise translation of a new lesson -or update a translation of a lesson in progress. - -1. Import lesson as instructed above (or pull current version from organisation repo) +PRがレビューをパスするまでステップ4と5を繰り返します -2. Check that lang.md has the assets in the correct language +いくつかのメモ: -3. Translate sections (or check translations) and commit changes +POファイルを編集しても、翻訳されたWebサイトができあがるわけではありません。[メンテナーと管理者ガイド](admin.md)で述べられているように、これはメンテナーに任されています。 -4. Push or your personal repo and send pull request to organisation repository +POファイルを編集したあと、翻訳された Markdown ファイルを見たいときには、 `bash po4gitbook/compile.sh` を実行します。これは、あなたの変更を含めた翻訳されたバージョンを生成します。これは、`locale//`, 例, `locale/ja/git-novice`で見つけることができます。 - a. Clone the swcarpentry-ja lesson with "lesson-name-ja" or create a new lesson repo to (if one does not exist already) to host the translated lessons. -You can push commit changes to the submodule of the lesson before translation or create a fresh repository with the translated files. +## メインの英語のレッスンが新しくリリースされたら、レッスンを更新するのに貢献する - b. Copy changes from from automatically generated lessons `rsync -ur i18n/locale/ja/git-novice/ git-novice-ja` +レッスンの(完全な)翻訳が存在しても、メインの英語のレッスンが新しくリリースされることがあります。 +更新されたバージョンの英語のレッスンは、現在の翻訳されたものにマージされる必要があります。 - c. Commit changes and push to GitHub +[レッスン更新時のガイド](updating.md)を見てください。 - d. Create a Pull Request from your repo to `swcarpentry-ja` for the translated lesson repo AND the updated PO files in `i18n`. Please reference your lesson pull request #Number when creating a pull request to i18n. +## 翻訳のためのリソース -If you send a pull request of translated files, we can merge them into the lesson materials and generate the updated webpages. If you wish to generate a preview of these yourself on your local repo, please see the instructions below. +レッスンを編集するときには[翻訳者のためのガイドライン](TranslatorGuidelines.md)に従ってください。 -5. Please commit often and discuss issues on github to ensure that we are not repeating each other +レッスン間で用語が一貫して使われていることを確認するために [技術用語のリスト](https://github.com/swcarpentry-ja/i18n/wiki/Glossary-for-technical-terms) があります。必要に応じてこれを参照したり更新したりしてください。 -6. Update the `ChangeLog.md` and `CultureNotes.md` files accordingly +一貫性を担保するために、日本語に翻訳されない概念などの標準化された取り扱いについては、 [カルチャーノート](CultureNotes.md) を参照してください。 -ChangeLog.md is to track progress and goals. CultureNotes.md is a share record of non-literal translations to ensure consistency. +進捗と、ゴールを記録するために[変更履歴](ChangeLog.md)を持っています。 -7. Add your name to the translation team if you wish (unless you want to remain anonymous) +## メンテナーと管理者のガイド -Thank you for all your help. Even seemingly minor contributions will be appreciated! - -## Guide for Maintainers and Administrators - -### To update the GitHub pages lessons with Jekyll - -This assumes a high level of familiarity with Git, GitHub, and how these lessons have been configured. These tools can be used to - update the webpages hosted on the organisation repository or create a hosted webpage on your personal fork. - -Updates to the files can be managed by tracking changes to the PO files and translated lessons -can be viewed on the GitHub repository as Markdown files in the `_episodes` directory -of the respectve lesson repo. It is not necessary to update the webpages for every update to -the translations. This will be managed by lesson maintainers and organisers of the Japanese -language team. - -1. Run `po4gitbook/compile.sh` on updated PO files (commit and push changes to PO files to i18n) - -Note that in order for the lessons to compile the Credit line in the PO files HEADER - "# FULL NAME , YEAR." must match the contact details of the "Last-Translator". -Please fill in your details or keep these consistent in order to build the new translated lessons. - - -``` -git add -u po/*ja.po -git commit -m "update PO files" -git push origin ja -``` - -2. Clone the translated lesson repo (to a directory outside the i18n repository) -``` -git clone https://github.com/swcarpentry-ja/git-novice-ja.git -``` -Or pull to your copy of this repo -``` -git pull origin master -``` - -3. Move updated translated files to the cloned translated lesson -``` -rsync -ru i18n/locale/ja/git-novice/* git-novice-ja -``` - -4. Commit and push changes to the translated lesson -``` -git add -u * -git commit -m "update lesson files" -git push origin master -``` - -6. Clone or pull a copy of the original lesson repo (again outside any existing git repos) -``` -git clone https://github.com/swcarpentry-ja/git-novice.git -``` - -Or pull to your copy of this repo -``` -git pull origin gh-pages -``` - -6. Sync changes to (master branch of) the pushed submodule files to the original lesson repository -``` -git submodule foreach git pull origin master -``` - -7. Commit changes to the submodule to the original lesson -``` -git add -u -git commit -m "update Japanese lessons" -``` - -8. Push to the lesson repo (or send a pull request) -``` -git push origin gh-pages -``` +[メンテナーと管理者のガイド](admin.md) を見てください -Jekyll will update the "github.io" webpages once a new commit is pushed (but it will not see new commits to submodules unless these are pulled and committed) +ご協力いただきありがとうございます。たとえ小さな貢献であっても、大歓迎です。 diff --git a/README_en.md b/README_en.md new file mode 100644 index 00000000..fb2445c5 --- /dev/null +++ b/README_en.md @@ -0,0 +1,113 @@ +# Internationalisation of carpentry lessons + +## [日本語](README.md) + +Please take a look at the [quickstart guide](quickstart.md) if you wish to make small contribution(s). + +Before translating any material, please make sure you comply with the [Guidelines for Translators](TranslatorGuidelines.md) and read the [Rules of Conduct](rules.md). + +We encourage translators to [join our slack channel](https://r-wakalang.herokuapp.com/), #swcarpentry in the Tokyo.R workspace. This is a great place to ask any questions you may have about the workflow. + +## Purpose + +The repository is intended to host the files and tools need to facilitate translations of the [Software Carpentry](https://software-carpentry.org/) lessons +from English into other languages (currently we are working on Japanese). This repository is intended to merge with the Multi-lingual versions of the lessons +in English and Spanish. We plan for these to be compatible to be hosted along with other languages on the main +Software Carpentry website and to maintain updated copies of the Japanese lessons with new releases of the +English lessons. + +We are translating (and keeping up-to-date) the Software Carpentry lessons, not revising original lesson material. +If you notice an issue with the lesson materials themselves, please send an issue for pull request to the English lesson materials. + +## About git + +This assumes that you are familiar with using Git and GitHub. + +If you need help installing git, please see the [guide on installing git](git.md). + +## About PO files + +We use [PO files](https://www.gnu.org/software/gettext/manual/html_node/PO-Files.html) for translation, rather than translating the text of each lesson directly. A PO file is a plain text file consisting of multiple entries, where each entry contains a short portion of the original text and its translation. There is one PO file for each original lesson. For example, the [Software Carpentry 'git novice' lesson](https://github.com/swcarpentry/git-novice), which consists of multiple markdown documents, has a single PO file called `git-novice.ja.po` for translating into Japanese. + +This way, we can keep track of the original text and know exactly what needs to be changed when the original lessons are updated, instead of manually tracking changes. + +There are a number of free PO editors: [PoEdit](http://www.poedit.net), +[GTranslator](https://wiki.gnome.org/Apps/Gtranslator), [Lokalize](https://userbase.kde.org/Lokalize), to name a few. We recommend using one of these to edit the PO files. + +## Importing a lesson for the first time + +Lessons are imported as submodules. This only needs to happen once per lesson, so most translators will not need to do this. If you want to import a new lesson, please see the [guide on importing](importing.md). + +## Contributing to a translation of an existing lesson + +**This is the task that we need the most help with from translators!** + +This assumes that the lesson has already been added to the `swcarpentry-ja/i18n` as a submodule as described in the [guide on importing](importing.md), and you would like to contribute translations for that lesson. + +1. Create a "Fork" for this repository on your personal GitHub account. (Click "Fork" in the top right + corner of the `https://github.com/swcarpentry-ja/i18n` webpage) + +2. Clone this repository from your personal account (e.g., GitHubUser). This is your local copy to manage your version of + the translation files. + +``` +cd directory +git clone git@github.com:GitHubUser/i18n.git +cd i18n +``` + +3. Populate submodules. + +``` +git submodule init +git submodule update +``` + +This repository should already contain a translation file for the lesson that you wish to contribute to in the `po` directory `..po` such as `git-novice.ja.po` + +```bash +cd po +ls git-novice.ja.po +``` + +4. Edit the PO files. [As per the guidelines](rules.md), please commit your changes frequently and submit a pull request when you are satisfied with your work. + +5. Your PR will be reviewed for accuracy. You may need to make edits so it can pass review. When doing so, always be sure to pull changes from the organisation repository first: + +``` +git checkout ja +git remote add swc-ja git@github.com:swcarpentry-ja/i18n.git +git pull swc-ja ja +``` + +Repeat steps 4 and 5 until the PR passes review. + +A few notes: + +Editing the PO file will not generate the translated website. That is left to the maintainers, as described in the [guide for maintainers and administrators](admin.md). + +If you want to see a translated MD file after editing the PO file, run `bash po4gitbook/compile.sh`. This generates a translated version of the lesson with your changes, which you can find at `locale//`, e.g., `locale/ja/git-novice`. + +## Contributing to translation of an updated lesson with a new release of the main English lessons + +If there is an existing (complete) translation of the lesson but + there has a new release of the main English lessons, the updated version + of the English lessons needs to be merged with the current translated one. + +Please see the [guide on updating lessons](updating.md). + +## Resources for translations + +Please follow [guidelines for translators](TranslatorGuidelines.md) when editing the lessons. + +There is a [list of technical terms](https://github.com/swcarpentry-ja/i18n/wiki/Glossary-for-technical-terms) to refer to for ensuring that terms are consistently used between lessons. Please update and refer to this as needed. + +Please see the [culture notes](CultureNotes.md) for a standardized treatment of concepts that don't translate literally into Japanese to ensure consistency. + +We have a [change log](ChangeLog.md) to track progress and goals. + +## Guide for maintainers and administrators + +Please see the [guide for maintainers and administrators](admin.md) + +Thank you for all your help. Even seemingly minor contributions will be appreciated! diff --git a/TranslatorGuidelines.md b/TranslatorGuidelines.md index ebc4a6c0..29d31b74 100644 --- a/TranslatorGuidelines.md +++ b/TranslatorGuidelines.md @@ -3,18 +3,18 @@ ## レッスンのタイトル 最初に翻訳を始めた人が決めます。 -そのあとは統一しましょう。 +そのあとに統一しましょう。 ## 本文 「です・ます調」を基本とします。 -直訳よりも、分かりやすいかつ自然な日本語を優先します。 -したがって、言葉を逐一訳す必要もなく、文章のフレーズの順番を守る必要もありません。 +直訳よりも、分かりやすく自然な日本語を優先します。 +従って、言葉を逐一訳す必要もなく、文章のフレーズの順番を守る必要もありません。 -`.po`ファイルを編集している時に、`\n`で改行しているように見えますが、これは本当の改行ではありあません(`.md`ファイルと同じく、一行開けることによって改行が入る)。 +`.po`ファイルを編集している時に、`\n`で改行しているように見えますが、これは本当の改行ではありあません(`.md`ファイルと同じく、一行開けることによって改行が入ります)。 なので、`\n`は無視して下さい(英語と日本語で`\n`の数・場所を合わせる必要はありません)。 -翻訳をする際、`\n`を入れると書きやすく・見やすくなるのであれば、入れても構いません。 +翻訳をする際、改行を入れると書きやすく・見やすくなるのであれば、`\n`を入れても構いません。 ### 専門用語 @@ -33,7 +33,7 @@ DC/SWCのレッスンは専門用語がかなり多く、複数のレッスン ### 句読点 -「、。」を使うようにしましょう(,.ではなく)。 +カンマ(,)やピリオド(.)ではなく「、。」を使うようにしましょう。 ### 数字 @@ -47,7 +47,8 @@ DC/SWCのレッスンは専門用語がかなり多く、複数のレッスン - 12,500 が 1万2千5百 より短くて読みやすい -- 日付は半角 (8月12日 とする。8月12日 とはしない)、そして西暦を使うように。 +- 西暦を使い、日付は半角を使いましょう。 + - 8月12日 とします。一桁だからといって8月12日 と8を全角を使いません ### 漢数字と算用数字 @@ -55,9 +56,9 @@ DC/SWCのレッスンは専門用語がかなり多く、複数のレッスン ### 単位 -- メートル法に変換 +- メートル法に変換します -- ドル以外の場合は必要に応じて日本円に換算する。()に入れても良い +- ドル以外の場合は必要に応じて日本円に換算します。()の中に入れても良いです - 大雑把な数字は大雑把な数字として訳して、数字の精度について誤った印象を与えないようにします。 @@ -75,14 +76,14 @@ DC/SWCのレッスンは専門用語がかなり多く、複数のレッスン このような場合に参照する国語辞典としては広辞苑が定番ですが、あいにく広辞苑はネットで無料で使えるようになっていません。 ネットで引けるものとしては三省堂の大辞林 [http://www.excite.co.jp/dictionary/japanese/](http://www.excite.co.jp/dictionary/japanese/) や小学館の大辞泉 [http://dictionary.goo.ne.jp/jn/](http://dictionary.goo.ne.jp/jn/) があります。 -国語辞典に載っていない語について最も標準的な表記を調べるには、googleで検索したときのヒット件数が参考になります。 +国語辞典に載っていない語について最も標準的な表記を調べるには、Googleで検索したときのヒット件数が参考になります。 ### 題名 -本、雑誌、記事、映画、番組、コンピューターゲームは『』でくくる。 +本、雑誌、記事、映画、番組、コンピューターゲームは『』でくくります。 オフィシャルな訳がない作品のタイトルは訳しません。 -文字数が許せば『英語(日本語訳)』とするのが親切かもしれません。 +文字数が許せば『英語(日本語訳)』とするのが親切になるでしょう。 例:『 Visual Explanations (説明図の技法)』← 未訳の本です。 説明図の技法というのは、内容を伝えるために仮に訳したタイトルです。 @@ -92,16 +93,16 @@ DC/SWCのレッスンは専門用語がかなり多く、複数のレッスン 組織名称などの処理の工夫として定訳がない組織名は「英語(日本語訳)」とか、長いものなら「略語(日本語訳)」。 以下のようなことを考えて、組織名称ごとに判断します。 -組織名、固有名詞などは、英字を維持した方が、検索しさらに勉強したい人の便宜にかなうかもしれません (カタカナ表記してしまうと、検索してもこのレッスンだけがヒットする状況が生まれることがある)。 +組織名、固有名詞などは、英字を維持した方が、検索しさらに勉強したい人にとってよいかもしれません (無理にカタカナ表記にしてしまうと、検索してもこのレッスンだけがヒットする状況が生まれることがあります)。 -組織名が、日本の視聴者にとって意味ある情報かを考えましょう。 +組織名が、日本語を読む人にとって意味ある情報かを考えましょう。 -例えば、略称の読みが、別の単語と同じ音になっている、韻を踏んでいるなど、学生にとって意味がある場合はカッコ書きで音訳を添えるのは親切かもしれません。 +例えば、略称の読みが、別の単語と同じ音になっている、韻を踏んでいるなど、学生にとって意味がある場合はカッコ書きで音訳を添えると親切かもしれません。 メロドラマのタイトルだったら、「オール・マイ・チルドレン」などと音訳するのも、雰囲気を伝える一つの手です。 -『戻ってきた帽子をかぶったネコ(The Cat in the Hat Comes Back)』と両方書いてあると、両方検索した段階で、実は日本語訳がないことがわかる。 -一読したときには、物語のタイトルとわかる。 +『戻ってきた帽子をかぶったネコ(The Cat in the Hat Comes Back)』と両方書いてあると、両方検索した段階で、実は日本語訳がないことがわかり、 +一読したときに、物語のタイトルとわかります。 ### 地名 @@ -110,7 +111,7 @@ DC/SWCのレッスンは専門用語がかなり多く、複数のレッスン ### 解説・訂正 日本語の文字とのバランスを考え、全角のかな文字を囲むときには、全角の()がおすすめです。 -半角英数文字を囲むときには、半角の()を使ってください。                   +半角英数文字を囲むときには、半角の()を使いましょう。                   訳者の解説は() diff --git a/Translators.md b/Translators.md index ce8ad23b..8e4b2bc8 100644 --- a/Translators.md +++ b/Translators.md @@ -7,37 +7,37 @@ Team lead (co-ordinator) Members * [Riku Takei][takei_riku]: Assistant Research Fellow (University of Otago, Dunedin, New Zealand) - * Lesson organiser and reviewer (Git) + * Lesson organiser and moderator (Git) * GitHub: [@rikutakei](https://github.com/rikutakei) * Twitter: [@rikutakei](http://twitter.com/rikutakei) -* [Joel Nitta][nitta_joel]: Postdoctoral Researcher (National Museum of Nature and Science, Tsukuba, Japan) - * Reviewer and technical support +* [Joel Nitta][nitta_joel]: Postdoctoral Researcher (Smithsonian National Museum of Natural History, Washington DC, USA) + * Reveiwer and technical support * GitHub: [@joelnitta](https://github.com/joelnitta) * Twitter: [@joel_nitta](http://twitter.com/joel_nitta) * [Homepage](https://joelnitta.com) -* [Maki Arakaki][arakaki_maki] - * Lesson organiser (R gapminder) +* [Maki Arakaki][arakaki_maki] (Tokyo, Japan) + * Lesson organiser and moderator (R gapminder) * GitHub: [@rkkmk](https://github.com/rkkmk) -* [Daichi Saito][saito_daichi +* [Daichi Saito][saito_daichi] (Tokyo, Japan) * Lesson contributor (R gapminder) * GitHub: [@DaichiSaitoAF](https://github.com/DaichiSaitoAF) - * Twitter: [@daichibaa](http://githut.com/daichibaa) + * Twitter: [@daichibaa](http://github.com/daichibaa) -* [Tomohiro Egawa][egawa_tomohiro] +* [Atsushi Yamamoto][yamamoto_atsushi] (Okayama, Japan) * Lesson contributor (R gapminder) - * GitHub: [@](https://github.com/) - * Twitter: [@bakamyudatri](http://twitter.com/bakamyudatri) + * GitHub: [@atusy](https://github.com/atusy) + * Twitter: [@Atsushi776](http://github.com/Atsushi776) -* [Kyoko Matsumura][matsumura_kyoko] - * Lesson organiser (Shell) +* [Kyoko Matsumura][matsumura_kyoko] (Tokyo, Japan) + * Lesson organiser and moderator (Shell) * GitHub: [@kyyonko](https://github.com/kyyonko) * Twitter: [@kyyonko](http://twitter.com/kyyonko) * [Kozo Nishida][nishida_kozo]: Technical Scientist (RIKEN BDR, Osaka, Japan) - * Lesson organiser (Python) + * Lesson organiser and moderator (Python) * GitHub: [@kozo2](https://github.com/kozo2) * Twitter: [@kozo2](http://twitter.com/kozo2) @@ -45,13 +45,21 @@ Members * Translation contributor and reviewer * GitHub: [@manabuishii](https://github.com/manabuishii) * Twitter: [@manabuishiirb](http://twitter.com/manabuishiirb) - -* [Koki Mimura][mimura_koki]: Postdoctoral Researcher (Tokyo University of Agriculture and Technology, Tokyo, Japan) + +* [Satoshi Yokota][yokota_sotashi]: Postdoctoral Scholar (Stanford University, School of Medicine, California, USA) * Translation contributor and reviewer + * GitHub: [@megane0-0](https://github.com/megane0-0) + * Twitter: [@megane0-0](http://twitter.com/megane0-0) + +* [Koki Mimura][mimura_koki]: Postdoctoral Researcher (Tokyo University of Agriculture and Technology, Tokyo, Japan) + * Advisor on organising events * GitHub: [@kilometer0101](https://github.com/kilometer0101) * Twitter: [@kilometer00](http://twitter.com/kilometer00) Please include your GitHub account and any other detail that you wish to be public. * [GivenName FamilyName][family_given]: Job title (Affiliation, location) - [@GitHubUser](https://github.com/GitHubUser) + * Role + * GitHub: [@GitHubUser](https://github.com/GitHubUser) + * Twitter: [@handle](http://twitter.com/handle) + diff --git a/admin.md b/admin.md new file mode 100644 index 00000000..29f403e5 --- /dev/null +++ b/admin.md @@ -0,0 +1,74 @@ +## Information for Maintainers and Administrators + +### To update the GitHub pages lessons with Jekyll + +This assumes a high level of familiarity with Git, GitHub, and how these lessons have been configured. These tools can be used to + update the webpages hosted on the organisation repository or create a hosted webpage on your personal fork. + +Updates to the files can be managed by tracking changes to the PO files and translated lessons +can be viewed on the GitHub repository as Markdown files in the `_episodes` directory +of the respectve lesson repo. It is not necessary to update the webpages for every update to +the translations. This will be managed by lesson maintainers and organisers of the Japanese +language team. + +1. Run `po4gitbook/compile.sh` on updated PO files (commit and push changes to PO files to i18n) + +Note that in order for the lessons to compile the Credit line in the PO files HEADER + "# FULL NAME , YEAR." must match the contact details of the "Last-Translator". +Please fill in your details or keep these consistent in order to build the new translated lessons. + + +``` +git add -u po/*ja.po +git commit -m "update PO files" +git push origin ja +``` + +2. Clone the translated lesson repo (to a directory outside the i18n repository) +``` +git clone https://github.com/swcarpentry-ja/git-novice-ja.git +``` +Or pull to your copy of this repo +``` +git pull origin master +``` + +3. Move updated translated files to the cloned translated lesson +``` +rsync -ru i18n/locale/ja/git-novice/* git-novice-ja +``` + +4. Commit and push changes to the translated lesson +``` +git add -u * +git commit -m "update lesson files" +git push origin master +``` + +6. Clone or pull a copy of the original lesson repo (again outside any existing git repos) +``` +git clone https://github.com/swcarpentry-ja/git-novice.git +``` + +Or pull to your copy of this repo +``` +git pull origin gh-pages +``` + +6. Sync changes to (master branch of) the pushed submodule files to the original lesson repository +``` +git submodule foreach git pull origin master +``` + +7. Commit changes to the submodule to the original lesson +``` +git add -u +git commit -m "update Japanese lessons" +``` + +8. Push to the lesson repo (or send a pull request) +``` +git push origin gh-pages +``` + +Jekyll will update the "github.io" webpages once a new commit is pushed (but it will not see new commits to submodules unless these are pulled and committed) diff --git a/example_use.sh b/example_use.sh new file mode 100644 index 00000000..def3860c --- /dev/null +++ b/example_use.sh @@ -0,0 +1,3 @@ + +#create lesson "make-novice" +sh wrapper.sh --repo make-novice --create diff --git a/git.md b/git.md new file mode 100644 index 00000000..ed92c075 --- /dev/null +++ b/git.md @@ -0,0 +1,68 @@ +### Using git + +This repository uses the tool `git` via the command line. On Linux and Mas OS, the `bash` terminal should come pre-installed. `git` may be installed but if not it can be installed as follows: + +- Linux Ubuntu-based distros + +``` +sudo apt-get install git +``` + +- Linux Fedora + +``` +yum install git +``` + +or + +``` +sudo dnf install git-all +``` + +- Linux Install from Debian file + +Download the `.deb` file for your OS from here: + +https://pkgs.org/download/git + +``` +dpkg -i git_2.11.0-3+deb9u4_amd64.deb +``` + +- Linux Build from source + +Download the latest version of git: + +https://github.com/git/git/releases + +or + +https://mirrors.edge.kernel.org/pub/software/scm/git/ + +``` +tar -zxf git-2.0.0.tar.gz +cd git-2.0.0 +make configure +./configure --prefix=/usr +make all doc info +sudo make install install-doc install-html install-info +``` + +- Windows + +Download Git for Windows (Git-Bash) by following the instructions here: + +https://gitforwindows.org/ + +or + +https://git-scm.com/ + +- Mac OS + +Install usiing homebrew (requires Xcode): https://docs.brew.sh/Installation + +``` +brew install git +``` diff --git a/importing.md b/importing.md new file mode 100644 index 00000000..1182a9d6 --- /dev/null +++ b/importing.md @@ -0,0 +1,69 @@ +## Importing a lesson for the first time + +If you wish to start a translation of a lesson that has not been translated in your language before, +please follow these instructions. See the instructions below for if your lesson has an exisiting +translation and you wish to submit changes or an update. + +1. Create a "Fork" for this repository on your personal GitHub account. (Click "Fork" in the top right + corner of the `https://github.com/swcarpentry-ja/i18n` webpage) + +2. Clone this repository from your personal account (e.g., GitHubUser). This is your local copy to manage your version of + the translation files. + +``` +cd directory +git clone git@github.com:GitHubUser/i18n.git +cd i18n +``` + +If you already have a fork of translation repository, please pull changes for the current + version from the organisation repository: + +``` +git checkout ja +git remote add swc-ja git@github.com:swcarpentry-ja/i18n.git +git pull swc-ja ja +``` + + +3. Add a submodule for the lessons that you want to translate + +``` +git submodule add https://github.com/swcarpentry/git-novice.git +``` + +4. Run `po4gitbook/update.sh` - That creates/updates the `po` directory with the `.pot` files to use in translations. + +5. Create a `po` file and start translating! + - copy `.pot` to `..po`. e.g., + ```bash + cd po + cp shell-novice.pot shell-novice.es.po + ``` + - Edit the file with your favourite po editor ([PoEdit](http://www.poedit.net), + [GTranslator](https://wiki.gnome.org/Apps/Gtranslator), [Lokalize](https://userbase.kde.org/Lokalize), ...) + Note: + - "`Language`" field is needed to add to the header (at least with gtranslator), the rest is put by the tool. + - "`Language-Team:`" needs the first letter in upper case (e.g., `Es` or `Ja`) + - Create `po/LINGUAS` + - run `po4gitbook/compile.sh` - This creates a `locale//` tree directory + +This generates a translated version of the lessons. Please do not create a git repository within + this repository. You can copy these files to another repository as described in the + "Guide for Translators" and submit changes to the PO files via Pull Request to GitHub. + +Please note that there are files shared between lesson repositories: +``` +CODE_OF_CONDUCT.md +CONTRIBUTING.md +LICENSE.md +README.md +``` +These will be hosted on the translated Git repository but will not be included in the + webpages once they are generated. Apart from the `README`, these are the same files + between each lesson. Please check that these files have not been already translated + for another lesson. If so you can copy these to ensure they are consistent. + +While these files appear at the beginning of the PO files (since files are sorted alphabetically), + they are not a priority to translate. Please skip to the beginning of the lesson, + following the README. diff --git a/lang.md b/lang.md index 38cb94fd..ebd97101 100644 --- a/lang.md +++ b/lang.md @@ -15,18 +15,18 @@ contribute: "貢献します" source: "ソース" cite: "引用します" contact: "連絡します" -keypoints: "キーポイント" +keypoints: "要点" overview: "概要" break: "休止" -previous: "前に" +previous: "戻る" next: "次へ" episode: "エピソード" lessonHome: "レッスンのホーム" -teaching: "教えります" +teaching: "講義" exercises: "練習" min: "分" questions: "質問" -objectives: "目的" +objectives: "目標" downloadLesson: "レッスンの必要なファイルをダウンロードします" finish: "仕上がり" scheduleDisclaimer: "実際のスケジュールは、インストラクターが選択したトピックや演習によって若干異なる場合があります." diff --git a/make-novice b/make-novice new file mode 160000 index 00000000..995e4743 --- /dev/null +++ b/make-novice @@ -0,0 +1 @@ +Subproject commit 995e4743f9698edad3f13e64cbe28e0a1a03dece diff --git a/po/.ancestors/.git-novice.jp.po.ancestor b/po/.ancestors/.git-novice.jp.po.ancestor new file mode 100644 index 00000000..8d3f794a --- /dev/null +++ b/po/.ancestors/.git-novice.jp.po.ancestor @@ -0,0 +1,17554 @@ +# Japanese translation of the Software Carpentry Git Lesson +# Copyright (C) 2018 Software Carpentry Foundation; Japanese Translation Team +# This file is distributed under the same license as the gitbook package. +# Tom Kelly , 2018. +# +msgid "" +msgstr "" +"Project-Id-Version: i18n\n" +"Report-Msgid-Bugs-To: https://github.com/haiwen/seafile-docs/issues\n" +"POT-Creation-Date: 2018-09-15 22:59:57+0900\n" +"PO-Revision-Date: 2018-09-15 23:49+0900\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"Last-Translator: \n" +"Language-Team: Japanese_Test\n" +"Language: ja_JP\n" +"X-Generator: Poedit 1.8.7.1\n" + +# Front Matter +#: git-novice/CODE_OF_CONDUCT.md:1 +msgid "" +"---\n" +"layout: page\n" +"title: \"Contributor Code of Conduct\"\n" +"permalink: /conduct/\n" +"---" +msgstr "" +"---\n" +"layout: page\n" +"title: \"投稿者の行動規範\"\n" +"permalink: /conduct/\n" +"---" + +#: git-novice/CODE_OF_CONDUCT.md:6 git-novice/_locale/es/CODE_OF_CONDUCT.md:6 +msgid "" +"As contributors and maintainers of this project,\n" +"we pledge to follow the [Carpentry Code of Conduct][coc]." +msgstr "" +"このプロジェクトの貢献者と契約者ですから、\n" +"[カーペントリーの行動規範][coc]に従うことを約束します." + +#: git-novice/CODE_OF_CONDUCT.md:9 git-novice/_locale/es/CODE_OF_CONDUCT.md:9 +msgid "" +"Instances of abusive, harassing, or otherwise unacceptable behavior\n" +"may be reported by following our [reporting guidelines][coc-reporting]." +msgstr "" +"虐待、嫌がらせ、または他の方法で容認できない行為の例\n" +"我々の[報告ガイドライン] [coc-reporting]に従って報告することができます。" + +#: git-novice/CODE_OF_CONDUCT.md:12 git-novice/_locale/es/CODE_OF_CONDUCT.md:12 +msgid "{% include links.md %}" +msgstr "{% include links.md %}" + +# header +#: git-novice/CONTRIBUTING.md:1 +msgid "# Contributing" +msgstr "# 貢献しています" + +#: git-novice/CONTRIBUTING.md:3 +msgid "" +"[Software Carpentry][swc-site] and [Data Carpentry][dc-site] are open source projects,\n" +"and we welcome contributions of all kinds:\n" +"new lessons,\n" +"fixes to existing material,\n" +"bug reports,\n" +"and reviews of proposed changes are all welcome." +msgstr "" +"[Software Carpentry][swc-site] and [Data Carpentry][dc-site] are open source projects,\n" +"and we welcome contributions of all kinds:\n" +"new lessons,\n" +"fixes to existing material,\n" +"bug reports,\n" +"and reviews of proposed changes are all welcome." + +# header +#: git-novice/CONTRIBUTING.md:10 +msgid "## Contributor Agreement" +msgstr "## 貢献者の協定" + +#: git-novice/CONTRIBUTING.md:12 +msgid "" +"By contributing,\n" +"you agree that we may redistribute your work under [our license](LICENSE.md).\n" +"In exchange,\n" +"we will address your issues and/or assess your change proposal as promptly as we can,\n" +"and help you become a member of our community.\n" +"Everyone involved in [Software Carpentry][swc-site] and [Data Carpentry][dc-site]\n" +"agrees to abide by our [code of conduct](https://docs.carpentries.org/topic_folders/policies/code-of-conduct.html)." +msgstr "" +"By contributing,\n" +"you agree that we may redistribute your work under [our license](LICENSE.md).\n" +"In exchange,\n" +"we will address your issues and/or assess your change proposal as promptly as we can,\n" +"and help you become a member of our community.\n" +"Everyone involved in [Software Carpentry][swc-site] and [Data Carpentry][dc-site]\n" +"agrees to abide by our [code of conduct](https://docs.carpentries.org/topic_folders/policies/code-of-conduct.html)." + +# header +#: git-novice/CONTRIBUTING.md:20 +msgid "## How to Contribute" +msgstr "## 貢献する方法" + +#: git-novice/CONTRIBUTING.md:22 +msgid "" +"The easiest way to get started is to file an issue\n" +"to tell us about a spelling mistake,\n" +"some awkward wording,\n" +"or a factual error.\n" +"This is a good way to introduce yourself\n" +"and to meet some of our community members." +msgstr "" +"The easiest way to get started is to file an issue\n" +"to tell us about a spelling mistake,\n" +"some awkward wording,\n" +"or a factual error.\n" +"This is a good way to introduce yourself\n" +"and to meet some of our community members." + +# ordered list +#: git-novice/CONTRIBUTING.md:29 +msgid "1. If you do not have a [GitHub][github] account," +msgstr "1. If you do not have a [GitHub][github] account," + +#: git-novice/CONTRIBUTING.md:30 +msgid "" +" you can [send us comments by email][contact].\n" +" However,\n" +" we will be able to respond more quickly if you use one of the other methods described below." +msgstr "" +" you can [send us comments by email][contact].\n" +" However,\n" +" we will be able to respond more quickly if you use one of the other methods described below." + +# ordered list +#: git-novice/CONTRIBUTING.md:34 +msgid "2. If you have a [GitHub][github] account," +msgstr "2. If you have a [GitHub][github] account," + +#: git-novice/CONTRIBUTING.md:35 +msgid "" +" or are willing to [create one][github-join],\n" +" but do not know how to use Git,\n" +" you can report problems or suggest improvements by [creating an issue][new-issue].\n" +" This allows us to assign the item to someone\n" +" and to respond to it in a threaded discussion." +msgstr "" +" or are willing to [create one][github-join],\n" +" but do not know how to use Git,\n" +" you can report problems or suggest improvements by [creating an issue][new-issue].\n" +" This allows us to assign the item to someone\n" +" and to respond to it in a threaded discussion." + +# ordered list +#: git-novice/CONTRIBUTING.md:41 +msgid "3. If you are comfortable with Git," +msgstr "3. If you are comfortable with Git," + +#: git-novice/CONTRIBUTING.md:42 +msgid "" +" and would like to add or change material,\n" +" you can submit a pull request (PR).\n" +" Instructions for doing this are [included below](#using-github)." +msgstr "" +" and would like to add or change material,\n" +" you can submit a pull request (PR).\n" +" Instructions for doing this are [included below](#using-github)." + +# header +#: git-novice/CONTRIBUTING.md:46 +msgid "## Where to Contribute" +msgstr "## 貢献するどこ" + +# ordered list +#: git-novice/CONTRIBUTING.md:48 +msgid "1. If you wish to change this lesson," +msgstr "1. If you wish to change this lesson," + +#: git-novice/CONTRIBUTING.md:49 +msgid "" +" please work in ,\n" +" which can be viewed at ." +msgstr "" +" please work in ,\n" +" which can be viewed at ." + +# ordered list +#: git-novice/CONTRIBUTING.md:52 +msgid "2. If you wish to change the example lesson," +msgstr "2. If you wish to change the example lesson," + +#: git-novice/CONTRIBUTING.md:53 +msgid "" +" please work in ,\n" +" which documents the format of our lessons\n" +" and can be viewed at ." +msgstr "" +" please work in ,\n" +" which documents the format of our lessons\n" +" and can be viewed at ." + +# ordered list +#: git-novice/CONTRIBUTING.md:57 +msgid "3. If you wish to change the template used for workshop websites," +msgstr "3. If you wish to change the template used for workshop websites," + +#: git-novice/CONTRIBUTING.md:58 +msgid "" +" please work in .\n" +" The home page of that repository explains how to set up workshop websites,\n" +" while the extra pages in \n" +" provide more background on our design choices." +msgstr "" +" please work in .\n" +" The home page of that repository explains how to set up workshop websites,\n" +" while the extra pages in \n" +" provide more background on our design choices." + +# ordered list +#: git-novice/CONTRIBUTING.md:63 +msgid "4. If you wish to change CSS style files, tools," +msgstr "4. If you wish to change CSS style files, tools," + +#: git-novice/CONTRIBUTING.md:64 +msgid "" +" or HTML boilerplate for lessons or workshops stored in `_includes` or `_layouts`,\n" +" please work in ." +msgstr "" +" or HTML boilerplate for lessons or workshops stored in `_includes` or `_layouts`,\n" +" please work in ." + +# header +#: git-novice/CONTRIBUTING.md:67 +msgid "## What to Contribute" +msgstr "## 何を貢献します" + +#: git-novice/CONTRIBUTING.md:69 +msgid "" +"There are many ways to contribute,\n" +"from writing new exercises and improving existing ones\n" +"to updating or filling in the documentation\n" +"and submitting [bug reports][new-issue]\n" +"about things that don't work, aren't clear, or are missing.\n" +"If you are looking for ideas,\n" +"please see [the list of issues for this repository][issues],\n" +"or the issues for [Data Carpentry][dc-issues]\n" +"and [Software Carpentry][swc-issues] projects." +msgstr "" +"There are many ways to contribute,\n" +"from writing new exercises and improving existing ones\n" +"to updating or filling in the documentation\n" +"and submitting [bug reports][new-issue]\n" +"about things that don't work, aren't clear, or are missing.\n" +"If you are looking for ideas,\n" +"please see [the list of issues for this repository][issues],\n" +"or the issues for [Data Carpentry][dc-issues]\n" +"and [Software Carpentry][swc-issues] projects." + +#: git-novice/CONTRIBUTING.md:79 +msgid "" +"Comments on issues and reviews of pull requests are just as welcome:\n" +"we are smarter together than we are on our own.\n" +"Reviews from novices and newcomers are particularly valuable:\n" +"it's easy for people who have been using these lessons for a while\n" +"to forget how impenetrable some of this material can be,\n" +"so fresh eyes are always welcome." +msgstr "" +"Comments on issues and reviews of pull requests are just as welcome:\n" +"we are smarter together than we are on our own.\n" +"Reviews from novices and newcomers are particularly valuable:\n" +"it's easy for people who have been using these lessons for a while\n" +"to forget how impenetrable some of this material can be,\n" +"so fresh eyes are always welcome." + +# header +#: git-novice/CONTRIBUTING.md:86 +msgid "## What *Not* to Contribute" +msgstr "## 何を貢献する要りません" + +#: git-novice/CONTRIBUTING.md:88 +msgid "" +"Our lessons already contain more material than we can cover in a typical workshop,\n" +"so we are usually *not* looking for more concepts or tools to add to them.\n" +"As a rule,\n" +"if you want to introduce a new idea,\n" +"you must (a) estimate how long it will take to teach\n" +"and (b) explain what you would take out to make room for it.\n" +"The first encourages contributors to be honest about requirements;\n" +"the second, to think hard about priorities." +msgstr "" +"Our lessons already contain more material than we can cover in a typical workshop,\n" +"so we are usually *not* looking for more concepts or tools to add to them.\n" +"As a rule,\n" +"if you want to introduce a new idea,\n" +"you must (a) estimate how long it will take to teach\n" +"and (b) explain what you would take out to make room for it.\n" +"The first encourages contributors to be honest about requirements;\n" +"the second, to think hard about priorities." + +#: git-novice/CONTRIBUTING.md:97 +msgid "" +"We are also not looking for exercises or other material that only run on one platform.\n" +"Our workshops typically contain a mixture of Windows, Mac OS X, and Linux users;\n" +"in order to be usable,\n" +"our lessons must run equally well on all three." +msgstr "" +"We are also not looking for exercises or other material that only run on one platform.\n" +"Our workshops typically contain a mixture of Windows, Mac OS X, and Linux users;\n" +"in order to be usable,\n" +"our lessons must run equally well on all three." + +# header +#: git-novice/CONTRIBUTING.md:102 +msgid "## Using GitHub" +msgstr "## Using GitHub" + +#: git-novice/CONTRIBUTING.md:104 git-novice/_locale/es/CONTRIBUTING.md:84 +msgid "" +"If you choose to contribute via GitHub,\n" +"you may want to look at\n" +"[How to Contribute to an Open Source Project on GitHub][how-contribute].\n" +"In brief:" +msgstr "" +"If you choose to contribute via GitHub,\n" +"you may want to look at\n" +"[How to Contribute to an Open Source Project on GitHub][how-contribute].\n" +"In brief:" + +# ordered list +#: git-novice/CONTRIBUTING.md:109 +msgid "1. The published copy of the lesson is in the `gh-pages` branch of the repository" +msgstr "1. The published copy of the lesson is in the `gh-pages` branch of the repository" + +#: git-novice/CONTRIBUTING.md:110 +msgid "" +" (so that GitHub will regenerate it automatically).\n" +" Please create all branches from that,\n" +" and merge the [master repository][repo]'s `gh-pages` branch into your `gh-pages` branch\n" +" before starting work.\n" +" Please do *not* work directly in your `gh-pages` branch,\n" +" since that will make it difficult for you to work on other contributions." +msgstr "" +" (so that GitHub will regenerate it automatically).\n" +" Please create all branches from that,\n" +" and merge the [master repository][repo]'s `gh-pages` branch into your `gh-pages` branch\n" +" before starting work.\n" +" Please do *not* work directly in your `gh-pages` branch,\n" +" since that will make it difficult for you to work on other contributions." + +# ordered list +#: git-novice/CONTRIBUTING.md:117 +msgid "2. We use [GitHub flow][github-flow] to manage changes:" +msgstr "2. We use [GitHub flow][github-flow] to manage changes:" + +#: git-novice/CONTRIBUTING.md:118 +msgid "" +" 1. Create a new branch in your desktop copy of this repository for each significant change.\n" +" 2. Commit the change in that branch.\n" +" 3. Push that branch to your fork of this repository on GitHub.\n" +" 4. Submit a pull request from that branch to the [master repository][repo].\n" +" 5. If you receive feedback,\n" +" make changes on your desktop and push to your branch on GitHub:\n" +" the pull request will update automatically." +msgstr "" +" 1. Create a new branch in your desktop copy of this repository for each significant change.\n" +" 2. Commit the change in that branch.\n" +" 3. Push that branch to your fork of this repository on GitHub.\n" +" 4. Submit a pull request from that branch to the [master repository][repo].\n" +" 5. If you receive feedback,\n" +" make changes on your desktop and push to your branch on GitHub:\n" +" the pull request will update automatically." + +#: git-novice/CONTRIBUTING.md:126 +msgid "" +"Each lesson has two maintainers who review issues and pull requests\n" +"or encourage others to do so.\n" +"The maintainers are community volunteers,\n" +"and have final say over what gets merged into the lesson." +msgstr "" +"Each lesson has two maintainers who review issues and pull requests\n" +"or encourage others to do so.\n" +"The maintainers are community volunteers,\n" +"and have final say over what gets merged into the lesson." + +# header +#: git-novice/CONTRIBUTING.md:131 +msgid "## Other Resources" +msgstr "## Other Resources" + +#: git-novice/CONTRIBUTING.md:133 +msgid "" +"General discussion of [Software Carpentry][swc-site] and [Data Carpentry][dc-site]\n" +"happens on the [discussion mailing list][discuss-list],\n" +"which everyone is welcome to join.\n" +"You can also [reach us by email][contact]." +msgstr "" +"General discussion of [Software Carpentry][swc-site] and [Data Carpentry][dc-site]\n" +"happens on the [discussion mailing list][discuss-list],\n" +"which everyone is welcome to join.\n" +"You can also [reach us by email][contact]." + +#: git-novice/CONTRIBUTING.md:138 +msgid "" +"[contact]: mailto:team@carpentries.org\n" +"[dc-issues]: https://github.com/issues?q=user%3Adatacarpentry\n" +"[dc-lessons]: http://datacarpentry.org/lessons/\n" +"[dc-site]: http://datacarpentry.org/\n" +"[discuss-list]: https://carpentries.topicbox.com/groups/discuss\n" +"[github]: https://github.com\n" +"[github-flow]: https://guides.github.com/introduction/flow/\n" +"[github-join]: https://github.com/join\n" +"[how-contribute]: https://egghead.io/series/how-to-contribute-to-an-open-source-project-on-github\n" +"[new-issue]: https://github.com/swcarpentry/git-novice/issues/new\n" +"[issues]: https://github.com/swcarpentry/git-novice/issues/\n" +"[repo]: https://github.com/swcarpentry/git-novice/\n" +"[swc-issues]: https://github.com/issues?q=user%3Aswcarpentry\n" +"[swc-lessons]: https://software-carpentry.org/lessons/\n" +"[swc-site]: https://software-carpentry.org/" +msgstr "" +"[contact]: mailto:team@carpentries.org\n" +"[dc-issues]: https://github.com/issues?q=user%3Adatacarpentry\n" +"[dc-lessons]: http://datacarpentry.org/lessons/\n" +"[dc-site]: http://datacarpentry.org/\n" +"[discuss-list]: https://carpentries.topicbox.com/groups/discuss\n" +"[github]: https://github.com\n" +"[github-flow]: https://guides.github.com/introduction/flow/\n" +"[github-join]: https://github.com/join\n" +"[how-contribute]: https://egghead.io/series/how-to-contribute-to-an-open-source-project-on-github\n" +"[new-issue]: https://github.com/swcarpentry/git-novice/issues/new\n" +"[issues]: https://github.com/swcarpentry/git-novice/issues/\n" +"[repo]: https://github.com/swcarpentry/git-novice/\n" +"[swc-issues]: https://github.com/issues?q=user%3Aswcarpentry\n" +"[swc-lessons]: https://software-carpentry.org/lessons/\n" +"[swc-site]: https://software-carpentry.org/" + +# Front Matter +#: git-novice/LICENSE.md:1 +msgid "" +"---\n" +"layout: page\n" +"title: \"Licenses\"\n" +"root: .\n" +"---" +msgstr "" +"---\n" +"layout: page\n" +"title: \"Licenses\"\n" +"root: .\n" +"---" + +# header +#: git-novice/LICENSE.md:6 +msgid "## Instructional Material" +msgstr "## 教材" + +#: git-novice/LICENSE.md:8 +msgid "" +"All Software Carpentry and Data Carpentry instructional material is\n" +"made available under the [Creative Commons Attribution\n" +"license][cc-by-human]. The following is a human-readable summary of\n" +"(and not a substitute for) the [full legal text of the CC BY 4.0\n" +"license][cc-by-legal]." +msgstr "" +"All Software Carpentry and Data Carpentry instructional material is\n" +"made available under the [Creative Commons Attribution\n" +"license][cc-by-human]. The following is a human-readable summary of\n" +"(and not a substitute for) the [full legal text of the CC BY 4.0\n" +"license][cc-by-legal]." + +#: git-novice/LICENSE.md:14 +msgid "You are free:" +msgstr "You are free:" + +# unordered list +#: git-novice/LICENSE.md:16 +msgid "* to **Share**---copy and redistribute the material in any medium or format" +msgstr "* to **Share**---copy and redistribute the material in any medium or format" + +# unordered list +#: git-novice/LICENSE.md:17 +msgid "* to **Adapt**---remix, transform, and build upon the material" +msgstr "* to **Adapt**---remix, transform, and build upon the material" + +#: git-novice/LICENSE.md:19 +msgid "for any purpose, even commercially." +msgstr "for any purpose, even commercially." + +#: git-novice/LICENSE.md:21 +msgid "" +"The licensor cannot revoke these freedoms as long as you follow the\n" +"license terms." +msgstr "" +"The licensor cannot revoke these freedoms as long as you follow the\n" +"license terms." + +#: git-novice/LICENSE.md:24 +msgid "Under the following terms:" +msgstr "Under the following terms:" + +# unordered list +#: git-novice/LICENSE.md:26 +msgid "* **Attribution**---You must give appropriate credit (mentioning that" +msgstr "* **Attribution**---You must give appropriate credit (mentioning that" + +#: git-novice/LICENSE.md:27 +msgid "" +" your work is derived from work that is Copyright © Software\n" +" Carpentry and, where practical, linking to\n" +" https://software-carpentry.org/), provide a [link to the\n" +" license][cc-by-human], and indicate if changes were made. You may do\n" +" so in any reasonable manner, but not in any way that suggests the\n" +" licensor endorses you or your use." +msgstr "" +" your work is derived from work that is Copyright © Software\n" +" Carpentry and, where practical, linking to\n" +" https://software-carpentry.org/), provide a [link to the\n" +" license][cc-by-human], and indicate if changes were made. You may do\n" +" so in any reasonable manner, but not in any way that suggests the\n" +" licensor endorses you or your use." + +#: git-novice/LICENSE.md:34 +msgid "" +"**No additional restrictions**---You may not apply legal terms or\n" +"technological measures that legally restrict others from doing\n" +"anything the license permits. With the understanding that:" +msgstr "" +"**No additional restrictions**---You may not apply legal terms or\n" +"technological measures that legally restrict others from doing\n" +"anything the license permits. With the understanding that:" + +#: git-novice/LICENSE.md:38 +msgid "Notices:" +msgstr "Notices:" + +# unordered list +#: git-novice/LICENSE.md:40 +msgid "* You do not have to comply with the license for elements of the" +msgstr "* You do not have to comply with the license for elements of the" + +#: git-novice/LICENSE.md:41 +msgid "" +" material in the public domain or where your use is permitted by an\n" +" applicable exception or limitation.\n" +"* No warranties are given. The license may not give you all of the\n" +" permissions necessary for your intended use. For example, other\n" +" rights such as publicity, privacy, or moral rights may limit how you\n" +" use the material." +msgstr "" +" material in the public domain or where your use is permitted by an\n" +" applicable exception or limitation.\n" +"* No warranties are given. The license may not give you all of the\n" +" permissions necessary for your intended use. For example, other\n" +" rights such as publicity, privacy, or moral rights may limit how you\n" +" use the material." + +# header +#: git-novice/LICENSE.md:48 git-novice/_locale/es/LICENSE.md:45 +msgid "## Software" +msgstr "## Software" + +#: git-novice/LICENSE.md:50 +msgid "" +"Except where otherwise noted, the example programs and other software\n" +"provided by Software Carpentry and Data Carpentry are made available under the\n" +"[OSI][osi]-approved\n" +"[MIT license][mit-license]." +msgstr "" +"Except where otherwise noted, the example programs and other software\n" +"provided by Software Carpentry and Data Carpentry are made available under the\n" +"[OSI][osi]-approved\n" +"[MIT license][mit-license]." + +#: git-novice/LICENSE.md:55 +msgid "" +"Permission is hereby granted, free of charge, to any person obtaining\n" +"a copy of this software and associated documentation files (the\n" +"\"Software\"), to deal in the Software without restriction, including\n" +"without limitation the rights to use, copy, modify, merge, publish,\n" +"distribute, sublicense, and/or sell copies of the Software, and to\n" +"permit persons to whom the Software is furnished to do so, subject to\n" +"the following conditions:" +msgstr "" +"Permission is hereby granted, free of charge, to any person obtaining\n" +"a copy of this software and associated documentation files (the\n" +"\"Software\"), to deal in the Software without restriction, including\n" +"without limitation the rights to use, copy, modify, merge, publish,\n" +"distribute, sublicense, and/or sell copies of the Software, and to\n" +"permit persons to whom the Software is furnished to do so, subject to\n" +"the following conditions:" + +#: git-novice/LICENSE.md:63 +msgid "" +"The above copyright notice and this permission notice shall be\n" +"included in all copies or substantial portions of the Software." +msgstr "" +"The above copyright notice and this permission notice shall be\n" +"included in all copies or substantial portions of the Software." + +#: git-novice/LICENSE.md:66 +msgid "" +"THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n" +"EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n" +"MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n" +"NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\n" +"LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\n" +"OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\n" +"WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." +msgstr "" +"THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n" +"EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n" +"MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n" +"NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\n" +"LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\n" +"OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\n" +"WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." + +# header +#: git-novice/LICENSE.md:74 +msgid "## Trademark" +msgstr "## Trademark" + +#: git-novice/LICENSE.md:76 +msgid "" +"\"Software Carpentry\" and \"Data Carpentry\" and their respective logos\n" +"are registered trademarks of [Community Initiatives][CI]." +msgstr "" +"\"Software Carpentry\" and \"Data Carpentry\" and their respective logos\n" +"are registered trademarks of [Community Initiatives][CI]." + +#: git-novice/LICENSE.md:79 +msgid "" +"[cc-by-human]: https://creativecommons.org/licenses/by/4.0/\n" +"[cc-by-legal]: https://creativecommons.org/licenses/by/4.0/legalcode\n" +"[mit-license]: https://opensource.org/licenses/mit-license.html\n" +"[ci]: http://communityin.org/\n" +"[osi]: https://opensource.org" +msgstr "" +"[cc-by-human]: https://creativecommons.org/licenses/by/4.0/\n" +"[cc-by-legal]: https://creativecommons.org/licenses/by/4.0/legalcode\n" +"[mit-license]: https://opensource.org/licenses/mit-license.html\n" +"[ci]: http://communityin.org/\n" +"[osi]: https://opensource.org" + +#: git-novice/README.md:1 +msgid "" +"[![Create a Slack Account with us](https://img.shields.io/badge/Create_Slack_Account-The_Carpentries-071159.svg)](https://swc-slack-invite.herokuapp.com/) \n" +" [![Slack Status](https://img.shields.io/badge/Slack_Channel-swc--git-E01563.svg)](https://swcarpentry.slack.com/messages/C91JS49HD) " +msgstr "" +"[![Create a Slack Account with us](https://img.shields.io/badge/Create_Slack_Account-The_Carpentries-071159.svg)](https://swc-slack-invite.herokuapp.com/) \n" +" [![Slack Status](https://img.shields.io/badge/Slack_Channel-swc--git-E01563.svg)](https://swcarpentry.slack.com/messages/C91JS49HD) " + +#: git-novice/README.md:4 git-novice/_locale/es/README.md:4 +msgid "" +"git-novice\n" +"==========" +msgstr "" +"git-novice\n" +"==========" + +#: git-novice/README.md:7 +msgid "" +"An introduction to version control for novices using Git.\n" +"Please see for a rendered version of this material,\n" +"[the lesson template documentation][lesson-example]\n" +"for instructions on formatting, building, and submitting material,\n" +"or run `make` in this directory for a list of helpful commands." +msgstr "" +"これはGitを使用している初心者のためのバージョン管理の紹介です。\n" +"この資料のレンダリング版については、を参照してください。\n" +"[レッスンテンプレートのドキュメント] [lesson-example]\n" +"書式設定、構築、および提出に関する指示については、\n" +"有用なコマンドのリストについては、このディレクトリに `make`を実行してください。" + +#: git-novice/README.md:13 git-novice/_locale/es/README.md:13 +msgid "Maintainers:" +msgstr "メンテナー:" + +# unordered list +#: git-novice/README.md:15 git-novice/_locale/es/README.md:15 +msgid "* [Ivan Gonzalez][gonzalez_ivan]: [@iglpdc](https://github.com/iglpdc)" +msgstr "* [Tom Kelly][kelly_tom]: [@TomKellyGenetics](https://github.com/TomKellyGenetics)" + +# unordered list +#: git-novice/README.md:16 +msgid "* [Nima Hejazi][hejazi_nima]: [@nhejazi](https://github.com/nhejazi)" +msgstr "* [GivenName FamilyName][family_given]: [@GitHubUser](https://github.com/GitHubUser)" + +# unordered list +#: git-novice/README.md:17 +msgid "* [Daisie Huang][huang_daisie]: [@daisieh](https://github.com/daisieh)" +msgstr "* [GivenName FamilyName][family_given]: [@GitHubUser](https://github.com/GitHubUser)" + +# unordered list +#: git-novice/README.md:18 +msgid "* [Kat Koziar][koziar_kat]: [@kekoziar](https://github.com/kekoziar)" +msgstr "* [GivenName FamilyName][family_given]: [@GitHubUser](https://github.com/GitHubUser)" + +# unordered list +#: git-novice/README.md:19 +msgid "* [Madicken Munk][munk_madicken]: [@munkm](https://github.com/munkm)" +msgstr "* [GivenName FamilyName][family_given]: [@GitHubUser](https://github.com/GitHubUser)" + +#: git-novice/README.md:21 +msgid "" +"[gonzalez_ivan]: https://software-carpentry.org/team/#gonzalez_ivan\n" +"[hejazi_nima]: https://software-carpentry.org/team/#hejazi_nima\n" +"[huang_daisie]: https://software-carpentry.org/team/#huang_daisie\n" +"[koziar_kat]: https://software-carpentry.org/team/#koziar_kat\n" +"[munk_madicken]: https://software-carpentry.org/team/#munk_madicken\n" +"[lesson-example]: https://swcarpentry.github.io/lesson-example" +msgstr "" +"[gonzalez_ivan]: https://software-carpentry.org/team/#gonzalez_ivan\n" +"[hejazi_nima]: https://software-carpentry.org/team/#hejazi_nima\n" +"[huang_daisie]: https://software-carpentry.org/team/#huang_daisie\n" +"[koziar_kat]: https://software-carpentry.org/team/#koziar_kat\n" +"[munk_madicken]: https://software-carpentry.org/team/#munk_madicken\n" +"[lesson-example]: https://swcarpentry.github.io/lesson-example" + +# Front Matter +#: git-novice/_episodes/01-basics.md:1 +msgid "" +"---\n" +"title: Automated Version Control\n" +"teaching: 5\n" +"exercises: 0\n" +"questions:\n" +"- \"What is version control and why should I use it?\"\n" +"objectives:\n" +"- \"Understand the benefits of an automated version control system.\"\n" +"- \"Understand the basics of how Git works.\"\n" +"keypoints:\n" +"- \"Version control is like an unlimited 'undo'.\"\n" +"- \"Version control also allows many people to work in parallel.\"\n" +"---" +msgstr "" +"---\n" +"title: Automated Version Control\n" +"teaching: 5\n" +"exercises: 0\n" +"questions:\n" +"- \"What is version control and why should I use it?\"\n" +"objectives:\n" +"- \"Understand the benefits of an automated version control system.\"\n" +"- \"Understand the basics of how Git works.\"\n" +"keypoints:\n" +"- \"Version control is like an unlimited 'undo'.\"\n" +"- \"Version control also allows many people to work in parallel.\"\n" +"---" + +#: git-novice/_episodes/01-basics.md:15 +msgid "" +"We'll start by exploring how version control can be used\n" +"to keep track of what one person did and when.\n" +"Even if you aren't collaborating with other people,\n" +"automated version control is much better than this situation:" +msgstr "" +"We'll start by exploring how version control can be used\n" +"to keep track of what one person did and when.\n" +"Even if you aren't collaborating with other people,\n" +"automated version control is much better than this situation:" + +#: git-novice/_episodes/01-basics.md:20 +#: git-novice/_locale/es/_episodes/01-basics.md:20 +msgid "[![Piled Higher and Deeper by Jorge Cham, http://www.phdcomics.com/comics/archive_print.php?comicid=1531](../fig/phd101212s.png)](http://www.phdcomics.com)" +msgstr "[![Piled Higher and Deeper by Jorge Cham, http://www.phdcomics.com/comics/archive_print.php?comicid=1531](../fig/phd101212s.png)](http://www.phdcomics.com)" + +#: git-novice/_episodes/01-basics.md:22 +#: git-novice/_locale/es/_episodes/01-basics.md:22 +msgid "\"Piled Higher and Deeper\" by Jorge Cham, http://www.phdcomics.com" +msgstr "\"Piled Higher and Deeper\" by Jorge Cham, http://www.phdcomics.com" + +#: git-novice/_episodes/01-basics.md:24 +msgid "" +"We've all been in this situation before: it seems ridiculous to have\n" +"multiple nearly-identical versions of the same document. Some word\n" +"processors let us deal with this a little better, such as Microsoft\n" +"Word's [Track Changes](https://support.office.com/en-us/article/Track-changes-in-Word-197ba630-0f5f-4a8e-9a77-3712475e806a), Google Docs' [version\n" +"history](https://support.google.com/docs/answer/190843?hl=en), or LibreOffice's [Recording and Displaying Changes](https://help.libreoffice.org/Common/Recording_and_Displaying_Changes)." +msgstr "" +"We've all been in this situation before: it seems ridiculous to have\n" +"multiple nearly-identical versions of the same document. Some word\n" +"processors let us deal with this a little better, such as Microsoft\n" +"Word's [Track Changes](https://support.office.com/en-us/article/Track-changes-in-Word-197ba630-0f5f-4a8e-9a77-3712475e806a), Google Docs' [version\n" +"history](https://support.google.com/docs/answer/190843?hl=en), or LibreOffice's [Recording and Displaying Changes](https://help.libreoffice.org/Common/Recording_and_Displaying_Changes)." + +#: git-novice/_episodes/01-basics.md:30 +msgid "" +"Version control systems start with a base version of the document and\n" +"then record changes you make each step of the way. You can\n" +"think of it as a recording of your progress: you can rewind to start at the base\n" +"document and play back each change you made, eventually arriving at your\n" +"more recent version." +msgstr "" +"Version control systems start with a base version of the document and\n" +"then record changes you make each step of the way. You can\n" +"think of it as a recording of your progress: you can rewind to start at the base\n" +"document and play back each change you made, eventually arriving at your\n" +"more recent version." + +#: git-novice/_episodes/01-basics.md:36 +#: git-novice/_locale/es/_episodes/01-basics.md:33 +msgid "![Changes Are Saved Sequentially](../fig/play-changes.svg)" +msgstr "![Changes Are Saved Sequentially](../fig/play-changes.svg)" + +#: git-novice/_episodes/01-basics.md:38 +msgid "" +"Once you think of changes as separate from the document itself, you\n" +"can then think about \"playing back\" different sets of changes on the base document, ultimately\n" +"resulting in different versions of that document. For example, two users can make independent\n" +"sets of changes on the same document. " +msgstr "" +"Once you think of changes as separate from the document itself, you\n" +"can then think about \"playing back\" different sets of changes on the base document, ultimately\n" +"resulting in different versions of that document. For example, two users can make independent\n" +"sets of changes on the same document. " + +#: git-novice/_episodes/01-basics.md:43 +#: git-novice/_locale/es/_episodes/01-basics.md:37 +msgid "![Different Versions Can be Saved](../fig/versions.svg)" +msgstr "![Different Versions Can be Saved](../fig/versions.svg)" + +#: git-novice/_episodes/01-basics.md:45 +msgid "Unless there are conflicts, you can even incorporate two sets of changes into the same base document." +msgstr "Unless there are conflicts, you can even incorporate two sets of changes into the same base document." + +#: git-novice/_episodes/01-basics.md:47 +#: git-novice/_locale/es/_episodes/01-basics.md:41 +msgid "![Multiple Versions Can be Merged](../fig/merge.svg)" +msgstr "![Multiple Versions Can be Merged](../fig/merge.svg)" + +#: git-novice/_episodes/01-basics.md:49 +msgid "" +"A version control system is a tool that keeps track of these changes for us,\n" +"effectively creating different versions of our files. It allows us to\n" +"decide which changes will be made to the next version (each record of these changes is called a\n" +"[commit]({{ page.root }}/reference#commit)), and keeps useful metadata about them. The\n" +"complete history of commits for a particular project and their metadata make up\n" +"a [repository]({{ page.root }}/reference#repository). Repositories can be kept in sync\n" +"across different computers, facilitating collaboration among different people." +msgstr "" +"A version control system is a tool that keeps track of these changes for us,\n" +"effectively creating different versions of our files. It allows us to\n" +"decide which changes will be made to the next version (each record of these changes is called a\n" +"[commit]({{ page.root }}/reference#commit)), and keeps useful metadata about them. The\n" +"complete history of commits for a particular project and their metadata make up\n" +"a [repository]({{ page.root }}/reference#repository). Repositories can be kept in sync\n" +"across different computers, facilitating collaboration among different people." + +# blockquote, which can be cascaded +#: git-novice/_episodes/01-basics.md:57 +msgid "> ## The Long History of Version Control Systems" +msgstr "> ## The Long History of Version Control Systems" + +#: git-novice/_episodes/01-basics.md:58 +msgid "" +">\n" +"> Automated version control systems are nothing new.\n" +"> Tools like RCS, CVS, or Subversion have been around since the early 1980s and are used by many large companies.\n" +"> However, many of these are now considered legacy systems (i.e., outdated) due to various limitations in their capabilities.\n" +"> More modern systems, such as Git and [Mercurial](https://swcarpentry.github.io/hg-novice/),\n" +"> are *distributed*, meaning that they do not need a centralized server to host the repository.\n" +"> These modern systems also include powerful merging tools that make it possible for multiple authors to work on\n" +"> the same files concurrently." +msgstr "" +">\n" +"> Automated version control systems are nothing new.\n" +"> Tools like RCS, CVS, or Subversion have been around since the early 1980s and are used by many large companies.\n" +"> However, many of these are now considered legacy systems (i.e., outdated) due to various limitations in their capabilities.\n" +"> More modern systems, such as Git and [Mercurial](https://swcarpentry.github.io/hg-novice/),\n" +"> are *distributed*, meaning that they do not need a centralized server to host the repository.\n" +"> These modern systems also include powerful merging tools that make it possible for multiple authors to work on\n" +"> the same files concurrently." + +# SC/DC Template label +#: git-novice/_episodes/01-basics.md:66 git-novice/_episodes/02-setup.md:70 +#: git-novice/_episodes/02-setup.md:100 git-novice/_episodes/02-setup.md:134 +#: git-novice/_episodes/02-setup.md:145 git-novice/_episodes/04-changes.md:208 +#: git-novice/_episodes/04-changes.md:360 +#: git-novice/_episodes/04-changes.md:499 +#: git-novice/_episodes/04-changes.md:514 +#: git-novice/_episodes/04-changes.md:564 +#: git-novice/_episodes/04-changes.md:596 +#: git-novice/_episodes/05-history.md:291 +#: git-novice/_episodes/05-history.md:324 git-novice/_episodes/07-github.md:76 +#: git-novice/_episodes/07-github.md:147 git-novice/_episodes/07-github.md:170 +#: git-novice/_episodes/07-github.md:183 git-novice/_episodes/08-collab.md:26 +#: git-novice/_episodes/08-collab.md:143 git-novice/_episodes/10-open.md:101 +#: git-novice/_episodes/13-hosting.md:67 +#: git-novice/_episodes/14-supplemental-rstudio.md:44 +#: git-novice/_episodes/14-supplemental-rstudio.md:90 +#: git-novice/_episodes/14-supplemental-rstudio.md:108 +#: git-novice/_extras/discuss.md:115 +#: git-novice/_locale/es/_episodes/01-basics.md:60 +#: git-novice/_locale/es/_episodes/02-setup.md:70 +#: git-novice/_locale/es/_episodes/02-setup.md:98 +#: git-novice/_locale/es/_episodes/02-setup.md:130 +#: git-novice/_locale/es/_episodes/02-setup.md:141 +#: git-novice/_locale/es/_episodes/04-changes.md:206 +#: git-novice/_locale/es/_episodes/04-changes.md:357 +#: git-novice/_locale/es/_episodes/04-changes.md:496 +#: git-novice/_locale/es/_episodes/04-changes.md:509 +#: git-novice/_locale/es/_episodes/04-changes.md:559 +#: git-novice/_locale/es/_episodes/04-changes.md:592 +#: git-novice/_locale/es/_episodes/05-history.md:288 +#: git-novice/_locale/es/_episodes/05-history.md:321 +#: git-novice/_locale/es/_episodes/07-github.md:61 +#: git-novice/_locale/es/_episodes/07-github.md:128 +#: git-novice/_locale/es/_episodes/07-github.md:151 +#: git-novice/_locale/es/_episodes/07-github.md:164 +#: git-novice/_locale/es/_episodes/08-collab.md:20 +#: git-novice/_locale/es/_episodes/08-collab.md:123 +#: git-novice/_locale/es/_episodes/10-open.md:57 +#: git-novice/_locale/es/_episodes/13-hosting.md:70 +#: git-novice/_locale/es/_episodes/14-supplemental-rstudio.md:36 +#: git-novice/_locale/es/_episodes/14-supplemental-rstudio.md:76 +#: git-novice/_locale/es/_episodes/14-supplemental-rstudio.md:92 +#: git-novice/_locale/es/_extras/discuss.md:115 +msgid "{: .callout}" +msgstr "{: .callout}" + +# blockquote, which can be cascaded +#: git-novice/_episodes/01-basics.md:68 +msgid "> ## Paper Writing" +msgstr "> ## Paper Writing" + +#: git-novice/_episodes/01-basics.md:69 +msgid "" +">\n" +"> * Imagine you drafted an excellent paragraph for a paper you are writing, but later ruin it. How would you retrieve\n" +"> the *excellent* version of your conclusion? Is it even possible?\n" +">\n" +"> * Imagine you have 5 co-authors. How would you manage the changes and comments they make to your paper?\n" +"> If you use LibreOffice Writer or Microsoft Word, what happens if you accept changes made using the\n" +"> `Track Changes` option? Do you have a history of those changes?" +msgstr "" +">\n" +"> * Imagine you drafted an excellent paragraph for a paper you are writing, but later ruin it. How would you retrieve\n" +"> the *excellent* version of your conclusion? Is it even possible?\n" +">\n" +"> * Imagine you have 5 co-authors. How would you manage the changes and comments they make to your paper?\n" +"> If you use LibreOffice Writer or Microsoft Word, what happens if you accept changes made using the\n" +"> `Track Changes` option? Do you have a history of those changes?" + +# SC/DC Template label +#: git-novice/_episodes/01-basics.md:76 git-novice/_episodes/03-create.md:127 +#: git-novice/_episodes/03-create.md:148 git-novice/_episodes/04-changes.md:619 +#: git-novice/_episodes/04-changes.md:643 +#: git-novice/_episodes/04-changes.md:703 +#: git-novice/_episodes/04-changes.md:757 +#: git-novice/_episodes/04-changes.md:818 +#: git-novice/_episodes/05-history.md:354 +#: git-novice/_episodes/05-history.md:377 +#: git-novice/_episodes/05-history.md:430 +#: git-novice/_episodes/05-history.md:440 +#: git-novice/_episodes/05-history.md:448 +#: git-novice/_episodes/05-history.md:487 git-novice/_episodes/06-ignore.md:175 +#: git-novice/_episodes/06-ignore.md:195 git-novice/_episodes/06-ignore.md:218 +#: git-novice/_episodes/06-ignore.md:239 git-novice/_episodes/06-ignore.md:259 +#: git-novice/_episodes/07-github.md:218 git-novice/_episodes/07-github.md:231 +#: git-novice/_episodes/07-github.md:241 git-novice/_episodes/07-github.md:263 +#: git-novice/_episodes/07-github.md:274 git-novice/_episodes/08-collab.md:148 +#: git-novice/_episodes/08-collab.md:171 git-novice/_episodes/08-collab.md:182 +#: git-novice/_episodes/08-collab.md:189 +#: git-novice/_episodes/09-conflict.md:325 +#: git-novice/_episodes/09-conflict.md:495 +#: git-novice/_episodes/09-conflict.md:537 git-novice/_episodes/10-open.md:109 +#: git-novice/_episodes/10-open.md:121 git-novice/_episodes/11-licensing.md:65 +#: git-novice/_episodes/11-licensing.md:78 +#: git-novice/_episodes/13-hosting.md:75 git-novice/_episodes/13-hosting.md:82 +#: git-novice/_episodes/14-supplemental-rstudio.md:127 +#: git-novice/_locale/es/_episodes/01-basics.md:70 +#: git-novice/_locale/es/_episodes/03-create.md:122 +#: git-novice/_locale/es/_episodes/03-create.md:143 +#: git-novice/_locale/es/_episodes/04-changes.md:615 +#: git-novice/_locale/es/_episodes/04-changes.md:639 +#: git-novice/_locale/es/_episodes/04-changes.md:699 +#: git-novice/_locale/es/_episodes/04-changes.md:751 +#: git-novice/_locale/es/_episodes/04-changes.md:812 +#: git-novice/_locale/es/_episodes/05-history.md:351 +#: git-novice/_locale/es/_episodes/05-history.md:374 +#: git-novice/_locale/es/_episodes/05-history.md:427 +#: git-novice/_locale/es/_episodes/05-history.md:436 +#: git-novice/_locale/es/_episodes/05-history.md:444 +#: git-novice/_locale/es/_episodes/05-history.md:484 +#: git-novice/_locale/es/_episodes/06-ignore.md:175 +#: git-novice/_locale/es/_episodes/06-ignore.md:194 +#: git-novice/_locale/es/_episodes/06-ignore.md:218 +#: git-novice/_locale/es/_episodes/06-ignore.md:239 +#: git-novice/_locale/es/_episodes/06-ignore.md:258 +#: git-novice/_locale/es/_episodes/07-github.md:197 +#: git-novice/_locale/es/_episodes/07-github.md:210 +#: git-novice/_locale/es/_episodes/07-github.md:220 +#: git-novice/_locale/es/_episodes/07-github.md:242 +#: git-novice/_locale/es/_episodes/07-github.md:253 +#: git-novice/_locale/es/_episodes/08-collab.md:128 +#: git-novice/_locale/es/_episodes/08-collab.md:138 +#: git-novice/_locale/es/_episodes/08-collab.md:147 +#: git-novice/_locale/es/_episodes/08-collab.md:151 +#: git-novice/_locale/es/_episodes/09-conflict.md:319 +#: git-novice/_locale/es/_episodes/09-conflict.md:487 +#: git-novice/_locale/es/_episodes/09-conflict.md:530 +#: git-novice/_locale/es/_episodes/10-open.md:65 +#: git-novice/_locale/es/_episodes/10-open.md:70 +#: git-novice/_locale/es/_episodes/11-licensing.md:36 +#: git-novice/_locale/es/_episodes/11-licensing.md:46 +#: git-novice/_locale/es/_episodes/13-hosting.md:78 +#: git-novice/_locale/es/_episodes/13-hosting.md:85 +#: git-novice/_locale/es/_episodes/14-supplemental-rstudio.md:111 +msgid "{: .challenge}" +msgstr "{: .challenge}" + +# Front Matter +#: git-novice/_episodes/02-setup.md:1 +msgid "" +"---\n" +"title: Setting Up Git\n" +"teaching: 5\n" +"exercises: 0\n" +"questions:\n" +"- \"How do I get set up to use Git?\"\n" +"objectives:\n" +"- \"Configure `git` the first time it is used on a computer.\"\n" +"- \"Understand the meaning of the `--global` configuration flag.\"\n" +"keypoints:\n" +"- \"Use `git config` with the `--global` option to configure a user name, email address, editor, and other preferences once per machine.\"\n" +"---" +msgstr "" +"---\n" +"title: Setting Up Git\n" +"teaching: 5\n" +"exercises: 0\n" +"questions:\n" +"- \"How do I get set up to use Git?\"\n" +"objectives:\n" +"- \"Configure `git` the first time it is used on a computer.\"\n" +"- \"Understand the meaning of the `--global` configuration flag.\"\n" +"keypoints:\n" +"- \"Use `git config` with the `--global` option to configure a user name, email address, editor, and other preferences once per machine.\"\n" +"---" + +#: git-novice/_episodes/02-setup.md:14 +msgid "" +"When we use Git on a new computer for the first time,\n" +"we need to configure a few things. Below are a few examples\n" +"of configurations we will set as we get started with Git:" +msgstr "" +"When we use Git on a new computer for the first time,\n" +"we need to configure a few things. Below are a few examples\n" +"of configurations we will set as we get started with Git:" + +# unordered list +#: git-novice/_episodes/02-setup.md:18 +msgid "* our name and email address," +msgstr "* our name and email address," + +# unordered list +#: git-novice/_episodes/02-setup.md:19 +msgid "* what our preferred text editor is," +msgstr "* what our preferred text editor is," + +# unordered list +#: git-novice/_episodes/02-setup.md:20 +msgid "* and that we want to use these settings globally (i.e. for every project)." +msgstr "* and that we want to use these settings globally (i.e. for every project)." + +#: git-novice/_episodes/02-setup.md:22 +msgid "" +"On a command line, Git commands are written as `git verb`,\n" +"where `verb` is what we actually want to do. So here is how\n" +"Dracula sets up his new laptop:" +msgstr "" +"On a command line, Git commands are written as `git verb`,\n" +"where `verb` is what we actually want to do. So here is how\n" +"のび太 sets up his new laptop:" + +# code block +#: git-novice/_episodes/02-setup.md:26 +#: git-novice/_locale/es/_episodes/02-setup.md:26 +msgid "" +"~~~\n" +"$ git config --global user.name \"Vlad Dracula\"\n" +"$ git config --global user.email \"vlad@tran.sylvan.ia\"\n" +"~~~" +msgstr "" +"~~~\n" +"$ git config --global user.name \"Vlad のび太\"\n" +"$ git config --global user.email \"vlad@tran.sylvan.ia\"\n" +"~~~" + +#: git-novice/_episodes/02-setup.md:30 git-novice/_episodes/02-setup.md:110 +#: git-novice/_episodes/03-create.md:24 git-novice/_episodes/03-create.md:32 +#: git-novice/_episodes/03-create.md:40 git-novice/_episodes/03-create.md:48 +#: git-novice/_episodes/03-create.md:66 git-novice/_episodes/04-changes.md:27 +#: git-novice/_episodes/04-changes.md:34 git-novice/_episodes/04-changes.md:47 +#: git-novice/_episodes/04-changes.md:60 git-novice/_episodes/04-changes.md:70 +#: git-novice/_episodes/04-changes.md:83 git-novice/_episodes/04-changes.md:105 +#: git-novice/_episodes/04-changes.md:112 +#: git-novice/_episodes/04-changes.md:135 +#: git-novice/_episodes/04-changes.md:166 +#: git-novice/_episodes/04-changes.md:181 +#: git-novice/_episodes/04-changes.md:218 +#: git-novice/_episodes/04-changes.md:232 +#: git-novice/_episodes/04-changes.md:260 +#: git-novice/_episodes/04-changes.md:295 +#: git-novice/_episodes/04-changes.md:317 +#: git-novice/_episodes/04-changes.md:374 +#: git-novice/_episodes/04-changes.md:386 +#: git-novice/_episodes/04-changes.md:410 +#: git-novice/_episodes/04-changes.md:422 +#: git-novice/_episodes/04-changes.md:444 +#: git-novice/_episodes/04-changes.md:457 +#: git-novice/_episodes/04-changes.md:470 git-novice/_episodes/05-history.md:31 +#: git-novice/_episodes/05-history.md:45 git-novice/_episodes/05-history.md:68 +#: git-novice/_episodes/05-history.md:77 git-novice/_episodes/05-history.md:96 +#: git-novice/_episodes/05-history.md:137 +#: git-novice/_episodes/05-history.md:158 +#: git-novice/_episodes/05-history.md:181 +#: git-novice/_episodes/05-history.md:194 +#: git-novice/_episodes/05-history.md:215 +#: git-novice/_episodes/05-history.md:235 +#: git-novice/_episodes/05-history.md:240 +#: git-novice/_episodes/05-history.md:250 +#: git-novice/_episodes/05-history.md:273 git-novice/_episodes/06-ignore.md:23 +#: git-novice/_episodes/06-ignore.md:30 git-novice/_episodes/06-ignore.md:56 +#: git-novice/_episodes/06-ignore.md:75 git-novice/_episodes/06-ignore.md:98 +#: git-novice/_episodes/06-ignore.md:111 git-novice/_episodes/06-ignore.md:128 +#: git-novice/_episodes/07-github.md:50 git-novice/_episodes/07-github.md:86 +#: git-novice/_episodes/07-github.md:96 git-novice/_episodes/07-github.md:113 +#: git-novice/_episodes/07-github.md:190 git-novice/_episodes/08-collab.md:45 +#: git-novice/_episodes/08-collab.md:59 git-novice/_episodes/08-collab.md:70 +#: git-novice/_episodes/08-collab.md:83 git-novice/_episodes/08-collab.md:109 +#: git-novice/_episodes/09-conflict.md:29 +#: git-novice/_episodes/09-conflict.md:44 +#: git-novice/_episodes/09-conflict.md:60 +#: git-novice/_episodes/09-conflict.md:71 +#: git-novice/_episodes/09-conflict.md:92 +#: git-novice/_episodes/09-conflict.md:108 +#: git-novice/_episodes/09-conflict.md:121 +#: git-novice/_episodes/09-conflict.md:146 +#: git-novice/_episodes/09-conflict.md:167 +#: git-novice/_episodes/09-conflict.md:197 +#: git-novice/_episodes/09-conflict.md:215 +#: git-novice/_episodes/09-conflict.md:232 +#: git-novice/_episodes/09-conflict.md:244 +#: git-novice/_episodes/09-conflict.md:264 +#: git-novice/_episodes/09-conflict.md:285 git-novice/_extras/discuss.md:24 +#: git-novice/_extras/discuss.md:48 git-novice/_extras/discuss.md:58 +#: git-novice/_extras/discuss.md:65 git-novice/_extras/discuss.md:72 +#: git-novice/_extras/discuss.md:91 git-novice/_extras/discuss.md:101 +#: git-novice/_extras/discuss.md:149 git-novice/_extras/discuss.md:167 +#: git-novice/_extras/discuss.md:183 git-novice/_extras/discuss.md:233 +#: git-novice/_extras/discuss.md:242 git-novice/_extras/discuss.md:257 +#: git-novice/_extras/discuss.md:277 git-novice/_extras/discuss.md:291 +#: git-novice/_extras/discuss.md:299 git-novice/_extras/discuss.md:322 +#: git-novice/_extras/discuss.md:340 git-novice/_extras/discuss.md:351 +#: git-novice/_extras/discuss.md:359 git-novice/_extras/discuss.md:370 +#: git-novice/_extras/discuss.md:386 git-novice/_extras/discuss.md:401 +#: git-novice/_extras/discuss.md:409 git-novice/_extras/discuss.md:437 +#: git-novice/_extras/discuss.md:457 +#: git-novice/_locale/es/_episodes/02-setup.md:30 +#: git-novice/_locale/es/_episodes/02-setup.md:107 +#: git-novice/_locale/es/_episodes/03-create.md:22 +#: git-novice/_locale/es/_episodes/03-create.md:30 +#: git-novice/_locale/es/_episodes/03-create.md:38 +#: git-novice/_locale/es/_episodes/03-create.md:46 +#: git-novice/_locale/es/_episodes/03-create.md:62 +#: git-novice/_locale/es/_episodes/04-changes.md:27 +#: git-novice/_locale/es/_episodes/04-changes.md:34 +#: git-novice/_locale/es/_episodes/04-changes.md:45 +#: git-novice/_locale/es/_episodes/04-changes.md:58 +#: git-novice/_locale/es/_episodes/04-changes.md:68 +#: git-novice/_locale/es/_episodes/04-changes.md:81 +#: git-novice/_locale/es/_episodes/04-changes.md:103 +#: git-novice/_locale/es/_episodes/04-changes.md:110 +#: git-novice/_locale/es/_episodes/04-changes.md:133 +#: git-novice/_locale/es/_episodes/04-changes.md:164 +#: git-novice/_locale/es/_episodes/04-changes.md:179 +#: git-novice/_locale/es/_episodes/04-changes.md:216 +#: git-novice/_locale/es/_episodes/04-changes.md:230 +#: git-novice/_locale/es/_episodes/04-changes.md:258 +#: git-novice/_locale/es/_episodes/04-changes.md:293 +#: git-novice/_locale/es/_episodes/04-changes.md:315 +#: git-novice/_locale/es/_episodes/04-changes.md:371 +#: git-novice/_locale/es/_episodes/04-changes.md:383 +#: git-novice/_locale/es/_episodes/04-changes.md:407 +#: git-novice/_locale/es/_episodes/04-changes.md:419 +#: git-novice/_locale/es/_episodes/04-changes.md:441 +#: git-novice/_locale/es/_episodes/04-changes.md:454 +#: git-novice/_locale/es/_episodes/04-changes.md:467 +#: git-novice/_locale/es/_episodes/05-history.md:31 +#: git-novice/_locale/es/_episodes/05-history.md:45 +#: git-novice/_locale/es/_episodes/05-history.md:66 +#: git-novice/_locale/es/_episodes/05-history.md:75 +#: git-novice/_locale/es/_episodes/05-history.md:94 +#: git-novice/_locale/es/_episodes/05-history.md:135 +#: git-novice/_locale/es/_episodes/05-history.md:156 +#: git-novice/_locale/es/_episodes/05-history.md:179 +#: git-novice/_locale/es/_episodes/05-history.md:192 +#: git-novice/_locale/es/_episodes/05-history.md:213 +#: git-novice/_locale/es/_episodes/05-history.md:233 +#: git-novice/_locale/es/_episodes/05-history.md:238 +#: git-novice/_locale/es/_episodes/05-history.md:248 +#: git-novice/_locale/es/_episodes/05-history.md:271 +#: git-novice/_locale/es/_episodes/06-ignore.md:23 +#: git-novice/_locale/es/_episodes/06-ignore.md:30 +#: git-novice/_locale/es/_episodes/06-ignore.md:56 +#: git-novice/_locale/es/_episodes/06-ignore.md:75 +#: git-novice/_locale/es/_episodes/06-ignore.md:98 +#: git-novice/_locale/es/_episodes/06-ignore.md:111 +#: git-novice/_locale/es/_episodes/06-ignore.md:128 +#: git-novice/_locale/es/_episodes/07-github.md:40 +#: git-novice/_locale/es/_episodes/07-github.md:70 +#: git-novice/_locale/es/_episodes/07-github.md:79 +#: git-novice/_locale/es/_episodes/07-github.md:94 +#: git-novice/_locale/es/_episodes/07-github.md:171 +#: git-novice/_locale/es/_episodes/08-collab.md:36 +#: git-novice/_locale/es/_episodes/08-collab.md:49 +#: git-novice/_locale/es/_episodes/08-collab.md:60 +#: git-novice/_locale/es/_episodes/08-collab.md:73 +#: git-novice/_locale/es/_episodes/08-collab.md:95 +#: git-novice/_locale/es/_episodes/09-conflict.md:23 +#: git-novice/_locale/es/_episodes/09-conflict.md:38 +#: git-novice/_locale/es/_episodes/09-conflict.md:54 +#: git-novice/_locale/es/_episodes/09-conflict.md:65 +#: git-novice/_locale/es/_episodes/09-conflict.md:86 +#: git-novice/_locale/es/_episodes/09-conflict.md:102 +#: git-novice/_locale/es/_episodes/09-conflict.md:115 +#: git-novice/_locale/es/_episodes/09-conflict.md:140 +#: git-novice/_locale/es/_episodes/09-conflict.md:161 +#: git-novice/_locale/es/_episodes/09-conflict.md:191 +#: git-novice/_locale/es/_episodes/09-conflict.md:209 +#: git-novice/_locale/es/_episodes/09-conflict.md:226 +#: git-novice/_locale/es/_episodes/09-conflict.md:238 +#: git-novice/_locale/es/_episodes/09-conflict.md:258 +#: git-novice/_locale/es/_episodes/09-conflict.md:279 +#: git-novice/_locale/es/_extras/discuss.md:24 +#: git-novice/_locale/es/_extras/discuss.md:48 +#: git-novice/_locale/es/_extras/discuss.md:58 +#: git-novice/_locale/es/_extras/discuss.md:65 +#: git-novice/_locale/es/_extras/discuss.md:72 +#: git-novice/_locale/es/_extras/discuss.md:91 +#: git-novice/_locale/es/_extras/discuss.md:101 +#: git-novice/_locale/es/_extras/discuss.md:149 +#: git-novice/_locale/es/_extras/discuss.md:167 +#: git-novice/_locale/es/_extras/discuss.md:183 +#: git-novice/_locale/es/_extras/discuss.md:233 +#: git-novice/_locale/es/_extras/discuss.md:242 +#: git-novice/_locale/es/_extras/discuss.md:257 +#: git-novice/_locale/es/_extras/discuss.md:277 +#: git-novice/_locale/es/_extras/discuss.md:291 +#: git-novice/_locale/es/_extras/discuss.md:299 +#: git-novice/_locale/es/_extras/discuss.md:322 +#: git-novice/_locale/es/_extras/discuss.md:340 +#: git-novice/_locale/es/_extras/discuss.md:351 +#: git-novice/_locale/es/_extras/discuss.md:359 +#: git-novice/_locale/es/_extras/discuss.md:370 +#: git-novice/_locale/es/_extras/discuss.md:386 +#: git-novice/_locale/es/_extras/discuss.md:401 +#: git-novice/_locale/es/_extras/discuss.md:409 +#: git-novice/_locale/es/_extras/discuss.md:437 +#: git-novice/_locale/es/_extras/discuss.md:457 +#: git-novice/_locale/es/setup.md:16 git-novice/setup.md:15 +msgid "{: .language-bash}" +msgstr "{: .language-bash}" + +#: git-novice/_episodes/02-setup.md:32 +msgid "" +"Please use your own name and email address instead of Dracula's. This user name and email will be associated with your subsequent Git activity,\n" +"which means that any changes pushed to\n" +"[GitHub](https://github.com/),\n" +"[BitBucket](https://bitbucket.org/),\n" +"[GitLab](https://gitlab.com/) or\n" +"another Git host server\n" +"in a later lesson will include this information." +msgstr "" +"Please use your own name and email address instead of のび太's. This user name and email will be associated with your subsequent Git activity,\n" +"which means that any changes pushed to\n" +"[GitHub](https://github.com/),\n" +"[BitBucket](https://bitbucket.org/),\n" +"[GitLab](https://gitlab.com/) or\n" +"another Git host server\n" +"in a later lesson will include this information." + +# blockquote, which can be cascaded +#: git-novice/_episodes/02-setup.md:40 +msgid "> ## Line Endings" +msgstr "> ## Line Endings" + +#: git-novice/_episodes/02-setup.md:41 +msgid "" +">\n" +"> As with other keys, when you hit Return on your keyboard,\n" +"> your computer encodes this input as a character.\n" +"> For reasons that are long to explain, different operating systems\n" +"> use different character(s) to represent the end of a line.\n" +"> (You may also hear these referred to as newlines or line breaks.)\n" +"> Because Git uses these characters to compare files,\n" +"> it may cause unexpected issues when editing a file on different machines.\n" +">\n" +"> You can change the way Git recognizes and encodes line endings\n" +"> using the `core.autocrlf` command to `git config`.\n" +"> The following settings are recommended:\n" +">\n" +"> On macOS and Linux:\n" +">\n" +"> ~~~\n" +"> $ git config --global core.autocrlf input\n" +"> ~~~\n" +"> {: .language-bash}\n" +">\n" +"> And on Windows:\n" +">\n" +"> ~~~\n" +"> $ git config --global core.autocrlf true\n" +"> ~~~\n" +"> {: .language-bash}\n" +"> \n" +"> You can read more about this issue \n" +"> [on this GitHub page](https://help.github.com/articles/dealing-with-line-endings/)." +msgstr "" +">\n" +"> As with other keys, when you hit Return on your keyboard,\n" +"> your computer encodes this input as a character.\n" +"> For reasons that are long to explain, different operating systems\n" +"> use different character(s) to represent the end of a line.\n" +"> (You may also hear these referred to as newlines or line breaks.)\n" +"> Because Git uses these characters to compare files,\n" +"> it may cause unexpected issues when editing a file on different machines.\n" +">\n" +"> You can change the way Git recognizes and encodes line endings\n" +"> using the `core.autocrlf` command to `git config`.\n" +"> The following settings are recommended:\n" +">\n" +"> On macOS and Linux:\n" +">\n" +"> ~~~\n" +"> $ git config --global core.autocrlf input\n" +"> ~~~\n" +"> {: .language-bash}\n" +">\n" +"> And on Windows:\n" +">\n" +"> ~~~\n" +"> $ git config --global core.autocrlf true\n" +"> ~~~\n" +"> {: .language-bash}\n" +"> \n" +"> You can read more about this issue \n" +"> [on this GitHub page](https://help.github.com/articles/dealing-with-line-endings/)." + +#: git-novice/_episodes/02-setup.md:72 +msgid "" +"For these lessons, we will be interacting with [GitHub](https://github.com/) and so the email address used should be the same as the one used when setting up your GitHub account. If you are concerned about privacy, please review [GitHub's instructions for keeping your email address private][git-privacy]. \n" +"If you elect to use a private email address with GitHub, then use that same email address for the `user.email` value, e.g. `username@users.noreply.github.com` replacing `username` with your GitHub one. You can change the email address later on by using the `git config` command again." +msgstr "" +"For these lessons, we will be interacting with [GitHub](https://github.com/) and so the email address used should be the same as the one used when setting up your GitHub account. If you are concerned about privacy, please review [GitHub's instructions for keeping your email address private][git-privacy]. \n" +"If you elect to use a private email address with GitHub, then use that same email address for the `user.email` value, e.g. `username@users.noreply.github.com` replacing `username` with your GitHub one. You can change the email address later on by using the `git config` command again." + +#: git-novice/_episodes/02-setup.md:75 +msgid "Dracula also has to set his favorite text editor, following this table:" +msgstr "のび太 also has to set his favorite text editor, following this table:" + +#: git-novice/_episodes/02-setup.md:77 +#: git-novice/_locale/es/_episodes/02-setup.md:77 +msgid "" +"| Editor | Configuration command |\n" +"|:-------------------|:-------------------------------------------------|\n" +"| Atom | `$ git config --global core.editor \"atom --wait\"`|\n" +"| nano | `$ git config --global core.editor \"nano -w\"` |\n" +"| BBEdit (Mac, with command line tools) | `$ git config --global core.editor \"bbedit -w\"` |\n" +"| Sublime Text (Mac) | `$ git config --global core.editor \"/Applications/Sublime\\ Text.app/Contents/SharedSupport/bin/subl -n -w\"` |\n" +"| Sublime Text (Win, 32-bit install) | `$ git config --global core.editor \"'c:/program files (x86)/sublime text 3/sublime_text.exe' -w\"` |\n" +"| Sublime Text (Win, 64-bit install) | `$ git config --global core.editor \"'c:/program files/sublime text 3/sublime_text.exe' -w\"` |\n" +"| Notepad++ (Win, 32-bit install) | `$ git config --global core.editor \"'c:/program files (x86)/Notepad++/notepad++.exe' -multiInst -notabbar -nosession -noPlugin\"`|\n" +"| Notepad++ (Win, 64-bit install) | `$ git config --global core.editor \"'c:/program files/Notepad++/notepad++.exe' -multiInst -notabbar -nosession -noPlugin\"`|\n" +"| Kate (Linux) | `$ git config --global core.editor \"kate\"` |\n" +"| Gedit (Linux) | `$ git config --global core.editor \"gedit --wait --new-window\"` |\n" +"| Scratch (Linux) | `$ git config --global core.editor \"scratch-text-editor\"` |\n" +"| Emacs | `$ git config --global core.editor \"emacs\"` |\n" +"| Vim | `$ git config --global core.editor \"vim\"` |" +msgstr "" +"| Editor | Configuration command |\n" +"|:-------------------|:-------------------------------------------------|\n" +"| Atom | `$ git config --global core.editor \"atom --wait\"`|\n" +"| nano | `$ git config --global core.editor \"nano -w\"` |\n" +"| BBEdit (Mac, with command line tools) | `$ git config --global core.editor \"bbedit -w\"` |\n" +"| Sublime Text (Mac) | `$ git config --global core.editor \"/Applications/Sublime\\ Text.app/Contents/SharedSupport/bin/subl -n -w\"` |\n" +"| Sublime Text (Win, 32-bit install) | `$ git config --global core.editor \"'c:/program files (x86)/sublime text 3/sublime_text.exe' -w\"` |\n" +"| Sublime Text (Win, 64-bit install) | `$ git config --global core.editor \"'c:/program files/sublime text 3/sublime_text.exe' -w\"` |\n" +"| Notepad++ (Win, 32-bit install) | `$ git config --global core.editor \"'c:/program files (x86)/Notepad++/notepad++.exe' -multiInst -notabbar -nosession -noPlugin\"`|\n" +"| Notepad++ (Win, 64-bit install) | `$ git config --global core.editor \"'c:/program files/Notepad++/notepad++.exe' -multiInst -notabbar -nosession -noPlugin\"`|\n" +"| Kate (Linux) | `$ git config --global core.editor \"kate\"` |\n" +"| Gedit (Linux) | `$ git config --global core.editor \"gedit --wait --new-window\"` |\n" +"| Scratch (Linux) | `$ git config --global core.editor \"scratch-text-editor\"` |\n" +"| Emacs | `$ git config --global core.editor \"emacs\"` |\n" +"| Vim | `$ git config --global core.editor \"vim\"` |" + +#: git-novice/_episodes/02-setup.md:93 +msgid "It is possible to reconfigure the text editor for Git whenever you want to change it." +msgstr "It is possible to reconfigure the text editor for Git whenever you want to change it." + +# blockquote, which can be cascaded +#: git-novice/_episodes/02-setup.md:95 +msgid "> ## Exiting Vim" +msgstr "> ## Exiting Vim" + +#: git-novice/_episodes/02-setup.md:96 +msgid "" +">\n" +"> Note that Vim is the default editor for many programs. If you haven't used Vim before and wish to exit a session without saving\n" +"your changes, press Esc then type `:q!` and hit Return.\n" +"> If you want to save your changes and quit, press Esc then type `:wq` and hit Return." +msgstr "" +">\n" +"> Note that Vim is the default editor for many programs. If you haven't used Vim before and wish to exit a session without saving\n" +"your changes, press Esc then type `:q!` and hit Return.\n" +"> If you want to save your changes and quit, press Esc then type `:wq` and hit Return." + +#: git-novice/_episodes/02-setup.md:102 +msgid "" +"The four commands we just ran above only need to be run once: the flag `--global` tells Git\n" +"to use the settings for every project, in your user account, on this computer." +msgstr "" +"The four commands we just ran above only need to be run once: the flag `--global` tells Git\n" +"to use the settings for every project, in your user account, on this computer." + +#: git-novice/_episodes/02-setup.md:105 +msgid "You can check your settings at any time:" +msgstr "You can check your settings at any time:" + +# code block +#: git-novice/_episodes/02-setup.md:107 +#: git-novice/_locale/es/_episodes/02-setup.md:104 +msgid "" +"~~~\n" +"$ git config --list\n" +"~~~" +msgstr "" +"~~~\n" +"$ git config --list\n" +"~~~" + +#: git-novice/_episodes/02-setup.md:112 +msgid "" +"You can change your configuration as many times as you want: just use the\n" +"same commands to choose another editor or update your email address." +msgstr "" +"You can change your configuration as many times as you want: just use the\n" +"same commands to choose another editor or update your email address." + +# blockquote, which can be cascaded +#: git-novice/_episodes/02-setup.md:115 git-novice/_episodes/07-github.md:127 +#: git-novice/_locale/es/_episodes/02-setup.md:111 +#: git-novice/_locale/es/_episodes/07-github.md:108 +msgid "> ## Proxy" +msgstr "> ## Proxy" + +#: git-novice/_episodes/02-setup.md:116 +msgid "" +">\n" +"> In some networks you need to use a\n" +"> [proxy](https://en.wikipedia.org/wiki/Proxy_server). If this is the case, you\n" +"> may also need to tell Git about the proxy:\n" +">\n" +"> ~~~\n" +"> $ git config --global http.proxy proxy-url\n" +"> $ git config --global https.proxy proxy-url\n" +"> ~~~\n" +"> {: .language-bash}\n" +">\n" +"> To disable the proxy, use\n" +">\n" +"> ~~~\n" +"> $ git config --global --unset http.proxy\n" +"> $ git config --global --unset https.proxy\n" +"> ~~~\n" +"> {: .language-bash}" +msgstr "" +">\n" +"> In some networks you need to use a\n" +"> [proxy](https://en.wikipedia.org/wiki/Proxy_server). If this is the case, you\n" +"> may also need to tell Git about the proxy:\n" +">\n" +"> ~~~\n" +"> $ git config --global http.proxy proxy-url\n" +"> $ git config --global https.proxy proxy-url\n" +"> ~~~\n" +"> {: .language-bash}\n" +">\n" +"> To disable the proxy, use\n" +">\n" +"> ~~~\n" +"> $ git config --global --unset http.proxy\n" +"> $ git config --global --unset https.proxy\n" +"> ~~~\n" +"> {: .language-bash}" + +# blockquote, which can be cascaded +#: git-novice/_episodes/02-setup.md:136 +msgid "> ## Git Help and Manual" +msgstr "> ## Git Help and Manual" + +#: git-novice/_episodes/02-setup.md:137 +msgid "" +">\n" +"> Always remember that if you forget a `git` command, you can access the list of commands by using `-h` and access the Git manual by using `--help` :\n" +">\n" +"> ~~~\n" +"> $ git config -h\n" +"> $ git config --help\n" +"> ~~~\n" +"> {: .language-bash}" +msgstr "" +">\n" +"> Always remember that if you forget a `git` command, you can access the list of commands by using `-h` and access the Git manual by using `--help` :\n" +">\n" +"> ~~~\n" +"> $ git config -h\n" +"> $ git config --help\n" +"> ~~~\n" +"> {: .language-bash}" + +#: git-novice/_episodes/02-setup.md:147 +#: git-novice/_locale/es/_episodes/02-setup.md:143 +msgid "[git-privacy]: https://help.github.com/articles/keeping-your-email-address-private/" +msgstr "[git-privacy]: https://help.github.com/articles/keeping-your-email-address-private/" + +# Front Matter +#: git-novice/_episodes/03-create.md:1 +msgid "" +"---\n" +"title: Creating a Repository\n" +"teaching: 10\n" +"exercises: 0\n" +"questions:\n" +"- \"Where does Git store information?\"\n" +"objectives:\n" +"- \"Create a local Git repository.\"\n" +"keypoints:\n" +"- \"`git init` initializes a repository.\"\n" +"- \"Git stores all of its repository data in the `.git` directory.\"\n" +"---" +msgstr "" +"---\n" +"title: Creating a Repository\n" +"teaching: 10\n" +"exercises: 0\n" +"questions:\n" +"- \"Where does Git store information?\"\n" +"objectives:\n" +"- \"Create a local Git repository.\"\n" +"keypoints:\n" +"- \"`git init` initializes a repository.\"\n" +"- \"Git stores all of its repository data in the `.git` directory.\"\n" +"---" + +#: git-novice/_episodes/03-create.md:14 +msgid "" +"Once Git is configured,\n" +"we can start using it." +msgstr "" +"Once Git is configured,\n" +"we can start using it." + +#: git-novice/_episodes/03-create.md:17 +msgid "First, let's create a directory in `Desktop` folder for our work and then move into that directory:" +msgstr "First, let's create a directory in `Desktop` folder for our work and then move into that directory:" + +# code block +#: git-novice/_episodes/03-create.md:19 +msgid "" +"~~~\n" +"$ cd ~/Desktop\n" +"$ mkdir planets\n" +"$ cd planets\n" +"~~~" +msgstr "" +"~~~\n" +"$ cd ~/Desktop\n" +"$ mkdir planets\n" +"$ cd planets\n" +"~~~" + +#: git-novice/_episodes/03-create.md:26 +msgid "" +"Then we tell Git to make `planets` a [repository]({{ page.root }}/reference#repository)—a place where\n" +"Git can store versions of our files:" +msgstr "" +"Then we tell Git to make `planets` a [repository]({{ page.root }}/reference#repository)—a place where\n" +"Git can store versions of our files:" + +# code block +#: git-novice/_episodes/03-create.md:29 +#: git-novice/_locale/es/_episodes/03-create.md:27 +msgid "" +"~~~\n" +"$ git init\n" +"~~~" +msgstr "" +"~~~\n" +"$ git init\n" +"~~~" + +#: git-novice/_episodes/03-create.md:34 +msgid "" +"If we use `ls` to show the directory's contents,\n" +"it appears that nothing has changed:" +msgstr "" +"If we use `ls` to show the directory's contents,\n" +"it appears that nothing has changed:" + +# code block +#: git-novice/_episodes/03-create.md:37 git-novice/_episodes/04-changes.md:57 +#: git-novice/_locale/es/_episodes/03-create.md:35 +#: git-novice/_locale/es/_episodes/04-changes.md:55 +msgid "" +"~~~\n" +"$ ls\n" +"~~~" +msgstr "" +"~~~\n" +"$ ls\n" +"~~~" + +#: git-novice/_episodes/03-create.md:42 +msgid "" +"But if we add the `-a` flag to show everything,\n" +"we can see that Git has created a hidden directory within `planets` called `.git`:" +msgstr "" +"But if we add the `-a` flag to show everything,\n" +"we can see that Git has created a hidden directory within `planets` called `.git`:" + +# code block +#: git-novice/_episodes/03-create.md:45 +#: git-novice/_locale/es/_episodes/03-create.md:43 +msgid "" +"~~~\n" +"$ ls -a\n" +"~~~" +msgstr "" +"~~~\n" +"$ ls -a\n" +"~~~" + +# code block +#: git-novice/_episodes/03-create.md:50 +msgid "" +"~~~\n" +".\t..\t.git\n" +"~~~" +msgstr "" +"~~~\n" +".\t..\t.git\n" +"~~~" + +# SC/DC Template label +#: git-novice/_episodes/03-create.md:53 git-novice/_episodes/03-create.md:78 +#: git-novice/_episodes/04-changes.md:65 git-novice/_episodes/04-changes.md:75 +#: git-novice/_episodes/04-changes.md:96 git-novice/_episodes/04-changes.md:125 +#: git-novice/_episodes/04-changes.md:142 +#: git-novice/_episodes/04-changes.md:172 +#: git-novice/_episodes/04-changes.md:190 +#: git-novice/_episodes/04-changes.md:224 +#: git-novice/_episodes/04-changes.md:244 +#: git-novice/_episodes/04-changes.md:271 +#: git-novice/_episodes/04-changes.md:307 +#: git-novice/_episodes/04-changes.md:323 +#: git-novice/_episodes/04-changes.md:381 +#: git-novice/_episodes/04-changes.md:398 +#: git-novice/_episodes/04-changes.md:434 +#: git-novice/_episodes/04-changes.md:450 +#: git-novice/_episodes/04-changes.md:463 +#: git-novice/_episodes/04-changes.md:491 git-novice/_episodes/05-history.md:38 +#: git-novice/_episodes/05-history.md:57 git-novice/_episodes/05-history.md:89 +#: git-novice/_episodes/05-history.md:113 +#: git-novice/_episodes/05-history.md:149 +#: git-novice/_episodes/05-history.md:170 +#: git-novice/_episodes/05-history.md:186 +#: git-novice/_episodes/05-history.md:206 +#: git-novice/_episodes/05-history.md:222 +#: git-novice/_episodes/05-history.md:245 +#: git-novice/_episodes/05-history.md:264 git-novice/_episodes/06-ignore.md:43 +#: git-novice/_episodes/06-ignore.md:62 git-novice/_episodes/06-ignore.md:85 +#: git-novice/_episodes/06-ignore.md:104 git-novice/_episodes/06-ignore.md:118 +#: git-novice/_episodes/06-ignore.md:142 git-novice/_episodes/07-github.md:102 +#: git-novice/_episodes/07-github.md:125 git-novice/_episodes/07-github.md:197 +#: git-novice/_episodes/08-collab.md:64 git-novice/_episodes/08-collab.md:76 +#: git-novice/_episodes/08-collab.md:94 git-novice/_episodes/08-collab.md:124 +#: git-novice/_episodes/09-conflict.md:36 +#: git-novice/_episodes/09-conflict.md:52 +#: git-novice/_episodes/09-conflict.md:66 +#: git-novice/_episodes/09-conflict.md:82 +#: git-novice/_episodes/09-conflict.md:100 +#: git-novice/_episodes/09-conflict.md:114 +#: git-novice/_episodes/09-conflict.md:132 +#: git-novice/_episodes/09-conflict.md:159 +#: git-novice/_episodes/09-conflict.md:179 +#: git-novice/_episodes/09-conflict.md:205 +#: git-novice/_episodes/09-conflict.md:227 +#: git-novice/_episodes/09-conflict.md:237 +#: git-novice/_episodes/09-conflict.md:255 +#: git-novice/_episodes/09-conflict.md:278 +#: git-novice/_episodes/09-conflict.md:293 git-novice/_extras/discuss.md:35 +#: git-novice/_extras/discuss.md:157 git-novice/_extras/discuss.md:175 +#: git-novice/_extras/discuss.md:190 git-novice/_extras/discuss.md:203 +#: git-novice/_extras/discuss.md:248 git-novice/_extras/discuss.md:267 +#: git-novice/_extras/discuss.md:311 git-novice/_extras/discuss.md:332 +#: git-novice/_extras/discuss.md:380 git-novice/_extras/discuss.md:426 +#: git-novice/_extras/discuss.md:447 +#: git-novice/_locale/es/_episodes/03-create.md:51 +#: git-novice/_locale/es/_episodes/03-create.md:73 +#: git-novice/_locale/es/_episodes/04-changes.md:63 +#: git-novice/_locale/es/_episodes/04-changes.md:73 +#: git-novice/_locale/es/_episodes/04-changes.md:94 +#: git-novice/_locale/es/_episodes/04-changes.md:123 +#: git-novice/_locale/es/_episodes/04-changes.md:140 +#: git-novice/_locale/es/_episodes/04-changes.md:170 +#: git-novice/_locale/es/_episodes/04-changes.md:188 +#: git-novice/_locale/es/_episodes/04-changes.md:222 +#: git-novice/_locale/es/_episodes/04-changes.md:242 +#: git-novice/_locale/es/_episodes/04-changes.md:269 +#: git-novice/_locale/es/_episodes/04-changes.md:305 +#: git-novice/_locale/es/_episodes/04-changes.md:321 +#: git-novice/_locale/es/_episodes/04-changes.md:378 +#: git-novice/_locale/es/_episodes/04-changes.md:395 +#: git-novice/_locale/es/_episodes/04-changes.md:431 +#: git-novice/_locale/es/_episodes/04-changes.md:447 +#: git-novice/_locale/es/_episodes/04-changes.md:460 +#: git-novice/_locale/es/_episodes/04-changes.md:488 +#: git-novice/_locale/es/_episodes/05-history.md:38 +#: git-novice/_locale/es/_episodes/05-history.md:57 +#: git-novice/_locale/es/_episodes/05-history.md:87 +#: git-novice/_locale/es/_episodes/05-history.md:111 +#: git-novice/_locale/es/_episodes/05-history.md:147 +#: git-novice/_locale/es/_episodes/05-history.md:168 +#: git-novice/_locale/es/_episodes/05-history.md:184 +#: git-novice/_locale/es/_episodes/05-history.md:204 +#: git-novice/_locale/es/_episodes/05-history.md:220 +#: git-novice/_locale/es/_episodes/05-history.md:243 +#: git-novice/_locale/es/_episodes/05-history.md:262 +#: git-novice/_locale/es/_episodes/06-ignore.md:43 +#: git-novice/_locale/es/_episodes/06-ignore.md:62 +#: git-novice/_locale/es/_episodes/06-ignore.md:85 +#: git-novice/_locale/es/_episodes/06-ignore.md:104 +#: git-novice/_locale/es/_episodes/06-ignore.md:118 +#: git-novice/_locale/es/_episodes/06-ignore.md:142 +#: git-novice/_locale/es/_episodes/07-github.md:85 +#: git-novice/_locale/es/_episodes/07-github.md:106 +#: git-novice/_locale/es/_episodes/07-github.md:178 +#: git-novice/_locale/es/_episodes/08-collab.md:54 +#: git-novice/_locale/es/_episodes/08-collab.md:66 +#: git-novice/_locale/es/_episodes/08-collab.md:84 +#: git-novice/_locale/es/_episodes/08-collab.md:110 +#: git-novice/_locale/es/_episodes/09-conflict.md:30 +#: git-novice/_locale/es/_episodes/09-conflict.md:46 +#: git-novice/_locale/es/_episodes/09-conflict.md:60 +#: git-novice/_locale/es/_episodes/09-conflict.md:76 +#: git-novice/_locale/es/_episodes/09-conflict.md:94 +#: git-novice/_locale/es/_episodes/09-conflict.md:108 +#: git-novice/_locale/es/_episodes/09-conflict.md:126 +#: git-novice/_locale/es/_episodes/09-conflict.md:153 +#: git-novice/_locale/es/_episodes/09-conflict.md:173 +#: git-novice/_locale/es/_episodes/09-conflict.md:199 +#: git-novice/_locale/es/_episodes/09-conflict.md:221 +#: git-novice/_locale/es/_episodes/09-conflict.md:231 +#: git-novice/_locale/es/_episodes/09-conflict.md:249 +#: git-novice/_locale/es/_episodes/09-conflict.md:272 +#: git-novice/_locale/es/_episodes/09-conflict.md:287 +#: git-novice/_locale/es/_extras/discuss.md:35 +#: git-novice/_locale/es/_extras/discuss.md:157 +#: git-novice/_locale/es/_extras/discuss.md:175 +#: git-novice/_locale/es/_extras/discuss.md:190 +#: git-novice/_locale/es/_extras/discuss.md:203 +#: git-novice/_locale/es/_extras/discuss.md:248 +#: git-novice/_locale/es/_extras/discuss.md:267 +#: git-novice/_locale/es/_extras/discuss.md:311 +#: git-novice/_locale/es/_extras/discuss.md:332 +#: git-novice/_locale/es/_extras/discuss.md:380 +#: git-novice/_locale/es/_extras/discuss.md:426 +#: git-novice/_locale/es/_extras/discuss.md:447 +msgid "{: .output}" +msgstr "{: .output}" + +#: git-novice/_episodes/03-create.md:55 +msgid "" +"Git uses this special sub-directory to store all the information about the project, \n" +"including all files and sub-directories located within the project's directory.\n" +"If we ever delete the `.git` sub-directory,\n" +"we will lose the project's history." +msgstr "" +"Git uses this special sub-directory to store all the information about the project, \n" +"including all files and sub-directories located within the project's directory.\n" +"If we ever delete the `.git` sub-directory,\n" +"we will lose the project's history." + +#: git-novice/_episodes/03-create.md:60 +msgid "" +"We can check that everything is set up correctly\n" +"by asking Git to tell us the status of our project:" +msgstr "" +"We can check that everything is set up correctly\n" +"by asking Git to tell us the status of our project:" + +# code block +#: git-novice/_episodes/03-create.md:63 git-novice/_episodes/04-changes.md:80 +#: git-novice/_episodes/04-changes.md:109 +#: git-novice/_episodes/04-changes.md:163 +#: git-novice/_episodes/04-changes.md:229 +#: git-novice/_episodes/04-changes.md:454 +#: git-novice/_episodes/05-history.md:191 +#: git-novice/_episodes/05-history.md:247 git-novice/_episodes/06-ignore.md:27 +#: git-novice/_episodes/06-ignore.md:72 +#: git-novice/_locale/es/_episodes/03-create.md:59 +#: git-novice/_locale/es/_episodes/04-changes.md:78 +#: git-novice/_locale/es/_episodes/04-changes.md:107 +#: git-novice/_locale/es/_episodes/04-changes.md:161 +#: git-novice/_locale/es/_episodes/04-changes.md:227 +#: git-novice/_locale/es/_episodes/04-changes.md:451 +#: git-novice/_locale/es/_episodes/05-history.md:189 +#: git-novice/_locale/es/_episodes/05-history.md:245 +#: git-novice/_locale/es/_episodes/06-ignore.md:27 +#: git-novice/_locale/es/_episodes/06-ignore.md:72 +msgid "" +"~~~\n" +"$ git status\n" +"~~~" +msgstr "" +"~~~\n" +"$ git status\n" +"~~~" + +#: git-novice/_episodes/03-create.md:68 +msgid "" +"If you are using a different version of `git`, the exact\n" +"wording of the output might be slightly different." +msgstr "" +"If you are using a different version of `git`, the exact\n" +"wording of the output might be slightly different." + +# code block +#: git-novice/_episodes/03-create.md:71 +#: git-novice/_locale/es/_episodes/03-create.md:66 +msgid "" +"~~~\n" +"# On branch master\n" +"#\n" +"# Initial commit\n" +"#\n" +"nothing to commit (create/copy files and use \"git add\" to track)\n" +"~~~" +msgstr "" +"~~~\n" +"# On branch master\n" +"#\n" +"# Initial commit\n" +"#\n" +"nothing to commit (create/copy files and use \"git add\" to track)\n" +"~~~" + +# blockquote, which can be cascaded +#: git-novice/_episodes/03-create.md:80 +msgid "> ## Places to Create Git Repositories" +msgstr "> ## Places to Create Git Repositories" + +#: git-novice/_episodes/03-create.md:81 +msgid "" +">\n" +"> Along with tracking information about planets (the project we have already created), \n" +"> Dracula would also like to track information about moons.\n" +"> Despite Wolfman's concerns, Dracula creates a `moons` project inside his `planets` \n" +"> project with the following sequence of commands:\n" +">\n" +"> ~~~\n" +"> $ cd ~/Desktop # return to Desktop directory\n" +"> $ cd planets # go into planets directory, which is already a Git repository\n" +"> $ ls -a # ensure the .git sub-directory is still present in the planets directory\n" +"> $ mkdir moons # make a sub-directory planets/moons\n" +"> $ cd moons # go into moons sub-directory\n" +"> $ git init # make the moons sub-directory a Git repository\n" +"> $ ls -a # ensure the .git sub-directory is present indicating we have created a new Git repository\n" +"> ~~~\n" +"> {: .language-bash}\n" +">\n" +"> Is the `git init` command, run inside the `moons` sub-directory, required for \n" +"> tracking files stored in the `moons` sub-directory?\n" +"> \n" +"> > ## Solution\n" +"> >\n" +"> > No. Dracula does not need to make the `moons` sub-directory a Git repository \n" +"> > because the `planets` repository will track all files, sub-directories, and \n" +"> > sub-directory files under the `planets` directory. Thus, in order to track \n" +"> > all information about moons, Dracula only needed to add the `moons` sub-directory\n" +"> > to the `planets` directory.\n" +"> > \n" +"> > Additionally, Git repositories can interfere with each other if they are \"nested\":\n" +"> > the outer repository will try to version-control\n" +"> > the inner repository. Therefore, it's best to create each new Git\n" +"> > repository in a separate directory. To be sure that there is no conflicting\n" +"> > repository in the directory, check the output of `git status`. If it looks\n" +"> > like the following, you are good to go to create a new repository as shown\n" +"> > above:\n" +"> >\n" +"> > ~~~\n" +"> > $ git status\n" +"> > ~~~\n" +"> > {: .language-bash}\n" +"> >\n" +"> > ~~~\n" +"> > fatal: Not a git repository (or any of the parent directories): .git\n" +"> > ~~~\n" +"> > {: .output}" +msgstr "" +">\n" +"> Along with tracking information about planets (the project we have already created), \n" +"> のび太 would also like to track information about moons.\n" +"> Despite ドラえもん's concerns, のび太 creates a `moons` project inside his `planets` \n" +"> project with the following sequence of commands:\n" +">\n" +"> ~~~\n" +"> $ cd ~/Desktop # return to Desktop directory\n" +"> $ cd planets # go into planets directory, which is already a Git repository\n" +"> $ ls -a # ensure the .git sub-directory is still present in the planets directory\n" +"> $ mkdir moons # make a sub-directory planets/moons\n" +"> $ cd moons # go into moons sub-directory\n" +"> $ git init # make the moons sub-directory a Git repository\n" +"> $ ls -a # ensure the .git sub-directory is present indicating we have created a new Git repository\n" +"> ~~~\n" +"> {: .language-bash}\n" +">\n" +"> Is the `git init` command, run inside the `moons` sub-directory, required for \n" +"> tracking files stored in the `moons` sub-directory?\n" +"> \n" +"> > ## Solution\n" +"> >\n" +"> > No. のび太 does not need to make the `moons` sub-directory a Git repository \n" +"> > because the `planets` repository will track all files, sub-directories, and \n" +"> > sub-directory files under the `planets` directory. Thus, in order to track \n" +"> > all information about moons, のび太 only needed to add the `moons` sub-directory\n" +"> > to the `planets` directory.\n" +"> > \n" +"> > Additionally, Git repositories can interfere with each other if they are \"nested\":\n" +"> > the outer repository will try to version-control\n" +"> > the inner repository. Therefore, it's best to create each new Git\n" +"> > repository in a separate directory. To be sure that there is no conflicting\n" +"> > repository in the directory, check the output of `git status`. If it looks\n" +"> > like the following, you are good to go to create a new repository as shown\n" +"> > above:\n" +"> >\n" +"> > ~~~\n" +"> > $ git status\n" +"> > ~~~\n" +"> > {: .language-bash}\n" +"> >\n" +"> > ~~~\n" +"> > fatal: Not a git repository (or any of the parent directories): .git\n" +"> > ~~~\n" +"> > {: .output}" + +# SC/DC Template label +#: git-novice/_episodes/03-create.md:126 git-novice/_episodes/03-create.md:147 +#: git-novice/_episodes/04-changes.md:618 +#: git-novice/_episodes/04-changes.md:642 +#: git-novice/_episodes/04-changes.md:702 +#: git-novice/_episodes/04-changes.md:756 +#: git-novice/_episodes/04-changes.md:817 +#: git-novice/_episodes/05-history.md:429 git-novice/_episodes/06-ignore.md:174 +#: git-novice/_episodes/06-ignore.md:194 git-novice/_episodes/06-ignore.md:217 +#: git-novice/_episodes/06-ignore.md:238 git-novice/_episodes/06-ignore.md:258 +#: git-novice/_episodes/07-github.md:217 git-novice/_episodes/07-github.md:230 +#: git-novice/_episodes/07-github.md:240 git-novice/_episodes/07-github.md:262 +#: git-novice/_episodes/07-github.md:273 git-novice/_episodes/08-collab.md:170 +#: git-novice/_episodes/09-conflict.md:494 +#: git-novice/_episodes/09-conflict.md:536 +#: git-novice/_episodes/14-supplemental-rstudio.md:126 +#: git-novice/_locale/es/_episodes/03-create.md:76 +#: git-novice/_locale/es/_episodes/03-create.md:121 +#: git-novice/_locale/es/_episodes/03-create.md:142 +#: git-novice/_locale/es/_episodes/04-changes.md:614 +#: git-novice/_locale/es/_episodes/04-changes.md:638 +#: git-novice/_locale/es/_episodes/04-changes.md:698 +#: git-novice/_locale/es/_episodes/04-changes.md:750 +#: git-novice/_locale/es/_episodes/04-changes.md:811 +#: git-novice/_locale/es/_episodes/05-history.md:426 +#: git-novice/_locale/es/_episodes/06-ignore.md:174 +#: git-novice/_locale/es/_episodes/06-ignore.md:193 +#: git-novice/_locale/es/_episodes/06-ignore.md:217 +#: git-novice/_locale/es/_episodes/06-ignore.md:238 +#: git-novice/_locale/es/_episodes/06-ignore.md:257 +#: git-novice/_locale/es/_episodes/07-github.md:196 +#: git-novice/_locale/es/_episodes/07-github.md:209 +#: git-novice/_locale/es/_episodes/07-github.md:219 +#: git-novice/_locale/es/_episodes/07-github.md:241 +#: git-novice/_locale/es/_episodes/07-github.md:252 +#: git-novice/_locale/es/_episodes/08-collab.md:137 +#: git-novice/_locale/es/_episodes/09-conflict.md:486 +#: git-novice/_locale/es/_episodes/09-conflict.md:529 +#: git-novice/_locale/es/_episodes/14-supplemental-rstudio.md:110 +msgid "> {: .solution}" +msgstr "> {: .solution}" + +# blockquote, which can be cascaded +#: git-novice/_episodes/03-create.md:129 +msgid "> ## Correcting `git init` Mistakes" +msgstr "> ## Correcting `git init` Mistakes" + +# blockquote, which can be cascaded +#: git-novice/_episodes/03-create.md:130 +msgid "> Wolfman explains to Dracula how a nested repository is redundant and may cause confusion" +msgstr "> ドラえもん explains to のび太 how a nested repository is redundant and may cause confusion" + +# blockquote, which can be cascaded +#: git-novice/_episodes/03-create.md:131 +msgid "> down the road. Dracula would like to remove the nested repository. How can Dracula undo " +msgstr "> down the road. のび太 would like to remove the nested repository. How can のび太 undo " + +# blockquote, which can be cascaded +#: git-novice/_episodes/03-create.md:132 +msgid "> his last `git init` in the `moons` sub-directory?" +msgstr "> his last `git init` in the `moons` sub-directory?" + +#: git-novice/_episodes/03-create.md:133 +msgid "" +">\n" +"> > ## Solution -- USE WITH CAUTION!\n" +"> >\n" +"> > To recover from this little mistake, Dracula can just remove the `.git`\n" +"> > folder in the moons subdirectory by running the following command from inside the `planets` directory:\n" +"> >\n" +"> > ~~~\n" +"> > $ rm -rf moons/.git\n" +"> > ~~~\n" +"> > {: .language-bash}\n" +"> >\n" +"> > But be careful! Running this command in the wrong directory, will remove\n" +"> > the entire Git history of a project you might want to keep. Therefore, always check your current directory using the\n" +"> > command `pwd`." +msgstr "" +">\n" +"> > ## Solution -- USE WITH CAUTION!\n" +"> >\n" +"> > To recover from this little mistake, のび太 can just remove the `.git`\n" +"> > folder in the moons subdirectory by running the following command from inside the `planets` directory:\n" +"> >\n" +"> > ~~~\n" +"> > $ rm -rf moons/.git\n" +"> > ~~~\n" +"> > {: .language-bash}\n" +"> >\n" +"> > But be careful! Running this command in the wrong directory, will remove\n" +"> > the entire Git history of a project you might want to keep. Therefore, always check your current directory using the\n" +"> > command `pwd`." + +# Front Matter +#: git-novice/_episodes/04-changes.md:1 +msgid "" +"---\n" +"title: Tracking Changes\n" +"teaching: 20\n" +"exercises: 0\n" +"questions:\n" +"- \"How do I record changes in Git?\"\n" +"- \"How do I check the status of my version control repository?\"\n" +"- \"How do I record notes about what changes I made and why?\"\n" +"objectives:\n" +"- \"Go through the modify-add-commit cycle for one or more files.\"\n" +"- \"Explain where information is stored at each stage of that cycle.\"\n" +"- \"Distinguish between descriptive and non-descriptive commit messages.\"\n" +"keypoints:\n" +"- \"`git status` shows the status of a repository.\"\n" +"- \"Files can be stored in a project's working directory (which users see), the staging area (where the next commit is being built up) and the local repository (where commits are permanently recorded).\"\n" +"- \"`git add` puts files in the staging area.\"\n" +"- \"`git commit` saves the staged content as a new commit in the local repository.\"\n" +"- \"Write a commit message that accurately describes your changes.\"\n" +"---" +msgstr "" +"---\n" +"title: Tracking Changes\n" +"teaching: 20\n" +"exercises: 0\n" +"questions:\n" +"- \"How do I record changes in Git?\"\n" +"- \"How do I check the status of my version control repository?\"\n" +"- \"How do I record notes about what changes I made and why?\"\n" +"objectives:\n" +"- \"Go through the modify-add-commit cycle for one or more files.\"\n" +"- \"Explain where information is stored at each stage of that cycle.\"\n" +"- \"Distinguish between descriptive and non-descriptive commit messages.\"\n" +"keypoints:\n" +"- \"`git status` shows the status of a repository.\"\n" +"- \"Files can be stored in a project's working directory (which users see), the staging area (where the next commit is being built up) and the local repository (where commits are permanently recorded).\"\n" +"- \"`git add` puts files in the staging area.\"\n" +"- \"`git commit` saves the staged content as a new commit in the local repository.\"\n" +"- \"Write a commit message that accurately describes your changes.\"\n" +"---" + +#: git-novice/_episodes/04-changes.md:21 +msgid "" +"First let's make sure we're still in the right directory.\n" +"You should be in the `planets` directory." +msgstr "" +"First let's make sure we're still in the right directory.\n" +"You should be in the `planets` directory." + +# code block +#: git-novice/_episodes/04-changes.md:24 +#: git-novice/_locale/es/_episodes/04-changes.md:24 +msgid "" +"~~~\n" +"$ pwd\n" +"~~~" +msgstr "" +"~~~\n" +"$ pwd\n" +"~~~" + +#: git-novice/_episodes/04-changes.md:29 +msgid "If you are still in `moons`, navigate back up to `planets`" +msgstr "If you are still in `moons`, navigate back up to `planets`" + +# code block +#: git-novice/_episodes/04-changes.md:31 +#: git-novice/_locale/es/_episodes/04-changes.md:31 +msgid "" +"~~~\n" +"$ cd ..\n" +"~~~" +msgstr "" +"~~~\n" +"$ cd ..\n" +"~~~" + +#: git-novice/_episodes/04-changes.md:36 +msgid "" +"Let's create a file called `mars.txt` that contains some notes\n" +"about the Red Planet's suitability as a base.\n" +"We'll use `nano` to edit the file;\n" +"you can use whatever editor you like.\n" +"In particular, this does not have to be the `core.editor` you set globally earlier. \n" +"But remember, the.language-bash command to create or edit a new file will depend on the editor you choose (it might not be `nano`). \n" +"For a refresher on text editors, check out [\"Which Editor?\"](https://swcarpentry.github.io/shell-novice/03-create/) in [The Unix Shell](https://swcarpentry.github.io/shell-novice/) lesson." +msgstr "" +"Let's create a file called `mars.txt` that contains some notes\n" +"about the Red Planet's suitability as a base.\n" +"We'll use `nano` to edit the file;\n" +"you can use whatever editor you like.\n" +"In particular, this does not have to be the `core.editor` you set globally earlier. \n" +"But remember, the.language-bash command to create or edit a new file will depend on the editor you choose (it might not be `nano`). \n" +"For a refresher on text editors, check out [\"Which Editor?\"](https://swcarpentry.github.io/shell-novice/03-create/) in [The Unix Shell](https://swcarpentry.github.io/shell-novice/) lesson." + +# code block +#: git-novice/_episodes/04-changes.md:44 +#: git-novice/_locale/es/_episodes/04-changes.md:42 +msgid "" +"~~~\n" +"$ nano mars.txt\n" +"~~~" +msgstr "" +"~~~\n" +"$ nano mars.txt\n" +"~~~" + +#: git-novice/_episodes/04-changes.md:49 +msgid "Type the text below into the `mars.txt` file:" +msgstr "Type the text below into the `mars.txt` file:" + +# code block +#: git-novice/_episodes/04-changes.md:51 git-novice/_episodes/04-changes.md:72 +#: git-novice/_episodes/05-history.md:242 git-novice/_extras/discuss.md:154 +#: git-novice/_locale/es/_episodes/04-changes.md:49 +#: git-novice/_locale/es/_episodes/04-changes.md:70 +#: git-novice/_locale/es/_episodes/05-history.md:240 +#: git-novice/_locale/es/_extras/discuss.md:154 +msgid "" +"~~~\n" +"Cold and dry, but everything is my favorite color\n" +"~~~" +msgstr "" +"~~~\n" +"Cold and dry, but everything is my favorite color\n" +"~~~" + +#: git-novice/_episodes/04-changes.md:55 +msgid "`mars.txt` now contains a single line, which we can see by running:" +msgstr "`mars.txt` now contains a single line, which we can see by running:" + +# code block +#: git-novice/_episodes/04-changes.md:62 +#: git-novice/_locale/es/_episodes/04-changes.md:60 +msgid "" +"~~~\n" +"mars.txt\n" +"~~~" +msgstr "" +"~~~\n" +"mars.txt\n" +"~~~" + +# code block +#: git-novice/_episodes/04-changes.md:67 git-novice/_episodes/05-history.md:237 +#: git-novice/_episodes/09-conflict.md:26 +#: git-novice/_episodes/09-conflict.md:164 +#: git-novice/_episodes/09-conflict.md:194 +#: git-novice/_episodes/09-conflict.md:282 +#: git-novice/_locale/es/_episodes/04-changes.md:65 +#: git-novice/_locale/es/_episodes/05-history.md:235 +#: git-novice/_locale/es/_episodes/09-conflict.md:20 +#: git-novice/_locale/es/_episodes/09-conflict.md:158 +#: git-novice/_locale/es/_episodes/09-conflict.md:188 +#: git-novice/_locale/es/_episodes/09-conflict.md:276 +msgid "" +"~~~\n" +"$ cat mars.txt\n" +"~~~" +msgstr "" +"~~~\n" +"$ cat mars.txt\n" +"~~~" + +#: git-novice/_episodes/04-changes.md:77 +msgid "" +"If we check the status of our project again,\n" +"Git tells us that it's noticed the new file:" +msgstr "" +"If we check the status of our project again,\n" +"Git tells us that it's noticed the new file:" + +# code block +#: git-novice/_episodes/04-changes.md:85 +msgid "" +"~~~\n" +"On branch master\n" +"\n" +"Initial commit\n" +"\n" +"Untracked files:\n" +" (use \"git add ...\" to include in what will be committed)\n" +"\n" +"\tmars.txt\n" +"nothing added to commit but untracked files present (use \"git add\" to track)\n" +"~~~" +msgstr "" +"~~~\n" +"On branch master\n" +"\n" +"Initial commit\n" +"\n" +"Untracked files:\n" +" (use \"git add ...\" to include in what will be committed)\n" +"\n" +"\tmars.txt\n" +"nothing added to commit but untracked files present (use \"git add\" to track)\n" +"~~~" + +#: git-novice/_episodes/04-changes.md:98 +msgid "" +"The \"untracked files\" message means that there's a file in the directory\n" +"that Git isn't keeping track of.\n" +"We can tell Git to track a file using `git add`:" +msgstr "" +"The \"untracked files\" message means that there's a file in the directory\n" +"that Git isn't keeping track of.\n" +"We can tell Git to track a file using `git add`:" + +# code block +#: git-novice/_episodes/04-changes.md:102 +#: git-novice/_locale/es/_episodes/04-changes.md:100 +msgid "" +"~~~\n" +"$ git add mars.txt\n" +"~~~" +msgstr "" +"~~~\n" +"$ git add mars.txt\n" +"~~~" + +#: git-novice/_episodes/04-changes.md:107 +msgid "and then check that the right thing happened:" +msgstr "and then check that the right thing happened:" + +# code block +#: git-novice/_episodes/04-changes.md:114 +msgid "" +"~~~\n" +"On branch master\n" +"\n" +"Initial commit\n" +"\n" +"Changes to be committed:\n" +" (use \"git rm --cached ...\" to unstage)\n" +"\n" +"\tnew file: mars.txt\n" +"\n" +"~~~" +msgstr "" +"~~~\n" +"On branch master\n" +"\n" +"Initial commit\n" +"\n" +"Changes to be committed:\n" +" (use \"git rm --cached ...\" to unstage)\n" +"\n" +"\tnew file: mars.txt\n" +"\n" +"~~~" + +#: git-novice/_episodes/04-changes.md:127 +msgid "" +"Git now knows that it's supposed to keep track of `mars.txt`,\n" +"but it hasn't recorded these changes as a commit yet.\n" +"To get it to do that,\n" +"we need to run one more command:" +msgstr "" +"Git now knows that it's supposed to keep track of `mars.txt`,\n" +"but it hasn't recorded these changes as a commit yet.\n" +"To get it to do that,\n" +"we need to run one more command:" + +# code block +#: git-novice/_episodes/04-changes.md:132 +#: git-novice/_locale/es/_episodes/04-changes.md:130 +msgid "" +"~~~\n" +"$ git commit -m \"Start notes on Mars as a base\"\n" +"~~~" +msgstr "" +"~~~\n" +"$ git commit -m \"Start notes on Mars as a base\"\n" +"~~~" + +# code block +#: git-novice/_episodes/04-changes.md:137 +#: git-novice/_locale/es/_episodes/04-changes.md:135 +msgid "" +"~~~\n" +"[master (root-commit) f22b25e] Start notes on Mars as a base\n" +" 1 file changed, 1 insertion(+)\n" +" create mode 100644 mars.txt\n" +"~~~" +msgstr "" +"~~~\n" +"[master (root-commit) f22b25e] Start notes on Mars as a base\n" +" 1 file changed, 1 insertion(+)\n" +" create mode 100644 mars.txt\n" +"~~~" + +#: git-novice/_episodes/04-changes.md:144 +msgid "" +"When we run `git commit`,\n" +"Git takes everything we have told it to save by using `git add`\n" +"and stores a copy permanently inside the special `.git` directory.\n" +"This permanent copy is called a [commit]({{ page.root }}/reference#commit)\n" +"(or [revision]({{ page.root }}/reference#revision)) and its short identifier is `f22b25e`.\n" +"Your commit may have another identifier." +msgstr "" +"When we run `git commit`,\n" +"Git takes everything we have told it to save by using `git add`\n" +"and stores a copy permanently inside the special `.git` directory.\n" +"This permanent copy is called a [commit]({{ page.root }}/reference#commit)\n" +"(or [revision]({{ page.root }}/reference#revision)) and its short identifier is `f22b25e`.\n" +"Your commit may have another identifier." + +#: git-novice/_episodes/04-changes.md:151 +msgid "" +"We use the `-m` flag (for \"message\")\n" +"to record a short, descriptive, and specific comment that will help us remember later on what we did and why.\n" +"If we just run `git commit` without the `-m` option,\n" +"Git will launch `nano` (or whatever other editor we configured as `core.editor`)\n" +"so that we can write a longer message." +msgstr "" +"We use the `-m` flag (for \"message\")\n" +"to record a short, descriptive, and specific comment that will help us remember later on what we did and why.\n" +"If we just run `git commit` without the `-m` option,\n" +"Git will launch `nano` (or whatever other editor we configured as `core.editor`)\n" +"so that we can write a longer message." + +#: git-novice/_episodes/04-changes.md:157 +msgid "" +"[Good commit messages][commit-messages] start with a brief (<50 characters) statement about the\n" +"changes made in the commit. Generally, the message should complete the sentence \"If applied, this commit will\" .\n" +"If you want to go into more detail, add a blank line between the summary line and your additional notes. Use this additional space to explain why you made changes and/or what their impact will be." +msgstr "" +"[Good commit messages][commit-messages] start with a brief (<50 characters) statement about the\n" +"changes made in the commit. Generally, the message should complete the sentence \"If applied, this commit will\" .\n" +"If you want to go into more detail, add a blank line between the summary line and your additional notes. Use this additional space to explain why you made changes and/or what their impact will be." + +#: git-novice/_episodes/04-changes.md:161 +msgid "If we run `git status` now:" +msgstr "If we run `git status` now:" + +# code block +#: git-novice/_episodes/04-changes.md:168 +#: git-novice/_episodes/04-changes.md:459 git-novice/_extras/discuss.md:244 +#: git-novice/_locale/es/_episodes/04-changes.md:166 +#: git-novice/_locale/es/_episodes/04-changes.md:456 +#: git-novice/_locale/es/_extras/discuss.md:244 +msgid "" +"~~~\n" +"On branch master\n" +"nothing to commit, working directory clean\n" +"~~~" +msgstr "" +"~~~\n" +"On branch master\n" +"nothing to commit, working directory clean\n" +"~~~" + +#: git-novice/_episodes/04-changes.md:174 +msgid "" +"it tells us everything is up to date.\n" +"If we want to know what we've done recently,\n" +"we can ask Git to show us the project's history using `git log`:" +msgstr "" +"it tells us everything is up to date.\n" +"If we want to know what we've done recently,\n" +"we can ask Git to show us the project's history using `git log`:" + +# code block +#: git-novice/_episodes/04-changes.md:178 +#: git-novice/_episodes/04-changes.md:467 +#: git-novice/_locale/es/_episodes/04-changes.md:176 +#: git-novice/_locale/es/_episodes/04-changes.md:464 +msgid "" +"~~~\n" +"$ git log\n" +"~~~" +msgstr "" +"~~~\n" +"$ git log\n" +"~~~" + +# code block +#: git-novice/_episodes/04-changes.md:183 +#: git-novice/_locale/es/_episodes/04-changes.md:181 +msgid "" +"~~~\n" +"commit f22b25e3233b4645dabd0d81e651fe074bd8e73b\n" +"Author: Vlad Dracula \n" +"Date: Thu Aug 22 09:51:46 2013 -0400\n" +"\n" +" Start notes on Mars as a base\n" +"~~~" +msgstr "" +"~~~\n" +"commit f22b25e3233b4645dabd0d81e651fe074bd8e73b\n" +"Author: Vlad のび太 \n" +"Date: Thu Aug 22 09:51:46 2013 -0400\n" +"\n" +" Start notes on Mars as a base\n" +"~~~" + +#: git-novice/_episodes/04-changes.md:192 +msgid "" +"`git log` lists all commits made to a repository in reverse chronological order.\n" +"The listing for each commit includes\n" +"the commit's full identifier\n" +"(which starts with the same characters as\n" +"the short identifier printed by the `git commit` command earlier),\n" +"the commit's author,\n" +"when it was created,\n" +"and the log message Git was given when the commit was created." +msgstr "" +"`git log` lists all commits made to a repository in reverse chronological order.\n" +"The listing for each commit includes\n" +"the commit's full identifier\n" +"(which starts with the same characters as\n" +"the short identifier printed by the `git commit` command earlier),\n" +"the commit's author,\n" +"when it was created,\n" +"and the log message Git was given when the commit was created." + +# blockquote, which can be cascaded +#: git-novice/_episodes/04-changes.md:201 +msgid "> ## Where Are My Changes?" +msgstr "> ## Where Are My Changes?" + +#: git-novice/_episodes/04-changes.md:202 +msgid "" +">\n" +"> If we run `ls` at this point, we will still see just one file called `mars.txt`.\n" +"> That's because Git saves information about files' history\n" +"> in the special `.git` directory mentioned earlier\n" +"> so that our filesystem doesn't become cluttered\n" +"> (and so that we can't accidentally edit or delete an old version)." +msgstr "" +">\n" +"> If we run `ls` at this point, we will still see just one file called `mars.txt`.\n" +"> That's because Git saves information about files' history\n" +"> in the special `.git` directory mentioned earlier\n" +"> so that our filesystem doesn't become cluttered\n" +"> (and so that we can't accidentally edit or delete an old version)." + +#: git-novice/_episodes/04-changes.md:210 +msgid "" +"Now suppose Dracula adds more information to the file.\n" +"(Again, we'll edit with `nano` and then `cat` the file to show its contents;\n" +"you may use a different editor, and don't need to `cat`.)" +msgstr "" +"Now suppose のび太 adds more information to the file.\n" +"(Again, we'll edit with `nano` and then `cat` the file to show its contents;\n" +"you may use a different editor, and don't need to `cat`.)" + +# code block +#: git-novice/_episodes/04-changes.md:214 +#: git-novice/_episodes/04-changes.md:370 git-novice/_episodes/05-history.md:27 +#: git-novice/_episodes/05-history.md:177 +#: git-novice/_episodes/09-conflict.md:40 +#: git-novice/_episodes/09-conflict.md:88 +#: git-novice/_locale/es/_episodes/04-changes.md:212 +#: git-novice/_locale/es/_episodes/04-changes.md:367 +#: git-novice/_locale/es/_episodes/05-history.md:27 +#: git-novice/_locale/es/_episodes/05-history.md:175 +#: git-novice/_locale/es/_episodes/09-conflict.md:34 +#: git-novice/_locale/es/_episodes/09-conflict.md:82 +msgid "" +"~~~\n" +"$ nano mars.txt\n" +"$ cat mars.txt\n" +"~~~" +msgstr "" +"~~~\n" +"$ nano mars.txt\n" +"$ cat mars.txt\n" +"~~~" + +# code block +#: git-novice/_episodes/04-changes.md:220 git-novice/_extras/discuss.md:171 +#: git-novice/_locale/es/_episodes/04-changes.md:218 +#: git-novice/_locale/es/_extras/discuss.md:171 +msgid "" +"~~~\n" +"Cold and dry, but everything is my favorite color\n" +"The two moons may be a problem for Wolfman\n" +"~~~" +msgstr "" +"~~~\n" +"Cold and dry, but everything is my favorite color\n" +"The two moons may be a problem for ドラえもん\n" +"~~~" + +#: git-novice/_episodes/04-changes.md:226 +msgid "" +"When we run `git status` now,\n" +"it tells us that a file it already knows about has been modified:" +msgstr "" +"When we run `git status` now,\n" +"it tells us that a file it already knows about has been modified:" + +# code block +#: git-novice/_episodes/04-changes.md:234 +#: git-novice/_episodes/04-changes.md:297 +#: git-novice/_episodes/05-history.md:196 +msgid "" +"~~~\n" +"On branch master\n" +"Changes not staged for commit:\n" +" (use \"git add ...\" to update what will be committed)\n" +" (use \"git checkout -- ...\" to discard changes in working directory)\n" +"\n" +"\tmodified: mars.txt\n" +"\n" +"no changes added to commit (use \"git add\" and/or \"git commit -a\")\n" +"~~~" +msgstr "" +"~~~\n" +"On branch master\n" +"Changes not staged for commit:\n" +" (use \"git add ...\" to update what will be committed)\n" +" (use \"git checkout -- ...\" to discard changes in working directory)\n" +"\n" +"\tmodified: mars.txt\n" +"\n" +"no changes added to commit (use \"git add\" and/or \"git commit -a\")\n" +"~~~" + +#: git-novice/_episodes/04-changes.md:246 +msgid "" +"The last line is the key phrase:\n" +"\"no changes added to commit\".\n" +"We have changed this file,\n" +"but we haven't told Git we will want to save those changes\n" +"(which we do with `git add`)\n" +"nor have we saved them (which we do with `git commit`).\n" +"So let's do that now. It is good practice to always review\n" +"our changes before saving them. We do this using `git diff`.\n" +"This shows us the differences between the current state\n" +"of the file and the most recently saved version:" +msgstr "" +"The last line is the key phrase:\n" +"\"no changes added to commit\".\n" +"We have changed this file,\n" +"but we haven't told Git we will want to save those changes\n" +"(which we do with `git add`)\n" +"nor have we saved them (which we do with `git commit`).\n" +"So let's do that now. It is good practice to always review\n" +"our changes before saving them. We do this using `git diff`.\n" +"This shows us the differences between the current state\n" +"of the file and the most recently saved version:" + +# code block +#: git-novice/_episodes/04-changes.md:257 +#: git-novice/_episodes/04-changes.md:383 git-novice/_extras/discuss.md:180 +#: git-novice/_locale/es/_episodes/04-changes.md:255 +#: git-novice/_locale/es/_episodes/04-changes.md:380 +#: git-novice/_locale/es/_extras/discuss.md:180 +msgid "" +"~~~\n" +"$ git diff\n" +"~~~" +msgstr "" +"~~~\n" +"$ git diff\n" +"~~~" + +# code block +#: git-novice/_episodes/04-changes.md:262 git-novice/_extras/discuss.md:194 +#: git-novice/_locale/es/_episodes/04-changes.md:260 +#: git-novice/_locale/es/_extras/discuss.md:194 +msgid "" +"~~~\n" +"diff --git a/mars.txt b/mars.txt\n" +"index df0654a..315bf3a 100644\n" +"--- a/mars.txt\n" +"+++ b/mars.txt\n" +"@@ -1 +1,2 @@\n" +" Cold and dry, but everything is my favorite color\n" +"+The two moons may be a problem for Wolfman\n" +"~~~" +msgstr "" +"~~~\n" +"diff --git a/mars.txt b/mars.txt\n" +"index df0654a..315bf3a 100644\n" +"--- a/mars.txt\n" +"+++ b/mars.txt\n" +"@@ -1 +1,2 @@\n" +" Cold and dry, but everything is my favorite color\n" +"+The two moons may be a problem for ドラえもん\n" +"~~~" + +#: git-novice/_episodes/04-changes.md:273 +msgid "" +"The output is cryptic because\n" +"it is actually a series of commands for tools like editors and `patch`\n" +"telling them how to reconstruct one file given the other.\n" +"If we break it down into pieces:" +msgstr "" +"The output is cryptic because\n" +"it is actually a series of commands for tools like editors and `patch`\n" +"telling them how to reconstruct one file given the other.\n" +"If we break it down into pieces:" + +# ordered list +#: git-novice/_episodes/04-changes.md:278 +msgid "1. The first line tells us that Git is producing output similar to the Unix `diff` command" +msgstr "1. The first line tells us that Git is producing output similar to the Unix `diff` command" + +#: git-novice/_episodes/04-changes.md:279 +msgid "" +" comparing the old and new versions of the file.\n" +"2. The second line tells exactly which versions of the file\n" +" Git is comparing;\n" +" `df0654a` and `315bf3a` are unique computer-generated labels for those versions.\n" +"3. The third and fourth lines once again show the name of the file being changed.\n" +"4. The remaining lines are the most interesting, they show us the actual differences\n" +" and the lines on which they occur.\n" +" In particular,\n" +" the `+` marker in the first column shows where we added a line." +msgstr "" +" comparing the old and new versions of the file.\n" +"2. The second line tells exactly which versions of the file\n" +" Git is comparing;\n" +" `df0654a` and `315bf3a` are unique computer-generated labels for those versions.\n" +"3. The third and fourth lines once again show the name of the file being changed.\n" +"4. The remaining lines are the most interesting, they show us the actual differences\n" +" and the lines on which they occur.\n" +" In particular,\n" +" the `+` marker in the first column shows where we added a line." + +#: git-novice/_episodes/04-changes.md:289 +msgid "After reviewing our change, it's time to commit it:" +msgstr "After reviewing our change, it's time to commit it:" + +# code block +#: git-novice/_episodes/04-changes.md:291 +#: git-novice/_locale/es/_episodes/04-changes.md:289 +msgid "" +"~~~\n" +"$ git commit -m \"Add concerns about effects of Mars' moons on Wolfman\"\n" +"$ git status\n" +"~~~" +msgstr "" +"~~~\n" +"$ git commit -m \"Add concerns about effects of Mars' moons on ドラえもん\"\n" +"$ git status\n" +"~~~" + +#: git-novice/_episodes/04-changes.md:309 +msgid "" +"Whoops:\n" +"Git won't commit because we didn't use `git add` first.\n" +"Let's fix that:" +msgstr "" +"Whoops:\n" +"Git won't commit because we didn't use `git add` first.\n" +"Let's fix that:" + +# code block +#: git-novice/_episodes/04-changes.md:313 +#: git-novice/_locale/es/_episodes/04-changes.md:311 +msgid "" +"~~~\n" +"$ git add mars.txt\n" +"$ git commit -m \"Add concerns about effects of Mars' moons on Wolfman\"\n" +"~~~" +msgstr "" +"~~~\n" +"$ git add mars.txt\n" +"$ git commit -m \"Add concerns about effects of Mars' moons on ドラえもん\"\n" +"~~~" + +# code block +#: git-novice/_episodes/04-changes.md:319 +#: git-novice/_locale/es/_episodes/04-changes.md:317 +msgid "" +"~~~\n" +"[master 34961b1] Add concerns about effects of Mars' moons on Wolfman\n" +" 1 file changed, 1 insertion(+)\n" +"~~~" +msgstr "" +"~~~\n" +"[master 34961b1] Add concerns about effects of Mars' moons on ドラえもん\n" +" 1 file changed, 1 insertion(+)\n" +"~~~" + +#: git-novice/_episodes/04-changes.md:325 +msgid "" +"Git insists that we add files to the set we want to commit\n" +"before actually committing anything. This allows us to commit our\n" +"changes in stages and capture changes in logical portions rather than\n" +"only large batches.\n" +"For example,\n" +"suppose we're adding a few citations to relevant research to our thesis.\n" +"We might want to commit those additions,\n" +"and the corresponding bibliography entries,\n" +"but *not* commit some of our work drafting the conclusion\n" +"(which we haven't finished yet)." +msgstr "" +"Git insists that we add files to the set we want to commit\n" +"before actually committing anything. This allows us to commit our\n" +"changes in stages and capture changes in logical portions rather than\n" +"only large batches.\n" +"For example,\n" +"suppose we're adding a few citations to relevant research to our thesis.\n" +"We might want to commit those additions,\n" +"and the corresponding bibliography entries,\n" +"but *not* commit some of our work drafting the conclusion\n" +"(which we haven't finished yet)." + +#: git-novice/_episodes/04-changes.md:336 +msgid "" +"To allow for this,\n" +"Git has a special *staging area*\n" +"where it keeps track of things that have been added to\n" +"the current [changeset]({{ page.root }}/reference#changeset)\n" +"but not yet committed." +msgstr "" +"To allow for this,\n" +"Git has a special *staging area*\n" +"where it keeps track of things that have been added to\n" +"the current [changeset]({{ page.root }}/reference#changeset)\n" +"but not yet committed." + +# blockquote, which can be cascaded +#: git-novice/_episodes/04-changes.md:342 +#: git-novice/_locale/es/_episodes/04-changes.md:339 +msgid "> ## Staging Area" +msgstr "> ## Staging Area" + +#: git-novice/_episodes/04-changes.md:343 +msgid "" +">\n" +"> If you think of Git as taking snapshots of changes over the life of a project,\n" +"> `git add` specifies *what* will go in a snapshot\n" +"> (putting things in the staging area),\n" +"> and `git commit` then *actually takes* the snapshot, and\n" +"> makes a permanent record of it (as a commit).\n" +"> If you don't have anything staged when you type `git commit`,\n" +"> Git will prompt you to use `git commit -a` or `git commit --all`,\n" +"> which is kind of like gathering *everyone* for the picture!\n" +"> However, it's almost always better to\n" +"> explicitly add things to the staging area, because you might\n" +"> commit changes you forgot you made. (Going back to snapshots,\n" +"> you might get the extra with incomplete makeup walking on\n" +"> the stage for the snapshot because you used `-a`!)\n" +"> Try to stage things manually,\n" +"> or you might find yourself searching for \"git undo commit\" more\n" +"> than you would like!" +msgstr "" +">\n" +"> If you think of Git as taking snapshots of changes over the life of a project,\n" +"> `git add` specifies *what* will go in a snapshot\n" +"> (putting things in the staging area),\n" +"> and `git commit` then *actually takes* the snapshot, and\n" +"> makes a permanent record of it (as a commit).\n" +"> If you don't have anything staged when you type `git commit`,\n" +"> Git will prompt you to use `git commit -a` or `git commit --all`,\n" +"> which is kind of like gathering *everyone* for the picture!\n" +"> However, it's almost always better to\n" +"> explicitly add things to the staging area, because you might\n" +"> commit changes you forgot you made. (Going back to snapshots,\n" +"> you might get the extra with incomplete makeup walking on\n" +"> the stage for the snapshot because you used `-a`!)\n" +"> Try to stage things manually,\n" +"> or you might find yourself searching for \"git undo commit\" more\n" +"> than you would like!" + +#: git-novice/_episodes/04-changes.md:362 +#: git-novice/_locale/es/_episodes/04-changes.md:359 +msgid "![The Git Staging Area](../fig/git-staging-area.svg)" +msgstr "![The Git Staging Area](../fig/git-staging-area.svg)" + +#: git-novice/_episodes/04-changes.md:364 +msgid "" +"Let's watch as our changes to a file move from our editor\n" +"to the staging area\n" +"and into long-term storage.\n" +"First,\n" +"we'll add another line to the file:" +msgstr "" +"Let's watch as our changes to a file move from our editor\n" +"to the staging area\n" +"and into long-term storage.\n" +"First,\n" +"we'll add another line to the file:" + +# code block +#: git-novice/_episodes/04-changes.md:376 git-novice/_episodes/05-history.md:33 +#: git-novice/_episodes/05-history.md:217 +#: git-novice/_episodes/09-conflict.md:31 +#: git-novice/_locale/es/_episodes/04-changes.md:373 +#: git-novice/_locale/es/_episodes/05-history.md:33 +#: git-novice/_locale/es/_episodes/05-history.md:215 +#: git-novice/_locale/es/_episodes/09-conflict.md:25 +msgid "" +"~~~\n" +"Cold and dry, but everything is my favorite color\n" +"The two moons may be a problem for Wolfman\n" +"But the Mummy will appreciate the lack of humidity\n" +"~~~" +msgstr "" +"~~~\n" +"Cold and dry, but everything is my favorite color\n" +"The two moons may be a problem for ドラえもん\n" +"But the Mummy will appreciate the lack of humidity\n" +"~~~" + +# code block +#: git-novice/_episodes/04-changes.md:388 +#: git-novice/_episodes/04-changes.md:424 +#: git-novice/_locale/es/_episodes/04-changes.md:385 +#: git-novice/_locale/es/_episodes/04-changes.md:421 +msgid "" +"~~~\n" +"diff --git a/mars.txt b/mars.txt\n" +"index 315bf3a..b36abfd 100644\n" +"--- a/mars.txt\n" +"+++ b/mars.txt\n" +"@@ -1,2 +1,3 @@\n" +" Cold and dry, but everything is my favorite color\n" +" The two moons may be a problem for Wolfman\n" +"+But the Mummy will appreciate the lack of humidity\n" +"~~~" +msgstr "" +"~~~\n" +"diff --git a/mars.txt b/mars.txt\n" +"index 315bf3a..b36abfd 100644\n" +"--- a/mars.txt\n" +"+++ b/mars.txt\n" +"@@ -1,2 +1,3 @@\n" +" Cold and dry, but everything is my favorite color\n" +" The two moons may be a problem for ドラえもん\n" +"+But the Mummy will appreciate the lack of humidity\n" +"~~~" + +#: git-novice/_episodes/04-changes.md:400 +msgid "" +"So far, so good:\n" +"we've added one line to the end of the file\n" +"(shown with a `+` in the first column).\n" +"Now let's put that change in the staging area\n" +"and see what `git diff` reports:" +msgstr "" +"So far, so good:\n" +"we've added one line to the end of the file\n" +"(shown with a `+` in the first column).\n" +"Now let's put that change in the staging area\n" +"and see what `git diff` reports:" + +# code block +#: git-novice/_episodes/04-changes.md:406 +#: git-novice/_locale/es/_episodes/04-changes.md:403 +msgid "" +"~~~\n" +"$ git add mars.txt\n" +"$ git diff\n" +"~~~" +msgstr "" +"~~~\n" +"$ git add mars.txt\n" +"$ git diff\n" +"~~~" + +#: git-novice/_episodes/04-changes.md:412 +msgid "" +"There is no output:\n" +"as far as Git can tell,\n" +"there's no difference between what it's been asked to save permanently\n" +"and what's currently in the directory.\n" +"However,\n" +"if we do this:" +msgstr "" +"There is no output:\n" +"as far as Git can tell,\n" +"there's no difference between what it's been asked to save permanently\n" +"and what's currently in the directory.\n" +"However,\n" +"if we do this:" + +# code block +#: git-novice/_episodes/04-changes.md:419 +#: git-novice/_locale/es/_episodes/04-changes.md:416 +msgid "" +"~~~\n" +"$ git diff --staged\n" +"~~~" +msgstr "" +"~~~\n" +"$ git diff --staged\n" +"~~~" + +#: git-novice/_episodes/04-changes.md:436 +msgid "" +"it shows us the difference between\n" +"the last committed change\n" +"and what's in the staging area.\n" +"Let's save our changes:" +msgstr "" +"it shows us the difference between\n" +"the last committed change\n" +"and what's in the staging area.\n" +"Let's save our changes:" + +# code block +#: git-novice/_episodes/04-changes.md:441 +#: git-novice/_locale/es/_episodes/04-changes.md:438 +msgid "" +"~~~\n" +"$ git commit -m \"Discuss concerns about Mars' climate for Mummy\"\n" +"~~~" +msgstr "" +"~~~\n" +"$ git commit -m \"Discuss concerns about Mars' climate for Mummy\"\n" +"~~~" + +# code block +#: git-novice/_episodes/04-changes.md:446 +#: git-novice/_locale/es/_episodes/04-changes.md:443 +msgid "" +"~~~\n" +"[master 005937f] Discuss concerns about Mars' climate for Mummy\n" +" 1 file changed, 1 insertion(+)\n" +"~~~" +msgstr "" +"~~~\n" +"[master 005937f] Discuss concerns about Mars' climate for Mummy\n" +" 1 file changed, 1 insertion(+)\n" +"~~~" + +#: git-novice/_episodes/04-changes.md:452 +msgid "check our status:" +msgstr "check our status:" + +#: git-novice/_episodes/04-changes.md:465 +msgid "and look at the history of what we've done so far:" +msgstr "and look at the history of what we've done so far:" + +# code block +#: git-novice/_episodes/04-changes.md:472 +#: git-novice/_locale/es/_episodes/04-changes.md:469 +msgid "" +"~~~\n" +"commit 005937fbe2a98fb83f0ade869025dc2636b4dad5\n" +"Author: Vlad Dracula \n" +"Date: Thu Aug 22 10:14:07 2013 -0400\n" +"\n" +" Discuss concerns about Mars' climate for Mummy\n" +"\n" +"commit 34961b159c27df3b475cfe4415d94a6d1fcd064d\n" +"Author: Vlad Dracula \n" +"Date: Thu Aug 22 10:07:21 2013 -0400\n" +"\n" +" Add concerns about effects of Mars' moons on Wolfman\n" +"\n" +"commit f22b25e3233b4645dabd0d81e651fe074bd8e73b\n" +"Author: Vlad Dracula \n" +"Date: Thu Aug 22 09:51:46 2013 -0400\n" +"\n" +" Start notes on Mars as a base\n" +"~~~" +msgstr "" +"~~~\n" +"commit 005937fbe2a98fb83f0ade869025dc2636b4dad5\n" +"Author: Vlad のび太 \n" +"Date: Thu Aug 22 10:14:07 2013 -0400\n" +"\n" +" Discuss concerns about Mars' climate for Mummy\n" +"\n" +"commit 34961b159c27df3b475cfe4415d94a6d1fcd064d\n" +"Author: Vlad のび太 \n" +"Date: Thu Aug 22 10:07:21 2013 -0400\n" +"\n" +" Add concerns about effects of Mars' moons on ドラえもん\n" +"\n" +"commit f22b25e3233b4645dabd0d81e651fe074bd8e73b\n" +"Author: Vlad のび太 \n" +"Date: Thu Aug 22 09:51:46 2013 -0400\n" +"\n" +" Start notes on Mars as a base\n" +"~~~" + +# blockquote, which can be cascaded +#: git-novice/_episodes/04-changes.md:493 +msgid "> ## Word-based diffing" +msgstr "> ## Word-based diffing" + +#: git-novice/_episodes/04-changes.md:494 +msgid "" +">\n" +"> Sometimes, e.g. in the case of the text documents a line-wise\n" +"> diff is too coarse. That is where the `--color-words` option of\n" +"> `git diff` comes in very useful as it highlights the changed\n" +"> words using colors." +msgstr "" +">\n" +"> Sometimes, e.g. in the case of the text documents a line-wise\n" +"> diff is too coarse. That is where the `--color-words` option of\n" +"> `git diff` comes in very useful as it highlights the changed\n" +"> words using colors." + +# blockquote, which can be cascaded +#: git-novice/_episodes/04-changes.md:501 +msgid "> ## Paging the Log" +msgstr "> ## Paging the Log" + +#: git-novice/_episodes/04-changes.md:502 +msgid "" +">\n" +"> When the output of `git log` is too long to fit in your screen,\n" +"> `git` uses a program to split it into pages of the size of your screen.\n" +"> When this \"pager\" is called, you will notice that the last line in your\n" +"> screen is a `:`, instead of your usual prompt.\n" +">\n" +"> * To get out of the pager, press Q.\n" +"> * To move to the next page, press Spacebar.\n" +"> * To search for `some_word` in all pages,\n" +"> press /\n" +"> and type `some_word`.\n" +"> Navigate through matches pressing N." +msgstr "" +">\n" +"> When the output of `git log` is too long to fit in your screen,\n" +"> `git` uses a program to split it into pages of the size of your screen.\n" +"> When this \"pager\" is called, you will notice that the last line in your\n" +"> screen is a `:`, instead of your usual prompt.\n" +">\n" +"> * To get out of the pager, press Q.\n" +"> * To move to the next page, press Spacebar.\n" +"> * To search for `some_word` in all pages,\n" +"> press /\n" +"> and type `some_word`.\n" +"> Navigate through matches pressing N." + +# blockquote, which can be cascaded +#: git-novice/_episodes/04-changes.md:516 +msgid "> ## Limit Log Size" +msgstr "> ## Limit Log Size" + +#: git-novice/_episodes/04-changes.md:517 +msgid "" +">\n" +"> To avoid having `git log` cover your entire terminal screen, you can limit the\n" +"> number of commits that Git lists by using `-N`, where `N` is the number of\n" +"> commits that you want to view. For example, if you only want information from\n" +"> the last commit you can use:\n" +">\n" +"> ~~~\n" +"> $ git log -1\n" +"> ~~~\n" +"> {: .language-bash}\n" +">\n" +"> ~~~\n" +"> commit 005937fbe2a98fb83f0ade869025dc2636b4dad5\n" +"> Author: Vlad Dracula \n" +"> Date: Thu Aug 22 10:14:07 2013 -0400\n" +">\n" +"> Discuss concerns about Mars' climate for Mummy\n" +"> ~~~" +msgstr "" +">\n" +"> To avoid having `git log` cover your entire terminal screen, you can limit the\n" +"> number of commits that Git lists by using `-N`, where `N` is the number of\n" +"> commits that you want to view. For example, if you only want information from\n" +"> the last commit you can use:\n" +">\n" +"> ~~~\n" +"> $ git log -1\n" +"> ~~~\n" +"> {: .language-bash}\n" +">\n" +"> ~~~\n" +"> commit 005937fbe2a98fb83f0ade869025dc2636b4dad5\n" +"> Author: Vlad のび太 \n" +"> Date: Thu Aug 22 10:14:07 2013 -0400\n" +">\n" +"> Discuss concerns about Mars' climate for Mummy\n" +"> ~~~" + +# SC/DC Template label +#: git-novice/_episodes/04-changes.md:535 +#: git-novice/_episodes/04-changes.md:549 +#: git-novice/_episodes/04-changes.md:563 +#: git-novice/_episodes/05-history.md:399 +#: git-novice/_episodes/05-history.md:406 +#: git-novice/_episodes/05-history.md:414 +#: git-novice/_episodes/05-history.md:421 +#: git-novice/_locale/es/_episodes/04-changes.md:530 +#: git-novice/_locale/es/_episodes/04-changes.md:544 +#: git-novice/_locale/es/_episodes/04-changes.md:558 +#: git-novice/_locale/es/_episodes/05-history.md:396 +#: git-novice/_locale/es/_episodes/05-history.md:403 +#: git-novice/_locale/es/_episodes/05-history.md:411 +#: git-novice/_locale/es/_episodes/05-history.md:418 +msgid "> {: .output}" +msgstr "> {: .output}" + +#: git-novice/_episodes/04-changes.md:536 +msgid "" +">\n" +"> You can also reduce the quantity of information using the\n" +"> `--oneline` option:\n" +">\n" +"> ~~~\n" +"> $ git log --oneline\n" +"> ~~~\n" +"> {: .language-bash}\n" +"> ~~~\n" +"> * 005937f Discuss concerns about Mars' climate for Mummy\n" +"> * 34961b1 Add concerns about effects of Mars' moons on Wolfman\n" +"> * f22b25e Start notes on Mars as a base\n" +"> ~~~" +msgstr "" +">\n" +"> You can also reduce the quantity of information using the\n" +"> `--oneline` option:\n" +">\n" +"> ~~~\n" +"> $ git log --oneline\n" +"> ~~~\n" +"> {: .language-bash}\n" +"> ~~~\n" +"> * 005937f Discuss concerns about Mars' climate for Mummy\n" +"> * 34961b1 Add concerns about effects of Mars' moons on ドラえもん\n" +"> * f22b25e Start notes on Mars as a base\n" +"> ~~~" + +#: git-novice/_episodes/04-changes.md:550 +msgid "" +">\n" +"> You can also combine the `--oneline` options with others. One useful\n" +"> combination is:\n" +">\n" +"> ~~~\n" +"> $ git log --oneline --graph --all --decorate\n" +"> ~~~\n" +"> {: .language-bash}\n" +"> ~~~\n" +"> * 005937f Discuss concerns about Mars' climate for Mummy (HEAD, master)\n" +"> * 34961b1 Add concerns about effects of Mars' moons on Wolfman\n" +"> * f22b25e Start notes on Mars as a base\n" +"> ~~~" +msgstr "" +">\n" +"> You can also combine the `--oneline` options with others. One useful\n" +"> combination is:\n" +">\n" +"> ~~~\n" +"> $ git log --oneline --graph --all --decorate\n" +"> ~~~\n" +"> {: .language-bash}\n" +"> ~~~\n" +"> * 005937f Discuss concerns about Mars' climate for Mummy (HEAD, master)\n" +"> * 34961b1 Add concerns about effects of Mars' moons on ドラえもん\n" +"> * f22b25e Start notes on Mars as a base\n" +"> ~~~" + +# blockquote, which can be cascaded +#: git-novice/_episodes/04-changes.md:566 +msgid "> ## Directories" +msgstr "> ## Directories" + +#: git-novice/_episodes/04-changes.md:567 +msgid "" +">\n" +"> Two important facts you should know about directories in Git.\n" +">\n" +"> 1. Git does not track directories on their own, only files within them.\n" +"> Try it for yourself:\n" +">\n" +"> ~~~\n" +"> $ mkdir directory\n" +"> $ git status\n" +"> $ git add directory\n" +"> $ git status\n" +"> ~~~\n" +"> {: .language-bash}\n" +">\n" +"> Note, our newly created empty directory `directory` does not appear in\n" +"> the list of untracked files even if we explicitly add it (_via_ `git add`) to our\n" +"> repository. This is the reason why you will sometimes see `.gitkeep` files\n" +"> in otherwise empty directories. Unlike `.gitignore`, these files are not special\n" +"> and their sole purpose is to populate a directory so that Git adds it to\n" +"> the repository. In fact, you can name such files anything you like.\n" +">\n" +"> {:start=\"2\"}\n" +"> 2. If you create a directory in your Git repository and populate it with files,\n" +"> you can add all files in the directory at once by:\n" +">\n" +"> ~~~\n" +"> git add \n" +"> ~~~\n" +"> {: .language-bash}" +msgstr "" +">\n" +"> Two important facts you should know about directories in Git.\n" +">\n" +"> 1. Git does not track directories on their own, only files within them.\n" +"> Try it for yourself:\n" +">\n" +"> ~~~\n" +"> $ mkdir directory\n" +"> $ git status\n" +"> $ git add directory\n" +"> $ git status\n" +"> ~~~\n" +"> {: .language-bash}\n" +">\n" +"> Note, our newly created empty directory `directory` does not appear in\n" +"> the list of untracked files even if we explicitly add it (_via_ `git add`) to our\n" +"> repository. This is the reason why you will sometimes see `.gitkeep` files\n" +"> in otherwise empty directories. Unlike `.gitignore`, these files are not special\n" +"> and their sole purpose is to populate a directory so that Git adds it to\n" +"> the repository. In fact, you can name such files anything you like.\n" +">\n" +"> {:start=\"2\"}\n" +"> 2. If you create a directory in your Git repository and populate it with files,\n" +"> you can add all files in the directory at once by:\n" +">\n" +"> ~~~\n" +"> git add \n" +"> ~~~\n" +"> {: .language-bash}" + +#: git-novice/_episodes/04-changes.md:598 +msgid "" +"To recap, when we want to add changes to our repository,\n" +"we first need to add the changed files to the staging area\n" +"(`git add`) and then commit the staged changes to the\n" +"repository (`git commit`):" +msgstr "" +"To recap, when we want to add changes to our repository,\n" +"we first need to add the changed files to the staging area\n" +"(`git add`) and then commit the staged changes to the\n" +"repository (`git commit`):" + +#: git-novice/_episodes/04-changes.md:603 +#: git-novice/_locale/es/_episodes/04-changes.md:599 +msgid "![The Git Commit Workflow](../fig/git-committing.svg)" +msgstr "![The Git Commit Workflow](../fig/git-committing.svg)" + +# blockquote, which can be cascaded +#: git-novice/_episodes/04-changes.md:605 +msgid "> ## Choosing a Commit Message" +msgstr "> ## Choosing a Commit Message" + +#: git-novice/_episodes/04-changes.md:606 +msgid "" +">\n" +"> Which of the following commit messages would be most appropriate for the\n" +"> last commit made to `mars.txt`?\n" +">\n" +"> 1. \"Changes\"\n" +"> 2. \"Added line 'But the Mummy will appreciate the lack of humidity' to mars.txt\"\n" +"> 3. \"Discuss effects of Mars' climate on the Mummy\"\n" +">\n" +"> > ## Solution\n" +"> > Answer 1 is not descriptive enough, and the purpose of the commit is unclear;\n" +"> > and answer 2 is redundant to using \"git diff\" to see what changed in this commit;\n" +"> > but answer 3 is good: short, descriptive, and imperative." +msgstr "" +">\n" +"> Which of the following commit messages would be most appropriate for the\n" +"> last commit made to `mars.txt`?\n" +">\n" +"> 1. \"Changes\"\n" +"> 2. \"Added line 'But the Mummy will appreciate the lack of humidity' to mars.txt\"\n" +"> 3. \"Discuss effects of Mars' climate on the Mummy\"\n" +">\n" +"> > ## Solution\n" +"> > Answer 1 is not descriptive enough, and the purpose of the commit is unclear;\n" +"> > and answer 2 is redundant to using \"git diff\" to see what changed in this commit;\n" +"> > but answer 3 is good: short, descriptive, and imperative." + +# blockquote, which can be cascaded +#: git-novice/_episodes/04-changes.md:621 +msgid "> ## Committing Changes to Git" +msgstr "> ## Committing Changes to Git" + +#: git-novice/_episodes/04-changes.md:622 +msgid "" +">\n" +"> Which command(s) below would save the changes of `myfile.txt`\n" +"> to my local Git repository?\n" +">\n" +"> 1. `$ git commit -m \"my recent changes\"`\n" +">\n" +"> 2. `$ git init myfile.txt`\n" +"> `git commit -m \"my recent changes\"`\n" +">\n" +"> 3. `$ git add myfile.txt`\n" +"> `$ git commit -m \"my recent changes\"`\n" +">\n" +"> 4. `$ git commit -m myfile.txt \"my recent changes\"`\n" +">\n" +"> > ## Solution\n" +"> >\n" +"> > 1. Would only create a commit if files have already been staged.\n" +"> > 2. Would try to create a new repository.\n" +"> > 3. Is correct: first add the file to the staging area, then commit.\n" +"> > 4. Would try to commit a file \"my recent changes\" with the message myfile.txt." +msgstr "" +">\n" +"> Which command(s) below would save the changes of `myfile.txt`\n" +"> to my local Git repository?\n" +">\n" +"> 1. `$ git commit -m \"my recent changes\"`\n" +">\n" +"> 2. `$ git init myfile.txt`\n" +"> `git commit -m \"my recent changes\"`\n" +">\n" +"> 3. `$ git add myfile.txt`\n" +"> `$ git commit -m \"my recent changes\"`\n" +">\n" +"> 4. `$ git commit -m myfile.txt \"my recent changes\"`\n" +">\n" +"> > ## Solution\n" +"> >\n" +"> > 1. Would only create a commit if files have already been staged.\n" +"> > 2. Would try to create a new repository.\n" +"> > 3. Is correct: first add the file to the staging area, then commit.\n" +"> > 4. Would try to commit a file \"my recent changes\" with the message myfile.txt." + +# blockquote, which can be cascaded +#: git-novice/_episodes/04-changes.md:645 +msgid "> ## Committing Multiple Files" +msgstr "> ## Committing Multiple Files" + +#: git-novice/_episodes/04-changes.md:646 +msgid "" +">\n" +"> The staging area can hold changes from any number of files\n" +"> that you want to commit as a single snapshot.\n" +">\n" +"> 1. Add some text to `mars.txt` noting your decision\n" +"> to consider Venus as a base\n" +"> 2. Create a new file `venus.txt` with your initial thoughts\n" +"> about Venus as a base for you and your friends\n" +"> 3. Add changes from both files to the staging area,\n" +"> and commit those changes.\n" +">\n" +"> > ## Solution\n" +"> >\n" +"> > First we make our changes to the `mars.txt` and `venus.txt` files:\n" +"> > ~~~\n" +"> > $ nano mars.txt\n" +"> > $ cat mars.txt\n" +"> > ~~~\n" +"> > {: .language-bash}\n" +"> > ~~~\n" +"> > Maybe I should start with a base on Venus.\n" +"> > ~~~\n" +"> > {: .output}\n" +"> > ~~~\n" +"> > $ nano venus.txt\n" +"> > $ cat venus.txt\n" +"> > ~~~\n" +"> > {: .language-bash}\n" +"> > ~~~\n" +"> > Venus is a nice planet and I definitely should consider it as a base.\n" +"> > ~~~\n" +"> > {: .output}\n" +"> > Now you can add both files to the staging area. We can do that in one line:\n" +"> >\n" +"> > ~~~\n" +"> > $ git add mars.txt venus.txt\n" +"> > ~~~\n" +"> > {: .language-bash}\n" +"> > Or with multiple commands:\n" +"> > ~~~\n" +"> > $ git add mars.txt\n" +"> > $ git add venus.txt\n" +"> > ~~~\n" +"> > {: .language-bash}\n" +"> > Now the files are ready to commit. You can check that using `git status`. If you are ready to commit use:\n" +"> > ~~~\n" +"> > $ git commit -m \"Write plans to start a base on Venus\"\n" +"> > ~~~\n" +"> > {: .language-bash}\n" +"> > ~~~\n" +"> > [master cc127c2]\n" +"> > Write plans to start a base on Venus\n" +"> > 2 files changed, 2 insertions(+)\n" +"> > create mode 100644 venus.txt\n" +"> > ~~~\n" +"> > {: .output}" +msgstr "" +">\n" +"> The staging area can hold changes from any number of files\n" +"> that you want to commit as a single snapshot.\n" +">\n" +"> 1. Add some text to `mars.txt` noting your decision\n" +"> to consider Venus as a base\n" +"> 2. Create a new file `venus.txt` with your initial thoughts\n" +"> about Venus as a base for you and your friends\n" +"> 3. Add changes from both files to the staging area,\n" +"> and commit those changes.\n" +">\n" +"> > ## Solution\n" +"> >\n" +"> > First we make our changes to the `mars.txt` and `venus.txt` files:\n" +"> > ~~~\n" +"> > $ nano mars.txt\n" +"> > $ cat mars.txt\n" +"> > ~~~\n" +"> > {: .language-bash}\n" +"> > ~~~\n" +"> > Maybe I should start with a base on Venus.\n" +"> > ~~~\n" +"> > {: .output}\n" +"> > ~~~\n" +"> > $ nano venus.txt\n" +"> > $ cat venus.txt\n" +"> > ~~~\n" +"> > {: .language-bash}\n" +"> > ~~~\n" +"> > Venus is a nice planet and I definitely should consider it as a base.\n" +"> > ~~~\n" +"> > {: .output}\n" +"> > Now you can add both files to the staging area. We can do that in one line:\n" +"> >\n" +"> > ~~~\n" +"> > $ git add mars.txt venus.txt\n" +"> > ~~~\n" +"> > {: .language-bash}\n" +"> > Or with multiple commands:\n" +"> > ~~~\n" +"> > $ git add mars.txt\n" +"> > $ git add venus.txt\n" +"> > ~~~\n" +"> > {: .language-bash}\n" +"> > Now the files are ready to commit. You can check that using `git status`. If you are ready to commit use:\n" +"> > ~~~\n" +"> > $ git commit -m \"Write plans to start a base on Venus\"\n" +"> > ~~~\n" +"> > {: .language-bash}\n" +"> > ~~~\n" +"> > [master cc127c2]\n" +"> > Write plans to start a base on Venus\n" +"> > 2 files changed, 2 insertions(+)\n" +"> > create mode 100644 venus.txt\n" +"> > ~~~\n" +"> > {: .output}" + +# blockquote, which can be cascaded +#: git-novice/_episodes/04-changes.md:705 +msgid "> ## `bio` Repository" +msgstr "> ## `bio` Repository" + +#: git-novice/_episodes/04-changes.md:706 +msgid "" +">\n" +"> * Create a new Git repository on your computer called `bio`.\n" +"> * Write a three-line biography for yourself in a file called `me.txt`,\n" +"> commit your changes\n" +"> * Modify one line, add a fourth line\n" +"> * Display the differences\n" +"> between its updated state and its original state.\n" +">\n" +"> > ## Solution\n" +"> >\n" +"> > If needed, move out of the `planets` folder:\n" +"> >\n" +"> > ~~~\n" +"> > $ cd ..\n" +"> > ~~~\n" +"> > {: .language-bash}\n" +"> >\n" +"> > Create a new folder called `bio` and 'move' into it:\n" +"> >\n" +"> > ~~~\n" +"> > $ mkdir bio\n" +"> > $ cd bio\n" +"> > ~~~\n" +"> > {: .language-bash}\n" +"> >\n" +"> > Initialise git:\n" +"> >\n" +"> > ~~~\n" +"> > $ git init\n" +"> > ~~~\n" +"> > {: .language-bash}\n" +"> >\n" +"> > Create your biography file `me.txt` using `nano` or another text editor.\n" +"> > Once in place, add and commit it to the repository:\n" +"> >\n" +"> > ~~~\n" +"> > $ git add me.txt\n" +"> > $ git commit -m'Adding biography file'\n" +"> > ~~~\n" +"> > {: .language-bash}\n" +"> >\n" +"> > Modify the file as described (modify one line, add a fourth line).\n" +"> > To display the differences\n" +"> > between its updated state and its original state, use `git diff`:\n" +"> >\n" +"> > ~~~\n" +"> > $ git diff me.txt\n" +"> > ~~~\n" +"> > {: .language-bash}\n" +"> >" +msgstr "" +">\n" +"> * Create a new Git repository on your computer called `bio`.\n" +"> * Write a three-line biography for yourself in a file called `me.txt`,\n" +"> commit your changes\n" +"> * Modify one line, add a fourth line\n" +"> * Display the differences\n" +"> between its updated state and its original state.\n" +">\n" +"> > ## Solution\n" +"> >\n" +"> > If needed, move out of the `planets` folder:\n" +"> >\n" +"> > ~~~\n" +"> > $ cd ..\n" +"> > ~~~\n" +"> > {: .language-bash}\n" +"> >\n" +"> > Create a new folder called `bio` and 'move' into it:\n" +"> >\n" +"> > ~~~\n" +"> > $ mkdir bio\n" +"> > $ cd bio\n" +"> > ~~~\n" +"> > {: .language-bash}\n" +"> >\n" +"> > Initialise git:\n" +"> >\n" +"> > ~~~\n" +"> > $ git init\n" +"> > ~~~\n" +"> > {: .language-bash}\n" +"> >\n" +"> > Create your biography file `me.txt` using `nano` or another text editor.\n" +"> > Once in place, add and commit it to the repository:\n" +"> >\n" +"> > ~~~\n" +"> > $ git add me.txt\n" +"> > $ git commit -m'Adding biography file'\n" +"> > ~~~\n" +"> > {: .language-bash}\n" +"> >\n" +"> > Modify the file as described (modify one line, add a fourth line).\n" +"> > To display the differences\n" +"> > between its updated state and its original state, use `git diff`:\n" +"> >\n" +"> > ~~~\n" +"> > $ git diff me.txt\n" +"> > ~~~\n" +"> > {: .language-bash}\n" +"> >" + +# blockquote, which can be cascaded +#: git-novice/_episodes/04-changes.md:759 +#: git-novice/_locale/es/_episodes/04-changes.md:753 +msgid "> ## Author and Committer" +msgstr "> ## Author and Committer" + +#: git-novice/_episodes/04-changes.md:760 +msgid "" +">\n" +"> For each of the commits you have done, Git stored your name twice.\n" +"> You are named as the author and as the committer. You can observe\n" +"> that by telling Git to show you more information about your last\n" +"> commits:\n" +">\n" +"> ~~~\n" +"> $ git log --format=full\n" +"> ~~~\n" +"> {: .language-bash}\n" +">\n" +"> When committing you can name someone else as the author:\n" +">\n" +"> ~~~\n" +"> $ git commit --author=\"Vlad Dracula \"\n" +"> ~~~\n" +"> {: .language-bash}\n" +">\n" +"> Create a new repository and create two commits: one without the\n" +"> `--author` option and one by naming a colleague of yours as the\n" +"> author. Run `git log` and `git log --format=full`. Think about ways\n" +"> how that can allow you to collaborate with your colleagues.\n" +">\n" +"> > ## Solution\n" +"> >\n" +"> > ~~~\n" +"> > $ git add me.txt\n" +"> > $ git commit -m \"Update Vlad's bio.\" --author=\"Frank N. Stein \"\n" +"> > ~~~\n" +"> > {: .language-bash}\n" +"> >\n" +"> > ~~~\n" +"> > [master 4162a51] Update Vlad's bio.\n" +"> > Author: Frank N. Stein \n" +"> > 1 file changed, 2 insertions(+), 2 deletions(-)\n" +"> > ~~~\n" +"> > {: .output}\n" +"> >\n" +"> > ~~~\n" +"> > $ git log --format=full\n" +"> > ~~~\n" +"> > {: .language-bash}\n" +"> >\n" +"> > ~~~\n" +"> > commit 4162a51b273ba799a9d395dd70c45d96dba4e2ff\n" +"> > Author: Frank N. Stein \n" +"> > Commit: Vlad Dracula \n" +"> >\n" +"> > Update Vlad's bio.\n" +"> >\n" +"> > commit aaa3271e5e26f75f11892718e83a3e2743fab8ea\n" +"> > Author: Vlad Dracula \n" +"> > Commit: Vlad Dracula \n" +"> >\n" +"> > Vlad's initial bio.\n" +"> > ~~~\n" +"> > {: .output}" +msgstr "" +">\n" +"> For each of the commits you have done, Git stored your name twice.\n" +"> You are named as the author and as the committer. You can observe\n" +"> that by telling Git to show you more information about your last\n" +"> commits:\n" +">\n" +"> ~~~\n" +"> $ git log --format=full\n" +"> ~~~\n" +"> {: .language-bash}\n" +">\n" +"> When committing you can name someone else as the author:\n" +">\n" +"> ~~~\n" +"> $ git commit --author=\"Vlad のび太 \"\n" +"> ~~~\n" +"> {: .language-bash}\n" +">\n" +"> Create a new repository and create two commits: one without the\n" +"> `--author` option and one by naming a colleague of yours as the\n" +"> author. Run `git log` and `git log --format=full`. Think about ways\n" +"> how that can allow you to collaborate with your colleagues.\n" +">\n" +"> > ## Solution\n" +"> >\n" +"> > ~~~\n" +"> > $ git add me.txt\n" +"> > $ git commit -m \"Update Vlad's bio.\" --author=\"Frank N. Stein \"\n" +"> > ~~~\n" +"> > {: .language-bash}\n" +"> >\n" +"> > ~~~\n" +"> > [master 4162a51] Update Vlad's bio.\n" +"> > Author: Frank N. Stein \n" +"> > 1 file changed, 2 insertions(+), 2 deletions(-)\n" +"> > ~~~\n" +"> > {: .output}\n" +"> >\n" +"> > ~~~\n" +"> > $ git log --format=full\n" +"> > ~~~\n" +"> > {: .language-bash}\n" +"> >\n" +"> > ~~~\n" +"> > commit 4162a51b273ba799a9d395dd70c45d96dba4e2ff\n" +"> > Author: Frank N. Stein \n" +"> > Commit: Vlad のび太 \n" +"> >\n" +"> > Update Vlad's bio.\n" +"> >\n" +"> > commit aaa3271e5e26f75f11892718e83a3e2743fab8ea\n" +"> > Author: Vlad のび太 \n" +"> > Commit: Vlad のび太 \n" +"> >\n" +"> > Vlad's initial bio.\n" +"> > ~~~\n" +"> > {: .output}" + +#: git-novice/_episodes/04-changes.md:820 +#: git-novice/_locale/es/_episodes/04-changes.md:814 +msgid "[commit-messages]: https://chris.beams.io/posts/git-commit/" +msgstr "[commit-messages]: https://chris.beams.io/posts/git-commit/" + +# Front Matter +#: git-novice/_episodes/05-history.md:1 +msgid "" +"---\n" +"title: Exploring History\n" +"teaching: 25\n" +"exercises: 0\n" +"questions:\n" +"- \"How can I identify old versions of files?\"\n" +"- \"How do I review my changes?\"\n" +"- \"How can I recover old versions of files?\"\n" +"objectives:\n" +"- \"Explain what the HEAD of a repository is and how to use it.\"\n" +"- \"Identify and use Git commit numbers.\"\n" +"- \"Compare various versions of tracked files.\"\n" +"- \"Restore old versions of files.\"\n" +"keypoints:\n" +"- \"`git diff` displays differences between commits.\"\n" +"- \"`git checkout` recovers old versions of files.\"\n" +"---" +msgstr "" +"---\n" +"title: Exploring History\n" +"teaching: 25\n" +"exercises: 0\n" +"questions:\n" +"- \"How can I identify old versions of files?\"\n" +"- \"How do I review my changes?\"\n" +"- \"How can I recover old versions of files?\"\n" +"objectives:\n" +"- \"Explain what the HEAD of a repository is and how to use it.\"\n" +"- \"Identify and use Git commit numbers.\"\n" +"- \"Compare various versions of tracked files.\"\n" +"- \"Restore old versions of files.\"\n" +"keypoints:\n" +"- \"`git diff` displays differences between commits.\"\n" +"- \"`git checkout` recovers old versions of files.\"\n" +"---" + +#: git-novice/_episodes/05-history.md:19 +msgid "" +"As we saw in the previous lesson, we can refer to commits by their\n" +"identifiers. You can refer to the _most recent commit_ of the working\n" +"directory by using the identifier `HEAD`." +msgstr "" +"As we saw in the previous lesson, we can refer to commits by their\n" +"identifiers. You can refer to the _most recent commit_ of the working\n" +"directory by using the identifier `HEAD`." + +#: git-novice/_episodes/05-history.md:23 +msgid "" +"We've been adding one line at a time to `mars.txt`, so it's easy to track our\n" +"progress by looking, so let's do that using our `HEAD`s. Before we start,\n" +"let's make a change to `mars.txt`." +msgstr "" +"We've been adding one line at a time to `mars.txt`, so it's easy to track our\n" +"progress by looking, so let's do that using our `HEAD`s. Before we start,\n" +"let's make a change to `mars.txt`." + +#: git-novice/_episodes/05-history.md:40 +msgid "Now, let's see what we get." +msgstr "Now, let's see what we get." + +# code block +#: git-novice/_episodes/05-history.md:42 +#: git-novice/_locale/es/_episodes/05-history.md:42 +msgid "" +"~~~\n" +"$ git diff HEAD mars.txt\n" +"~~~" +msgstr "" +"~~~\n" +"$ git diff HEAD mars.txt\n" +"~~~" + +# code block +#: git-novice/_episodes/05-history.md:47 +#: git-novice/_locale/es/_episodes/05-history.md:47 +msgid "" +"~~~\n" +"diff --git a/mars.txt b/mars.txt\n" +"index b36abfd..0848c8d 100644\n" +"--- a/mars.txt\n" +"+++ b/mars.txt\n" +"@@ -1,3 +1,4 @@\n" +" Cold and dry, but everything is my favorite color\n" +" The two moons may be a problem for Wolfman\n" +" But the Mummy will appreciate the lack of humidity\n" +"~~~" +msgstr "" +"~~~\n" +"diff --git a/mars.txt b/mars.txt\n" +"index b36abfd..0848c8d 100644\n" +"--- a/mars.txt\n" +"+++ b/mars.txt\n" +"@@ -1,3 +1,4 @@\n" +" Cold and dry, but everything is my favorite color\n" +" The two moons may be a problem for ドラえもん\n" +" But the Mummy will appreciate the lack of humidity\n" +"~~~" + +#: git-novice/_episodes/05-history.md:59 +msgid "" +"which is the same as what you would get if you leave out `HEAD` (try it). The\n" +"real goodness in all this is when you can refer to previous commits. We do\n" +"that by adding `~1` \n" +"(where \"~\" is \"tilde\", pronounced [**til**-d*uh*]) \n" +"to refer to the commit one before `HEAD`." +msgstr "" +"which is the same as what you would get if you leave out `HEAD` (try it). The\n" +"real goodness in all this is when you can refer to previous commits. We do\n" +"that by adding `~1` \n" +"(where \"~\" is \"tilde\", pronounced [**til**-d*uh*]) \n" +"to refer to the commit one before `HEAD`." + +# code block +#: git-novice/_episodes/05-history.md:65 +#: git-novice/_locale/es/_episodes/05-history.md:63 +msgid "" +"~~~\n" +"$ git diff HEAD~1 mars.txt\n" +"~~~" +msgstr "" +"~~~\n" +"$ git diff HEAD~1 mars.txt\n" +"~~~" + +#: git-novice/_episodes/05-history.md:70 +msgid "" +"If we want to see the differences between older commits we can use `git diff`\n" +"again, but with the notation `HEAD~1`, `HEAD~2`, and so on, to refer to them:" +msgstr "" +"If we want to see the differences between older commits we can use `git diff`\n" +"again, but with the notation `HEAD~1`, `HEAD~2`, and so on, to refer to them:" + +# code block +#: git-novice/_episodes/05-history.md:74 +#: git-novice/_locale/es/_episodes/05-history.md:72 +msgid "" +"~~~\n" +"$ git diff HEAD~2 mars.txt\n" +"~~~" +msgstr "" +"~~~\n" +"$ git diff HEAD~2 mars.txt\n" +"~~~" + +# code block +#: git-novice/_episodes/05-history.md:79 +#: git-novice/_locale/es/_episodes/05-history.md:77 +msgid "" +"~~~\n" +"diff --git a/mars.txt b/mars.txt\n" +"index df0654a..b36abfd 100644\n" +"--- a/mars.txt\n" +"+++ b/mars.txt\n" +"@@ -1 +1,4 @@\n" +" Cold and dry, but everything is my favorite color\n" +"+The two moons may be a problem for Wolfman\n" +"+But the Mummy will appreciate the lack of humidity\n" +"~~~" +msgstr "" +"~~~\n" +"diff --git a/mars.txt b/mars.txt\n" +"index df0654a..b36abfd 100644\n" +"--- a/mars.txt\n" +"+++ b/mars.txt\n" +"@@ -1 +1,4 @@\n" +" Cold and dry, but everything is my favorite color\n" +"+The two moons may be a problem for ドラえもん\n" +"+But the Mummy will appreciate the lack of humidity\n" +"~~~" + +#: git-novice/_episodes/05-history.md:91 +msgid "We could also use `git show` which shows us what changes we made at an older commit as well as the commit message, rather than the _differences_ between a commit and our working directory that we see by using `git diff`." +msgstr "We could also use `git show` which shows us what changes we made at an older commit as well as the commit message, rather than the _differences_ between a commit and our working directory that we see by using `git diff`." + +# code block +#: git-novice/_episodes/05-history.md:93 +#: git-novice/_locale/es/_episodes/05-history.md:91 +msgid "" +"~~~\n" +"$ git show HEAD~2 mars.txt\n" +"~~~" +msgstr "" +"~~~\n" +"$ git show HEAD~2 mars.txt\n" +"~~~" + +# code block +#: git-novice/_episodes/05-history.md:98 +#: git-novice/_locale/es/_episodes/05-history.md:96 +msgid "" +"~~~\n" +"commit 34961b159c27df3b475cfe4415d94a6d1fcd064d\n" +"Author: Vlad Dracula \n" +"Date: Thu Aug 22 10:07:21 2013 -0400\n" +"\n" +" Start notes on Mars as a base\n" +"\n" +"diff --git a/mars.txt b/mars.txt\n" +"new file mode 100644\n" +"index 0000000..df0654a\n" +"--- /dev/null\n" +"+++ b/mars.txt\n" +"@@ -0,0 +1 @@\n" +"+Cold and dry, but everything is my favorite color\n" +"~~~" +msgstr "" +"~~~\n" +"commit 34961b159c27df3b475cfe4415d94a6d1fcd064d\n" +"Author: Vlad のび太 \n" +"Date: Thu Aug 22 10:07:21 2013 -0400\n" +"\n" +" Start notes on Mars as a base\n" +"\n" +"diff --git a/mars.txt b/mars.txt\n" +"new file mode 100644\n" +"index 0000000..df0654a\n" +"--- /dev/null\n" +"+++ b/mars.txt\n" +"@@ -0,0 +1 @@\n" +"+Cold and dry, but everything is my favorite color\n" +"~~~" + +#: git-novice/_episodes/05-history.md:115 +msgid "" +"In this way,\n" +"we can build up a chain of commits.\n" +"The most recent end of the chain is referred to as `HEAD`;\n" +"we can refer to previous commits using the `~` notation,\n" +"so `HEAD~1`\n" +"means \"the previous commit\",\n" +"while `HEAD~123` goes back 123 commits from where we are now." +msgstr "" +"In this way,\n" +"we can build up a chain of commits.\n" +"The most recent end of the chain is referred to as `HEAD`;\n" +"we can refer to previous commits using the `~` notation,\n" +"so `HEAD~1`\n" +"means \"the previous commit\",\n" +"while `HEAD~123` goes back 123 commits from where we are now." + +#: git-novice/_episodes/05-history.md:123 +msgid "" +"We can also refer to commits using\n" +"those long strings of digits and letters\n" +"that `git log` displays.\n" +"These are unique IDs for the changes,\n" +"and \"unique\" really does mean unique:\n" +"every change to any set of files on any computer\n" +"has a unique 40-character identifier.\n" +"Our first commit was given the ID\n" +"`f22b25e3233b4645dabd0d81e651fe074bd8e73b`,\n" +"so let's try this:" +msgstr "" +"We can also refer to commits using\n" +"those long strings of digits and letters\n" +"that `git log` displays.\n" +"These are unique IDs for the changes,\n" +"and \"unique\" really does mean unique:\n" +"every change to any set of files on any computer\n" +"has a unique 40-character identifier.\n" +"Our first commit was given the ID\n" +"`f22b25e3233b4645dabd0d81e651fe074bd8e73b`,\n" +"so let's try this:" + +# code block +#: git-novice/_episodes/05-history.md:134 +#: git-novice/_locale/es/_episodes/05-history.md:132 +msgid "" +"~~~\n" +"$ git diff f22b25e3233b4645dabd0d81e651fe074bd8e73b mars.txt\n" +"~~~" +msgstr "" +"~~~\n" +"$ git diff f22b25e3233b4645dabd0d81e651fe074bd8e73b mars.txt\n" +"~~~" + +# code block +#: git-novice/_episodes/05-history.md:139 +#: git-novice/_episodes/05-history.md:160 +#: git-novice/_locale/es/_episodes/05-history.md:137 +#: git-novice/_locale/es/_episodes/05-history.md:158 +msgid "" +"~~~\n" +"diff --git a/mars.txt b/mars.txt\n" +"index df0654a..93a3e13 100644\n" +"--- a/mars.txt\n" +"+++ b/mars.txt\n" +"@@ -1 +1,4 @@\n" +" Cold and dry, but everything is my favorite color\n" +"+The two moons may be a problem for Wolfman\n" +"+But the Mummy will appreciate the lack of humidity\n" +"~~~" +msgstr "" +"~~~\n" +"diff --git a/mars.txt b/mars.txt\n" +"index df0654a..93a3e13 100644\n" +"--- a/mars.txt\n" +"+++ b/mars.txt\n" +"@@ -1 +1,4 @@\n" +" Cold and dry, but everything is my favorite color\n" +"+The two moons may be a problem for ドラえもん\n" +"+But the Mummy will appreciate the lack of humidity\n" +"~~~" + +#: git-novice/_episodes/05-history.md:151 +msgid "" +"That's the right answer,\n" +"but typing out random 40-character strings is annoying,\n" +"so Git lets us use just the first few characters:" +msgstr "" +"That's the right answer,\n" +"but typing out random 40-character strings is annoying,\n" +"so Git lets us use just the first few characters:" + +# code block +#: git-novice/_episodes/05-history.md:155 +#: git-novice/_locale/es/_episodes/05-history.md:153 +msgid "" +"~~~\n" +"$ git diff f22b25e mars.txt\n" +"~~~" +msgstr "" +"~~~\n" +"$ git diff f22b25e mars.txt\n" +"~~~" + +#: git-novice/_episodes/05-history.md:172 +msgid "" +"All right! So\n" +"we can save changes to files and see what we've changed—now how\n" +"can we restore older versions of things?\n" +"Let's suppose we accidentally overwrite our file:" +msgstr "" +"All right! So\n" +"we can save changes to files and see what we've changed—now how\n" +"can we restore older versions of things?\n" +"Let's suppose we accidentally overwrite our file:" + +# code block +#: git-novice/_episodes/05-history.md:183 +#: git-novice/_locale/es/_episodes/05-history.md:181 +msgid "" +"~~~\n" +"We will need to manufacture our own oxygen\n" +"~~~" +msgstr "" +"~~~\n" +"We will need to manufacture our own oxygen\n" +"~~~" + +#: git-novice/_episodes/05-history.md:188 +msgid "" +"`git status` now tells us that the file has been changed,\n" +"but those changes haven't been staged:" +msgstr "" +"`git status` now tells us that the file has been changed,\n" +"but those changes haven't been staged:" + +#: git-novice/_episodes/05-history.md:208 +msgid "" +"We can put things back the way they were\n" +"by using `git checkout`:" +msgstr "" +"We can put things back the way they were\n" +"by using `git checkout`:" + +# code block +#: git-novice/_episodes/05-history.md:211 +#: git-novice/_locale/es/_episodes/05-history.md:209 +msgid "" +"~~~\n" +"$ git checkout HEAD mars.txt\n" +"$ cat mars.txt\n" +"~~~" +msgstr "" +"~~~\n" +"$ git checkout HEAD mars.txt\n" +"$ cat mars.txt\n" +"~~~" + +#: git-novice/_episodes/05-history.md:224 +msgid "" +"As you might guess from its name,\n" +"`git checkout` checks out (i.e., restores) an old version of a file.\n" +"In this case,\n" +"we're telling Git that we want to recover the version of the file recorded in `HEAD`,\n" +"which is the last saved commit.\n" +"If we want to go back even further,\n" +"we can use a commit identifier instead:" +msgstr "" +"As you might guess from its name,\n" +"`git checkout` checks out (i.e., restores) an old version of a file.\n" +"In this case,\n" +"we're telling Git that we want to recover the version of the file recorded in `HEAD`,\n" +"which is the last saved commit.\n" +"If we want to go back even further,\n" +"we can use a commit identifier instead:" + +# code block +#: git-novice/_episodes/05-history.md:232 git-novice/_extras/discuss.md:62 +#: git-novice/_locale/es/_episodes/05-history.md:230 +#: git-novice/_locale/es/_extras/discuss.md:62 +msgid "" +"~~~\n" +"$ git checkout f22b25e mars.txt\n" +"~~~" +msgstr "" +"~~~\n" +"$ git checkout f22b25e mars.txt\n" +"~~~" + +# code block +#: git-novice/_episodes/05-history.md:252 +msgid "" +"~~~\n" +"# On branch master\n" +"Changes to be committed:\n" +" (use \"git reset HEAD ...\" to unstage)\n" +"# Changes not staged for commit:\n" +"# (use \"git add ...\" to update what will be committed)\n" +"# (use \"git checkout -- ...\" to discard changes in working directory)\n" +"#\n" +"#\tmodified: mars.txt\n" +"#\n" +"no changes added to commit (use \"git add\" and/or \"git commit -a\")\n" +"~~~" +msgstr "" +"~~~\n" +"# On branch master\n" +"Changes to be committed:\n" +" (use \"git reset HEAD ...\" to unstage)\n" +"# Changes not staged for commit:\n" +"# (use \"git add ...\" to update what will be committed)\n" +"# (use \"git checkout -- ...\" to discard changes in working directory)\n" +"#\n" +"#\tmodified: mars.txt\n" +"#\n" +"no changes added to commit (use \"git add\" and/or \"git commit -a\")\n" +"~~~" + +#: git-novice/_episodes/05-history.md:266 +msgid "" +"Notice that the changes are on the staged area.\n" +"Again, we can put things back the way they were\n" +"by using `git checkout`:" +msgstr "" +"Notice that the changes are on the staged area.\n" +"Again, we can put things back the way they were\n" +"by using `git checkout`:" + +# code block +#: git-novice/_episodes/05-history.md:270 +#: git-novice/_locale/es/_episodes/05-history.md:268 +msgid "" +"~~~\n" +"$ git checkout -f master mars.txt\n" +"~~~" +msgstr "" +"~~~\n" +"$ git checkout -f master mars.txt\n" +"~~~" + +# blockquote, which can be cascaded +#: git-novice/_episodes/05-history.md:275 +msgid "> ## Don't Lose Your HEAD" +msgstr "> ## Don't Lose Your HEAD" + +#: git-novice/_episodes/05-history.md:276 +msgid "" +">\n" +"> Above we used\n" +">\n" +"> ~~~\n" +"> $ git checkout f22b25e mars.txt\n" +"> ~~~\n" +"> {: .language-bash}\n" +">\n" +"> to revert `mars.txt` to its state after the commit `f22b25e`. But be careful! \n" +"> The command `checkout` has other important functionalities and Git will misunderstand\n" +"> your intentions if you are not accurate with the typing. For example, \n" +"> if you forget `mars.txt` in the previous command.\n" +"> The \"detached HEAD\" is like \"look, but don't touch\" here,\n" +"> so you shouldn't make any changes in this state.\n" +"> After investigating your repo's past state, reattach your `HEAD` with `git checkout master`." +msgstr "" +">\n" +"> Above we used\n" +">\n" +"> ~~~\n" +"> $ git checkout f22b25e mars.txt\n" +"> ~~~\n" +"> {: .language-bash}\n" +">\n" +"> to revert `mars.txt` to its state after the commit `f22b25e`. But be careful! \n" +"> The command `checkout` has other important functionalities and Git will misunderstand\n" +"> your intentions if you are not accurate with the typing. For example, \n" +"> if you forget `mars.txt` in the previous command.\n" +"> The \"detached HEAD\" is like \"look, but don't touch\" here,\n" +"> so you shouldn't make any changes in this state.\n" +"> After investigating your repo's past state, reattach your `HEAD` with `git checkout master`." + +#: git-novice/_episodes/05-history.md:293 +msgid "" +"It's important to remember that\n" +"we must use the commit number that identifies the state of the repository\n" +"*before* the change we're trying to undo.\n" +"A common mistake is to use the number of\n" +"the commit in which we made the change we're trying to get rid of.\n" +"In the example below, we want to retrieve the state from before the most\n" +"recent commit (`HEAD~1`), which is commit `f22b25e`:" +msgstr "" +"It's important to remember that\n" +"we must use the commit number that identifies the state of the repository\n" +"*before* the change we're trying to undo.\n" +"A common mistake is to use the number of\n" +"the commit in which we made the change we're trying to get rid of.\n" +"In the example below, we want to retrieve the state from before the most\n" +"recent commit (`HEAD~1`), which is commit `f22b25e`:" + +#: git-novice/_episodes/05-history.md:301 +#: git-novice/_locale/es/_episodes/05-history.md:298 +msgid "![Git Checkout](../fig/git-checkout.svg)" +msgstr "![Git Checkout](../fig/git-checkout.svg)" + +#: git-novice/_episodes/05-history.md:303 +msgid "" +"So, to put it all together,\n" +"here's how Git works in cartoon form:" +msgstr "" +"So, to put it all together,\n" +"here's how Git works in cartoon form:" + +#: git-novice/_episodes/05-history.md:306 +#: git-novice/_locale/es/_episodes/05-history.md:303 +msgid "![https://figshare.com/articles/How_Git_works_a_cartoon/1328266](../fig/git_staging.svg)" +msgstr "![https://figshare.com/articles/How_Git_works_a_cartoon/1328266](../fig/git_staging.svg)" + +# blockquote, which can be cascaded +#: git-novice/_episodes/05-history.md:308 +msgid "> ## Simplifying the Common Case" +msgstr "> ## Simplifying the Common Case" + +#: git-novice/_episodes/05-history.md:309 +msgid "" +">\n" +"> If you read the output of `git status` carefully,\n" +"> you'll see that it includes this hint:\n" +">\n" +"> ~~~\n" +"> (use \"git checkout -- ...\" to discard changes in working directory)\n" +"> ~~~\n" +"> {: .language-bash}\n" +">\n" +"> As it says,\n" +"> `git checkout` without a version identifier restores files to the state saved in `HEAD`.\n" +"> The double dash `--` is needed to separate the names of the files being recovered\n" +"> from the command itself:\n" +"> without it,\n" +"> Git would try to use the name of the file as the commit identifier." +msgstr "" +">\n" +"> If you read the output of `git status` carefully,\n" +"> you'll see that it includes this hint:\n" +">\n" +"> ~~~\n" +"> (use \"git checkout -- ...\" to discard changes in working directory)\n" +"> ~~~\n" +"> {: .language-bash}\n" +">\n" +"> As it says,\n" +"> `git checkout` without a version identifier restores files to the state saved in `HEAD`.\n" +"> The double dash `--` is needed to separate the names of the files being recovered\n" +"> from the command itself:\n" +"> without it,\n" +"> Git would try to use the name of the file as the commit identifier." + +#: git-novice/_episodes/05-history.md:326 +msgid "" +"The fact that files can be reverted one by one\n" +"tends to change the way people organize their work.\n" +"If everything is in one large document,\n" +"it's hard (but not impossible) to undo changes to the introduction\n" +"without also undoing changes made later to the conclusion.\n" +"If the introduction and conclusion are stored in separate files,\n" +"on the other hand,\n" +"moving backward and forward in time becomes much easier." +msgstr "" +"The fact that files can be reverted one by one\n" +"tends to change the way people organize their work.\n" +"If everything is in one large document,\n" +"it's hard (but not impossible) to undo changes to the introduction\n" +"without also undoing changes made later to the conclusion.\n" +"If the introduction and conclusion are stored in separate files,\n" +"on the other hand,\n" +"moving backward and forward in time becomes much easier." + +# blockquote, which can be cascaded +#: git-novice/_episodes/05-history.md:335 +msgid "> ## Recovering Older Versions of a File" +msgstr "> ## Recovering Older Versions of a File" + +#: git-novice/_episodes/05-history.md:336 +msgid "" +">\n" +"> Jennifer has made changes to the Python script that she has been working on for weeks, and the\n" +"> modifications she made this morning \"broke\" the script and it no longer runs. She has spent\n" +"> ~ 1hr trying to fix it, with no luck...\n" +">\n" +"> Luckily, she has been keeping track of her project's versions using Git! Which commands below will\n" +"> let her recover the last committed version of her Python script called\n" +"> `data_cruncher.py`?\n" +">\n" +"> 1. `$ git checkout HEAD`\n" +">\n" +"> 2. `$ git checkout HEAD data_cruncher.py`\n" +">\n" +"> 3. `$ git checkout HEAD~1 data_cruncher.py`\n" +">\n" +"> 4. `$ git checkout data_cruncher.py`\n" +">\n" +"> 5. Both 2 and 4" +msgstr "" +">\n" +"> Jennifer has made changes to the Python script that she has been working on for weeks, and the\n" +"> modifications she made this morning \"broke\" the script and it no longer runs. She has spent\n" +"> ~ 1hr trying to fix it, with no luck...\n" +">\n" +"> Luckily, she has been keeping track of her project's versions using Git! Which commands below will\n" +"> let her recover the last committed version of her Python script called\n" +"> `data_cruncher.py`?\n" +">\n" +"> 1. `$ git checkout HEAD`\n" +">\n" +"> 2. `$ git checkout HEAD data_cruncher.py`\n" +">\n" +"> 3. `$ git checkout HEAD~1 data_cruncher.py`\n" +">\n" +"> 4. `$ git checkout data_cruncher.py`\n" +">\n" +"> 5. Both 2 and 4" + +# blockquote, which can be cascaded +#: git-novice/_episodes/05-history.md:356 +msgid "> ## Reverting a Commit" +msgstr "> ## Reverting a Commit" + +#: git-novice/_episodes/05-history.md:357 +msgid "" +">\n" +"> Jennifer is collaborating on her Python script with her colleagues and\n" +"> realizes her last commit to the group repository is wrong and wants to\n" +"> undo it. Jennifer needs to undo correctly so everyone in the group\n" +"> repository gets the correct change. `git revert [wrong commit ID]`\n" +"> will make a new commit that undoes Jennifer's previous wrong\n" +"> commit. Therefore `git revert` is different than `git checkout [commit\n" +"> ID]` because `checkout` is for local changes not committed to the\n" +"> group repository. Below are the right steps and explanations for\n" +"> Jennifer to use `git revert`, what is the missing command?\n" +">\n" +"> 1. `________ # Look at the git history of the project to find the commit ID`\n" +">\n" +"> 2. Copy the ID (the first few characters of the ID, e.g. 0b1d055).\n" +">\n" +"> 3. `git revert [commit ID]`\n" +">\n" +"> 4. Type in the new commit message.\n" +">\n" +"> 5. Save and close" +msgstr "" +">\n" +"> Jennifer is collaborating on her Python script with her colleagues and\n" +"> realizes her last commit to the group repository is wrong and wants to\n" +"> undo it. Jennifer needs to undo correctly so everyone in the group\n" +"> repository gets the correct change. `git revert [wrong commit ID]`\n" +"> will make a new commit that undoes Jennifer's previous wrong\n" +"> commit. Therefore `git revert` is different than `git checkout [commit\n" +"> ID]` because `checkout` is for local changes not committed to the\n" +"> group repository. Below are the right steps and explanations for\n" +"> Jennifer to use `git revert`, what is the missing command?\n" +">\n" +"> 1. `________ # Look at the git history of the project to find the commit ID`\n" +">\n" +"> 2. Copy the ID (the first few characters of the ID, e.g. 0b1d055).\n" +">\n" +"> 3. `git revert [commit ID]`\n" +">\n" +"> 4. Type in the new commit message.\n" +">\n" +"> 5. Save and close" + +# blockquote, which can be cascaded +#: git-novice/_episodes/05-history.md:379 +msgid "> ## Understanding Workflow and History" +msgstr "> ## Understanding Workflow and History" + +#: git-novice/_episodes/05-history.md:380 +msgid "" +">\n" +"> What is the output of the last command in\n" +">\n" +"> ~~~\n" +"> $ cd planets\n" +"> $ echo \"Venus is beautiful and full of love\" > venus.txt\n" +"> $ git add venus.txt\n" +"> $ echo \"Venus is too hot to be suitable as a base\" >> venus.txt\n" +"> $ git commit -m \"Comment on Venus as an unsuitable base\"\n" +"> $ git checkout HEAD venus.txt\n" +"> $ cat venus.txt #this will print the contents of venus.txt to the screen\n" +"> ~~~\n" +"> {: .language-bash}\n" +">\n" +"> 1. \n" +">\n" +"> ~~~\n" +"> Venus is too hot to be suitable as a base\n" +"> ~~~" +msgstr "" +">\n" +"> What is the output of the last command in\n" +">\n" +"> ~~~\n" +"> $ cd planets\n" +"> $ echo \"Venus is beautiful and full of love\" > venus.txt\n" +"> $ git add venus.txt\n" +"> $ echo \"Venus is too hot to be suitable as a base\" >> venus.txt\n" +"> $ git commit -m \"Comment on Venus as an unsuitable base\"\n" +"> $ git checkout HEAD venus.txt\n" +"> $ cat venus.txt #this will print the contents of venus.txt to the screen\n" +"> ~~~\n" +"> {: .language-bash}\n" +">\n" +"> 1. \n" +">\n" +"> ~~~\n" +"> Venus is too hot to be suitable as a base\n" +"> ~~~" + +#: git-novice/_episodes/05-history.md:400 +#: git-novice/_locale/es/_episodes/05-history.md:397 +msgid "" +">\n" +"> 2.\n" +">\n" +"> ~~~\n" +"> Venus is beautiful and full of love\n" +"> ~~~" +msgstr "" +">\n" +"> 2.\n" +">\n" +"> ~~~\n" +"> Venus is beautiful and full of love\n" +"> ~~~" + +#: git-novice/_episodes/05-history.md:407 +#: git-novice/_locale/es/_episodes/05-history.md:404 +msgid "" +">\n" +"> 3.\n" +">\n" +"> ~~~\n" +"> Venus is beautiful and full of love\n" +"> Venus is too hot to be suitable as a base\n" +"> ~~~" +msgstr "" +">\n" +"> 3.\n" +">\n" +"> ~~~\n" +"> Venus is beautiful and full of love\n" +"> Venus is too hot to be suitable as a base\n" +"> ~~~" + +#: git-novice/_episodes/05-history.md:415 +#: git-novice/_locale/es/_episodes/05-history.md:412 +msgid "" +">\n" +"> 4.\n" +">\n" +"> ~~~\n" +"> Error because you have changed venus.txt without committing the changes\n" +"> ~~~" +msgstr "" +">\n" +"> 4.\n" +">\n" +"> ~~~\n" +"> Error because you have changed venus.txt without committing the changes\n" +"> ~~~" + +#: git-novice/_episodes/05-history.md:422 +msgid "" +">\n" +"> > ## Solution\n" +"> >\n" +"> > The answer is 2 because `git add venus.txt` was used only before add the line\n" +"> > `Venus is too hot to be suitable as a base`\n" +"> > which was lost when `git checkout` was executed.\n" +"> > Using the flag `-a` with `git commit` would have prevented the lost." +msgstr "" +">\n" +"> > ## Solution\n" +"> >\n" +"> > The answer is 2 because `git add venus.txt` was used only before add the line\n" +"> > `Venus is too hot to be suitable as a base`\n" +"> > which was lost when `git checkout` was executed.\n" +"> > Using the flag `-a` with `git commit` would have prevented the lost." + +# blockquote, which can be cascaded +#: git-novice/_episodes/05-history.md:432 +msgid "> ## Checking Understanding of `git diff`" +msgstr "> ## Checking Understanding of `git diff`" + +#: git-novice/_episodes/05-history.md:433 +msgid "" +">\n" +"> Consider this command: `git diff HEAD~3 mars.txt`. What do you predict this command\n" +"> will do if you execute it? What happens when you do execute it? Why?\n" +">\n" +"> Try another command, `git diff [ID] mars.txt`, where [ID] is replaced with\n" +"> the unique identifier for your most recent commit. What do you think will happen,\n" +"> and what does happen?" +msgstr "" +">\n" +"> Consider this command: `git diff HEAD~3 mars.txt`. What do you predict this command\n" +"> will do if you execute it? What happens when you do execute it? Why?\n" +">\n" +"> Try another command, `git diff [ID] mars.txt`, where [ID] is replaced with\n" +"> the unique identifier for your most recent commit. What do you think will happen,\n" +"> and what does happen?" + +# blockquote, which can be cascaded +#: git-novice/_episodes/05-history.md:442 +msgid "> ## Getting Rid of Staged Changes" +msgstr "> ## Getting Rid of Staged Changes" + +#: git-novice/_episodes/05-history.md:443 +msgid "" +">\n" +"> `git checkout` can be used to restore a previous commit when unstaged changes have\n" +"> been made, but will it also work for changes that have been staged but not committed?\n" +"> Make a change to `mars.txt`, add that change, and use `git checkout` to see if\n" +"> you can remove your change." +msgstr "" +">\n" +"> `git checkout` can be used to restore a previous commit when unstaged changes have\n" +"> been made, but will it also work for changes that have been staged but not committed?\n" +"> Make a change to `mars.txt`, add that change, and use `git checkout` to see if\n" +"> you can remove your change." + +# blockquote, which can be cascaded +#: git-novice/_episodes/05-history.md:450 +msgid "> ## Explore and Summarize Histories" +msgstr "> ## Explore and Summarize Histories" + +#: git-novice/_episodes/05-history.md:451 +msgid "" +">\n" +"> Exploring history is an important part of git, often it is a challenge to find\n" +"> the right commit ID, especially if the commit is from several months ago.\n" +">\n" +"> Imagine the `planets` project has more than 50 files.\n" +"> You would like to find a commit with specific text in `mars.txt` is modified.\n" +"> When you type `git log`, a very long list appeared,\n" +"> How can you narrow down the search?\n" +">\n" +"> Recall that the `git diff` command allow us to explore one specific file,\n" +"> e.g. `git diff mars.txt`. We can apply a similar idea here.\n" +">\n" +"> ~~~\n" +"> $ git log mars.txt\n" +"> ~~~\n" +"> {: .language-bash}\n" +">\n" +"> Unfortunately some of these commit messages are very ambiguous e.g. `update files`.\n" +"> How can you search through these files?\n" +">\n" +"> Both `git diff` and `git log` are very useful and they summarize a different part of the history for you.\n" +"> Is it possible to combine both? Let's try the following:\n" +">\n" +"> ~~~\n" +"> $ git log --patch mars.txt\n" +"> ~~~\n" +"> {: .language-bash}\n" +">\n" +"> You should get a long list of output, and you should be able to see both commit messages and the difference between each commit.\n" +">\n" +"> Question: What does the following command do?\n" +">\n" +"> ~~~\n" +"> $ git log --patch HEAD~3 *.txt\n" +"> ~~~\n" +"> {: .language-bash}" +msgstr "" +">\n" +"> Exploring history is an important part of git, often it is a challenge to find\n" +"> the right commit ID, especially if the commit is from several months ago.\n" +">\n" +"> Imagine the `planets` project has more than 50 files.\n" +"> You would like to find a commit with specific text in `mars.txt` is modified.\n" +"> When you type `git log`, a very long list appeared,\n" +"> How can you narrow down the search?\n" +">\n" +"> Recall that the `git diff` command allow us to explore one specific file,\n" +"> e.g. `git diff mars.txt`. We can apply a similar idea here.\n" +">\n" +"> ~~~\n" +"> $ git log mars.txt\n" +"> ~~~\n" +"> {: .language-bash}\n" +">\n" +"> Unfortunately some of these commit messages are very ambiguous e.g. `update files`.\n" +"> How can you search through these files?\n" +">\n" +"> Both `git diff` and `git log` are very useful and they summarize a different part of the history for you.\n" +"> Is it possible to combine both? Let's try the following:\n" +">\n" +"> ~~~\n" +"> $ git log --patch mars.txt\n" +"> ~~~\n" +"> {: .language-bash}\n" +">\n" +"> You should get a long list of output, and you should be able to see both commit messages and the difference between each commit.\n" +">\n" +"> Question: What does the following command do?\n" +">\n" +"> ~~~\n" +"> $ git log --patch HEAD~3 *.txt\n" +"> ~~~\n" +"> {: .language-bash}" + +# Front Matter +#: git-novice/_episodes/06-ignore.md:1 +msgid "" +"---\n" +"title: Ignoring Things\n" +"teaching: 5\n" +"exercises: 0\n" +"questions:\n" +"- \"How can I tell Git to ignore files I don't want to track?\"\n" +"objectives:\n" +"- \"Configure Git to ignore specific files.\"\n" +"- \"Explain why ignoring files can be useful.\"\n" +"keypoints:\n" +"- \"The `.gitignore` file tells Git what files to ignore.\"\n" +"---" +msgstr "" +"---\n" +"title: Ignoring Things\n" +"teaching: 5\n" +"exercises: 0\n" +"questions:\n" +"- \"How can I tell Git to ignore files I don't want to track?\"\n" +"objectives:\n" +"- \"Configure Git to ignore specific files.\"\n" +"- \"Explain why ignoring files can be useful.\"\n" +"keypoints:\n" +"- \"The `.gitignore` file tells Git what files to ignore.\"\n" +"---" + +#: git-novice/_episodes/06-ignore.md:14 +msgid "" +"What if we have files that we do not want Git to track for us,\n" +"like backup files created by our editor\n" +"or intermediate files created during data analysis?\n" +"Let's create a few dummy files:" +msgstr "" +"What if we have files that we do not want Git to track for us,\n" +"like backup files created by our editor\n" +"or intermediate files created during data analysis?\n" +"Let's create a few dummy files:" + +# code block +#: git-novice/_episodes/06-ignore.md:19 +#: git-novice/_locale/es/_episodes/06-ignore.md:19 +msgid "" +"~~~\n" +"$ mkdir results\n" +"$ touch a.dat b.dat c.dat results/a.out results/b.out\n" +"~~~" +msgstr "" +"~~~\n" +"$ mkdir results\n" +"$ touch a.dat b.dat c.dat results/a.out results/b.out\n" +"~~~" + +#: git-novice/_episodes/06-ignore.md:25 +msgid "and see what Git says:" +msgstr "and see what Git says:" + +# code block +#: git-novice/_episodes/06-ignore.md:32 +msgid "" +"~~~\n" +"On branch master\n" +"Untracked files:\n" +" (use \"git add ...\" to include in what will be committed)\n" +"\n" +"\ta.dat\n" +"\tb.dat\n" +"\tc.dat\n" +"\tresults/\n" +"nothing added to commit but untracked files present (use \"git add\" to track)\n" +"~~~" +msgstr "" +"~~~\n" +"On branch master\n" +"Untracked files:\n" +" (use \"git add ...\" to include in what will be committed)\n" +"\n" +"\ta.dat\n" +"\tb.dat\n" +"\tc.dat\n" +"\tresults/\n" +"nothing added to commit but untracked files present (use \"git add\" to track)\n" +"~~~" + +#: git-novice/_episodes/06-ignore.md:45 +msgid "" +"Putting these files under version control would be a waste of disk space.\n" +"What's worse,\n" +"having them all listed could distract us from changes that actually matter,\n" +"so let's tell Git to ignore them." +msgstr "" +"Putting these files under version control would be a waste of disk space.\n" +"What's worse,\n" +"having them all listed could distract us from changes that actually matter,\n" +"so let's tell Git to ignore them." + +#: git-novice/_episodes/06-ignore.md:50 +msgid "We do this by creating a file in the root directory of our project called `.gitignore`:" +msgstr "We do this by creating a file in the root directory of our project called `.gitignore`:" + +# code block +#: git-novice/_episodes/06-ignore.md:52 +#: git-novice/_locale/es/_episodes/06-ignore.md:52 +msgid "" +"~~~\n" +"$ nano .gitignore\n" +"$ cat .gitignore\n" +"~~~" +msgstr "" +"~~~\n" +"$ nano .gitignore\n" +"$ cat .gitignore\n" +"~~~" + +# code block +#: git-novice/_episodes/06-ignore.md:58 +#: git-novice/_locale/es/_episodes/06-ignore.md:58 +msgid "" +"~~~\n" +"*.dat\n" +"results/\n" +"~~~" +msgstr "" +"~~~\n" +"*.dat\n" +"results/\n" +"~~~" + +#: git-novice/_episodes/06-ignore.md:64 +msgid "" +"These patterns tell Git to ignore any file whose name ends in `.dat`\n" +"and everything in the `results` directory.\n" +"(If any of these files were already being tracked,\n" +"Git would continue to track them.)" +msgstr "" +"These patterns tell Git to ignore any file whose name ends in `.dat`\n" +"and everything in the `results` directory.\n" +"(If any of these files were already being tracked,\n" +"Git would continue to track them.)" + +#: git-novice/_episodes/06-ignore.md:69 +msgid "" +"Once we have created this file,\n" +"the output of `git status` is much cleaner:" +msgstr "" +"Once we have created this file,\n" +"the output of `git status` is much cleaner:" + +# code block +#: git-novice/_episodes/06-ignore.md:77 +msgid "" +"~~~\n" +"On branch master\n" +"Untracked files:\n" +" (use \"git add ...\" to include in what will be committed)\n" +"\n" +"\t.gitignore\n" +"nothing added to commit but untracked files present (use \"git add\" to track)\n" +"~~~" +msgstr "" +"~~~\n" +"On branch master\n" +"Untracked files:\n" +" (use \"git add ...\" to include in what will be committed)\n" +"\n" +"\t.gitignore\n" +"nothing added to commit but untracked files present (use \"git add\" to track)\n" +"~~~" + +#: git-novice/_episodes/06-ignore.md:87 +msgid "" +"The only thing Git notices now is the newly-created `.gitignore` file.\n" +"You might think we wouldn't want to track it,\n" +"but everyone we're sharing our repository with will probably want to ignore\n" +"the same things that we're ignoring.\n" +"Let's add and commit `.gitignore`:" +msgstr "" +"The only thing Git notices now is the newly-created `.gitignore` file.\n" +"You might think we wouldn't want to track it,\n" +"but everyone we're sharing our repository with will probably want to ignore\n" +"the same things that we're ignoring.\n" +"Let's add and commit `.gitignore`:" + +# code block +#: git-novice/_episodes/06-ignore.md:93 +#: git-novice/_locale/es/_episodes/06-ignore.md:93 +msgid "" +"~~~\n" +"$ git add .gitignore\n" +"$ git commit -m \"Ignore data files and the results folder.\"\n" +"$ git status\n" +"~~~" +msgstr "" +"~~~\n" +"$ git add .gitignore\n" +"$ git commit -m \"Ignore data files and the results folder.\"\n" +"$ git status\n" +"~~~" + +# code block +#: git-novice/_episodes/06-ignore.md:100 +#: git-novice/_locale/es/_episodes/06-ignore.md:100 +msgid "" +"~~~\n" +"# On branch master\n" +"nothing to commit, working directory clean\n" +"~~~" +msgstr "" +"~~~\n" +"# On branch master\n" +"nothing to commit, working directory clean\n" +"~~~" + +#: git-novice/_episodes/06-ignore.md:106 +msgid "As a bonus, using `.gitignore` helps us avoid accidentally adding to the repository files that we don't want to track:" +msgstr "As a bonus, using `.gitignore` helps us avoid accidentally adding to the repository files that we don't want to track:" + +# code block +#: git-novice/_episodes/06-ignore.md:108 +#: git-novice/_locale/es/_episodes/06-ignore.md:108 +msgid "" +"~~~\n" +"$ git add a.dat\n" +"~~~" +msgstr "" +"~~~\n" +"$ git add a.dat\n" +"~~~" + +# code block +#: git-novice/_episodes/06-ignore.md:113 +#: git-novice/_locale/es/_episodes/06-ignore.md:113 +msgid "" +"~~~\n" +"The following paths are ignored by one of your .gitignore files:\n" +"a.dat\n" +"Use -f if you really want to add them.\n" +"~~~" +msgstr "" +"~~~\n" +"The following paths are ignored by one of your .gitignore files:\n" +"a.dat\n" +"Use -f if you really want to add them.\n" +"~~~" + +#: git-novice/_episodes/06-ignore.md:120 +msgid "" +"If we really want to override our ignore settings,\n" +"we can use `git add -f` to force Git to add something. For example,\n" +"`git add -f a.dat`.\n" +"We can also always see the status of ignored files if we want:" +msgstr "" +"If we really want to override our ignore settings,\n" +"we can use `git add -f` to force Git to add something. For example,\n" +"`git add -f a.dat`.\n" +"We can also always see the status of ignored files if we want:" + +# code block +#: git-novice/_episodes/06-ignore.md:125 +#: git-novice/_locale/es/_episodes/06-ignore.md:125 +msgid "" +"~~~\n" +"$ git status --ignored\n" +"~~~" +msgstr "" +"~~~\n" +"$ git status --ignored\n" +"~~~" + +# code block +#: git-novice/_episodes/06-ignore.md:130 +#: git-novice/_locale/es/_episodes/06-ignore.md:130 +msgid "" +"~~~\n" +"On branch master\n" +"Ignored files:\n" +" (use \"git add -f ...\" to include in what will be committed)\n" +"\n" +" a.dat\n" +" b.dat\n" +" c.dat\n" +" results/\n" +"\n" +"nothing to commit, working directory clean\n" +"~~~" +msgstr "" +"~~~\n" +"On branch master\n" +"Ignored files:\n" +" (use \"git add -f ...\" to include in what will be committed)\n" +"\n" +" a.dat\n" +" b.dat\n" +" c.dat\n" +" results/\n" +"\n" +"nothing to commit, working directory clean\n" +"~~~" + +# blockquote, which can be cascaded +#: git-novice/_episodes/06-ignore.md:144 +msgid "> ## Ignoring Nested Files" +msgstr "> ## Ignoring Nested Files" + +#: git-novice/_episodes/06-ignore.md:145 +msgid "" +">\n" +"> Given a directory structure that looks like:\n" +">\n" +"> ~~~\n" +"> results/data\n" +"> results/plots\n" +"> ~~~\n" +"> {: .language-bash}\n" +">\n" +"> How would you ignore only `results/plots` and not `results/data`?\n" +">\n" +"> > ## Solution\n" +"> >\n" +"> > As with most programming issues, there are a few ways that you\n" +"> > could solve this. If you only want to ignore the contents of\n" +"> > `results/plots`, you can change your `.gitignore` to ignore\n" +"> > only the `/plots/` subfolder by adding the following line to\n" +"> > your .gitignore:\n" +"> >\n" +"> > `results/plots/`\n" +"> >\n" +"> > If, instead, you want to ignore everything in `/results/`, but wanted to track\n" +"> > `results/data`, then you can add `results/` to your .gitignore\n" +"> > and create an exception for the `results/data/` folder.\n" +"> > The next challenge will cover this type of solution.\n" +"> >\n" +"> > Sometimes the `**` pattern comes in handy, too, which matches\n" +"> > multiple directory levels. E.g. `**/results/plots/*` would make git ignore\n" +"> > the `results/plots` directory in any root directory." +msgstr "" +">\n" +"> Given a directory structure that looks like:\n" +">\n" +"> ~~~\n" +"> results/data\n" +"> results/plots\n" +"> ~~~\n" +"> {: .language-bash}\n" +">\n" +"> How would you ignore only `results/plots` and not `results/data`?\n" +">\n" +"> > ## Solution\n" +"> >\n" +"> > As with most programming issues, there are a few ways that you\n" +"> > could solve this. If you only want to ignore the contents of\n" +"> > `results/plots`, you can change your `.gitignore` to ignore\n" +"> > only the `/plots/` subfolder by adding the following line to\n" +"> > your .gitignore:\n" +"> >\n" +"> > `results/plots/`\n" +"> >\n" +"> > If, instead, you want to ignore everything in `/results/`, but wanted to track\n" +"> > `results/data`, then you can add `results/` to your .gitignore\n" +"> > and create an exception for the `results/data/` folder.\n" +"> > The next challenge will cover this type of solution.\n" +"> >\n" +"> > Sometimes the `**` pattern comes in handy, too, which matches\n" +"> > multiple directory levels. E.g. `**/results/plots/*` would make git ignore\n" +"> > the `results/plots` directory in any root directory." + +# blockquote, which can be cascaded +#: git-novice/_episodes/06-ignore.md:177 +msgid "> ## Including Specific Files" +msgstr "> ## Including Specific Files" + +#: git-novice/_episodes/06-ignore.md:178 +msgid "" +">\n" +"> How would you ignore all `.data` files in your root directory except for\n" +"> `final.data`?\n" +"> Hint: Find out what `!` (the exclamation point operator) does\n" +">\n" +"> > ## Solution\n" +"> >\n" +"> > You would add the following two lines to your .gitignore:\n" +"> >\n" +"> > ~~~\n" +"> > *.data # ignore all data files\n" +"> > !final.data # except final.data\n" +"> > ~~~\n" +"> > {: .output}\n" +"> >\n" +"> > The exclamation point operator will include a previously excluded entry." +msgstr "" +">\n" +"> How would you ignore all `.data` files in your root directory except for\n" +"> `final.data`?\n" +"> Hint: Find out what `!` (the exclamation point operator) does\n" +">\n" +"> > ## Solution\n" +"> >\n" +"> > You would add the following two lines to your .gitignore:\n" +"> >\n" +"> > ~~~\n" +"> > *.data # ignore all data files\n" +"> > !final.data # except final.data\n" +"> > ~~~\n" +"> > {: .output}\n" +"> >\n" +"> > The exclamation point operator will include a previously excluded entry." + +# blockquote, which can be cascaded +#: git-novice/_episodes/06-ignore.md:197 +msgid "> ## Ignoring all data Files in a Directory" +msgstr "> ## Ignoring all data Files in a Directory" + +#: git-novice/_episodes/06-ignore.md:198 +msgid "" +">\n" +"> Given a directory structure that looks like:\n" +">\n" +"> ~~~\n" +"> results/data/position/gps/a.data\n" +"> results/data/position/gps/b.data\n" +"> results/data/position/gps/c.data\n" +"> results/data/position/gps/info.txt\n" +"> results/plots\n" +"> ~~~\n" +"> {: .language-bash}\n" +">\n" +"> What's the shortest `.gitignore` rule you could write to ignore all `.data`\n" +"> files in `result/data/position/gps`? Do not ignore the `info.txt`.\n" +">\n" +"> > ## Solution\n" +"> >\n" +"> > Appending `results/data/position/gps/*.data` will match every file in `results/data/position/gps` that ends with `.data`.\n" +"> > The file `results/data/position/gps/info.txt` will not be ignored." +msgstr "" +">\n" +"> Given a directory structure that looks like:\n" +">\n" +"> ~~~\n" +"> results/data/position/gps/a.data\n" +"> results/data/position/gps/b.data\n" +"> results/data/position/gps/c.data\n" +"> results/data/position/gps/info.txt\n" +"> results/plots\n" +"> ~~~\n" +"> {: .language-bash}\n" +">\n" +"> What's the shortest `.gitignore` rule you could write to ignore all `.data`\n" +"> files in `result/data/position/gps`? Do not ignore the `info.txt`.\n" +">\n" +"> > ## Solution\n" +"> >\n" +"> > Appending `results/data/position/gps/*.data` will match every file in `results/data/position/gps` that ends with `.data`.\n" +"> > The file `results/data/position/gps/info.txt` will not be ignored." + +# blockquote, which can be cascaded +#: git-novice/_episodes/06-ignore.md:220 +msgid "> ## The Order of Rules" +msgstr "> ## The Order of Rules" + +#: git-novice/_episodes/06-ignore.md:221 +msgid "" +">\n" +"> Given a `.gitignore` file with the following contents:\n" +">\n" +"> ~~~\n" +"> *.data\n" +"> !*.data\n" +"> ~~~\n" +"> {: .language-bash}\n" +">\n" +"> What will be the result?\n" +">\n" +"> > ## Solution\n" +"> >\n" +"> > The `!` modifier will negate an entry from a previously defined ignore pattern.\n" +"> > Because the `!*.data` entry negates all of the previous `.data` files in the `.gitignore`,\n" +"> > none of them will be ignored, and all `.data` files will be tracked.\n" +"> >" +msgstr "" +">\n" +"> Given a `.gitignore` file with the following contents:\n" +">\n" +"> ~~~\n" +"> *.data\n" +"> !*.data\n" +"> ~~~\n" +"> {: .language-bash}\n" +">\n" +"> What will be the result?\n" +">\n" +"> > ## Solution\n" +"> >\n" +"> > The `!` modifier will negate an entry from a previously defined ignore pattern.\n" +"> > Because the `!*.data` entry negates all of the previous `.data` files in the `.gitignore`,\n" +"> > none of them will be ignored, and all `.data` files will be tracked.\n" +"> >" + +# blockquote, which can be cascaded +#: git-novice/_episodes/06-ignore.md:241 +msgid "> ## Log Files" +msgstr "> ## Log Files" + +#: git-novice/_episodes/06-ignore.md:242 +msgid "" +">\n" +"> You wrote a script that creates many intermediate log-files of the form `log_01`, `log_02`, `log_03`, etc.\n" +"> You want to keep them but you do not want to track them through `git`.\n" +">\n" +"> 1. Write **one** `.gitignore` entry that excludes files of the form `log_01`, `log_02`, etc.\n" +">\n" +"> 2. Test your \"ignore pattern\" by creating some dummy files of the form `log_01`, etc.\n" +">\n" +"> 3. You find that the file `log_01` is very important after all, add it to the tracked files without changing the `.gitignore` again.\n" +">\n" +"> 4. Discuss with your neighbor what other types of files could reside in your directory that you do not want to track and thus would exclude via `.gitignore`.\n" +">\n" +"> > ## Solution\n" +"> >\n" +"> > 1. append either `log_*` or `log*` as a new entry in your .gitignore\n" +"> > 3. track `log_01` using `git add -f log_01`" +msgstr "" +">\n" +"> You wrote a script that creates many intermediate log-files of the form `log_01`, `log_02`, `log_03`, etc.\n" +"> You want to keep them but you do not want to track them through `git`.\n" +">\n" +"> 1. Write **one** `.gitignore` entry that excludes files of the form `log_01`, `log_02`, etc.\n" +">\n" +"> 2. Test your \"ignore pattern\" by creating some dummy files of the form `log_01`, etc.\n" +">\n" +"> 3. You find that the file `log_01` is very important after all, add it to the tracked files without changing the `.gitignore` again.\n" +">\n" +"> 4. Discuss with your neighbor what other types of files could reside in your directory that you do not want to track and thus would exclude via `.gitignore`.\n" +">\n" +"> > ## Solution\n" +"> >\n" +"> > 1. append either `log_*` or `log*` as a new entry in your .gitignore\n" +"> > 3. track `log_01` using `git add -f log_01`" + +# Front Matter +#: git-novice/_episodes/07-github.md:1 +msgid "" +"---\n" +"title: Remotes in GitHub\n" +"teaching: 30\n" +"exercises: 0\n" +"questions:\n" +"- \"How do I share my changes with others on the web?\"\n" +"objectives:\n" +"- \"Explain what remote repositories are and why they are useful.\"\n" +"- \"Push to or pull from a remote repository.\"\n" +"keypoints:\n" +"- \"A local Git repository can be connected to one or more remote repositories.\"\n" +"- \"Use the HTTPS protocol to connect to remote repositories until you have learned how to set up SSH.\"\n" +"- \"`git push` copies changes from a local repository to a remote repository.\"\n" +"- \"`git pull` copies changes from a remote repository to a local repository.\"\n" +"---" +msgstr "" +"---\n" +"title: Remotes in GitHub\n" +"teaching: 30\n" +"exercises: 0\n" +"questions:\n" +"- \"How do I share my changes with others on the web?\"\n" +"objectives:\n" +"- \"Explain what remote repositories are and why they are useful.\"\n" +"- \"Push to or pull from a remote repository.\"\n" +"keypoints:\n" +"- \"A local Git repository can be connected to one or more remote repositories.\"\n" +"- \"Use the HTTPS protocol to connect to remote repositories until you have learned how to set up SSH.\"\n" +"- \"`git push` copies changes from a local repository to a remote repository.\"\n" +"- \"`git pull` copies changes from a remote repository to a local repository.\"\n" +"---" + +#: git-novice/_episodes/07-github.md:17 +msgid "" +"Version control really comes into its own when we begin to collaborate with\n" +"other people. We already have most of the machinery we need to do this; the\n" +"only thing missing is to copy changes from one repository to another." +msgstr "" +"Version control really comes into its own when we begin to collaborate with\n" +"other people. We already have most of the machinery we need to do this; the\n" +"only thing missing is to copy changes from one repository to another." + +#: git-novice/_episodes/07-github.md:21 +msgid "" +"Systems like Git allow us to move work between any two repositories. In\n" +"practice, though, it's easiest to use one copy as a central hub, and to keep it\n" +"on the web rather than on someone's laptop. Most programmers use hosting\n" +"services like [GitHub](https://github.com), [BitBucket](https://bitbucket.org) or\n" +"[GitLab](https://gitlab.com/) to hold those master copies; we'll explore the pros\n" +"and cons of this in the final section of this lesson." +msgstr "" +"Systems like Git allow us to move work between any two repositories. In\n" +"practice, though, it's easiest to use one copy as a central hub, and to keep it\n" +"on the web rather than on someone's laptop. Most programmers use hosting\n" +"services like [GitHub](https://github.com), [BitBucket](https://bitbucket.org) or\n" +"[GitLab](https://gitlab.com/) to hold those master copies; we'll explore the pros\n" +"and cons of this in the final section of this lesson." + +#: git-novice/_episodes/07-github.md:28 +msgid "" +"Let's start by sharing the changes we've made to our current project with the\n" +"world. Log in to GitHub, then click on the icon in the top right corner to\n" +"create a new repository called `planets`:" +msgstr "" +"Let's start by sharing the changes we've made to our current project with the\n" +"world. Log in to GitHub, then click on the icon in the top right corner to\n" +"create a new repository called `planets`:" + +#: git-novice/_episodes/07-github.md:32 +msgid "![Creating a Repository on GitHub (Step 1)](../fig/github-create-repo-01.png)" +msgstr "![Creating a Repository on GitHub (Step 1)](../fig/github-create-repo-01.png)" + +#: git-novice/_episodes/07-github.md:34 +msgid "Name your repository \"planets\" and then click \"Create Repository\":" +msgstr "Name your repository \"planets\" and then click \"Create Repository\":" + +#: git-novice/_episodes/07-github.md:36 +msgid "![Creating a Repository on GitHub (Step 2)](../fig/github-create-repo-02.png)" +msgstr "![Creating a Repository on GitHub (Step 2)](../fig/github-create-repo-02.png)" + +#: git-novice/_episodes/07-github.md:38 +msgid "" +"As soon as the repository is created, GitHub displays a page with a URL and some\n" +"information on how to configure your local repository:" +msgstr "" +"As soon as the repository is created, GitHub displays a page with a URL and some\n" +"information on how to configure your local repository:" + +#: git-novice/_episodes/07-github.md:41 +msgid "![Creating a Repository on GitHub (Step 3)](../fig/github-create-repo-03.png)" +msgstr "![Creating a Repository on GitHub (Step 3)](../fig/github-create-repo-03.png)" + +#: git-novice/_episodes/07-github.md:43 +msgid "This effectively does the following on GitHub's servers:" +msgstr "This effectively does the following on GitHub's servers:" + +# code block +#: git-novice/_episodes/07-github.md:45 +#: git-novice/_locale/es/_episodes/07-github.md:35 +msgid "" +"~~~\n" +"$ mkdir planets\n" +"$ cd planets\n" +"$ git init\n" +"~~~" +msgstr "" +"~~~\n" +"$ mkdir planets\n" +"$ cd planets\n" +"$ git init\n" +"~~~" + +#: git-novice/_episodes/07-github.md:52 +msgid "" +"Note that our local repository still contains our earlier work on `mars.txt`, but the\n" +"remote repository on GitHub appears empty as it doesn't contain any files yet." +msgstr "" +"Note that our local repository still contains our earlier work on `mars.txt`, but the\n" +"remote repository on GitHub appears empty as it doesn't contain any files yet." + +#: git-novice/_episodes/07-github.md:55 +msgid "![Freshly-Made GitHub Repository](../fig/git-freshly-made-github-repo.svg)" +msgstr "![Freshly-Made GitHub Repository](../fig/git-freshly-made-github-repo.svg)" + +#: git-novice/_episodes/07-github.md:57 +msgid "" +"The next step is to connect the two repositories. We do this by making the\n" +"GitHub repository a [remote]({{ page.root }}/reference#remote) for the local repository.\n" +"The home page of the repository on GitHub includes the string we need to\n" +"identify it:" +msgstr "" +"The next step is to connect the two repositories. We do this by making the\n" +"GitHub repository a [remote]({{ page.root }}/reference#remote) for the local repository.\n" +"The home page of the repository on GitHub includes the string we need to\n" +"identify it:" + +#: git-novice/_episodes/07-github.md:62 +msgid "![Where to Find Repository URL on GitHub](../fig/github-find-repo-string.png)" +msgstr "![Where to Find Repository URL on GitHub](../fig/github-find-repo-string.png)" + +#: git-novice/_episodes/07-github.md:64 +msgid "" +"Click on the 'HTTPS' link to change the [protocol]({{ page.root }}/reference#protocol) from\n" +"SSH to HTTPS." +msgstr "" +"Click on the 'HTTPS' link to change the [protocol]({{ page.root }}/reference#protocol) from\n" +"SSH to HTTPS." + +# blockquote, which can be cascaded +#: git-novice/_episodes/07-github.md:67 +#: git-novice/_locale/es/_episodes/07-github.md:52 +msgid "> ## HTTPS vs. SSH" +msgstr "> ## HTTPS vs. SSH" + +#: git-novice/_episodes/07-github.md:68 +msgid "" +">\n" +"> We use HTTPS here because it does not require additional configuration. After\n" +"> the workshop you may want to set up SSH access, which is a bit more secure, by\n" +"> following one of the great tutorials from\n" +"> [GitHub](https://help.github.com/articles/generating-ssh-keys),\n" +"> [Atlassian/BitBucket](https://confluence.atlassian.com/display/BITBUCKET/Set+up+SSH+for+Git)\n" +"> and [GitLab](https://about.gitlab.com/2014/03/04/add-ssh-key-screencast/)\n" +"> (this one has a screencast)." +msgstr "" +">\n" +"> We use HTTPS here because it does not require additional configuration. After\n" +"> the workshop you may want to set up SSH access, which is a bit more secure, by\n" +"> following one of the great tutorials from\n" +"> [GitHub](https://help.github.com/articles/generating-ssh-keys),\n" +"> [Atlassian/BitBucket](https://confluence.atlassian.com/display/BITBUCKET/Set+up+SSH+for+Git)\n" +"> and [GitLab](https://about.gitlab.com/2014/03/04/add-ssh-key-screencast/)\n" +"> (this one has a screencast)." + +#: git-novice/_episodes/07-github.md:78 +msgid "![Changing the Repository URL on GitHub](../fig/github-change-repo-string.png)" +msgstr "![Changing the Repository URL on GitHub](../fig/github-change-repo-string.png)" + +#: git-novice/_episodes/07-github.md:80 +msgid "" +"Copy that URL from the browser, go into the local `planets` repository, and run\n" +"this command:" +msgstr "" +"Copy that URL from the browser, go into the local `planets` repository, and run\n" +"this command:" + +# code block +#: git-novice/_episodes/07-github.md:83 +#: git-novice/_locale/es/_episodes/07-github.md:67 +msgid "" +"~~~\n" +"$ git remote add origin https://github.com/vlad/planets.git\n" +"~~~" +msgstr "" +"~~~\n" +"$ git remote add origin https://github.com/vlad/planets.git\n" +"~~~" + +#: git-novice/_episodes/07-github.md:88 +msgid "" +"Make sure to use the URL for your repository rather than Vlad's: the only\n" +"difference should be your username instead of `vlad`." +msgstr "" +"Make sure to use the URL for your repository rather than Vlad's: the only\n" +"difference should be your username instead of `vlad`." + +#: git-novice/_episodes/07-github.md:91 +msgid "We can check that the command has worked by running `git remote -v`:" +msgstr "We can check that the command has worked by running `git remote -v`:" + +# code block +#: git-novice/_episodes/07-github.md:93 +#: git-novice/_locale/es/_episodes/07-github.md:76 +msgid "" +"~~~\n" +"$ git remote -v\n" +"~~~" +msgstr "" +"~~~\n" +"$ git remote -v\n" +"~~~" + +# code block +#: git-novice/_episodes/07-github.md:98 +#: git-novice/_locale/es/_episodes/07-github.md:81 +msgid "" +"~~~\n" +"origin https://github.com/vlad/planets.git (push)\n" +"origin https://github.com/vlad/planets.git (fetch)\n" +"~~~" +msgstr "" +"~~~\n" +"origin https://github.com/vlad/planets.git (push)\n" +"origin https://github.com/vlad/planets.git (fetch)\n" +"~~~" + +#: git-novice/_episodes/07-github.md:104 +msgid "" +"The name `origin` is a local nickname for your remote repository. We could use\n" +"something else if we wanted to, but `origin` is by far the most common choice." +msgstr "" +"The name `origin` is a local nickname for your remote repository. We could use\n" +"something else if we wanted to, but `origin` is by far the most common choice." + +#: git-novice/_episodes/07-github.md:107 +msgid "" +"Once the nickname `origin` is set up, this command will push the changes from\n" +"our local repository to the repository on GitHub:" +msgstr "" +"Once the nickname `origin` is set up, this command will push the changes from\n" +"our local repository to the repository on GitHub:" + +# code block +#: git-novice/_episodes/07-github.md:110 git-novice/_episodes/08-collab.md:80 +#: git-novice/_episodes/09-conflict.md:68 +#: git-novice/_episodes/09-conflict.md:118 +#: git-novice/_episodes/09-conflict.md:241 +#: git-novice/_locale/es/_episodes/07-github.md:91 +#: git-novice/_locale/es/_episodes/08-collab.md:70 +#: git-novice/_locale/es/_episodes/09-conflict.md:62 +#: git-novice/_locale/es/_episodes/09-conflict.md:112 +#: git-novice/_locale/es/_episodes/09-conflict.md:235 +msgid "" +"~~~\n" +"$ git push origin master\n" +"~~~" +msgstr "" +"~~~\n" +"$ git push origin master\n" +"~~~" + +# code block +#: git-novice/_episodes/07-github.md:115 +#: git-novice/_locale/es/_episodes/07-github.md:96 +msgid "" +"~~~\n" +"Counting objects: 9, done.\n" +"Delta compression using up to 4 threads.\n" +"Compressing objects: 100% (6/6), done.\n" +"Writing objects: 100% (9/9), 821 bytes, done.\n" +"Total 9 (delta 2), reused 0 (delta 0)\n" +"To https://github.com/vlad/planets\n" +" * [new branch] master -> master\n" +"Branch master set up to track remote branch master from origin.\n" +"~~~" +msgstr "" +"~~~\n" +"Counting objects: 9, done.\n" +"Delta compression using up to 4 threads.\n" +"Compressing objects: 100% (6/6), done.\n" +"Writing objects: 100% (9/9), 821 bytes, done.\n" +"Total 9 (delta 2), reused 0 (delta 0)\n" +"To https://github.com/vlad/planets\n" +" * [new branch] master -> master\n" +"Branch master set up to track remote branch master from origin.\n" +"~~~" + +#: git-novice/_episodes/07-github.md:128 +msgid "" +">\n" +"> If the network you are connected to uses a proxy, there is a chance that your\n" +"> last command failed with \"Could not resolve hostname\" as the error message. To\n" +"> solve this issue, you need to tell Git about the proxy:\n" +">\n" +"> ~~~\n" +"> $ git config --global http.proxy http://user:password@proxy.url\n" +"> $ git config --global https.proxy http://user:password@proxy.url\n" +"> ~~~\n" +"> {: .language-bash}\n" +">\n" +"> When you connect to another network that doesn't use a proxy, you will need to\n" +"> tell Git to disable the proxy using:\n" +">\n" +"> ~~~\n" +"> $ git config --global --unset http.proxy\n" +"> $ git config --global --unset https.proxy\n" +"> ~~~\n" +"> {: .language-bash}" +msgstr "" +">\n" +"> If the network you are connected to uses a proxy, there is a chance that your\n" +"> last command failed with \"Could not resolve hostname\" as the error message. To\n" +"> solve this issue, you need to tell Git about the proxy:\n" +">\n" +"> ~~~\n" +"> $ git config --global http.proxy http://user:password@proxy.url\n" +"> $ git config --global https.proxy http://user:password@proxy.url\n" +"> ~~~\n" +"> {: .language-bash}\n" +">\n" +"> When you connect to another network that doesn't use a proxy, you will need to\n" +"> tell Git to disable the proxy using:\n" +">\n" +"> ~~~\n" +"> $ git config --global --unset http.proxy\n" +"> $ git config --global --unset https.proxy\n" +"> ~~~\n" +"> {: .language-bash}" + +# blockquote, which can be cascaded +#: git-novice/_episodes/07-github.md:149 +msgid "> ## Password Managers" +msgstr "> ## Password Managers" + +#: git-novice/_episodes/07-github.md:150 +msgid "" +">\n" +"> If your operating system has a password manager configured, `git push` will\n" +"> try to use it when it needs your username and password. For example, this\n" +"> is the default behavior for Git Bash on Windows. If you want to type your\n" +"> username and password at the terminal instead of using a password manager,\n" +"> type:\n" +">\n" +"> ~~~\n" +"> $ unset SSH_ASKPASS\n" +"> ~~~\n" +"> {: .language-bash}\n" +">\n" +"> in the terminal, before you run `git push`. Despite the name, [git uses\n" +"> `SSH_ASKPASS` for all credential\n" +"> entry](https://git-scm.com/docs/gitcredentials#_requesting_credentials), so\n" +"> you may want to unset `SSH_ASKPASS` whether you are using git via SSH or\n" +"> https.\n" +">\n" +"> You may also want to add `unset SSH_ASKPASS` at the end of your `~/.language-bashrc`\n" +"> to make git default to using the terminal for usernames and passwords." +msgstr "" +">\n" +"> If your operating system has a password manager configured, `git push` will\n" +"> try to use it when it needs your username and password. For example, this\n" +"> is the default behavior for Git Bash on Windows. If you want to type your\n" +"> username and password at the terminal instead of using a password manager,\n" +"> type:\n" +">\n" +"> ~~~\n" +"> $ unset SSH_ASKPASS\n" +"> ~~~\n" +"> {: .language-bash}\n" +">\n" +"> in the terminal, before you run `git push`. Despite the name, [git uses\n" +"> `SSH_ASKPASS` for all credential\n" +"> entry](https://git-scm.com/docs/gitcredentials#_requesting_credentials), so\n" +"> you may want to unset `SSH_ASKPASS` whether you are using git via SSH or\n" +"> https.\n" +">\n" +"> You may also want to add `unset SSH_ASKPASS` at the end of your `~/.language-bashrc`\n" +"> to make git default to using the terminal for usernames and passwords." + +#: git-novice/_episodes/07-github.md:172 +msgid "Our local and remote repositories are now in this state:" +msgstr "Our local and remote repositories are now in this state:" + +#: git-novice/_episodes/07-github.md:174 +msgid "![GitHub Repository After First Push](../fig/github-repo-after-first-push.svg)" +msgstr "![GitHub Repository After First Push](../fig/github-repo-after-first-push.svg)" + +# blockquote, which can be cascaded +#: git-novice/_episodes/07-github.md:176 +msgid "> ## The '-u' Flag" +msgstr "> ## The '-u' Flag" + +#: git-novice/_episodes/07-github.md:177 +msgid "" +">\n" +"> You may see a `-u` option used with `git push` in some documentation. This\n" +"> option is synonymous with the `--set-upstream-to` option for the `git branch`\n" +"> command, and is used to associate the current branch with a remote branch so\n" +"> that the `git pull` command can be used without any arguments. To do this,\n" +"> simply use `git push -u origin master` once the remote has been set up." +msgstr "" +">\n" +"> You may see a `-u` option used with `git push` in some documentation. This\n" +"> option is synonymous with the `--set-upstream-to` option for the `git branch`\n" +"> command, and is used to associate the current branch with a remote branch so\n" +"> that the `git pull` command can be used without any arguments. To do this,\n" +"> simply use `git push -u origin master` once the remote has been set up." + +#: git-novice/_episodes/07-github.md:185 +msgid "We can pull changes from the remote repository to the local one as well:" +msgstr "We can pull changes from the remote repository to the local one as well:" + +# code block +#: git-novice/_episodes/07-github.md:187 git-novice/_episodes/08-collab.md:106 +#: git-novice/_episodes/09-conflict.md:143 +#: git-novice/_episodes/09-conflict.md:261 +#: git-novice/_locale/es/_episodes/07-github.md:168 +#: git-novice/_locale/es/_episodes/08-collab.md:92 +#: git-novice/_locale/es/_episodes/09-conflict.md:137 +#: git-novice/_locale/es/_episodes/09-conflict.md:255 +msgid "" +"~~~\n" +"$ git pull origin master\n" +"~~~" +msgstr "" +"~~~\n" +"$ git pull origin master\n" +"~~~" + +# code block +#: git-novice/_episodes/07-github.md:192 +#: git-novice/_locale/es/_episodes/07-github.md:173 +msgid "" +"~~~\n" +"From https://github.com/vlad/planets\n" +" * branch master -> FETCH_HEAD\n" +"Already up-to-date.\n" +"~~~" +msgstr "" +"~~~\n" +"From https://github.com/vlad/planets\n" +" * branch master -> FETCH_HEAD\n" +"Already up-to-date.\n" +"~~~" + +#: git-novice/_episodes/07-github.md:199 +msgid "" +"Pulling has no effect in this case because the two repositories are already\n" +"synchronized. If someone else had pushed some changes to the repository on\n" +"GitHub, though, this command would download them to our local repository." +msgstr "" +"Pulling has no effect in this case because the two repositories are already\n" +"synchronized. If someone else had pushed some changes to the repository on\n" +"GitHub, though, this command would download them to our local repository." + +# blockquote, which can be cascaded +#: git-novice/_episodes/07-github.md:203 +msgid "> ## GitHub GUI" +msgstr "> ## GitHub GUI" + +#: git-novice/_episodes/07-github.md:204 +msgid "" +">\n" +"> Browse to your `planets` repository on GitHub.\n" +"> Under the Code tab, find and click on the text that says \"XX commits\" (where \"XX\" is some number).\n" +"> Hover over, and click on, the three buttons to the right of each commit.\n" +"> What information can you gather/explore from these buttons?\n" +"> How would you get that same information in the shell?\n" +">\n" +"> > ## Solution\n" +"> > The left-most button (with the picture of a clipboard) copies the full identifier of the commit to the clipboard. In the shell, ```git log``` will show you the full commit identifier for each commit.\n" +"> >\n" +"> > When you click on the middle button, you'll see all of the changes that were made in that particular commit. Green shaded lines indicate additions and red ones removals. In the shell we can do the same thing with ```git diff```. In particular, ```git diff ID1..ID2``` where ID1 and ID2 are commit identifiers (e.g. ```git diff a3bf1e5..041e637```) will show the differences between those two commits.\n" +"> >\n" +"> > The right-most button lets you view all of the files in the repository at the time of that commit. To do this in the shell, we'd need to checkout the repository at that particular time. We can do this with ```git checkout ID``` where ID is the identifier of the commit we want to look at. If we do this, we need to remember to put the repository back to the right state afterwards!" +msgstr "" +">\n" +"> Browse to your `planets` repository on GitHub.\n" +"> Under the Code tab, find and click on the text that says \"XX commits\" (where \"XX\" is some number).\n" +"> Hover over, and click on, the three buttons to the right of each commit.\n" +"> What information can you gather/explore from these buttons?\n" +"> How would you get that same information in the shell?\n" +">\n" +"> > ## Solution\n" +"> > The left-most button (with the picture of a clipboard) copies the full identifier of the commit to the clipboard. In the shell, ```git log``` will show you the full commit identifier for each commit.\n" +"> >\n" +"> > When you click on the middle button, you'll see all of the changes that were made in that particular commit. Green shaded lines indicate additions and red ones removals. In the shell we can do the same thing with ```git diff```. In particular, ```git diff ID1..ID2``` where ID1 and ID2 are commit identifiers (e.g. ```git diff a3bf1e5..041e637```) will show the differences between those two commits.\n" +"> >\n" +"> > The right-most button lets you view all of the files in the repository at the time of that commit. To do this in the shell, we'd need to checkout the repository at that particular time. We can do this with ```git checkout ID``` where ID is the identifier of the commit we want to look at. If we do this, we need to remember to put the repository back to the right state afterwards!" + +# blockquote, which can be cascaded +#: git-novice/_episodes/07-github.md:220 +msgid "> ## GitHub Timestamp" +msgstr "> ## GitHub Timestamp" + +#: git-novice/_episodes/07-github.md:221 +msgid "" +">\n" +"> Create a remote repository on GitHub. Push the contents of your local\n" +"> repository to the remote. Make changes to your local repository and push\n" +"> these changes. Go to the repo you just created on GitHub and check the\n" +"> [timestamps]({{ page.root }}/reference#timestamp) of the files. How does GitHub record\n" +"> times, and why?\n" +">\n" +"> > ## Solution\n" +"> > GitHub displays timestamps in a human readable relative format (i.e. \"22 hours ago\" or \"three weeks ago\"). However, if you hover over the timestamp, you can see the exact time at which the last change to the file occurred." +msgstr "" +">\n" +"> Create a remote repository on GitHub. Push the contents of your local\n" +"> repository to the remote. Make changes to your local repository and push\n" +"> these changes. Go to the repo you just created on GitHub and check the\n" +"> [timestamps]({{ page.root }}/reference#timestamp) of the files. How does GitHub record\n" +"> times, and why?\n" +">\n" +"> > ## Solution\n" +"> > GitHub displays timestamps in a human readable relative format (i.e. \"22 hours ago\" or \"three weeks ago\"). However, if you hover over the timestamp, you can see the exact time at which the last change to the file occurred." + +# blockquote, which can be cascaded +#: git-novice/_episodes/07-github.md:233 +#: git-novice/_locale/es/_episodes/07-github.md:212 +msgid "> ## Push vs. Commit" +msgstr "> ## Push vs. Commit" + +#: git-novice/_episodes/07-github.md:234 +msgid "" +">\n" +"> In this lesson, we introduced the \"git push\" command.\n" +"> How is \"git push\" different from \"git commit\"?\n" +">\n" +"> > ## Solution\n" +"> > When we push changes, we're interacting with a remote repository to update it with the changes we've made locally (often this corresponds to sharing the changes we've made with others). Commit only updates your local repository." +msgstr "" +">\n" +"> In this lesson, we introduced the \"git push\" command.\n" +"> How is \"git push\" different from \"git commit\"?\n" +">\n" +"> > ## Solution\n" +"> > When we push changes, we're interacting with a remote repository to update it with the changes we've made locally (often this corresponds to sharing the changes we've made with others). Commit only updates your local repository." + +# blockquote, which can be cascaded +#: git-novice/_episodes/07-github.md:243 +msgid "> ## Fixing Remote Settings" +msgstr "> ## Fixing Remote Settings" + +#: git-novice/_episodes/07-github.md:244 +msgid "" +">\n" +"> It happens quite often in practice that you made a typo in the\n" +"> remote URL. This exercise is about how to fix this kind of issue.\n" +"> First start by adding a remote with an invalid URL:\n" +">\n" +"> ~~~\n" +"> git remote add broken https://github.com/this/url/is/invalid\n" +"> ~~~\n" +"> {: .language-bash}\n" +">\n" +"> Do you get an error when adding the remote? Can you think of a\n" +"> command that would make it obvious that your remote URL was not\n" +"> valid? Can you figure out how to fix the URL (tip: use `git remote\n" +"> -h`)? Don't forget to clean up and remove this remote once you are\n" +"> done with this exercise.\n" +">\n" +"> > ## Solution\n" +"> > We don't see any error message when we add the remote (adding the remote tells git about it, but doesn't try to use it yet). As soon as we try to use ```git push``` we'll see an error message. The command ```git remote set-url``` allows us to change the remote's URL to fix it." +msgstr "" +">\n" +"> It happens quite often in practice that you made a typo in the\n" +"> remote URL. This exercise is about how to fix this kind of issue.\n" +"> First start by adding a remote with an invalid URL:\n" +">\n" +"> ~~~\n" +"> git remote add broken https://github.com/this/url/is/invalid\n" +"> ~~~\n" +"> {: .language-bash}\n" +">\n" +"> Do you get an error when adding the remote? Can you think of a\n" +"> command that would make it obvious that your remote URL was not\n" +"> valid? Can you figure out how to fix the URL (tip: use `git remote\n" +"> -h`)? Don't forget to clean up and remove this remote once you are\n" +"> done with this exercise.\n" +">\n" +"> > ## Solution\n" +"> > We don't see any error message when we add the remote (adding the remote tells git about it, but doesn't try to use it yet). As soon as we try to use ```git push``` we'll see an error message. The command ```git remote set-url``` allows us to change the remote's URL to fix it." + +# blockquote, which can be cascaded +#: git-novice/_episodes/07-github.md:265 +msgid "> ## GitHub License and README files" +msgstr "> ## GitHub License and README files" + +#: git-novice/_episodes/07-github.md:266 +msgid "" +">\n" +"> In this section we learned about creating a remote repository on GitHub, but when you initialized your\n" +"> GitHub repo, you didn't add a README.md or a license file. If you had, what do you think would have happened when\n" +"> you tried to link your local and remote repositories?\n" +">\n" +"> > ## Solution\n" +"> > In this case, since we already had a README file in our own (local) repository, we'd see a merge conflict (when git realises that there are two versions of the file and asks us to reconcile the differences)." +msgstr "" +">\n" +"> In this section we learned about creating a remote repository on GitHub, but when you initialized your\n" +"> GitHub repo, you didn't add a README.md or a license file. If you had, what do you think would have happened when\n" +"> you tried to link your local and remote repositories?\n" +">\n" +"> > ## Solution\n" +"> > In this case, since we already had a README file in our own (local) repository, we'd see a merge conflict (when git realises that there are two versions of the file and asks us to reconcile the differences)." + +# Front Matter +#: git-novice/_episodes/08-collab.md:1 +msgid "" +"---\n" +"title: Collaborating\n" +"teaching: 25\n" +"exercises: 0\n" +"questions:\n" +"- \"How can I use version control to collaborate with other people?\"\n" +"objectives:\n" +"- \"Clone a remote repository.\"\n" +"- \"Collaborate pushing to a common repository.\"\n" +"- \"Describe the basic collaborative workflow.\"\n" +"keypoints:\n" +"- \"`git clone` copies a remote repository to create a local repository with a remote called `origin` automatically set up.\"\n" +"---" +msgstr "" +"---\n" +"title: Collaborating\n" +"teaching: 25\n" +"exercises: 0\n" +"questions:\n" +"- \"How can I use version control to collaborate with other people?\"\n" +"objectives:\n" +"- \"Clone a remote repository.\"\n" +"- \"Collaborate pushing to a common repository.\"\n" +"- \"Describe the basic collaborative workflow.\"\n" +"keypoints:\n" +"- \"`git clone` copies a remote repository to create a local repository with a remote called `origin` automatically set up.\"\n" +"---" + +#: git-novice/_episodes/08-collab.md:15 +msgid "" +"For the next step, get into pairs. One person will be the \"Owner\" and the other\n" +"will be the \"Collaborator\". The goal is that the Collaborator add changes into\n" +"the Owner's repository. We will switch roles at the end, so both persons will\n" +"play Owner and Collaborator." +msgstr "" +"For the next step, get into pairs. One person will be the \"Owner\" and the other\n" +"will be the \"Collaborator\". The goal is that the Collaborator add changes into\n" +"the Owner's repository. We will switch roles at the end, so both persons will\n" +"play Owner and Collaborator." + +# blockquote, which can be cascaded +#: git-novice/_episodes/08-collab.md:20 +msgid "> ## Practicing By Yourself" +msgstr "> ## Practicing By Yourself" + +#: git-novice/_episodes/08-collab.md:21 +msgid "" +">\n" +"> If you're working through this lesson on your own, you can carry on by opening\n" +"> a second terminal window.\n" +"> This window will represent your partner, working on another computer. You\n" +"> won't need to give anyone access on GitHub, because both 'partners' are you." +msgstr "" +">\n" +"> If you're working through this lesson on your own, you can carry on by opening\n" +"> a second terminal window.\n" +"> This window will represent your partner, working on another computer. You\n" +"> won't need to give anyone access on GitHub, because both 'partners' are you." + +#: git-novice/_episodes/08-collab.md:28 +msgid "" +"The Owner needs to give the Collaborator access.\n" +"On GitHub, click the settings button on the right,\n" +"then select Collaborators, and enter your partner's username." +msgstr "" +"The Owner needs to give the Collaborator access.\n" +"On GitHub, click the settings button on the right,\n" +"then select Collaborators, and enter your partner's username." + +#: git-novice/_episodes/08-collab.md:32 +#: git-novice/_locale/es/_episodes/08-collab.md:25 +msgid "![Adding Collaborators on GitHub](../fig/github-add-collaborators.png)" +msgstr "![Adding Collaborators on GitHub](../fig/github-add-collaborators.png)" + +#: git-novice/_episodes/08-collab.md:34 +msgid "" +"To accept access to the Owner's repo, the Collaborator\n" +"needs to go to [https://github.com/notifications](https://github.com/notifications).\n" +"Once there she can accept access to the Owner's repo." +msgstr "" +"To accept access to the Owner's repo, the Collaborator\n" +"needs to go to [https://github.com/notifications](https://github.com/notifications).\n" +"Once there she can accept access to the Owner's repo." + +#: git-novice/_episodes/08-collab.md:38 +msgid "" +"Next, the Collaborator needs to download a copy of the Owner's repository to her\n" +" machine. This is called \"cloning a repo\". To clone the Owner's repo into\n" +"her `Desktop` folder, the Collaborator enters:" +msgstr "" +"Next, the Collaborator needs to download a copy of the Owner's repository to her\n" +" machine. This is called \"cloning a repo\". To clone the Owner's repo into\n" +"her `Desktop` folder, the Collaborator enters:" + +# code block +#: git-novice/_episodes/08-collab.md:42 +#: git-novice/_locale/es/_episodes/08-collab.md:33 +msgid "" +"~~~\n" +"$ git clone https://github.com/vlad/planets.git ~/Desktop/vlad-planets\n" +"~~~" +msgstr "" +"~~~\n" +"$ git clone https://github.com/vlad/planets.git ~/Desktop/vlad-planets\n" +"~~~" + +#: git-novice/_episodes/08-collab.md:47 +msgid "Replace 'vlad' with the Owner's username." +msgstr "Replace 'vlad' with the Owner's username." + +#: git-novice/_episodes/08-collab.md:49 +#: git-novice/_locale/es/_episodes/08-collab.md:40 +msgid "![After Creating Clone of Repository](../fig/github-collaboration.svg)" +msgstr "![After Creating Clone of Repository](../fig/github-collaboration.svg)" + +#: git-novice/_episodes/08-collab.md:51 +msgid "" +"The Collaborator can now make a change in her clone of the Owner's repository,\n" +"exactly the same way as we've been doing before:" +msgstr "" +"The Collaborator can now make a change in her clone of the Owner's repository,\n" +"exactly the same way as we've been doing before:" + +# code block +#: git-novice/_episodes/08-collab.md:54 +#: git-novice/_locale/es/_episodes/08-collab.md:44 +msgid "" +"~~~\n" +"$ cd ~/Desktop/vlad-planets\n" +"$ nano pluto.txt\n" +"$ cat pluto.txt\n" +"~~~" +msgstr "" +"~~~\n" +"$ cd ~/Desktop/vlad-planets\n" +"$ nano pluto.txt\n" +"$ cat pluto.txt\n" +"~~~" + +# code block +#: git-novice/_episodes/08-collab.md:61 +#: git-novice/_locale/es/_episodes/08-collab.md:51 +msgid "" +"~~~\n" +"It is so a planet!\n" +"~~~" +msgstr "" +"~~~\n" +"It is so a planet!\n" +"~~~" + +# code block +#: git-novice/_episodes/08-collab.md:66 +#: git-novice/_locale/es/_episodes/08-collab.md:56 +msgid "" +"~~~\n" +"$ git add pluto.txt\n" +"$ git commit -m \"Add notes about Pluto\"\n" +"~~~" +msgstr "" +"~~~\n" +"$ git add pluto.txt\n" +"$ git commit -m \"Add notes about Pluto\"\n" +"~~~" + +# code block +#: git-novice/_episodes/08-collab.md:72 +#: git-novice/_locale/es/_episodes/08-collab.md:62 +msgid "" +"~~~\n" +" 1 file changed, 1 insertion(+)\n" +" create mode 100644 pluto.txt\n" +"~~~" +msgstr "" +"~~~\n" +" 1 file changed, 1 insertion(+)\n" +" create mode 100644 pluto.txt\n" +"~~~" + +#: git-novice/_episodes/08-collab.md:78 +msgid "Then push the change to the *Owner's repository* on GitHub:" +msgstr "Then push the change to the *Owner's repository* on GitHub:" + +# code block +#: git-novice/_episodes/08-collab.md:85 +#: git-novice/_locale/es/_episodes/08-collab.md:75 +msgid "" +"~~~\n" +"Counting objects: 4, done.\n" +"Delta compression using up to 4 threads.\n" +"Compressing objects: 100% (2/2), done.\n" +"Writing objects: 100% (3/3), 306 bytes, done.\n" +"Total 3 (delta 0), reused 0 (delta 0)\n" +"To https://github.com/vlad/planets.git\n" +" 9272da5..29aba7c master -> master\n" +"~~~" +msgstr "" +"~~~\n" +"Counting objects: 4, done.\n" +"Delta compression using up to 4 threads.\n" +"Compressing objects: 100% (2/2), done.\n" +"Writing objects: 100% (3/3), 306 bytes, done.\n" +"Total 3 (delta 0), reused 0 (delta 0)\n" +"To https://github.com/vlad/planets.git\n" +" 9272da5..29aba7c master -> master\n" +"~~~" + +#: git-novice/_episodes/08-collab.md:96 +msgid "" +"Note that we didn't have to create a remote called `origin`: Git uses this\n" +"name by default when we clone a repository. (This is why `origin` was a\n" +"sensible choice earlier when we were setting up remotes by hand.)" +msgstr "" +"Note that we didn't have to create a remote called `origin`: Git uses this\n" +"name by default when we clone a repository. (This is why `origin` was a\n" +"sensible choice earlier when we were setting up remotes by hand.)" + +#: git-novice/_episodes/08-collab.md:100 +msgid "" +"Take a look to the Owner's repository on its GitHub website now (maybe you need\n" +"to refresh your browser.) You should be able to see the new commit made by the\n" +"Collaborator." +msgstr "" +"Take a look to the Owner's repository on its GitHub website now (maybe you need\n" +"to refresh your browser.) You should be able to see the new commit made by the\n" +"Collaborator." + +#: git-novice/_episodes/08-collab.md:104 +msgid "To download the Collaborator's changes from GitHub, the Owner now enters:" +msgstr "To download the Collaborator's changes from GitHub, the Owner now enters:" + +# code block +#: git-novice/_episodes/08-collab.md:111 +#: git-novice/_locale/es/_episodes/08-collab.md:97 +msgid "" +"~~~\n" +"remote: Counting objects: 4, done.\n" +"remote: Compressing objects: 100% (2/2), done.\n" +"remote: Total 3 (delta 0), reused 3 (delta 0)\n" +"Unpacking objects: 100% (3/3), done.\n" +"From https://github.com/vlad/planets\n" +" * branch master -> FETCH_HEAD\n" +"Updating 9272da5..29aba7c\n" +"Fast-forward\n" +" pluto.txt | 1 +\n" +" 1 file changed, 1 insertion(+)\n" +" create mode 100644 pluto.txt\n" +"~~~" +msgstr "" +"~~~\n" +"remote: Counting objects: 4, done.\n" +"remote: Compressing objects: 100% (2/2), done.\n" +"remote: Total 3 (delta 0), reused 3 (delta 0)\n" +"Unpacking objects: 100% (3/3), done.\n" +"From https://github.com/vlad/planets\n" +" * branch master -> FETCH_HEAD\n" +"Updating 9272da5..29aba7c\n" +"Fast-forward\n" +" pluto.txt | 1 +\n" +" 1 file changed, 1 insertion(+)\n" +" create mode 100644 pluto.txt\n" +"~~~" + +#: git-novice/_episodes/08-collab.md:126 +msgid "" +"Now the three repositories (Owner's local, Collaborator's local, and Owner's on\n" +"GitHub) are back in sync." +msgstr "" +"Now the three repositories (Owner's local, Collaborator's local, and Owner's on\n" +"GitHub) are back in sync." + +# blockquote, which can be cascaded +#: git-novice/_episodes/08-collab.md:129 +msgid "> ## A Basic Collaborative Workflow" +msgstr "> ## A Basic Collaborative Workflow" + +#: git-novice/_episodes/08-collab.md:130 +msgid "" +">\n" +"> In practice, it is good to be sure that you have an updated version of the\n" +"> repository you are collaborating on, so you should `git pull` before making\n" +"> our changes. The basic collaborative workflow would be:\n" +">\n" +"> * update your local repo with `git pull origin master`,\n" +"> * make your changes and stage them with `git add`,\n" +"> * commit your changes with `git commit -m`, and\n" +"> * upload the changes to GitHub with `git push origin master`\n" +">\n" +"> It is better to make many commits with smaller changes rather than\n" +"> of one commit with massive changes: small commits are easier to\n" +"> read and review." +msgstr "" +">\n" +"> In practice, it is good to be sure that you have an updated version of the\n" +"> repository you are collaborating on, so you should `git pull` before making\n" +"> our changes. The basic collaborative workflow would be:\n" +">\n" +"> * update your local repo with `git pull origin master`,\n" +"> * make your changes and stage them with `git add`,\n" +"> * commit your changes with `git commit -m`, and\n" +"> * upload the changes to GitHub with `git push origin master`\n" +">\n" +"> It is better to make many commits with smaller changes rather than\n" +"> of one commit with massive changes: small commits are easier to\n" +"> read and review." + +# blockquote, which can be cascaded +#: git-novice/_episodes/08-collab.md:145 +msgid "> ## Switch Roles and Repeat" +msgstr "> ## Switch Roles and Repeat" + +#: git-novice/_episodes/08-collab.md:146 +msgid "" +">\n" +"> Switch roles and repeat the whole process." +msgstr "" +">\n" +"> Switch roles and repeat the whole process." + +# blockquote, which can be cascaded +#: git-novice/_episodes/08-collab.md:150 +msgid "> ## Review Changes" +msgstr "> ## Review Changes" + +#: git-novice/_episodes/08-collab.md:151 +msgid "" +">\n" +"> The Owner pushed commits to the repository without giving any information\n" +"> to the Collaborator. How can the Collaborator find out what has changed with\n" +"> command line? And on GitHub?\n" +">\n" +"> > ## Solution\n" +"> > On the command line, the Collaborator can use ```git fetch origin master```\n" +"> > to get the remote changes into the local repository, but without merging\n" +"> > them. Then by running ```git diff master origin/master``` the Collaborator\n" +"> > will see the changes output in the terminal.\n" +"> >\n" +"> > On GitHub, the Collaborator can go to their own fork of the repository and\n" +"> > look right above the light blue latest commit bar for a gray bar saying\n" +"> > \"This branch is 1 commit behind Our-Repository:master.\" On the far right of\n" +"> > that gray bar is a Compare icon and link. On the Compare page the\n" +"> > Collaborator should change the base fork to their own repository, then click\n" +"> > the link in the paragraph above to \"compare across forks\", and finally\n" +"> > change the head fork to the main repository. This will show all the commits\n" +"> > that are different." +msgstr "" +">\n" +"> The Owner pushed commits to the repository without giving any information\n" +"> to the Collaborator. How can the Collaborator find out what has changed with\n" +"> command line? And on GitHub?\n" +">\n" +"> > ## Solution\n" +"> > On the command line, the Collaborator can use ```git fetch origin master```\n" +"> > to get the remote changes into the local repository, but without merging\n" +"> > them. Then by running ```git diff master origin/master``` the Collaborator\n" +"> > will see the changes output in the terminal.\n" +"> >\n" +"> > On GitHub, the Collaborator can go to their own fork of the repository and\n" +"> > look right above the light blue latest commit bar for a gray bar saying\n" +"> > \"This branch is 1 commit behind Our-Repository:master.\" On the far right of\n" +"> > that gray bar is a Compare icon and link. On the Compare page the\n" +"> > Collaborator should change the base fork to their own repository, then click\n" +"> > the link in the paragraph above to \"compare across forks\", and finally\n" +"> > change the head fork to the main repository. This will show all the commits\n" +"> > that are different." + +# blockquote, which can be cascaded +#: git-novice/_episodes/08-collab.md:173 +msgid "> ## Comment Changes in GitHub" +msgstr "> ## Comment Changes in GitHub" + +#: git-novice/_episodes/08-collab.md:174 +msgid "" +">\n" +"> The Collaborator has some questions about one line change made by the Owner and\n" +"> has some suggestions to propose.\n" +">\n" +"> With GitHub, it is possible to comment the diff of a commit. Over the line of\n" +"> code to comment, a blue comment icon appears to open a comment window.\n" +">\n" +"> The Collaborator posts its comments and suggestions using GitHub interface." +msgstr "" +">\n" +"> The Collaborator has some questions about one line change made by the Owner and\n" +"> has some suggestions to propose.\n" +">\n" +"> With GitHub, it is possible to comment the diff of a commit. Over the line of\n" +"> code to comment, a blue comment icon appears to open a comment window.\n" +">\n" +"> The Collaborator posts its comments and suggestions using GitHub interface." + +# blockquote, which can be cascaded +#: git-novice/_episodes/08-collab.md:184 +msgid "> ## Version History, Backup, and Version Control" +msgstr "> ## Version History, Backup, and Version Control" + +#: git-novice/_episodes/08-collab.md:185 +msgid "" +">\n" +"> Some backup software can keep a history of the versions of your files. They also\n" +"> allows you to recover specific versions. How is this functionality different from version control?\n" +"> What are some of the benefits of using version control, Git and GitHub?" +msgstr "" +">\n" +"> Some backup software can keep a history of the versions of your files. They also\n" +"> allows you to recover specific versions. How is this functionality different from version control?\n" +"> What are some of the benefits of using version control, Git and GitHub?" + +# Front Matter +#: git-novice/_episodes/09-conflict.md:1 +msgid "" +"---\n" +"title: Conflicts\n" +"teaching: 15\n" +"exercises: 0\n" +"questions:\n" +"- \"What do I do when my changes conflict with someone else's?\"\n" +"objectives:\n" +"- \"Explain what conflicts are and when they can occur.\"\n" +"- \"Resolve conflicts resulting from a merge.\"\n" +"keypoints:\n" +"- \"Conflicts occur when two or more people change the same file(s) at the same time.\"\n" +"- \"The version control system does not allow people to overwrite each other's changes blindly, but highlights conflicts so that they can be resolved.\"\n" +"---" +msgstr "" +"---\n" +"title: Conflicts\n" +"teaching: 15\n" +"exercises: 0\n" +"questions:\n" +"- \"What do I do when my changes conflict with someone else's?\"\n" +"objectives:\n" +"- \"Explain what conflicts are and when they can occur.\"\n" +"- \"Resolve conflicts resulting from a merge.\"\n" +"keypoints:\n" +"- \"Conflicts occur when two or more people change the same file(s) at the same time.\"\n" +"- \"The version control system does not allow people to overwrite each other's changes blindly, but highlights conflicts so that they can be resolved.\"\n" +"---" + +#: git-novice/_episodes/09-conflict.md:15 +msgid "" +"As soon as people can work in parallel, they'll likely step on each other's\n" +"toes. This will even happen with a single person: if we are working on\n" +"a piece of software on both our laptop and a server in the lab, we could make\n" +"different changes to each copy. Version control helps us manage these\n" +"[conflicts]({{ page.root }}/reference#conflicts) by giving us tools to\n" +"[resolve]({{ page.root }}/reference#resolve) overlapping changes." +msgstr "" +"As soon as people can work in parallel, they'll likely step on each other's\n" +"toes. This will even happen with a single person: if we are working on\n" +"a piece of software on both our laptop and a server in the lab, we could make\n" +"different changes to each copy. Version control helps us manage these\n" +"[conflicts]({{ page.root }}/reference#conflicts) by giving us tools to\n" +"[resolve]({{ page.root }}/reference#resolve) overlapping changes." + +#: git-novice/_episodes/09-conflict.md:22 +msgid "" +"To see how we can resolve conflicts, we must first create one. The file\n" +"`mars.txt` currently looks like this in both partners' copies of our `planets`\n" +"repository:" +msgstr "" +"To see how we can resolve conflicts, we must first create one. The file\n" +"`mars.txt` currently looks like this in both partners' copies of our `planets`\n" +"repository:" + +#: git-novice/_episodes/09-conflict.md:38 +msgid "Let's add a line to one partner's copy only:" +msgstr "Let's add a line to one partner's copy only:" + +# code block +#: git-novice/_episodes/09-conflict.md:46 +#: git-novice/_locale/es/_episodes/09-conflict.md:40 +msgid "" +"~~~\n" +"Cold and dry, but everything is my favorite color\n" +"The two moons may be a problem for Wolfman\n" +"But the Mummy will appreciate the lack of humidity\n" +"This line added to Wolfman's copy\n" +"~~~" +msgstr "" +"~~~\n" +"Cold and dry, but everything is my favorite color\n" +"The two moons may be a problem for ドラえもん\n" +"But the Mummy will appreciate the lack of humidity\n" +"This line added to ドラえもん's copy\n" +"~~~" + +#: git-novice/_episodes/09-conflict.md:54 +msgid "and then push the change to GitHub:" +msgstr "and then push the change to GitHub:" + +# code block +#: git-novice/_episodes/09-conflict.md:56 +#: git-novice/_locale/es/_episodes/09-conflict.md:50 +msgid "" +"~~~\n" +"$ git add mars.txt\n" +"$ git commit -m \"Add a line in our home copy\"\n" +"~~~" +msgstr "" +"~~~\n" +"$ git add mars.txt\n" +"$ git commit -m \"Add a line in our home copy\"\n" +"~~~" + +# code block +#: git-novice/_episodes/09-conflict.md:62 +#: git-novice/_locale/es/_episodes/09-conflict.md:56 +msgid "" +"~~~\n" +"[master 5ae9631] Add a line in our home copy\n" +" 1 file changed, 1 insertion(+)\n" +"~~~" +msgstr "" +"~~~\n" +"[master 5ae9631] Add a line in our home copy\n" +" 1 file changed, 1 insertion(+)\n" +"~~~" + +# code block +#: git-novice/_episodes/09-conflict.md:73 +#: git-novice/_locale/es/_episodes/09-conflict.md:67 +msgid "" +"~~~\n" +"Counting objects: 5, done.\n" +"Delta compression using up to 4 threads.\n" +"Compressing objects: 100% (3/3), done.\n" +"Writing objects: 100% (3/3), 352 bytes, done.\n" +"Total 3 (delta 1), reused 0 (delta 0)\n" +"To https://github.com/vlad/planets\n" +" 29aba7c..dabb4c8 master -> master\n" +"~~~" +msgstr "" +"~~~\n" +"Counting objects: 5, done.\n" +"Delta compression using up to 4 threads.\n" +"Compressing objects: 100% (3/3), done.\n" +"Writing objects: 100% (3/3), 352 bytes, done.\n" +"Total 3 (delta 1), reused 0 (delta 0)\n" +"To https://github.com/vlad/planets\n" +" 29aba7c..dabb4c8 master -> master\n" +"~~~" + +#: git-novice/_episodes/09-conflict.md:84 +msgid "" +"Now let's have the other partner\n" +"make a different change to their copy\n" +"*without* updating from GitHub:" +msgstr "" +"Now let's have the other partner\n" +"make a different change to their copy\n" +"*without* updating from GitHub:" + +# code block +#: git-novice/_episodes/09-conflict.md:94 +#: git-novice/_locale/es/_episodes/09-conflict.md:88 +msgid "" +"~~~\n" +"Cold and dry, but everything is my favorite color\n" +"The two moons may be a problem for Wolfman\n" +"But the Mummy will appreciate the lack of humidity\n" +"We added a different line in the other copy\n" +"~~~" +msgstr "" +"~~~\n" +"Cold and dry, but everything is my favorite color\n" +"The two moons may be a problem for ドラえもん\n" +"But the Mummy will appreciate the lack of humidity\n" +"We added a different line in the other copy\n" +"~~~" + +#: git-novice/_episodes/09-conflict.md:102 +msgid "We can commit the change locally:" +msgstr "We can commit the change locally:" + +# code block +#: git-novice/_episodes/09-conflict.md:104 +#: git-novice/_locale/es/_episodes/09-conflict.md:98 +msgid "" +"~~~\n" +"$ git add mars.txt\n" +"$ git commit -m \"Add a line in my copy\"\n" +"~~~" +msgstr "" +"~~~\n" +"$ git add mars.txt\n" +"$ git commit -m \"Add a line in my copy\"\n" +"~~~" + +# code block +#: git-novice/_episodes/09-conflict.md:110 +#: git-novice/_locale/es/_episodes/09-conflict.md:104 +msgid "" +"~~~\n" +"[master 07ebc69] Add a line in my copy\n" +" 1 file changed, 1 insertion(+)\n" +"~~~" +msgstr "" +"~~~\n" +"[master 07ebc69] Add a line in my copy\n" +" 1 file changed, 1 insertion(+)\n" +"~~~" + +#: git-novice/_episodes/09-conflict.md:116 +msgid "but Git won't let us push it to GitHub:" +msgstr "but Git won't let us push it to GitHub:" + +# code block +#: git-novice/_episodes/09-conflict.md:123 +#: git-novice/_locale/es/_episodes/09-conflict.md:117 +msgid "" +"~~~\n" +"To https://github.com/vlad/planets.git\n" +" ! [rejected] master -> master (non-fast-forward)\n" +"error: failed to push some refs to 'https://github.com/vlad/planets.git'\n" +"hint: Updates were rejected because the tip of your current branch is behind\n" +"hint: its remote counterpart. Merge the remote changes (e.g. 'git pull')\n" +"hint: before pushing again.\n" +"hint: See the 'Note about fast-forwards' in 'git push --help' for details.\n" +"~~~" +msgstr "" +"~~~\n" +"To https://github.com/vlad/planets.git\n" +" ! [rejected] master -> master (non-fast-forward)\n" +"error: failed to push some refs to 'https://github.com/vlad/planets.git'\n" +"hint: Updates were rejected because the tip of your current branch is behind\n" +"hint: its remote counterpart. Merge the remote changes (e.g. 'git pull')\n" +"hint: before pushing again.\n" +"hint: See the 'Note about fast-forwards' in 'git push --help' for details.\n" +"~~~" + +#: git-novice/_episodes/09-conflict.md:134 +#: git-novice/_locale/es/_episodes/09-conflict.md:128 +msgid "![The Conflicting Changes](../fig/conflict.svg)" +msgstr "![The Conflicting Changes](../fig/conflict.svg)" + +#: git-novice/_episodes/09-conflict.md:136 +msgid "" +"Git rejects the push because it detects that the remote repository has new updates that have not been\n" +"incorporated into the local branch.\n" +"What we have to do is pull the changes from GitHub,\n" +"[merge]({{ page.root }}/reference#merge) them into the copy we're currently working in,\n" +"and then push that.\n" +"Let's start by pulling:" +msgstr "" +"Git rejects the push because it detects that the remote repository has new updates that have not been\n" +"incorporated into the local branch.\n" +"What we have to do is pull the changes from GitHub,\n" +"[merge]({{ page.root }}/reference#merge) them into the copy we're currently working in,\n" +"and then push that.\n" +"Let's start by pulling:" + +# code block +#: git-novice/_episodes/09-conflict.md:148 +#: git-novice/_locale/es/_episodes/09-conflict.md:142 +msgid "" +"~~~\n" +"remote: Counting objects: 5, done.\n" +"remote: Compressing objects: 100% (2/2), done.\n" +"remote: Total 3 (delta 1), reused 3 (delta 1)\n" +"Unpacking objects: 100% (3/3), done.\n" +"From https://github.com/vlad/planets\n" +" * branch master -> FETCH_HEAD\n" +"Auto-merging mars.txt\n" +"CONFLICT (content): Merge conflict in mars.txt\n" +"Automatic merge failed; fix conflicts and then commit the result.\n" +"~~~" +msgstr "" +"~~~\n" +"remote: Counting objects: 5, done.\n" +"remote: Compressing objects: 100% (2/2), done.\n" +"remote: Total 3 (delta 1), reused 3 (delta 1)\n" +"Unpacking objects: 100% (3/3), done.\n" +"From https://github.com/vlad/planets\n" +" * branch master -> FETCH_HEAD\n" +"Auto-merging mars.txt\n" +"CONFLICT (content): Merge conflict in mars.txt\n" +"Automatic merge failed; fix conflicts and then commit the result.\n" +"~~~" + +#: git-novice/_episodes/09-conflict.md:161 +msgid "" +"The `git pull` detects a conflict.\n" +"The conflict is marked in the affected file:" +msgstr "" +"The `git pull` detects a conflict.\n" +"The conflict is marked in the affected file:" + +# code block +#: git-novice/_episodes/09-conflict.md:169 +#: git-novice/_locale/es/_episodes/09-conflict.md:163 +msgid "" +"~~~\n" +"Cold and dry, but everything is my favorite color\n" +"The two moons may be a problem for Wolfman\n" +"But the Mummy will appreciate the lack of humidity\n" +"<<<<<<< HEAD\n" +"We added a different line in the other copy\n" +"=======\n" +"This line added to Wolfman's copy\n" +">>>>>>> dabb4c8c450e8475aee9b14b4383acc99f42af1d\n" +"~~~" +msgstr "" +"~~~\n" +"Cold and dry, but everything is my favorite color\n" +"The two moons may be a problem for ドラえもん\n" +"But the Mummy will appreciate the lack of humidity\n" +"<<<<<<< HEAD\n" +"We added a different line in the other copy\n" +"=======\n" +"This line added to ドラえもん's copy\n" +">>>>>>> dabb4c8c450e8475aee9b14b4383acc99f42af1d\n" +"~~~" + +#: git-novice/_episodes/09-conflict.md:181 +msgid "" +"Our change is preceded by `<<<<<<< HEAD`.\n" +"Git has then inserted `=======` as a separator between the conflicting changes\n" +"and marked the end of the content downloaded from GitHub with `>>>>>>>`.\n" +"(The string of letters and digits after that marker\n" +"identifies the commit we've just downloaded.)" +msgstr "" +"Our change is preceded by `<<<<<<< HEAD`.\n" +"Git has then inserted `=======` as a separator between the conflicting changes\n" +"and marked the end of the content downloaded from GitHub with `>>>>>>>`.\n" +"(The string of letters and digits after that marker\n" +"identifies the commit we've just downloaded.)" + +#: git-novice/_episodes/09-conflict.md:187 +msgid "" +"It is now up to us to edit this file to remove these markers\n" +"and reconcile the changes.\n" +"We can do anything we want: keep the change made in the local repository, keep\n" +"the change made in the remote repository, write something new to replace both,\n" +"or get rid of the change entirely.\n" +"Let's replace both so that the file looks like this:" +msgstr "" +"It is now up to us to edit this file to remove these markers\n" +"and reconcile the changes.\n" +"We can do anything we want: keep the change made in the local repository, keep\n" +"the change made in the remote repository, write something new to replace both,\n" +"or get rid of the change entirely.\n" +"Let's replace both so that the file looks like this:" + +# code block +#: git-novice/_episodes/09-conflict.md:199 +#: git-novice/_episodes/09-conflict.md:287 +#: git-novice/_locale/es/_episodes/09-conflict.md:193 +#: git-novice/_locale/es/_episodes/09-conflict.md:281 +msgid "" +"~~~\n" +"Cold and dry, but everything is my favorite color\n" +"The two moons may be a problem for Wolfman\n" +"But the Mummy will appreciate the lack of humidity\n" +"We removed the conflict on this line\n" +"~~~" +msgstr "" +"~~~\n" +"Cold and dry, but everything is my favorite color\n" +"The two moons may be a problem for ドラえもん\n" +"But the Mummy will appreciate the lack of humidity\n" +"We removed the conflict on this line\n" +"~~~" + +#: git-novice/_episodes/09-conflict.md:207 +msgid "" +"To finish merging,\n" +"we add `mars.txt` to the changes being made by the merge\n" +"and then commit:" +msgstr "" +"To finish merging,\n" +"we add `mars.txt` to the changes being made by the merge\n" +"and then commit:" + +# code block +#: git-novice/_episodes/09-conflict.md:211 +#: git-novice/_locale/es/_episodes/09-conflict.md:205 +msgid "" +"~~~\n" +"$ git add mars.txt\n" +"$ git status\n" +"~~~" +msgstr "" +"~~~\n" +"$ git add mars.txt\n" +"$ git status\n" +"~~~" + +# code block +#: git-novice/_episodes/09-conflict.md:217 +msgid "" +"~~~\n" +"On branch master\n" +"All conflicts fixed but you are still merging.\n" +" (use \"git commit\" to conclude merge)\n" +"\n" +"Changes to be committed:\n" +"\n" +"\tmodified: mars.txt\n" +"\n" +"~~~" +msgstr "" +"~~~\n" +"On branch master\n" +"All conflicts fixed but you are still merging.\n" +" (use \"git commit\" to conclude merge)\n" +"\n" +"Changes to be committed:\n" +"\n" +"\tmodified: mars.txt\n" +"\n" +"~~~" + +# code block +#: git-novice/_episodes/09-conflict.md:229 +#: git-novice/_locale/es/_episodes/09-conflict.md:223 +msgid "" +"~~~\n" +"$ git commit -m \"Merge changes from GitHub\"\n" +"~~~" +msgstr "" +"~~~\n" +"$ git commit -m \"Merge changes from GitHub\"\n" +"~~~" + +# code block +#: git-novice/_episodes/09-conflict.md:234 +#: git-novice/_locale/es/_episodes/09-conflict.md:228 +msgid "" +"~~~\n" +"[master 2abf2b1] Merge changes from GitHub\n" +"~~~" +msgstr "" +"~~~\n" +"[master 2abf2b1] Merge changes from GitHub\n" +"~~~" + +#: git-novice/_episodes/09-conflict.md:239 +msgid "Now we can push our changes to GitHub:" +msgstr "Now we can push our changes to GitHub:" + +# code block +#: git-novice/_episodes/09-conflict.md:246 +#: git-novice/_locale/es/_episodes/09-conflict.md:240 +msgid "" +"~~~\n" +"Counting objects: 10, done.\n" +"Delta compression using up to 4 threads.\n" +"Compressing objects: 100% (6/6), done.\n" +"Writing objects: 100% (6/6), 697 bytes, done.\n" +"Total 6 (delta 2), reused 0 (delta 0)\n" +"To https://github.com/vlad/planets.git\n" +" dabb4c8..2abf2b1 master -> master\n" +"~~~" +msgstr "" +"~~~\n" +"Counting objects: 10, done.\n" +"Delta compression using up to 4 threads.\n" +"Compressing objects: 100% (6/6), done.\n" +"Writing objects: 100% (6/6), 697 bytes, done.\n" +"Total 6 (delta 2), reused 0 (delta 0)\n" +"To https://github.com/vlad/planets.git\n" +" dabb4c8..2abf2b1 master -> master\n" +"~~~" + +#: git-novice/_episodes/09-conflict.md:257 +msgid "" +"Git keeps track of what we've merged with what,\n" +"so we don't have to fix things by hand again\n" +"when the collaborator who made the first change pulls again:" +msgstr "" +"Git keeps track of what we've merged with what,\n" +"so we don't have to fix things by hand again\n" +"when the collaborator who made the first change pulls again:" + +# code block +#: git-novice/_episodes/09-conflict.md:266 +#: git-novice/_locale/es/_episodes/09-conflict.md:260 +msgid "" +"~~~\n" +"remote: Counting objects: 10, done.\n" +"remote: Compressing objects: 100% (4/4), done.\n" +"remote: Total 6 (delta 2), reused 6 (delta 2)\n" +"Unpacking objects: 100% (6/6), done.\n" +"From https://github.com/vlad/planets\n" +" * branch master -> FETCH_HEAD\n" +"Updating dabb4c8..2abf2b1\n" +"Fast-forward\n" +" mars.txt | 2 +-\n" +" 1 file changed, 1 insertion(+), 1 deletion(-)\n" +"~~~" +msgstr "" +"~~~\n" +"remote: Counting objects: 10, done.\n" +"remote: Compressing objects: 100% (4/4), done.\n" +"remote: Total 6 (delta 2), reused 6 (delta 2)\n" +"Unpacking objects: 100% (6/6), done.\n" +"From https://github.com/vlad/planets\n" +" * branch master -> FETCH_HEAD\n" +"Updating dabb4c8..2abf2b1\n" +"Fast-forward\n" +" mars.txt | 2 +-\n" +" 1 file changed, 1 insertion(+), 1 deletion(-)\n" +"~~~" + +#: git-novice/_episodes/09-conflict.md:280 +msgid "We get the merged file:" +msgstr "We get the merged file:" + +#: git-novice/_episodes/09-conflict.md:295 +msgid "We don't need to merge again because Git knows someone has already done that." +msgstr "We don't need to merge again because Git knows someone has already done that." + +#: git-novice/_episodes/09-conflict.md:297 +msgid "" +"Git's ability to resolve conflicts is very useful, but conflict resolution\n" +"costs time and effort, and can introduce errors if conflicts are not resolved\n" +"correctly. If you find yourself resolving a lot of conflicts in a project,\n" +"consider these technical approaches to reducing them:" +msgstr "" +"Git's ability to resolve conflicts is very useful, but conflict resolution\n" +"costs time and effort, and can introduce errors if conflicts are not resolved\n" +"correctly. If you find yourself resolving a lot of conflicts in a project,\n" +"consider these technical approaches to reducing them:" + +# unordered list +#: git-novice/_episodes/09-conflict.md:302 +msgid "- Pull from upstream more frequently, especially before starting new work" +msgstr "- Pull from upstream more frequently, especially before starting new work" + +# unordered list +#: git-novice/_episodes/09-conflict.md:303 +msgid "- Use topic branches to segregate work, merging to master when complete" +msgstr "- Use topic branches to segregate work, merging to master when complete" + +# unordered list +#: git-novice/_episodes/09-conflict.md:304 +msgid "- Make smaller more atomic commits" +msgstr "- Make smaller more atomic commits" + +# unordered list +#: git-novice/_episodes/09-conflict.md:305 +msgid "- Where logically appropriate, break large files into smaller ones so that it is" +msgstr "- Where logically appropriate, break large files into smaller ones so that it is" + +#: git-novice/_episodes/09-conflict.md:306 +msgid " less likely that two authors will alter the same file simultaneously" +msgstr " less likely that two authors will alter the same file simultaneously" + +#: git-novice/_episodes/09-conflict.md:308 +msgid "Conflicts can also be minimized with project management strategies:" +msgstr "Conflicts can also be minimized with project management strategies:" + +# unordered list +#: git-novice/_episodes/09-conflict.md:310 +msgid "- Clarify who is responsible for what areas with your collaborators" +msgstr "- Clarify who is responsible for what areas with your collaborators" + +# unordered list +#: git-novice/_episodes/09-conflict.md:311 +msgid "- Discuss what order tasks should be carried out in with your collaborators so" +msgstr "- Discuss what order tasks should be carried out in with your collaborators so" + +#: git-novice/_episodes/09-conflict.md:312 +msgid "" +" that tasks expected to change the same lines won't be worked on simultaneously\n" +"- If the conflicts are stylistic churn (e.g. tabs vs. spaces), establish a\n" +" project convention that is governing and use code style tools (e.g.\n" +" `htmltidy`, `perltidy`, `rubocop`, etc.) to enforce, if necessary" +msgstr "" +" that tasks expected to change the same lines won't be worked on simultaneously\n" +"- If the conflicts are stylistic churn (e.g. tabs vs. spaces), establish a\n" +" project convention that is governing and use code style tools (e.g.\n" +" `htmltidy`, `perltidy`, `rubocop`, etc.) to enforce, if necessary" + +# blockquote, which can be cascaded +#: git-novice/_episodes/09-conflict.md:317 +msgid "> ## Solving Conflicts that You Create" +msgstr "> ## Solving Conflicts that You Create" + +#: git-novice/_episodes/09-conflict.md:318 +msgid "" +">\n" +"> Clone the repository created by your instructor.\n" +"> Add a new file to it,\n" +"> and modify an existing file (your instructor will tell you which one).\n" +"> When asked by your instructor,\n" +"> pull her changes from the repository to create a conflict,\n" +"> then resolve it." +msgstr "" +">\n" +"> Clone the repository created by your instructor.\n" +"> Add a new file to it,\n" +"> and modify an existing file (your instructor will tell you which one).\n" +"> When asked by your instructor,\n" +"> pull her changes from the repository to create a conflict,\n" +"> then resolve it." + +# blockquote, which can be cascaded +#: git-novice/_episodes/09-conflict.md:327 +msgid "> ## Conflicts on Non-textual files" +msgstr "> ## Conflicts on Non-textual files" + +#: git-novice/_episodes/09-conflict.md:328 +msgid "" +">\n" +"> What does Git do\n" +"> when there is a conflict in an image or some other non-textual file\n" +"> that is stored in version control?\n" +">\n" +"> > ## Solution\n" +"> >\n" +"> > Let's try it. Suppose Dracula takes a picture of Martian surface and\n" +"> > calls it `mars.jpg`.\n" +"> >\n" +"> > If you do not have an image file of Mars available, you can create\n" +"> > a dummy binary file like this:\n" +"> >\n" +"> > ~~~\n" +"> > $ head --bytes 1024 /dev/urandom > mars.jpg\n" +"> > $ ls -lh mars.jpg\n" +"> > ~~~\n" +"> > {: .language-bash}\n" +"> >\n" +"> > ~~~\n" +"> > -rw-r--r-- 1 vlad 57095 1.0K Mar 8 20:24 mars.jpg\n" +"> > ~~~\n" +"> > {: .output}\n" +"> >\n" +"> > `ls` shows us that this created a 1-kilobyte file. It is full of\n" +"> > random bytes read from the special file, `/dev/urandom`.\n" +"> >\n" +"> > Now, suppose Dracula adds `mars.jpg` to his repository:\n" +"> >\n" +"> > ~~~\n" +"> > $ git add mars.jpg\n" +"> > $ git commit -m \"Add picture of Martian surface\"\n" +"> > ~~~\n" +"> > {: .language-bash}\n" +"> >\n" +"> > ~~~\n" +"> > [master 8e4115c] Add picture of Martian surface\n" +"> > 1 file changed, 0 insertions(+), 0 deletions(-)\n" +"> > create mode 100644 mars.jpg\n" +"> > ~~~\n" +"> > {: .output}\n" +"> >\n" +"> > Suppose that Wolfman has added a similar picture in the meantime.\n" +"> > His is a picture of the Martian sky, but it is *also* called `mars.jpg`.\n" +"> > When Dracula tries to push, he gets a familiar message:\n" +"> >\n" +"> > ~~~\n" +"> > $ git push origin master\n" +"> > ~~~\n" +"> > {: .language-bash}\n" +"> >\n" +"> > ~~~\n" +"> > To https://github.com/vlad/planets.git\n" +"> > ! [rejected] master -> master (fetch first)\n" +"> > error: failed to push some refs to 'https://github.com/vlad/planets.git'\n" +"> > hint: Updates were rejected because the remote contains work that you do\n" +"> > hint: not have locally. This is usually caused by another repository pushing\n" +"> > hint: to the same ref. You may want to first integrate the remote changes\n" +"> > hint: (e.g., 'git pull ...') before pushing again.\n" +"> > hint: See the 'Note about fast-forwards' in 'git push --help' for details.\n" +"> > ~~~\n" +"> > {: .output}\n" +"> >\n" +"> > We've learned that we must pull first and resolve any conflicts:\n" +"> >\n" +"> > ~~~\n" +"> > $ git pull origin master\n" +"> > ~~~\n" +"> > {: .language-bash}\n" +"> >\n" +"> > When there is a conflict on an image or other binary file, git prints\n" +"> > a message like this:\n" +"> >\n" +"> > ~~~\n" +"> > $ git pull origin master\n" +"> > remote: Counting objects: 3, done.\n" +"> > remote: Compressing objects: 100% (3/3), done.\n" +"> > remote: Total 3 (delta 0), reused 0 (delta 0)\n" +"> > Unpacking objects: 100% (3/3), done.\n" +"> > From https://github.com/vlad/planets.git\n" +"> > * branch master -> FETCH_HEAD\n" +"> > 6a67967..439dc8c master -> origin/master\n" +"> > warning: Cannot merge binary files: mars.jpg (HEAD vs. 439dc8c08869c342438f6dc4a2b615b05b93c76e)\n" +"> > Auto-merging mars.jpg\n" +"> > CONFLICT (add/add): Merge conflict in mars.jpg\n" +"> > Automatic merge failed; fix conflicts and then commit the result.\n" +"> > ~~~\n" +"> > {: .output}\n" +"> >\n" +"> > The conflict message here is mostly the same as it was for `mars.txt`, but\n" +"> > there is one key additional line:\n" +"> >\n" +"> > ~~~\n" +"> > warning: Cannot merge binary files: mars.jpg (HEAD vs. 439dc8c08869c342438f6dc4a2b615b05b93c76e)\n" +"> > ~~~\n" +"> > {: .output}\n" +"> >\n" +"> > Git cannot automatically insert conflict markers into an image as it does\n" +"> > for text files. So, instead of editing the image file, we must check out\n" +"> > the version we want to keep. Then we can add and commit this version.\n" +"> >\n" +"> > On the key line above, Git has conveniently given us commit identifiers\n" +"> > for the two versions of `mars.jpg`. Our version is `HEAD`, and Wolfman's\n" +"> > version is `439dc8c0...`. If we want to use our version, we can use\n" +"> > `git checkout`:\n" +"> >\n" +"> > ~~~\n" +"> > $ git checkout HEAD mars.jpg\n" +"> > $ git add mars.jpg\n" +"> > $ git commit -m \"Use image of surface instead of sky\"\n" +"> > ~~~\n" +"> > {: .language-bash}\n" +"> >\n" +"> > ~~~\n" +"> > [master 21032c3] Use image of surface instead of sky\n" +"> > ~~~\n" +"> > {: .output}\n" +"> >\n" +"> > If instead we want to use Wolfman's version, we can use `git checkout` with\n" +"> > Wolfman's commit identifier, `439dc8c0`:\n" +"> >\n" +"> > ~~~\n" +"> > $ git checkout 439dc8c0 mars.jpg\n" +"> > $ git add mars.jpg\n" +"> > $ git commit -m \"Use image of sky instead of surface\"\n" +"> > ~~~\n" +"> > {: .language-bash}\n" +"> >\n" +"> > ~~~\n" +"> > [master da21b34] Use image of sky instead of surface\n" +"> > ~~~\n" +"> > {: .output}\n" +"> >\n" +"> > We can also keep *both* images. The catch is that we cannot keep them\n" +"> > under the same name. But, we can check out each version in succession\n" +"> > and *rename* it, then add the renamed versions. First, check out each\n" +"> > image and rename it:\n" +"> >\n" +"> > ~~~\n" +"> > $ git checkout HEAD mars.jpg\n" +"> > $ git mv mars.jpg mars-surface.jpg\n" +"> > $ git checkout 439dc8c0 mars.jpg\n" +"> > $ mv mars.jpg mars-sky.jpg\n" +"> > ~~~\n" +"> > {: .language-bash}\n" +"> >\n" +"> > Then, remove the old `mars.jpg` and add the two new files:\n" +"> >\n" +"> > ~~~\n" +"> > $ git rm mars.jpg\n" +"> > $ git add mars-surface.jpg\n" +"> > $ git add mars-sky.jpg\n" +"> > $ git commit -m \"Use two images: surface and sky\"\n" +"> > ~~~\n" +"> > {: .language-bash}\n" +"> >\n" +"> > ~~~\n" +"> > [master 94ae08c] Use two images: surface and sky\n" +"> > 2 files changed, 0 insertions(+), 0 deletions(-)\n" +"> > create mode 100644 mars-sky.jpg\n" +"> > rename mars.jpg => mars-surface.jpg (100%)\n" +"> > ~~~\n" +"> > {: .output}\n" +"> >\n" +"> > Now both images of Mars are checked into the repository, and `mars.jpg`\n" +"> > no longer exists." +msgstr "" +">\n" +"> What does Git do\n" +"> when there is a conflict in an image or some other non-textual file\n" +"> that is stored in version control?\n" +">\n" +"> > ## Solution\n" +"> >\n" +"> > Let's try it. Suppose のび太 takes a picture of Martian surface and\n" +"> > calls it `mars.jpg`.\n" +"> >\n" +"> > If you do not have an image file of Mars available, you can create\n" +"> > a dummy binary file like this:\n" +"> >\n" +"> > ~~~\n" +"> > $ head --bytes 1024 /dev/urandom > mars.jpg\n" +"> > $ ls -lh mars.jpg\n" +"> > ~~~\n" +"> > {: .language-bash}\n" +"> >\n" +"> > ~~~\n" +"> > -rw-r--r-- 1 vlad 57095 1.0K Mar 8 20:24 mars.jpg\n" +"> > ~~~\n" +"> > {: .output}\n" +"> >\n" +"> > `ls` shows us that this created a 1-kilobyte file. It is full of\n" +"> > random bytes read from the special file, `/dev/urandom`.\n" +"> >\n" +"> > Now, suppose のび太 adds `mars.jpg` to his repository:\n" +"> >\n" +"> > ~~~\n" +"> > $ git add mars.jpg\n" +"> > $ git commit -m \"Add picture of Martian surface\"\n" +"> > ~~~\n" +"> > {: .language-bash}\n" +"> >\n" +"> > ~~~\n" +"> > [master 8e4115c] Add picture of Martian surface\n" +"> > 1 file changed, 0 insertions(+), 0 deletions(-)\n" +"> > create mode 100644 mars.jpg\n" +"> > ~~~\n" +"> > {: .output}\n" +"> >\n" +"> > Suppose that ドラえもん has added a similar picture in the meantime.\n" +"> > His is a picture of the Martian sky, but it is *also* called `mars.jpg`.\n" +"> > When のび太 tries to push, he gets a familiar message:\n" +"> >\n" +"> > ~~~\n" +"> > $ git push origin master\n" +"> > ~~~\n" +"> > {: .language-bash}\n" +"> >\n" +"> > ~~~\n" +"> > To https://github.com/vlad/planets.git\n" +"> > ! [rejected] master -> master (fetch first)\n" +"> > error: failed to push some refs to 'https://github.com/vlad/planets.git'\n" +"> > hint: Updates were rejected because the remote contains work that you do\n" +"> > hint: not have locally. This is usually caused by another repository pushing\n" +"> > hint: to the same ref. You may want to first integrate the remote changes\n" +"> > hint: (e.g., 'git pull ...') before pushing again.\n" +"> > hint: See the 'Note about fast-forwards' in 'git push --help' for details.\n" +"> > ~~~\n" +"> > {: .output}\n" +"> >\n" +"> > We've learned that we must pull first and resolve any conflicts:\n" +"> >\n" +"> > ~~~\n" +"> > $ git pull origin master\n" +"> > ~~~\n" +"> > {: .language-bash}\n" +"> >\n" +"> > When there is a conflict on an image or other binary file, git prints\n" +"> > a message like this:\n" +"> >\n" +"> > ~~~\n" +"> > $ git pull origin master\n" +"> > remote: Counting objects: 3, done.\n" +"> > remote: Compressing objects: 100% (3/3), done.\n" +"> > remote: Total 3 (delta 0), reused 0 (delta 0)\n" +"> > Unpacking objects: 100% (3/3), done.\n" +"> > From https://github.com/vlad/planets.git\n" +"> > * branch master -> FETCH_HEAD\n" +"> > 6a67967..439dc8c master -> origin/master\n" +"> > warning: Cannot merge binary files: mars.jpg (HEAD vs. 439dc8c08869c342438f6dc4a2b615b05b93c76e)\n" +"> > Auto-merging mars.jpg\n" +"> > CONFLICT (add/add): Merge conflict in mars.jpg\n" +"> > Automatic merge failed; fix conflicts and then commit the result.\n" +"> > ~~~\n" +"> > {: .output}\n" +"> >\n" +"> > The conflict message here is mostly the same as it was for `mars.txt`, but\n" +"> > there is one key additional line:\n" +"> >\n" +"> > ~~~\n" +"> > warning: Cannot merge binary files: mars.jpg (HEAD vs. 439dc8c08869c342438f6dc4a2b615b05b93c76e)\n" +"> > ~~~\n" +"> > {: .output}\n" +"> >\n" +"> > Git cannot automatically insert conflict markers into an image as it does\n" +"> > for text files. So, instead of editing the image file, we must check out\n" +"> > the version we want to keep. Then we can add and commit this version.\n" +"> >\n" +"> > On the key line above, Git has conveniently given us commit identifiers\n" +"> > for the two versions of `mars.jpg`. Our version is `HEAD`, and ドラえもん's\n" +"> > version is `439dc8c0...`. If we want to use our version, we can use\n" +"> > `git checkout`:\n" +"> >\n" +"> > ~~~\n" +"> > $ git checkout HEAD mars.jpg\n" +"> > $ git add mars.jpg\n" +"> > $ git commit -m \"Use image of surface instead of sky\"\n" +"> > ~~~\n" +"> > {: .language-bash}\n" +"> >\n" +"> > ~~~\n" +"> > [master 21032c3] Use image of surface instead of sky\n" +"> > ~~~\n" +"> > {: .output}\n" +"> >\n" +"> > If instead we want to use ドラえもん's version, we can use `git checkout` with\n" +"> > ドラえもん's commit identifier, `439dc8c0`:\n" +"> >\n" +"> > ~~~\n" +"> > $ git checkout 439dc8c0 mars.jpg\n" +"> > $ git add mars.jpg\n" +"> > $ git commit -m \"Use image of sky instead of surface\"\n" +"> > ~~~\n" +"> > {: .language-bash}\n" +"> >\n" +"> > ~~~\n" +"> > [master da21b34] Use image of sky instead of surface\n" +"> > ~~~\n" +"> > {: .output}\n" +"> >\n" +"> > We can also keep *both* images. The catch is that we cannot keep them\n" +"> > under the same name. But, we can check out each version in succession\n" +"> > and *rename* it, then add the renamed versions. First, check out each\n" +"> > image and rename it:\n" +"> >\n" +"> > ~~~\n" +"> > $ git checkout HEAD mars.jpg\n" +"> > $ git mv mars.jpg mars-surface.jpg\n" +"> > $ git checkout 439dc8c0 mars.jpg\n" +"> > $ mv mars.jpg mars-sky.jpg\n" +"> > ~~~\n" +"> > {: .language-bash}\n" +"> >\n" +"> > Then, remove the old `mars.jpg` and add the two new files:\n" +"> >\n" +"> > ~~~\n" +"> > $ git rm mars.jpg\n" +"> > $ git add mars-surface.jpg\n" +"> > $ git add mars-sky.jpg\n" +"> > $ git commit -m \"Use two images: surface and sky\"\n" +"> > ~~~\n" +"> > {: .language-bash}\n" +"> >\n" +"> > ~~~\n" +"> > [master 94ae08c] Use two images: surface and sky\n" +"> > 2 files changed, 0 insertions(+), 0 deletions(-)\n" +"> > create mode 100644 mars-sky.jpg\n" +"> > rename mars.jpg => mars-surface.jpg (100%)\n" +"> > ~~~\n" +"> > {: .output}\n" +"> >\n" +"> > Now both images of Mars are checked into the repository, and `mars.jpg`\n" +"> > no longer exists." + +# blockquote, which can be cascaded +#: git-novice/_episodes/09-conflict.md:497 +msgid "> ## A Typical Work Session" +msgstr "> ## A Typical Work Session" + +#: git-novice/_episodes/09-conflict.md:498 +msgid "" +">\n" +"> You sit down at your computer to work on a shared project that is tracked in a\n" +"> remote Git repository. During your work session, you take the following\n" +"> actions, but not in this order:\n" +">\n" +"> - *Make changes* by appending the number `100` to a text file `numbers.txt`\n" +"> - *Update remote* repository to match the local repository\n" +"> - *Celebrate* your success with beer(s)\n" +"> - *Update local* repository to match the remote repository\n" +"> - *Stage changes* to be committed\n" +"> - *Commit changes* to the local repository\n" +">\n" +"> In what order should you perform these actions to minimize the chances of\n" +"> conflicts? Put the commands above in order in the *action* column of the table\n" +"> below. When you have the order right, see if you can write the corresponding\n" +"> commands in the *command* column. A few steps are populated to get you\n" +"> started.\n" +">\n" +"> |order|action . . . . . . . . . . |command . . . . . . . . . . |\n" +"> |-----|---------------------------|----------------------------|\n" +"> |1 | | |\n" +"> |2 | | `echo 100 >> numbers.txt` |\n" +"> |3 | | |\n" +"> |4 | | |\n" +"> |5 | | |\n" +"> |6 | Celebrate! | `AFK` |\n" +">\n" +"> > ## Solution\n" +"> >\n" +"> > |order|action . . . . . . |command . . . . . . . . . . . . . . . . . . . |\n" +"> > |-----|-------------------|----------------------------------------------|\n" +"> > |1 | Update local | `git pull origin master` |\n" +"> > |2 | Make changes | `echo 100 >> numbers.txt` |\n" +"> > |3 | Stage changes | `git add numbers.txt` |\n" +"> > |4 | Commit changes | `git commit -m \"Add 100 to numbers.txt\"` |\n" +"> > |5 | Update remote | `git push origin master` |\n" +"> > |6 | Celebrate! | `AFK` |\n" +"> >" +msgstr "" +">\n" +"> You sit down at your computer to work on a shared project that is tracked in a\n" +"> remote Git repository. During your work session, you take the following\n" +"> actions, but not in this order:\n" +">\n" +"> - *Make changes* by appending the number `100` to a text file `numbers.txt`\n" +"> - *Update remote* repository to match the local repository\n" +"> - *Celebrate* your success with beer(s)\n" +"> - *Update local* repository to match the remote repository\n" +"> - *Stage changes* to be committed\n" +"> - *Commit changes* to the local repository\n" +">\n" +"> In what order should you perform these actions to minimize the chances of\n" +"> conflicts? Put the commands above in order in the *action* column of the table\n" +"> below. When you have the order right, see if you can write the corresponding\n" +"> commands in the *command* column. A few steps are populated to get you\n" +"> started.\n" +">\n" +"> |order|action . . . . . . . . . . |command . . . . . . . . . . |\n" +"> |-----|---------------------------|----------------------------|\n" +"> |1 | | |\n" +"> |2 | | `echo 100 >> numbers.txt` |\n" +"> |3 | | |\n" +"> |4 | | |\n" +"> |5 | | |\n" +"> |6 | Celebrate! | `AFK` |\n" +">\n" +"> > ## Solution\n" +"> >\n" +"> > |order|action . . . . . . |command . . . . . . . . . . . . . . . . . . . |\n" +"> > |-----|-------------------|----------------------------------------------|\n" +"> > |1 | Update local | `git pull origin master` |\n" +"> > |2 | Make changes | `echo 100 >> numbers.txt` |\n" +"> > |3 | Stage changes | `git add numbers.txt` |\n" +"> > |4 | Commit changes | `git commit -m \"Add 100 to numbers.txt\"` |\n" +"> > |5 | Update remote | `git push origin master` |\n" +"> > |6 | Celebrate! | `AFK` |\n" +"> >" + +# Front Matter +#: git-novice/_episodes/10-open.md:1 +msgid "" +"---\n" +"title: Open Science\n" +"teaching: 5\n" +"exercises: 5\n" +"questions:\n" +"- \"How can version control help me make my work more open?\"\n" +"objectives:\n" +"- \"Explain how a version control system can be leveraged as an electronic lab notebook for computational work.\"\n" +"keypoints:\n" +"- \"Open scientific work is more useful and more highly cited than closed.\"\n" +"---" +msgstr "" +"---\n" +"title: Open Science\n" +"teaching: 5\n" +"exercises: 5\n" +"questions:\n" +"- \"How can version control help me make my work more open?\"\n" +"objectives:\n" +"- \"Explain how a version control system can be leveraged as an electronic lab notebook for computational work.\"\n" +"keypoints:\n" +"- \"Open scientific work is more useful and more highly cited than closed.\"\n" +"---" + +# blockquote, which can be cascaded +#: git-novice/_episodes/10-open.md:13 +msgid "> The opposite of \"open\" isn't \"closed\"." +msgstr "> The opposite of \"open\" isn't \"closed\"." + +# blockquote, which can be cascaded +#: git-novice/_episodes/10-open.md:14 +msgid "> The opposite of \"open\" is \"broken\"." +msgstr "> The opposite of \"open\" is \"broken\"." + +#: git-novice/_episodes/10-open.md:15 +#: git-novice/_locale/es/_episodes/10-open.md:15 +msgid "" +">\n" +"> --- John Wilbanks" +msgstr "" +">\n" +"> --- John Wilbanks" + +# SC/DC Template label +#: git-novice/_episodes/10-open.md:17 +#: git-novice/_locale/es/_episodes/10-open.md:17 +msgid "{: .quotation}" +msgstr "{: .quotation}" + +#: git-novice/_episodes/10-open.md:19 +msgid "" +"Free sharing of information might be the ideal in science,\n" +"but the reality is often more complicated.\n" +"Normal practice today looks something like this:" +msgstr "" +"Free sharing of information might be the ideal in science,\n" +"but the reality is often more complicated.\n" +"Normal practice today looks something like this:" + +# unordered list +#: git-novice/_episodes/10-open.md:23 +msgid "* A scientist collects some data and stores it on a machine" +msgstr "* A scientist collects some data and stores it on a machine" + +#: git-novice/_episodes/10-open.md:24 +msgid "" +" that is occasionally backed up by her department.\n" +"* She then writes or modifies a few small programs\n" +" (which also reside on her machine)\n" +" to analyze that data.\n" +"* Once she has some results,\n" +" she writes them up and submits her paper.\n" +" She might include her data—a growing number of journals require this—but\n" +" she probably doesn't include her code.\n" +"* Time passes.\n" +"* The journal sends her reviews written anonymously by a handful of other people in her field.\n" +" She revises her paper to satisfy them,\n" +" during which time she might also modify the scripts she wrote earlier,\n" +" and resubmits.\n" +"* More time passes.\n" +"* The paper is eventually published.\n" +" It might include a link to an online copy of her data,\n" +" but the paper itself will be behind a paywall:\n" +" only people who have personal or institutional access\n" +" will be able to read it." +msgstr "" +" that is occasionally backed up by her department.\n" +"* She then writes or modifies a few small programs\n" +" (which also reside on her machine)\n" +" to analyze that data.\n" +"* Once she has some results,\n" +" she writes them up and submits her paper.\n" +" She might include her data—a growing number of journals require this—but\n" +" she probably doesn't include her code.\n" +"* Time passes.\n" +"* The journal sends her reviews written anonymously by a handful of other people in her field.\n" +" She revises her paper to satisfy them,\n" +" during which time she might also modify the scripts she wrote earlier,\n" +" and resubmits.\n" +"* More time passes.\n" +"* The paper is eventually published.\n" +" It might include a link to an online copy of her data,\n" +" but the paper itself will be behind a paywall:\n" +" only people who have personal or institutional access\n" +" will be able to read it." + +#: git-novice/_episodes/10-open.md:44 +msgid "" +"For a growing number of scientists,\n" +"though,\n" +"the process looks like this:" +msgstr "" +"For a growing number of scientists,\n" +"though,\n" +"the process looks like this:" + +# unordered list +#: git-novice/_episodes/10-open.md:48 +msgid "* The data that the scientist collects is stored in an open access repository" +msgstr "* The data that the scientist collects is stored in an open access repository" + +#: git-novice/_episodes/10-open.md:49 +msgid "" +" like [figshare](https://figshare.com/) or\n" +" [Zenodo](https://zenodo.org), possibly as soon as it's collected,\n" +" and given its own\n" +" [Digital Object Identifier](https://en.wikipedia.org/wiki/Digital_object_identifier) (DOI).\n" +" Or the data was already published and is stored in\n" +" [Dryad](https://datadryad.org/).\n" +"* The scientist creates a new repository on GitHub to hold her work.\n" +"* As she does her analysis,\n" +" she pushes changes to her scripts\n" +" (and possibly some output files)\n" +" to that repository.\n" +" She also uses the repository for her paper;\n" +" that repository is then the hub for collaboration with her colleagues.\n" +"* When she's happy with the state of her paper,\n" +" she posts a version to [arXiv](https://arxiv.org/)\n" +" or some other preprint server\n" +" to invite feedback from peers.\n" +"* Based on that feedback,\n" +" she may post several revisions\n" +" before finally submitting her paper to a journal.\n" +"* The published paper includes links to her preprint\n" +" and to her code and data repositories,\n" +" which makes it much easier for other scientists\n" +" to use her work as starting point for their own research." +msgstr "" +" like [figshare](https://figshare.com/) or\n" +" [Zenodo](https://zenodo.org), possibly as soon as it's collected,\n" +" and given its own\n" +" [Digital Object Identifier](https://en.wikipedia.org/wiki/Digital_object_identifier) (DOI).\n" +" Or the data was already published and is stored in\n" +" [Dryad](https://datadryad.org/).\n" +"* The scientist creates a new repository on GitHub to hold her work.\n" +"* As she does her analysis,\n" +" she pushes changes to her scripts\n" +" (and possibly some output files)\n" +" to that repository.\n" +" She also uses the repository for her paper;\n" +" that repository is then the hub for collaboration with her colleagues.\n" +"* When she's happy with the state of her paper,\n" +" she posts a version to [arXiv](https://arxiv.org/)\n" +" or some other preprint server\n" +" to invite feedback from peers.\n" +"* Based on that feedback,\n" +" she may post several revisions\n" +" before finally submitting her paper to a journal.\n" +"* The published paper includes links to her preprint\n" +" and to her code and data repositories,\n" +" which makes it much easier for other scientists\n" +" to use her work as starting point for their own research." + +#: git-novice/_episodes/10-open.md:74 +msgid "" +"This open model accelerates discovery:\n" +"the more open work is,\n" +"[the more widely it is cited and re-used](https://doi.org/10.1371/journal.pone.0000308).\n" +"However,\n" +"people who want to work this way need to make some decisions\n" +"about what exactly \"open\" means and how to do it. You can find more on the different aspects of Open Science in [this book](https://link.springer.com/book/10.1007/978-3-319-00026-8)." +msgstr "" +"This open model accelerates discovery:\n" +"the more open work is,\n" +"[the more widely it is cited and re-used](https://doi.org/10.1371/journal.pone.0000308).\n" +"However,\n" +"people who want to work this way need to make some decisions\n" +"about what exactly \"open\" means and how to do it. You can find more on the different aspects of Open Science in [this book](https://link.springer.com/book/10.1007/978-3-319-00026-8)." + +#: git-novice/_episodes/10-open.md:81 +msgid "" +"This is one of the (many) reasons we teach version control.\n" +"When used diligently,\n" +"it answers the \"how\" question\n" +"by acting as a shareable electronic lab notebook for computational work:" +msgstr "" +"This is one of the (many) reasons we teach version control.\n" +"When used diligently,\n" +"it answers the \"how\" question\n" +"by acting as a shareable electronic lab notebook for computational work:" + +# unordered list +#: git-novice/_episodes/10-open.md:86 +msgid "* The conceptual stages of your work are documented, including who did" +msgstr "* The conceptual stages of your work are documented, including who did" + +#: git-novice/_episodes/10-open.md:87 +msgid "" +" what and when. Every step is stamped with an identifier (the commit ID)\n" +" that is for most intents and purposes unique.\n" +"* You can tie documentation of rationale, ideas, and other\n" +" intellectual work directly to the changes that spring from them.\n" +"* You can refer to what you used in your research to obtain your\n" +" computational results in a way that is unique and recoverable.\n" +"* With a version control system such as Git, \n" +" the entire history of the repository is easy to archive for perpetuity." +msgstr "" +" what and when. Every step is stamped with an identifier (the commit ID)\n" +" that is for most intents and purposes unique.\n" +"* You can tie documentation of rationale, ideas, and other\n" +" intellectual work directly to the changes that spring from them.\n" +"* You can refer to what you used in your research to obtain your\n" +" computational results in a way that is unique and recoverable.\n" +"* With a version control system such as Git, \n" +" the entire history of the repository is easy to archive for perpetuity." + +# blockquote, which can be cascaded +#: git-novice/_episodes/10-open.md:96 +msgid "> ## Making Code Citable" +msgstr "> ## Making Code Citable" + +#: git-novice/_episodes/10-open.md:97 +#: git-novice/_locale/es/_episodes/10-open.md:53 +msgid "" +">\n" +"> Anything that is hosted in a version control repository (data, code, papers, \n" +"> etc.) can be turned into a citable object. You'll learn how to do this in\n" +"> [lesson 12: Citation]({{ page.root }}/12-citation/)." +msgstr "" +">\n" +"> Anything that is hosted in a version control repository (data, code, papers, \n" +"> etc.) can be turned into a citable object. You'll learn how to do this in\n" +"> [lesson 12: Citation]({{ page.root }}/12-citation/)." + +# blockquote, which can be cascaded +#: git-novice/_episodes/10-open.md:103 +msgid "> ## How Reproducible Is My Work?" +msgstr "> ## How Reproducible Is My Work?" + +#: git-novice/_episodes/10-open.md:104 +msgid "" +">\n" +"> Ask one of your labmates to reproduce a result you recently obtained\n" +"> using only what they can find in your papers or on the web.\n" +"> Try to do the same for one of their results,\n" +"> then try to do it for a result from a lab you work with." +msgstr "" +">\n" +"> Ask one of your labmates to reproduce a result you recently obtained\n" +"> using only what they can find in your papers or on the web.\n" +"> Try to do the same for one of their results,\n" +"> then try to do it for a result from a lab you work with." + +# blockquote, which can be cascaded +#: git-novice/_episodes/10-open.md:111 +msgid "> ## How to Find an Appropriate Data Repository?" +msgstr "> ## How to Find an Appropriate Data Repository?" + +#: git-novice/_episodes/10-open.md:112 +msgid "" +">\n" +"> Surf the internet for a couple of minutes and check out the data repositories\n" +"> mentioned above: [Figshare](https://figshare.com/), [Zenodo](https://zenodo.org),\n" +"> [Dryad](https://datadryad.org/). Depending on your field of research, you might\n" +"> find community-recognized repositories that are well-known in your field.\n" +"> You might also find useful [these data repositories recommended by Nature](\n" +"> https://www.nature.com/sdata/data-policies/repositories).\n" +"> Discuss with your neighbor which data repository you might want to\n" +"> approach for your current project and explain why." +msgstr "" +">\n" +"> Surf the internet for a couple of minutes and check out the data repositories\n" +"> mentioned above: [Figshare](https://figshare.com/), [Zenodo](https://zenodo.org),\n" +"> [Dryad](https://datadryad.org/). Depending on your field of research, you might\n" +"> find community-recognized repositories that are well-known in your field.\n" +"> You might also find useful [these data repositories recommended by Nature](\n" +"> https://www.nature.com/sdata/data-policies/repositories).\n" +"> Discuss with your neighbor which data repository you might want to\n" +"> approach for your current project and explain why." + +# Front Matter +#: git-novice/_episodes/11-licensing.md:1 +msgid "" +"---\n" +"title: Licensing\n" +"teaching: 5\n" +"exercises: 0\n" +"questions:\n" +"- \"What licensing information should I include with my work?\"\n" +"objectives:\n" +"- \"Explain why adding licensing information to a repository is important.\"\n" +"- \"Choose a proper license.\"\n" +"- \"Explain differences in licensing and social expectations.\"\n" +"keypoints:\n" +"- \"People who incorporate General Public License (GPL'd) software into their own software must make their software also open under the GPL license; most other open licenses do not require this.\"\n" +"- \"The Creative Commons family of licenses allow people to mix and match requirements and restrictions on attribution, creation of derivative works, further sharing, and commercialization.\"\n" +"- \"People who are not lawyers should not try to write licenses from scratch.\"\n" +"---" +msgstr "" +"---\n" +"title: Licensing\n" +"teaching: 5\n" +"exercises: 0\n" +"questions:\n" +"- \"What licensing information should I include with my work?\"\n" +"objectives:\n" +"- \"Explain why adding licensing information to a repository is important.\"\n" +"- \"Choose a proper license.\"\n" +"- \"Explain differences in licensing and social expectations.\"\n" +"keypoints:\n" +"- \"People who incorporate General Public License (GPL'd) software into their own software must make their software also open under the GPL license; most other open licenses do not require this.\"\n" +"- \"The Creative Commons family of licenses allow people to mix and match requirements and restrictions on attribution, creation of derivative works, further sharing, and commercialization.\"\n" +"- \"People who are not lawyers should not try to write licenses from scratch.\"\n" +"---" + +#: git-novice/_episodes/11-licensing.md:17 +msgid "" +"When a repository with source code, a manuscript or other creative\n" +"works becomes public, it should include a file `LICENSE` or\n" +"`LICENSE.txt` in the base directory of the repository that clearly\n" +"states under which license the content is being made available. This\n" +"is because creative works are automatically eligible for intellectual\n" +"property (and thus copyright) protection. Reusing creative works\n" +"without a license is dangerous, because the copyright holders could\n" +"sue you for copyright infringement." +msgstr "" +"When a repository with source code, a manuscript or other creative\n" +"works becomes public, it should include a file `LICENSE` or\n" +"`LICENSE.txt` in the base directory of the repository that clearly\n" +"states under which license the content is being made available. This\n" +"is because creative works are automatically eligible for intellectual\n" +"property (and thus copyright) protection. Reusing creative works\n" +"without a license is dangerous, because the copyright holders could\n" +"sue you for copyright infringement." + +#: git-novice/_episodes/11-licensing.md:26 +msgid "" +"A license solves this problem by granting rights to others (the\n" +"licensees) that they would otherwise not have. What rights are being\n" +"granted under which conditions differs, often only slightly, from one\n" +"license to another. In practice, a few licenses are by far the most\n" +"popular, and [choosealicense.com](https://choosealicense.com/) will\n" +"help you find a common license that suits your needs. Important\n" +"considerations include:" +msgstr "" +"A license solves this problem by granting rights to others (the\n" +"licensees) that they would otherwise not have. What rights are being\n" +"granted under which conditions differs, often only slightly, from one\n" +"license to another. In practice, a few licenses are by far the most\n" +"popular, and [choosealicense.com](https://choosealicense.com/) will\n" +"help you find a common license that suits your needs. Important\n" +"considerations include:" + +# unordered list +#: git-novice/_episodes/11-licensing.md:34 +msgid "* Whether you want to address patent rights." +msgstr "* Whether you want to address patent rights." + +# unordered list +#: git-novice/_episodes/11-licensing.md:35 +msgid "* Whether you require people distributing derivative works to also" +msgstr "* Whether you require people distributing derivative works to also" + +#: git-novice/_episodes/11-licensing.md:36 +msgid "" +" distribute their source code.\n" +"* Whether the content you are licensing is source code.\n" +"* Whether you want to license the code at all." +msgstr "" +" distribute their source code.\n" +"* Whether the content you are licensing is source code.\n" +"* Whether you want to license the code at all." + +#: git-novice/_episodes/11-licensing.md:40 +msgid "" +"Choosing a license that is in common use makes life easier for\n" +"contributors and users, because they are more likely to already be\n" +"familiar with the license and don't have to wade through a bunch of\n" +"jargon to decide if they're ok with it. The [Open Source\n" +"Initiative](https://opensource.org/licenses) and [Free Software\n" +"Foundation](https://www.gnu.org/licenses/license-list.html) both\n" +"maintain lists of licenses which are good choices." +msgstr "" +"Choosing a license that is in common use makes life easier for\n" +"contributors and users, because they are more likely to already be\n" +"familiar with the license and don't have to wade through a bunch of\n" +"jargon to decide if they're ok with it. The [Open Source\n" +"Initiative](https://opensource.org/licenses) and [Free Software\n" +"Foundation](https://www.gnu.org/licenses/license-list.html) both\n" +"maintain lists of licenses which are good choices." + +#: git-novice/_episodes/11-licensing.md:48 +msgid "" +"[This article](https://doi.org/10.1371/journal.pcbi.1002598) provides an excellent overview of\n" +"licensing and licensing options from the perspective of scientists who\n" +"also write code." +msgstr "" +"[This article](https://doi.org/10.1371/journal.pcbi.1002598) provides an excellent overview of\n" +"licensing and licensing options from the perspective of scientists who\n" +"also write code." + +#: git-novice/_episodes/11-licensing.md:52 +msgid "" +"At the end of the day what matters is that there is a clear statement\n" +"as to what the license is. Also, the license is best chosen from the\n" +"get-go, even if for a repository that is not public. Pushing off the\n" +"decision only makes it more complicated later, because each time a new\n" +"collaborator starts contributing, they, too, hold copyright and will\n" +"thus need to be asked for approval once a license is chosen." +msgstr "" +"At the end of the day what matters is that there is a clear statement\n" +"as to what the license is. Also, the license is best chosen from the\n" +"get-go, even if for a repository that is not public. Pushing off the\n" +"decision only makes it more complicated later, because each time a new\n" +"collaborator starts contributing, they, too, hold copyright and will\n" +"thus need to be asked for approval once a license is chosen." + +# blockquote, which can be cascaded +#: git-novice/_episodes/11-licensing.md:59 +msgid "> ## Can I Use Open License?" +msgstr "> ## Can I Use Open License?" + +#: git-novice/_episodes/11-licensing.md:60 +msgid "" +">\n" +"> Find out whether you are allowed to apply an open license to your software.\n" +"> Can you do this unilaterally,\n" +"> or do you need permission from someone in your institution?\n" +"> If so, who?" +msgstr "" +">\n" +"> Find out whether you are allowed to apply an open license to your software.\n" +"> Can you do this unilaterally,\n" +"> or do you need permission from someone in your institution?\n" +"> If so, who?" + +# blockquote, which can be cascaded +#: git-novice/_episodes/11-licensing.md:67 +msgid "> ## What licenses have I already accepted?" +msgstr "> ## What licenses have I already accepted?" + +#: git-novice/_episodes/11-licensing.md:68 +msgid "" +">\n" +"> Many of the software tools we use on a daily basis (including in this workshop) are\n" +"> released as open-source software. Pick a project on GitHub from the list below, or\n" +"> one of your own choosing. Find its license (usually in a file called `LICENSE` or\n" +"> `COPYING`) and talk about how it restricts your use of the software. Is it one of\n" +"> the licenses discussed in this session? How is it different?\n" +"> - [Git](https://github.com/git/git), the source-code management tool\n" +"> - [CPython](https://github.com/python/cpython), the standard implementation of the Python language\n" +"> - [Jupyter](https://github.com/jupyter), the project behind the web-based Python notebooks we'll be using\n" +"> - [EtherPad](https://github.com/ether/etherpad-lite), a real-time collaborative editor" +msgstr "" +">\n" +"> Many of the software tools we use on a daily basis (including in this workshop) are\n" +"> released as open-source software. Pick a project on GitHub from the list below, or\n" +"> one of your own choosing. Find its license (usually in a file called `LICENSE` or\n" +"> `COPYING`) and talk about how it restricts your use of the software. Is it one of\n" +"> the licenses discussed in this session? How is it different?\n" +"> - [Git](https://github.com/git/git), the source-code management tool\n" +"> - [CPython](https://github.com/python/cpython), the standard implementation of the Python language\n" +"> - [Jupyter](https://github.com/jupyter), the project behind the web-based Python notebooks we'll be using\n" +"> - [EtherPad](https://github.com/ether/etherpad-lite), a real-time collaborative editor" + +# Front Matter +#: git-novice/_episodes/12-citation.md:1 +msgid "" +"---\n" +"title: Citation\n" +"teaching: 2\n" +"exercises: 0\n" +"questions:\n" +"- \"How can I make my work easier to cite?\"\n" +"objectives:\n" +"- \"Make your work easy to cite\"\n" +"keypoints:\n" +"- \"Add a CITATION file to a repository to explain how you want your work cited.\"\n" +"---" +msgstr "" +"---\n" +"title: Citation\n" +"teaching: 2\n" +"exercises: 0\n" +"questions:\n" +"- \"How can I make my work easier to cite?\"\n" +"objectives:\n" +"- \"Make your work easy to cite\"\n" +"keypoints:\n" +"- \"Add a CITATION file to a repository to explain how you want your work cited.\"\n" +"---" + +#: git-novice/_episodes/12-citation.md:13 +msgid "" +"You may want to include a file called `CITATION` or `CITATION.txt`\n" +"that describes how to reference your project;\n" +"the [one for Software\n" +"Carpentry](https://github.com/swcarpentry/website/blob/gh-pages/CITATION)\n" +"states:" +msgstr "" +"You may want to include a file called `CITATION` or `CITATION.txt`\n" +"that describes how to reference your project;\n" +"the [one for Software\n" +"Carpentry](https://github.com/swcarpentry/website/blob/gh-pages/CITATION)\n" +"states:" + +# code block +#: git-novice/_episodes/12-citation.md:19 +#: git-novice/_locale/es/_episodes/12-citation.md:18 +msgid "" +"~~~\n" +"To reference Software Carpentry in publications, please cite both of the following:\n" +"\n" +"Greg Wilson: \"Software Carpentry: Getting Scientists to Write Better\n" +"Code by Making Them More Productive\". Computing in Science &\n" +"Engineering, Nov-Dec 2006.\n" +"\n" +"Greg Wilson: \"Software Carpentry: Lessons Learned\". arXiv:1307.5448,\n" +"July 2013.\n" +"\n" +"@article{wilson-software-carpentry-2006,\n" +" author = {Greg Wilson},\n" +" title = {Software Carpentry: Getting Scientists to Write Better Code by Making Them More Productive},\n" +" journal = {Computing in Science \\& Engineering},\n" +" month = {November--December},\n" +" year = {2006},\n" +"}\n" +"\n" +"@online{wilson-software-carpentry-2013,\n" +" author = {Greg Wilson},\n" +" title = {Software Carpentry: Lessons Learned},\n" +" version = {1},\n" +" date = {2013-07-20},\n" +" eprinttype = {arxiv},\n" +" eprint = {1307.5448}\n" +"}\n" +"~~~" +msgstr "" +"~~~\n" +"To reference Software Carpentry in publications, please cite both of the following:\n" +"\n" +"Greg Wilson: \"Software Carpentry: Getting Scientists to Write Better\n" +"Code by Making Them More Productive\". Computing in Science &\n" +"Engineering, Nov-Dec 2006.\n" +"\n" +"Greg Wilson: \"Software Carpentry: Lessons Learned\". arXiv:1307.5448,\n" +"July 2013.\n" +"\n" +"@article{wilson-software-carpentry-2006,\n" +" author = {Greg Wilson},\n" +" title = {Software Carpentry: Getting Scientists to Write Better Code by Making Them More Productive},\n" +" journal = {Computing in Science \\& Engineering},\n" +" month = {November--December},\n" +" year = {2006},\n" +"}\n" +"\n" +"@online{wilson-software-carpentry-2013,\n" +" author = {Greg Wilson},\n" +" title = {Software Carpentry: Lessons Learned},\n" +" version = {1},\n" +" date = {2013-07-20},\n" +" eprinttype = {arxiv},\n" +" eprint = {1307.5448}\n" +"}\n" +"~~~" + +# SC/DC Template label +#: git-novice/_episodes/12-citation.md:46 +#: git-novice/_locale/es/_episodes/12-citation.md:45 +msgid "{: .source}" +msgstr "{: .source}" + +#: git-novice/_episodes/12-citation.md:48 +#: git-novice/_locale/es/_episodes/12-citation.md:47 +msgid "" +"More detailed advice, and other ways to make your code citable can be found\n" +"[at the Software Sustainability Institute blog](https://www.software.ac.uk/how-cite-and-describe-software) and in:" +msgstr "" +"More detailed advice, and other ways to make your code citable can be found\n" +"[at the Software Sustainability Institute blog](https://www.software.ac.uk/how-cite-and-describe-software) and in:" + +# blockquote, which can be cascaded +#: git-novice/_episodes/12-citation.md:51 +#: git-novice/_locale/es/_episodes/12-citation.md:50 +msgid "> Smith AM, Katz DS, Niemeyer KE, FORCE11 Software Citation Working Group. " +msgstr "> Smith AM, Katz DS, Niemeyer KE, FORCE11 Software Citation Working Group. " + +# blockquote, which can be cascaded +#: git-novice/_episodes/12-citation.md:52 +#: git-novice/_locale/es/_episodes/12-citation.md:51 +msgid "> (2016) Software citation principles. [PeerJ Computer Science 2:e86](https://peerj.com/articles/cs-86/) https://doi.org/10.7717/peerj-cs.86" +msgstr "> (2016) Software citation principles. [PeerJ Computer Science 2:e86](https://peerj.com/articles/cs-86/) https://doi.org/10.7717/peerj-cs.86" + +#: git-novice/_episodes/12-citation.md:54 +#: git-novice/_locale/es/_episodes/12-citation.md:53 +msgid "" +"There is also an [`@software{…`](https://www.google.de/search?q=git+citation+%22%40software%7B%22) \n" +"[BibTeX](https://www.ctan.org/pkg/bibtex) entry type in case\n" +"no \"umbrella\" citation like a paper or book exists for the project you want to\n" +"make citable." +msgstr "" +"There is also an [`@software{…`](https://www.google.de/search?q=git+citation+%22%40software%7B%22) \n" +"[BibTeX](https://www.ctan.org/pkg/bibtex) entry type in case\n" +"no \"umbrella\" citation like a paper or book exists for the project you want to\n" +"make citable." + +# Front Matter +#: git-novice/_episodes/13-hosting.md:1 +msgid "" +"---\n" +"title: Hosting\n" +"teaching: 10\n" +"exercises: 0\n" +"questions:\n" +"- \"Where should I host my version control repositories?\"\n" +"objectives:\n" +"- \"Explain different options for hosting scientific work.\"\n" +"keypoints:\n" +"- \"Projects can be hosted on university servers, on personal domains, or on public forges.\"\n" +"- \"Rules regarding intellectual property and storage of sensitive information apply no matter where code and data are hosted.\"\n" +"---" +msgstr "" +"---\n" +"title: Hosting\n" +"teaching: 10\n" +"exercises: 0\n" +"questions:\n" +"- \"Where should I host my version control repositories?\"\n" +"objectives:\n" +"- \"Explain different options for hosting scientific work.\"\n" +"keypoints:\n" +"- \"Projects can be hosted on university servers, on personal domains, or on public forges.\"\n" +"- \"Rules regarding intellectual property and storage of sensitive information apply no matter where code and data are hosted.\"\n" +"---" + +#: git-novice/_episodes/13-hosting.md:14 +msgid "" +"The second big question for groups that want to open up their work is where to\n" +"host their code and data. One option is for the lab, the department, or the\n" +"university to provide a server, manage accounts and backups, and so on. The\n" +"main benefit of this is that it clarifies who owns what, which is particularly\n" +"important if any of the material is sensitive (i.e., relates to experiments\n" +"involving human subjects or may be used in a patent application). The main\n" +"drawbacks are the cost of providing the service and its longevity: a scientist\n" +"who has spent ten years collecting data would like to be sure that data will\n" +"still be available ten years from now, but that's well beyond the lifespan of\n" +"most of the grants that fund academic infrastructure." +msgstr "" +"The second big question for groups that want to open up their work is where to\n" +"host their code and data. One option is for the lab, the department, or the\n" +"university to provide a server, manage accounts and backups, and so on. The\n" +"main benefit of this is that it clarifies who owns what, which is particularly\n" +"important if any of the material is sensitive (i.e., relates to experiments\n" +"involving human subjects or may be used in a patent application). The main\n" +"drawbacks are the cost of providing the service and its longevity: a scientist\n" +"who has spent ten years collecting data would like to be sure that data will\n" +"still be available ten years from now, but that's well beyond the lifespan of\n" +"most of the grants that fund academic infrastructure." + +#: git-novice/_episodes/13-hosting.md:25 +msgid "" +"Another option is to purchase a domain and pay an Internet service provider\n" +"(ISP) to host it. This gives the individual or group more control, and\n" +"sidesteps problems that can arise when moving from one institution to another,\n" +"but requires more time and effort to set up than either the option above or the\n" +"option below." +msgstr "" +"Another option is to purchase a domain and pay an Internet service provider\n" +"(ISP) to host it. This gives the individual or group more control, and\n" +"sidesteps problems that can arise when moving from one institution to another,\n" +"but requires more time and effort to set up than either the option above or the\n" +"option below." + +#: git-novice/_episodes/13-hosting.md:31 +msgid "" +"The third option is to use a public hosting service like\n" +"[GitHub](https://github.com), [GitLab](https://gitlab.com),or\n" +"[BitBucket](https://bitbucket.org).\n" +"Each of these services provides a web interface that enables people to create,\n" +"view, and edit their code repositories. These services also provide\n" +"communication and project management tools including issue tracking, wiki pages,\n" +"email notifications, and code reviews. These services benefit from economies of\n" +"scale and network effects: it's easier to run one large service well than to run\n" +"many smaller services to the same standard. It's also easier for people to\n" +"collaborate. Using a popular service can help connect your project with\n" +"communities already using the same service." +msgstr "" +"The third option is to use a public hosting service like\n" +"[GitHub](https://github.com), [GitLab](https://gitlab.com),or\n" +"[BitBucket](https://bitbucket.org).\n" +"Each of these services provides a web interface that enables people to create,\n" +"view, and edit their code repositories. These services also provide\n" +"communication and project management tools including issue tracking, wiki pages,\n" +"email notifications, and code reviews. These services benefit from economies of\n" +"scale and network effects: it's easier to run one large service well than to run\n" +"many smaller services to the same standard. It's also easier for people to\n" +"collaborate. Using a popular service can help connect your project with\n" +"communities already using the same service." + +#: git-novice/_episodes/13-hosting.md:43 +msgid "" +"As an example, Software Carpentry [is on\n" +"GitHub]({{ swc_github }}) where you can find the [source for this\n" +"page]({{page.root}}/_episodes/13-hosting.md).\n" +"Anyone with a GitHub account can suggest changes to this text." +msgstr "" +"As an example, Software Carpentry [is on\n" +"GitHub]({{ swc_github }}) where you can find the [source for this\n" +"page]({{page.root}}/_episodes/13-hosting.md).\n" +"Anyone with a GitHub account can suggest changes to this text." + +#: git-novice/_episodes/13-hosting.md:48 +msgid "" +"Using large, well-established services can also help you quickly take advantage\n" +"of powerful tools. One such tool, continuous integration (CI), can\n" +"automatically run software builds and tests whenever code is committed or pull\n" +"requests are submitted. Direct integration of CI with an online hosting service\n" +"means this information is present in any pull request, and helps maintain code\n" +"integrity and quality standards. While CI is still available in self-hosted\n" +"situations, there is much less setup and maintenance involved with using an\n" +"online service. Furthermore, such tools are often provided free of charge to\n" +"open source projects, and are also available for private repositories for a fee." +msgstr "" +"Using large, well-established services can also help you quickly take advantage\n" +"of powerful tools. One such tool, continuous integration (CI), can\n" +"automatically run software builds and tests whenever code is committed or pull\n" +"requests are submitted. Direct integration of CI with an online hosting service\n" +"means this information is present in any pull request, and helps maintain code\n" +"integrity and quality standards. While CI is still available in self-hosted\n" +"situations, there is much less setup and maintenance involved with using an\n" +"online service. Furthermore, such tools are often provided free of charge to\n" +"open source projects, and are also available for private repositories for a fee." + +# blockquote, which can be cascaded +#: git-novice/_episodes/13-hosting.md:58 +#: git-novice/_locale/es/_episodes/13-hosting.md:61 +msgid "> ## Institutional Barriers" +msgstr "> ## Institutional Barriers" + +#: git-novice/_episodes/13-hosting.md:59 +msgid "" +">\n" +"> Sharing is the ideal for science,\n" +"> but many institutions place restrictions on sharing,\n" +"> for example to protect potentially patentable intellectual property.\n" +"> If you encounter such restrictions,\n" +"> it can be productive to inquire about the underlying motivations and\n" +"> either to request an exception for a specific project or domain,\n" +"> or to push more broadly for institutional reform to support more open science." +msgstr "" +">\n" +"> Sharing is the ideal for science,\n" +"> but many institutions place restrictions on sharing,\n" +"> for example to protect potentially patentable intellectual property.\n" +"> If you encounter such restrictions,\n" +"> it can be productive to inquire about the underlying motivations and\n" +"> either to request an exception for a specific project or domain,\n" +"> or to push more broadly for institutional reform to support more open science." + +# blockquote, which can be cascaded +#: git-novice/_episodes/13-hosting.md:69 +msgid "> ## Can My Work Be Public?" +msgstr "> ## Can My Work Be Public?" + +#: git-novice/_episodes/13-hosting.md:70 +msgid "" +">\n" +"> Find out whether you are allowed to host your work openly on a public forge.\n" +"> Can you do this unilaterally,\n" +"> or do you need permission from someone in your institution?\n" +"> If so, who?" +msgstr "" +">\n" +"> Find out whether you are allowed to host your work openly on a public forge.\n" +"> Can you do this unilaterally,\n" +"> or do you need permission from someone in your institution?\n" +"> If so, who?" + +# blockquote, which can be cascaded +#: git-novice/_episodes/13-hosting.md:77 +msgid "> ## Where Can I Share My Work?" +msgstr "> ## Where Can I Share My Work?" + +#: git-novice/_episodes/13-hosting.md:78 +msgid "" +">\n" +"> Does your institution have a repository or repositories that you can\n" +"> use to share your papers, data and software? How do institutional repositories\n" +"> differ from services like [arXiV](https://arxiv.org/), [figshare](https://figshare.com/), [GitHub](https://github.com/) or [GitLab](https://about.gitlab.com/)?" +msgstr "" +">\n" +"> Does your institution have a repository or repositories that you can\n" +"> use to share your papers, data and software? How do institutional repositories\n" +"> differ from services like [arXiV](https://arxiv.org/), [figshare](https://figshare.com/), [GitHub](https://github.com/) or [GitLab](https://about.gitlab.com/)?" + +# Front Matter +#: git-novice/_episodes/14-supplemental-rstudio.md:1 +msgid "" +"---\n" +"title: \"Supplemental: Using Git from RStudio\"\n" +"teaching: 10\n" +"exercises: 0\n" +"questions:\n" +"- \"How can I use Git with RStudio?\"\n" +"objectives:\n" +"- \"Understand how to use Git from RStudio.\"\n" +"keypoints:\n" +"- \"Create an RStudio project\"\n" +"---" +msgstr "" +"---\n" +"title: \"Supplemental: Using Git from RStudio\"\n" +"teaching: 10\n" +"exercises: 0\n" +"questions:\n" +"- \"How can I use Git with RStudio?\"\n" +"objectives:\n" +"- \"Understand how to use Git from RStudio.\"\n" +"keypoints:\n" +"- \"Create an RStudio project\"\n" +"---" + +#: git-novice/_episodes/14-supplemental-rstudio.md:13 +msgid "" +"Version control can be very useful when developing data analysis scripts. For\n" +"that reason, the popular development environment\n" +"RStudio for the R programming language has built-in\n" +"integration with Git. While some advanced Git features still require the\n" +"command-line, RStudio has a nice interface for many common Git operations." +msgstr "" +"Version control can be very useful when developing data analysis scripts. For\n" +"that reason, the popular development environment\n" +"RStudio for the R programming language has built-in\n" +"integration with Git. While some advanced Git features still require the\n" +"command-line, RStudio has a nice interface for many common Git operations." + +#: git-novice/_episodes/14-supplemental-rstudio.md:19 +msgid "" +"RStudio allows us to create a [project][rstudio-projects] associated with a\n" +"given directory to keep track of various related files. To be able to track the\n" +"development of the project over time, to be able to revert to previous\n" +"versions, and to collaborate with others, we version control the Rstudio\n" +"project with Git. To get started using Git in RStudio, we create a new project:" +msgstr "" +"RStudio allows us to create a [project][rstudio-projects] associated with a\n" +"given directory to keep track of various related files. To be able to track the\n" +"development of the project over time, to be able to revert to previous\n" +"versions, and to collaborate with others, we version control the Rstudio\n" +"project with Git. To get started using Git in RStudio, we create a new project:" + +#: git-novice/_episodes/14-supplemental-rstudio.md:25 +#: git-novice/_locale/es/_episodes/14-supplemental-rstudio.md:17 +msgid "![](../fig/RStudio_screenshot_newproject.png)" +msgstr "![](../fig/RStudio_screenshot_newproject.png)" + +#: git-novice/_episodes/14-supplemental-rstudio.md:27 +msgid "" +"This will open a dialog asking us how we want to create the project. We have\n" +"some options here. Let's say that we want to use RStudio with the planets\n" +"repository that we already made. Since that repository lives in a directory on\n" +"our computer, we choose the option \"Existing Directory\":" +msgstr "" +"This will open a dialog asking us how we want to create the project. We have\n" +"some options here. Let's say that we want to use RStudio with the planets\n" +"repository that we already made. Since that repository lives in a directory on\n" +"our computer, we choose the option \"Existing Directory\":" + +#: git-novice/_episodes/14-supplemental-rstudio.md:32 +#: git-novice/_locale/es/_episodes/14-supplemental-rstudio.md:24 +msgid "![](../fig/RStudio_screenshot_existingdirectory.png)" +msgstr "![](../fig/RStudio_screenshot_existingdirectory.png)" + +# blockquote, which can be cascaded +#: git-novice/_episodes/14-supplemental-rstudio.md:34 +msgid "> ## Do You See a \"Version Control\" Option?" +msgstr "> ## Do You See a \"Version Control\" Option?" + +#: git-novice/_episodes/14-supplemental-rstudio.md:35 +msgid "" +">\n" +"> Although we're not going to use it here, there should be a \"version control\"\n" +"> option on this menu. That is what you would click on if you wanted to\n" +"> create a project on your computer by cloning a repository from GitHub.\n" +"> If that option is not present, it probably means that RStudio doesn't know\n" +"> where your Git executable is. See\n" +"> [this page](https://stat545-ubc.github.io/git03_rstudio-meet-git.html)\n" +"> for some debugging advice. Even if you have Git installed, you may need\n" +"> to accept the XCode license if you are using macOS." +msgstr "" +">\n" +"> Although we're not going to use it here, there should be a \"version control\"\n" +"> option on this menu. That is what you would click on if you wanted to\n" +"> create a project on your computer by cloning a repository from GitHub.\n" +"> If that option is not present, it probably means that RStudio doesn't know\n" +"> where your Git executable is. See\n" +"> [this page](https://stat545-ubc.github.io/git03_rstudio-meet-git.html)\n" +"> for some debugging advice. Even if you have Git installed, you may need\n" +"> to accept the XCode license if you are using macOS." + +#: git-novice/_episodes/14-supplemental-rstudio.md:46 +msgid "" +"Next, RStudio will ask which existing directory we want to use. Click\n" +"\"Browse...\" and navigate to the correct directory, then click \"Create Project\":" +msgstr "" +"Next, RStudio will ask which existing directory we want to use. Click\n" +"\"Browse...\" and navigate to the correct directory, then click \"Create Project\":" + +#: git-novice/_episodes/14-supplemental-rstudio.md:49 +#: git-novice/_locale/es/_episodes/14-supplemental-rstudio.md:42 +msgid "![](../fig/RStudio_screenshot_navigateexisting.png)" +msgstr "![](../fig/RStudio_screenshot_navigateexisting.png)" + +#: git-novice/_episodes/14-supplemental-rstudio.md:51 +msgid "" +"Ta-da! We have created a new project in RStudio within the existing planets\n" +"repository. Notice the vertical \"Git\" menu in the menu bar. RStudio has\n" +"recognized that the current directory is a Git repository, and gives us a\n" +"number of tools to use Git:" +msgstr "" +"Ta-da! We have created a new project in RStudio within the existing planets\n" +"repository. Notice the vertical \"Git\" menu in the menu bar. RStudio has\n" +"recognized that the current directory is a Git repository, and gives us a\n" +"number of tools to use Git:" + +#: git-novice/_episodes/14-supplemental-rstudio.md:56 +#: git-novice/_locale/es/_episodes/14-supplemental-rstudio.md:46 +msgid "![](../fig/RStudio_screenshot_afterclone.png)" +msgstr "![](../fig/RStudio_screenshot_afterclone.png)" + +#: git-novice/_episodes/14-supplemental-rstudio.md:58 +msgid "" +"To edit the existing files in the repository, we can click on them in the\n" +"\"Files\" panel on the lower right. Now let's add some additional information\n" +"about Pluto:" +msgstr "" +"To edit the existing files in the repository, we can click on them in the\n" +"\"Files\" panel on the lower right. Now let's add some additional information\n" +"about Pluto:" + +#: git-novice/_episodes/14-supplemental-rstudio.md:62 +#: git-novice/_locale/es/_episodes/14-supplemental-rstudio.md:50 +msgid "![](../fig/RStudio_screenshot_editfiles.png)" +msgstr "![](../fig/RStudio_screenshot_editfiles.png)" + +#: git-novice/_episodes/14-supplemental-rstudio.md:64 +msgid "" +"Once we have saved our edited files, we can use RStudio to commit the changes\n" +"by clicking on \"Commit...\" in the Git menu:" +msgstr "" +"Once we have saved our edited files, we can use RStudio to commit the changes\n" +"by clicking on \"Commit...\" in the Git menu:" + +#: git-novice/_episodes/14-supplemental-rstudio.md:67 +#: git-novice/_locale/es/_episodes/14-supplemental-rstudio.md:54 +msgid "![](../fig/RStudio_screenshot_commit.png)" +msgstr "![](../fig/RStudio_screenshot_commit.png)" + +#: git-novice/_episodes/14-supplemental-rstudio.md:69 +msgid "" +"This will open a dialogue where we can select which files to commit (by\n" +"checking the appropriate boxes in the \"Staged\" column), and enter a commit\n" +"message (in the upper right panel). The icons in the \"Status\" column indicate\n" +"the current status of each file. Clicking on a file shows information about\n" +"changes in the lower panel (using output of `git diff`). Once everything is the\n" +"way we want it, we click \"Commit\":" +msgstr "" +"This will open a dialogue where we can select which files to commit (by\n" +"checking the appropriate boxes in the \"Staged\" column), and enter a commit\n" +"message (in the upper right panel). The icons in the \"Status\" column indicate\n" +"the current status of each file. Clicking on a file shows information about\n" +"changes in the lower panel (using output of `git diff`). Once everything is the\n" +"way we want it, we click \"Commit\":" + +#: git-novice/_episodes/14-supplemental-rstudio.md:76 +#: git-novice/_locale/es/_episodes/14-supplemental-rstudio.md:62 +msgid "![](../fig/RStudio_screenshot_review.png)" +msgstr "![](../fig/RStudio_screenshot_review.png)" + +#: git-novice/_episodes/14-supplemental-rstudio.md:78 +msgid "" +"The changes can be pushed by selecting \"Push Branch\" from the Git menu. There\n" +"are also options to pull from the remote repository, and to view the commit\n" +"history:" +msgstr "" +"The changes can be pushed by selecting \"Push Branch\" from the Git menu. There\n" +"are also options to pull from the remote repository, and to view the commit\n" +"history:" + +#: git-novice/_episodes/14-supplemental-rstudio.md:82 +#: git-novice/_locale/es/_episodes/14-supplemental-rstudio.md:68 +msgid "![](../fig/RStudio_screenshot_history.png)" +msgstr "![](../fig/RStudio_screenshot_history.png)" + +# blockquote, which can be cascaded +#: git-novice/_episodes/14-supplemental-rstudio.md:84 +msgid "> ## Are the Push/Pull Commands Grayed Out?" +msgstr "> ## Are the Push/Pull Commands Grayed Out?" + +#: git-novice/_episodes/14-supplemental-rstudio.md:85 +msgid "" +">\n" +"> Grayed out Push/Pull commands generally mean that RStudio doesn't know the\n" +"> location of your remote repository (e.g. on GitHub). To fix this, open a\n" +"> terminal to the repository and enter the command: `git push -u origin\n" +"> master`. Then restart RStudio." +msgstr "" +">\n" +"> Grayed out Push/Pull commands generally mean that RStudio doesn't know the\n" +"> location of your remote repository (e.g. on GitHub). To fix this, open a\n" +"> terminal to the repository and enter the command: `git push -u origin\n" +"> master`. Then restart RStudio." + +#: git-novice/_episodes/14-supplemental-rstudio.md:92 +msgid "" +"If we click on \"History\", we can see a graphical version of what `git log`\n" +"would tell us:" +msgstr "" +"If we click on \"History\", we can see a graphical version of what `git log`\n" +"would tell us:" + +#: git-novice/_episodes/14-supplemental-rstudio.md:95 +#: git-novice/_locale/es/_episodes/14-supplemental-rstudio.md:81 +msgid "![](../fig/RStudio_screenshot_viewhistory.png)" +msgstr "![](../fig/RStudio_screenshot_viewhistory.png)" + +#: git-novice/_episodes/14-supplemental-rstudio.md:97 +msgid "" +"RStudio creates a number of files that it uses to keep track of a project. We\n" +"often don't want to track these, in which case we add them to our `.gitignore`\n" +"file:" +msgstr "" +"RStudio creates a number of files that it uses to keep track of a project. We\n" +"often don't want to track these, in which case we add them to our `.gitignore`\n" +"file:" + +#: git-novice/_episodes/14-supplemental-rstudio.md:101 +#: git-novice/_locale/es/_episodes/14-supplemental-rstudio.md:85 +msgid "![](../fig/RStudio_screenshot_gitignore.png)" +msgstr "![](../fig/RStudio_screenshot_gitignore.png)" + +# blockquote, which can be cascaded +#: git-novice/_episodes/14-supplemental-rstudio.md:103 +msgid "> ## Tip: versioning disposable output" +msgstr "> ## Tip: versioning disposable output" + +#: git-novice/_episodes/14-supplemental-rstudio.md:104 +msgid "" +">\n" +"> Generally you do not want to version control disposable output (or read-only\n" +"> data). You should modify the `.gitignore` file to tell Git to ignore these\n" +"> files and directories." +msgstr "" +">\n" +"> Generally you do not want to version control disposable output (or read-only\n" +"> data). You should modify the `.gitignore` file to tell Git to ignore these\n" +"> files and directories." + +# blockquote, which can be cascaded +#: git-novice/_episodes/14-supplemental-rstudio.md:110 +#: git-novice/_locale/es/_episodes/14-supplemental-rstudio.md:94 +msgid "> ## Challenge" +msgstr "> ## Challenge" + +#: git-novice/_episodes/14-supplemental-rstudio.md:111 +msgid "" +">\n" +"> 1. Create a new directory within your project called `graphs`.\n" +"> 2. Modify the `.gitignore` so that the `graphs` directory is not version controlled.\n" +">\n" +"> Add the newly created folders to version control using\n" +"> the Git interface.\n" +">\n" +"> > ## Solution to Challenge\n" +"> >\n" +"> > This can be done with the command line:\n" +"> > ```\n" +"> > $ mkdir graphs\n" +"> > $ echo \"graphs/\" >> .gitignore\n" +"> > ```\n" +"> > {: . shell}" +msgstr "" +">\n" +"> 1. Create a new directory within your project called `graphs`.\n" +"> 2. Modify the `.gitignore` so that the `graphs` directory is not version controlled.\n" +">\n" +"> Add the newly created folders to version control using\n" +"> the Git interface.\n" +">\n" +"> > ## Solution to Challenge\n" +"> >\n" +"> > This can be done with the command line:\n" +"> > ```\n" +"> > $ mkdir graphs\n" +"> > $ echo \"graphs/\" >> .gitignore\n" +"> > ```\n" +"> > {: . shell}" + +#: git-novice/_episodes/14-supplemental-rstudio.md:129 +msgid "" +"There are many more features in the RStudio Git menu, but these should be\n" +"enough to get you started!" +msgstr "" +"There are many more features in the RStudio Git menu, but these should be\n" +"enough to get you started!" + +#: git-novice/_episodes/14-supplemental-rstudio.md:132 +#: git-novice/_locale/es/_episodes/14-supplemental-rstudio.md:116 +msgid "[rstudio-projects]: https://support.rstudio.com/hc/en-us/articles/200526207-Using-Projects" +msgstr "[rstudio-projects]: https://support.rstudio.com/hc/en-us/articles/200526207-Using-Projects" + +# Front Matter +#: git-novice/_extras/about.md:1 +msgid "" +"---\n" +"layout: page\n" +"title: About\n" +"permalink: /about/\n" +"---" +msgstr "" +"---\n" +"layout: page\n" +"title: About\n" +"permalink: /about/\n" +"---" + +#: git-novice/_extras/about.md:6 git-novice/_locale/es/_extras/about.md:6 +msgid "{% include carpentries.html %}" +msgstr "{% include carpentries.html %}" + +# Front Matter +#: git-novice/_extras/discuss.md:1 +msgid "" +"---\n" +"layout: page\n" +"title: Discussion\n" +"permalink: /discuss/\n" +"---" +msgstr "" +"---\n" +"layout: page\n" +"title: Discussion\n" +"permalink: /discuss/\n" +"---" + +# header +#: git-novice/_extras/discuss.md:7 +msgid "## Frequently Asked Questions" +msgstr "## Frequently Asked Questions" + +#: git-novice/_extras/discuss.md:9 +msgid "" +"People often have questions about Git beyond the scope of the core material.\n" +"Students who have completed the rest of the lessons might find value in looking through the following topics." +msgstr "" +"People often have questions about Git beyond the scope of the core material.\n" +"Students who have completed the rest of the lessons might find value in looking through the following topics." + +#: git-novice/_extras/discuss.md:12 +msgid "Note that since this material isn't essential for basic Git usage, it won't be covered by the instructor." +msgstr "Note that since this material isn't essential for basic Git usage, it won't be covered by the instructor." + +# header +#: git-novice/_extras/discuss.md:14 +msgid "## More Advanced Git Configuration" +msgstr "## More Advanced Git Configuration" + +#: git-novice/_extras/discuss.md:16 +msgid "" +"In [Setting Up Git]({{ page.root }}/02-setup/),\n" +"we used `git config --global` to set some default options for Git.\n" +"It turns out that these configuration options get stored in your home directory\n" +"in a plain text file called `.gitconfig`." +msgstr "" +"In [Setting Up Git]({{ page.root }}/02-setup/),\n" +"we used `git config --global` to set some default options for Git.\n" +"It turns out that these configuration options get stored in your home directory\n" +"in a plain text file called `.gitconfig`." + +# code block +#: git-novice/_extras/discuss.md:21 git-novice/_locale/es/_extras/discuss.md:21 +msgid "" +"~~~\n" +"$ cat ~/.gitconfig\n" +"~~~" +msgstr "" +"~~~\n" +"$ cat ~/.gitconfig\n" +"~~~" + +# code block +#: git-novice/_extras/discuss.md:26 +msgid "" +"~~~\n" +"[user]\n" +"\tname = Vlad Dracula\n" +"\temail = vlad@tran.sylvan.ia\n" +"[color]\n" +"\tui = true\n" +"[core]\n" +"\teditor = nano\n" +"~~~" +msgstr "" +"~~~\n" +"[user]\n" +"\tname = Vlad のび太\n" +"\temail = vlad@tran.sylvan.ia\n" +"[color]\n" +"\tui = true\n" +"[core]\n" +"\teditor = nano\n" +"~~~" + +#: git-novice/_extras/discuss.md:37 +msgid "" +"This file can be opened in your preferred text editor.\n" +"(Note that it is recommended to continue using the `git config` command,\n" +"as this helps avoid introducing syntax errors.)" +msgstr "" +"This file can be opened in your preferred text editor.\n" +"(Note that it is recommended to continue using the `git config` command,\n" +"as this helps avoid introducing syntax errors.)" + +#: git-novice/_extras/discuss.md:41 +msgid "" +"Eventually, you will want to start customizing Git's behaviour.\n" +"This can be done by adding more entries to your `.gitconfig`.\n" +"The available options are described in the manual:" +msgstr "" +"Eventually, you will want to start customizing Git's behaviour.\n" +"This can be done by adding more entries to your `.gitconfig`.\n" +"The available options are described in the manual:" + +# code block +#: git-novice/_extras/discuss.md:45 git-novice/_locale/es/_extras/discuss.md:45 +msgid "" +"~~~\n" +"$ git config --help\n" +"~~~" +msgstr "" +"~~~\n" +"$ git config --help\n" +"~~~" + +#: git-novice/_extras/discuss.md:50 +msgid "" +"In particular, you might find it useful to add aliases.\n" +"These are like shortcuts for longer git commands.\n" +"For example, if you get sick of typing `git checkout` all the time,\n" +"you could run the command:" +msgstr "" +"In particular, you might find it useful to add aliases.\n" +"These are like shortcuts for longer git commands.\n" +"For example, if you get sick of typing `git checkout` all the time,\n" +"you could run the command:" + +# code block +#: git-novice/_extras/discuss.md:55 git-novice/_locale/es/_extras/discuss.md:55 +msgid "" +"~~~\n" +"$ git config --global alias.co checkout\n" +"~~~" +msgstr "" +"~~~\n" +"$ git config --global alias.co checkout\n" +"~~~" + +#: git-novice/_extras/discuss.md:60 +msgid "Now if we return to the example from [Exploring History]({{ page.root }}/05-history/) where we ran:" +msgstr "Now if we return to the example from [Exploring History]({{ page.root }}/05-history/) where we ran:" + +#: git-novice/_extras/discuss.md:67 +msgid "we could now instead type:" +msgstr "we could now instead type:" + +# code block +#: git-novice/_extras/discuss.md:69 git-novice/_locale/es/_extras/discuss.md:69 +msgid "" +"~~~\n" +"$ git co f22b25e mars.txt\n" +"~~~" +msgstr "" +"~~~\n" +"$ git co f22b25e mars.txt\n" +"~~~" + +# header +#: git-novice/_extras/discuss.md:74 +msgid "## Styling Git's Log" +msgstr "## Styling Git's Log" + +#: git-novice/_extras/discuss.md:76 +msgid "" +"A good target for customization is output from the log.\n" +"The default log is quite verbose but gives no graphical hints\n" +"such as information about which commits were done locally\n" +"and which were pulled from remotes." +msgstr "" +"A good target for customization is output from the log.\n" +"The default log is quite verbose but gives no graphical hints\n" +"such as information about which commits were done locally\n" +"and which were pulled from remotes." + +#: git-novice/_extras/discuss.md:81 +msgid "" +"You can use `git log --help` and `git config --help` to look for different ways to change\n" +"the log output.\n" +"Try the following commands and see what effect they have:" +msgstr "" +"You can use `git log --help` and `git config --help` to look for different ways to change\n" +"the log output.\n" +"Try the following commands and see what effect they have:" + +# code block +#: git-novice/_extras/discuss.md:85 git-novice/_locale/es/_extras/discuss.md:85 +msgid "" +"~~~\n" +"$ git config --global alias.lg \"log --graph\"\n" +"$ git config --global log.abbrevCommit true\n" +"$ git config --global format.pretty oneline\n" +"$ git lg\n" +"~~~" +msgstr "" +"~~~\n" +"$ git config --global alias.lg \"log --graph\"\n" +"$ git config --global log.abbrevCommit true\n" +"$ git config --global format.pretty oneline\n" +"$ git lg\n" +"~~~" + +#: git-novice/_extras/discuss.md:93 +msgid "" +"If you don't like the effects,\n" +"you can undo them with:" +msgstr "" +"If you don't like the effects,\n" +"you can undo them with:" + +# code block +#: git-novice/_extras/discuss.md:96 git-novice/_locale/es/_extras/discuss.md:96 +msgid "" +"~~~\n" +"$ git config --global --unset alias.lg\n" +"$ git config --global --unset log.abbrevCommit\n" +"$ git config --global --unset format.pretty\n" +"~~~" +msgstr "" +"~~~\n" +"$ git config --global --unset alias.lg\n" +"$ git config --global --unset log.abbrevCommit\n" +"$ git config --global --unset format.pretty\n" +"~~~" + +# blockquote, which can be cascaded +#: git-novice/_extras/discuss.md:103 +msgid "> ## Undoing Git Configuration Changes" +msgstr "> ## Undoing Git Configuration Changes" + +#: git-novice/_extras/discuss.md:104 +msgid "" +">\n" +"> You can use the `--unset` flag to delete unwanted options from `.gitconfig`.\n" +"> Another way to roll back changes is to store your `.gitconfig` using Git.\n" +">\n" +"> For hints on what you might want to configure,\n" +"> go to GitHub and search for \"gitconfig\".\n" +"> You will find hundreds of repositories in which people have stored\n" +"> their own Git configuration files.\n" +"> Sort them by the number of stars and have a look at the top few.\n" +"> If you find some you like,\n" +"> please check that they're covered by an open source license before you clone them." +msgstr "" +">\n" +"> You can use the `--unset` flag to delete unwanted options from `.gitconfig`.\n" +"> Another way to roll back changes is to store your `.gitconfig` using Git.\n" +">\n" +"> For hints on what you might want to configure,\n" +"> go to GitHub and search for \"gitconfig\".\n" +"> You will find hundreds of repositories in which people have stored\n" +"> their own Git configuration files.\n" +"> Sort them by the number of stars and have a look at the top few.\n" +"> If you find some you like,\n" +"> please check that they're covered by an open source license before you clone them." + +# header +#: git-novice/_extras/discuss.md:117 +msgid "## Non-text Files" +msgstr "## Non-text Files" + +#: git-novice/_extras/discuss.md:119 +msgid "" +"Recall when we discussed [Conflicts]({{ page.root }}/09-conflict/)\n" +"there was a challenge that asked,\n" +"\"What does Git do\n" +"when there is a conflict in an image or some other non-textual file\n" +"that is stored in version control?\"" +msgstr "" +"Recall when we discussed [Conflicts]({{ page.root }}/09-conflict/)\n" +"there was a challenge that asked,\n" +"\"What does Git do\n" +"when there is a conflict in an image or some other non-textual file\n" +"that is stored in version control?\"" + +#: git-novice/_extras/discuss.md:125 +msgid "We will now revisit this in more detail." +msgstr "We will now revisit this in more detail." + +#: git-novice/_extras/discuss.md:127 +msgid "" +"Many people want to version control non-text files, such as images, PDFs and Microsoft Office or LibreOffice documents.\n" +"It is true that Git can handle these filetypes (which fall under the banner of \"binary\" file types).\n" +"However, just because it *can* be done doesn't mean it *should* be done." +msgstr "" +"Many people want to version control non-text files, such as images, PDFs and Microsoft Office or LibreOffice documents.\n" +"It is true that Git can handle these filetypes (which fall under the banner of \"binary\" file types).\n" +"However, just because it *can* be done doesn't mean it *should* be done." + +#: git-novice/_extras/discuss.md:131 +msgid "" +"Much of Git's magic comes from being able to do line-by-line comparisons (\"diffs\") between files.\n" +"This is generally easy for programming source code and marked up text.\n" +"For non-text files, a diff can usually only detect that the files have changed\n" +"but can't say how or where." +msgstr "" +"Much of Git's magic comes from being able to do line-by-line comparisons (\"diffs\") between files.\n" +"This is generally easy for programming source code and marked up text.\n" +"For non-text files, a diff can usually only detect that the files have changed\n" +"but can't say how or where." + +#: git-novice/_extras/discuss.md:136 +msgid "" +"This has various impacts on Git's performance and will make it difficult to\n" +"compare different versions of your project." +msgstr "" +"This has various impacts on Git's performance and will make it difficult to\n" +"compare different versions of your project." + +#: git-novice/_extras/discuss.md:139 +msgid "" +"For a basic example to show the difference it makes,\n" +"we're going to go see what would have happened if Dracula had tried\n" +"using outputs from a word processor instead of plain text." +msgstr "" +"For a basic example to show the difference it makes,\n" +"we're going to go see what would have happened if のび太 had tried\n" +"using outputs from a word processor instead of plain text." + +#: git-novice/_extras/discuss.md:143 +msgid "Create a new directory and go into it:" +msgstr "Create a new directory and go into it:" + +# code block +#: git-novice/_extras/discuss.md:145 +#: git-novice/_locale/es/_extras/discuss.md:145 +msgid "" +"~~~\n" +"$ mkdir planets-nontext\n" +"$ cd planets-nontext\n" +"~~~" +msgstr "" +"~~~\n" +"$ mkdir planets-nontext\n" +"$ cd planets-nontext\n" +"~~~" + +#: git-novice/_extras/discuss.md:151 +msgid "" +"Use a program such as Microsoft Word or LibreOffice Writer to create a new document.\n" +"Enter the same text that we began with before:" +msgstr "" +"Use a program such as Microsoft Word or LibreOffice Writer to create a new document.\n" +"Enter the same text that we began with before:" + +#: git-novice/_extras/discuss.md:159 +msgid "" +"Save the document into the `planets-nontext` directory with the name of `mars.doc`.\n" +"Back in the terminal, run the usual commands for setting up a new Git repository:" +msgstr "" +"Save the document into the `planets-nontext` directory with the name of `mars.doc`.\n" +"Back in the terminal, run the usual commands for setting up a new Git repository:" + +# code block +#: git-novice/_extras/discuss.md:162 +#: git-novice/_locale/es/_extras/discuss.md:162 +msgid "" +"~~~\n" +"$ git init\n" +"$ git add mars.doc\n" +"$ git commit -m \"Starting to think about Mars\"\n" +"~~~" +msgstr "" +"~~~\n" +"$ git init\n" +"$ git add mars.doc\n" +"$ git commit -m \"Starting to think about Mars\"\n" +"~~~" + +#: git-novice/_extras/discuss.md:169 +msgid "Then make the same changes to `mars.doc` that we (or Vlad) previously made to `mars.txt`." +msgstr "Then make the same changes to `mars.doc` that we (or Vlad) previously made to `mars.txt`." + +#: git-novice/_extras/discuss.md:177 +msgid "" +"Save and close the word processor.\n" +"Now see what Git thinks of your changes:" +msgstr "" +"Save and close the word processor.\n" +"Now see what Git thinks of your changes:" + +# code block +#: git-novice/_extras/discuss.md:185 +#: git-novice/_locale/es/_extras/discuss.md:185 +msgid "" +"~~~\n" +"diff --git a/mars.doc b/mars.doc\n" +"index 53a66fd..6e988e9 100644\n" +"Binary files a/mars.doc and b/mars.doc differ\n" +"~~~" +msgstr "" +"~~~\n" +"diff --git a/mars.doc b/mars.doc\n" +"index 53a66fd..6e988e9 100644\n" +"Binary files a/mars.doc and b/mars.doc differ\n" +"~~~" + +#: git-novice/_extras/discuss.md:192 +msgid "Compare this to the earlier `git diff` obtained when using text files:" +msgstr "Compare this to the earlier `git diff` obtained when using text files:" + +#: git-novice/_extras/discuss.md:205 +msgid "" +"Notice how plain text files give a much more informative diff.\n" +"You can see exactly which lines changed and what the changes were." +msgstr "" +"Notice how plain text files give a much more informative diff.\n" +"You can see exactly which lines changed and what the changes were." + +#: git-novice/_extras/discuss.md:208 +msgid "" +"An uninformative `git diff` is not the only consequence of using Git on binary files.\n" +"However, most of the other problems boil down to whether or not a good diff is possible." +msgstr "" +"An uninformative `git diff` is not the only consequence of using Git on binary files.\n" +"However, most of the other problems boil down to whether or not a good diff is possible." + +#: git-novice/_extras/discuss.md:211 +msgid "" +"This isn't to say you should *never* use Git on binary files.\n" +"A rule of thumb is that it's OK if the binary file won't change very often,\n" +"and if it does change, you don't care about merging in small differences between versions." +msgstr "" +"This isn't to say you should *never* use Git on binary files.\n" +"A rule of thumb is that it's OK if the binary file won't change very often,\n" +"and if it does change, you don't care about merging in small differences between versions." + +#: git-novice/_extras/discuss.md:215 +msgid "" +"We've already seen how a word processed report will fail this test.\n" +"An example that passes the test is a logo for your organization or project.\n" +"Even though a logo will be stored in a binary format such as `jpg` or `png`,\n" +"you can expect it will remain fairly static through the lifetime of your repository.\n" +"On the rare occasion that branding does change,\n" +"you will probably just want to replace the logo completely rather than merge little differences in." +msgstr "" +"We've already seen how a word processed report will fail this test.\n" +"An example that passes the test is a logo for your organization or project.\n" +"Even though a logo will be stored in a binary format such as `jpg` or `png`,\n" +"you can expect it will remain fairly static through the lifetime of your repository.\n" +"On the rare occasion that branding does change,\n" +"you will probably just want to replace the logo completely rather than merge little differences in." + +# header +#: git-novice/_extras/discuss.md:222 +msgid "## Removing a File" +msgstr "## Removing a File" + +#: git-novice/_extras/discuss.md:224 +msgid "" +"Adding and modifying files are not the only actions one might take\n" +"when working on a project. It might be required to remove a file\n" +"from the repository." +msgstr "" +"Adding and modifying files are not the only actions one might take\n" +"when working on a project. It might be required to remove a file\n" +"from the repository." + +#: git-novice/_extras/discuss.md:228 +msgid "Create a new file for the planet Nibiru:" +msgstr "Create a new file for the planet Nibiru:" + +# code block +#: git-novice/_extras/discuss.md:230 +#: git-novice/_locale/es/_extras/discuss.md:230 +msgid "" +"~~~\n" +"$ echo \"This is another name for fake planet X\" > nibiru.txt\n" +"~~~" +msgstr "" +"~~~\n" +"$ echo \"This is another name for fake planet X\" > nibiru.txt\n" +"~~~" + +#: git-novice/_extras/discuss.md:235 +msgid "Now add to the repository like you have learned earlier:" +msgstr "Now add to the repository like you have learned earlier:" + +# code block +#: git-novice/_extras/discuss.md:237 +#: git-novice/_locale/es/_extras/discuss.md:237 +msgid "" +"~~~\n" +"$ git add nibiru.txt\n" +"$ git commit -m 'adding info on nibiru'\n" +"$ git status\n" +"~~~" +msgstr "" +"~~~\n" +"$ git add nibiru.txt\n" +"$ git commit -m 'adding info on nibiru'\n" +"$ git status\n" +"~~~" + +#: git-novice/_extras/discuss.md:250 +msgid "" +"Nibiru is not a real planet. That was a silly idea. Let us remove\n" +"it from the disk and let Git know about it:" +msgstr "" +"Nibiru is not a real planet. That was a silly idea. Let us remove\n" +"it from the disk and let Git know about it:" + +# code block +#: git-novice/_extras/discuss.md:253 git-novice/_extras/discuss.md:318 +#: git-novice/_locale/es/_extras/discuss.md:253 +#: git-novice/_locale/es/_extras/discuss.md:318 +msgid "" +"~~~\n" +"$ git rm nibiru.txt\n" +"$ git status\n" +"~~~" +msgstr "" +"~~~\n" +"$ git rm nibiru.txt\n" +"$ git status\n" +"~~~" + +# code block +#: git-novice/_extras/discuss.md:259 git-novice/_extras/discuss.md:324 +#: git-novice/_locale/es/_extras/discuss.md:259 +#: git-novice/_locale/es/_extras/discuss.md:324 +msgid "" +"~~~\n" +"On branch master\n" +"Changes to be committed:\n" +" (use \"git reset HEAD ...\" to unstage)\n" +"\n" +" deleted: nibiru.txt\n" +"\n" +"~~~" +msgstr "" +"~~~\n" +"On branch master\n" +"Changes to be committed:\n" +" (use \"git reset HEAD ...\" to unstage)\n" +"\n" +" deleted: nibiru.txt\n" +"\n" +"~~~" + +#: git-novice/_extras/discuss.md:269 +msgid "" +"The change has been staged. Now commit the removal, and remove the\n" +"file from the repository itself. Note that the file will be removed\n" +"in the new commit. The previous commit will still\n" +"have the file, if you were to retrieve that specific commit." +msgstr "" +"The change has been staged. Now commit the removal, and remove the\n" +"file from the repository itself. Note that the file will be removed\n" +"in the new commit. The previous commit will still\n" +"have the file, if you were to retrieve that specific commit." + +# code block +#: git-novice/_extras/discuss.md:274 +#: git-novice/_locale/es/_extras/discuss.md:274 +msgid "" +"~~~\n" +"$ git commit -m 'Removing info on Nibiru. It is not a real planet!'\n" +"~~~" +msgstr "" +"~~~\n" +"$ git commit -m 'Removing info on Nibiru. It is not a real planet!'\n" +"~~~" + +# header +#: git-novice/_extras/discuss.md:279 +msgid "## Removing a File with Unix" +msgstr "## Removing a File with Unix" + +#: git-novice/_extras/discuss.md:281 +msgid "" +"Sometimes we might forget to remove the file through Git. If you removed the\n" +"file with Unix `rm` instead of using `git rm`, no worries,\n" +"Git is smart enough to notice the missing file. Let us recreate the file and\n" +"commit it again." +msgstr "" +"Sometimes we might forget to remove the file through Git. If you removed the\n" +"file with Unix `rm` instead of using `git rm`, no worries,\n" +"Git is smart enough to notice the missing file. Let us recreate the file and\n" +"commit it again." + +# code block +#: git-novice/_extras/discuss.md:286 +#: git-novice/_locale/es/_extras/discuss.md:286 +msgid "" +"~~~\n" +"$ echo \"This is another name for fake planet X\" > nibiru.txt\n" +"$ git add nibiru.txt\n" +"$ git commit -m 'adding nibiru again'\n" +"~~~" +msgstr "" +"~~~\n" +"$ echo \"This is another name for fake planet X\" > nibiru.txt\n" +"$ git add nibiru.txt\n" +"$ git commit -m 'adding nibiru again'\n" +"~~~" + +#: git-novice/_extras/discuss.md:293 +msgid "Now we remove the file with Unix `rm`:" +msgstr "Now we remove the file with Unix `rm`:" + +# code block +#: git-novice/_extras/discuss.md:295 +#: git-novice/_locale/es/_extras/discuss.md:295 +msgid "" +"~~~\n" +"$ rm nibiru.txt\n" +"$ git status\n" +"~~~" +msgstr "" +"~~~\n" +"$ rm nibiru.txt\n" +"$ git status\n" +"~~~" + +# code block +#: git-novice/_extras/discuss.md:301 +#: git-novice/_locale/es/_extras/discuss.md:301 +msgid "" +"~~~\n" +"On branch master\n" +"Changes not staged for commit:\n" +" (use \"git add/rm ...\" to update what will be committed)\n" +" (use \"git checkout -- ...\" to discard changes in working directory)\n" +"\n" +" deleted: nibiru.txt\n" +"\n" +"no changes added to commit (use \"git add\" and/or \"git commit -a\")\n" +"~~~" +msgstr "" +"~~~\n" +"On branch master\n" +"Changes not staged for commit:\n" +" (use \"git add/rm ...\" to update what will be committed)\n" +" (use \"git checkout -- ...\" to discard changes in working directory)\n" +"\n" +" deleted: nibiru.txt\n" +"\n" +"no changes added to commit (use \"git add\" and/or \"git commit -a\")\n" +"~~~" + +#: git-novice/_extras/discuss.md:313 +msgid "" +"See how Git has noticed that the file `nibiru.txt` has been removed\n" +"from the disk. The next step is to \"stage\" the removal of the file\n" +"from the repository. This is done with the command `git rm` just as\n" +"before." +msgstr "" +"See how Git has noticed that the file `nibiru.txt` has been removed\n" +"from the disk. The next step is to \"stage\" the removal of the file\n" +"from the repository. This is done with the command `git rm` just as\n" +"before." + +#: git-novice/_extras/discuss.md:334 +msgid "" +"The change that was made in Unix has now been staged and needs to be\n" +"committed." +msgstr "" +"The change that was made in Unix has now been staged and needs to be\n" +"committed." + +# code block +#: git-novice/_extras/discuss.md:337 +#: git-novice/_locale/es/_extras/discuss.md:337 +msgid "" +"~~~\n" +"$ git commit -m 'Removing info on Nibiru, again!'\n" +"~~~" +msgstr "" +"~~~\n" +"$ git commit -m 'Removing info on Nibiru, again!'\n" +"~~~" + +# header +#: git-novice/_extras/discuss.md:342 +msgid "## Renaming a File" +msgstr "## Renaming a File" + +#: git-novice/_extras/discuss.md:344 +msgid "Another common change when working on a project is to rename a file." +msgstr "Another common change when working on a project is to rename a file." + +#: git-novice/_extras/discuss.md:346 +msgid "Create a file for the planet Krypton:" +msgstr "Create a file for the planet Krypton:" + +# code block +#: git-novice/_extras/discuss.md:348 +#: git-novice/_locale/es/_extras/discuss.md:348 +msgid "" +"~~~\n" +"$ echo \"Superman's home planet\" > krypton.txt\n" +"~~~" +msgstr "" +"~~~\n" +"$ echo \"Superman's home planet\" > krypton.txt\n" +"~~~" + +#: git-novice/_extras/discuss.md:353 +msgid "Add it to the repository:" +msgstr "Add it to the repository:" + +# code block +#: git-novice/_extras/discuss.md:355 +#: git-novice/_locale/es/_extras/discuss.md:355 +msgid "" +"~~~\n" +"$ git add krypton.txt\n" +"$ git commit -m 'Adding planet Krypton'\n" +"~~~" +msgstr "" +"~~~\n" +"$ git add krypton.txt\n" +"$ git commit -m 'Adding planet Krypton'\n" +"~~~" + +#: git-novice/_extras/discuss.md:361 +msgid "" +"We all know that Superman moved to Earth. Not that he had much\n" +"choice. Now his home planet is Earth." +msgstr "" +"We all know that Superman moved to Earth. Not that he had much\n" +"choice. Now his home planet is Earth." + +#: git-novice/_extras/discuss.md:364 +msgid "Rename the file `krypton.txt` to `earth.txt` with Git:" +msgstr "Rename the file `krypton.txt` to `earth.txt` with Git:" + +# code block +#: git-novice/_extras/discuss.md:366 +#: git-novice/_locale/es/_extras/discuss.md:366 +msgid "" +"~~~\n" +"$ git mv krypton.txt earth.txt\n" +"$ git status\n" +"~~~" +msgstr "" +"~~~\n" +"$ git mv krypton.txt earth.txt\n" +"$ git status\n" +"~~~" + +# code block +#: git-novice/_extras/discuss.md:372 +msgid "" +"~~~\n" +"# On branch master\n" +"# Changes to be committed:\n" +"# (use \"git reset HEAD ...\" to unstage)\n" +"#\n" +"#\trenamed: krypton.txt -> earth.txt\n" +"#\n" +"~~~" +msgstr "" +"~~~\n" +"# On branch master\n" +"# Changes to be committed:\n" +"# (use \"git reset HEAD ...\" to unstage)\n" +"#\n" +"#\trenamed: krypton.txt -> earth.txt\n" +"#\n" +"~~~" + +#: git-novice/_extras/discuss.md:381 +msgid "The final step is commit our change to the repository:" +msgstr "The final step is commit our change to the repository:" + +# code block +#: git-novice/_extras/discuss.md:383 +#: git-novice/_locale/es/_extras/discuss.md:383 +msgid "" +"~~~\n" +"$ git commit -m 'Superman's home is now Earth'\n" +"~~~" +msgstr "" +"~~~\n" +"$ git commit -m 'Superman's home is now Earth'\n" +"~~~" + +# header +#: git-novice/_extras/discuss.md:388 +msgid "## Renaming a File with Unix" +msgstr "## Renaming a File with Unix" + +#: git-novice/_extras/discuss.md:390 +msgid "" +"If you forgot to use Git and you used Unix `mv` instead\n" +"of `git mv`, you will have a touch more work to do but Git will\n" +"be able to deal with it. Let's try again renaming the file,\n" +"this time with Unix `mv`. First, we need to recreate the\n" +"`krypton.txt` file:" +msgstr "" +"If you forgot to use Git and you used Unix `mv` instead\n" +"of `git mv`, you will have a touch more work to do but Git will\n" +"be able to deal with it. Let's try again renaming the file,\n" +"this time with Unix `mv`. First, we need to recreate the\n" +"`krypton.txt` file:" + +# code block +#: git-novice/_extras/discuss.md:396 +#: git-novice/_locale/es/_extras/discuss.md:396 +msgid "" +"~~~\n" +"$ echo \"Superman's home planet\" > krypton.txt\n" +"$ git add krypton.txt\n" +"$ git commit -m 'Adding planet Krypton again.'\n" +"~~~" +msgstr "" +"~~~\n" +"$ echo \"Superman's home planet\" > krypton.txt\n" +"$ git add krypton.txt\n" +"$ git commit -m 'Adding planet Krypton again.'\n" +"~~~" + +#: git-novice/_extras/discuss.md:403 +msgid "Let us rename the file and see what Git can figured out by itself:" +msgstr "Let us rename the file and see what Git can figured out by itself:" + +# code block +#: git-novice/_extras/discuss.md:405 +#: git-novice/_locale/es/_extras/discuss.md:405 +msgid "" +"~~~\n" +"$ mv krypton.txt earth.txt\n" +"$ git status\n" +"~~~" +msgstr "" +"~~~\n" +"$ mv krypton.txt earth.txt\n" +"$ git status\n" +"~~~" + +# code block +#: git-novice/_extras/discuss.md:411 +#: git-novice/_locale/es/_extras/discuss.md:411 +msgid "" +"~~~\n" +"On branch master\n" +"Changes not staged for commit:\n" +" (use \"git add/rm ...\" to update what will be committed)\n" +" (use \"git checkout -- ...\" to discard changes in working directory)\n" +"\n" +" deleted: krypton.txt\n" +"\n" +"Untracked files:\n" +" (use \"git add ...\" to include in what will be committed)\n" +"\n" +" earth.txt\n" +"\n" +"no changes added to commit (use \"git add\" and/or \"git commit -a\")\n" +"~~~" +msgstr "" +"~~~\n" +"On branch master\n" +"Changes not staged for commit:\n" +" (use \"git add/rm ...\" to update what will be committed)\n" +" (use \"git checkout -- ...\" to discard changes in working directory)\n" +"\n" +" deleted: krypton.txt\n" +"\n" +"Untracked files:\n" +" (use \"git add ...\" to include in what will be committed)\n" +"\n" +" earth.txt\n" +"\n" +"no changes added to commit (use \"git add\" and/or \"git commit -a\")\n" +"~~~" + +#: git-novice/_extras/discuss.md:428 +msgid "" +"Git has noticed that the file `krypton.txt` has disappeared from the\n" +"file system and a new file `earth.txt` has showed up." +msgstr "" +"Git has noticed that the file `krypton.txt` has disappeared from the\n" +"file system and a new file `earth.txt` has showed up." + +#: git-novice/_extras/discuss.md:431 +msgid "Add those changes to the staging area:" +msgstr "Add those changes to the staging area:" + +# code block +#: git-novice/_extras/discuss.md:433 +#: git-novice/_locale/es/_extras/discuss.md:433 +msgid "" +"~~~\n" +"$ git add krypton.txt earth.txt\n" +"$ git status\n" +"~~~" +msgstr "" +"~~~\n" +"$ git add krypton.txt earth.txt\n" +"$ git status\n" +"~~~" + +# code block +#: git-novice/_extras/discuss.md:439 +#: git-novice/_locale/es/_extras/discuss.md:439 +msgid "" +"~~~\n" +"On branch master\n" +"Changes to be committed:\n" +" (use \"git reset HEAD ...\" to unstage)\n" +"\n" +" renamed: krypton.txt -> earth.txt\n" +"\n" +"~~~" +msgstr "" +"~~~\n" +"On branch master\n" +"Changes to be committed:\n" +" (use \"git reset HEAD ...\" to unstage)\n" +"\n" +" renamed: krypton.txt -> earth.txt\n" +"\n" +"~~~" + +#: git-novice/_extras/discuss.md:449 +msgid "" +"Notice how Git has now figure out that the `krypton.txt` has not\n" +"disappeared it has simply been renamed." +msgstr "" +"Notice how Git has now figure out that the `krypton.txt` has not\n" +"disappeared it has simply been renamed." + +#: git-novice/_extras/discuss.md:452 +msgid "The final step, as before, is to commit our change to the repository:" +msgstr "The final step, as before, is to commit our change to the repository:" + +# code block +#: git-novice/_extras/discuss.md:454 +#: git-novice/_locale/es/_extras/discuss.md:454 +msgid "" +"~~~\n" +"$ git commit -m 'Superman's home is Earth, told you before.'\n" +"~~~" +msgstr "" +"~~~\n" +"$ git commit -m 'Superman's home is Earth, told you before.'\n" +"~~~" + +# Front Matter +#: git-novice/_extras/figures.md:1 +msgid "" +"---\n" +"layout: page\n" +"title: Figures\n" +"permalink: /figures/\n" +"---" +msgstr "" +"---\n" +"layout: page\n" +"title: Figures\n" +"permalink: /figures/\n" +"---" + +# Front Matter +#: git-novice/_extras/guide.md:1 +msgid "" +"---\n" +"layout: page\n" +"title: \"Instructor Notes\"\n" +"permalink: /guide/\n" +"---" +msgstr "" +"---\n" +"layout: page\n" +"title: \"Instructor Notes\"\n" +"permalink: /guide/\n" +"---" + +#: git-novice/_extras/guide.md:6 +msgid "" +"Using a software tool to handle the versions of your project files\n" +"lets you focus on the more interesting/innovative aspects of your project." +msgstr "" +"Using a software tool to handle the versions of your project files\n" +"lets you focus on the more interesting/innovative aspects of your project." + +# unordered list +#: git-novice/_extras/guide.md:9 +msgid "* Version control's advantages" +msgstr "* Version control's advantages" + +# unordered list +#: git-novice/_extras/guide.md:10 +msgid " * It's easy to set up" +msgstr " * It's easy to set up" + +# unordered list +#: git-novice/_extras/guide.md:11 +msgid " * Every copy of a Git repository is a full backup of a project and its history" +msgstr " * Every copy of a Git repository is a full backup of a project and its history" + +# unordered list +#: git-novice/_extras/guide.md:12 +msgid " * A few easy-to-remember commands are all you need for most day-to-day version control tasks" +msgstr " * A few easy-to-remember commands are all you need for most day-to-day version control tasks" + +# unordered list +#: git-novice/_extras/guide.md:13 +msgid " * The [GitHub][github] hosting service provides a web-based collaboration service" +msgstr " * The [GitHub][github] hosting service provides a web-based collaboration service" + +# unordered list +#: git-novice/_extras/guide.md:14 +msgid "* Two main concepts" +msgstr "* Two main concepts" + +# unordered list +#: git-novice/_extras/guide.md:15 +msgid " * *commit*: a recorded set of changes in your project's files" +msgstr " * *commit*: a recorded set of changes in your project's files" + +# unordered list +#: git-novice/_extras/guide.md:16 +msgid " * *repository*: the history of all your project's commits" +msgstr " * *repository*: the history of all your project's commits" + +# unordered list +#: git-novice/_extras/guide.md:17 +msgid "* Why use GitHub?" +msgstr "* Why use GitHub?" + +# unordered list +#: git-novice/_extras/guide.md:18 +msgid " * No need for a server: easy to set up" +msgstr " * No need for a server: easy to set up" + +# unordered list +#: git-novice/_extras/guide.md:19 +msgid " * GitHub's strong community: your colleagues are probably already there" +msgstr " * GitHub's strong community: your colleagues are probably already there" + +# header +#: git-novice/_extras/guide.md:21 +msgid "## Overall" +msgstr "## Overall" + +#: git-novice/_extras/guide.md:23 +msgid "" +"Version control might be the most important topic we teach, but Git is\n" +"definitely the most complicated tool. However, GitHub presently dominates the\n" +"open software repository landscape, so the time and effort required to teach\n" +"fundamental Git is justified and worthwhile." +msgstr "" +"Version control might be the most important topic we teach, but Git is\n" +"definitely the most complicated tool. However, GitHub presently dominates the\n" +"open software repository landscape, so the time and effort required to teach\n" +"fundamental Git is justified and worthwhile." + +#: git-novice/_extras/guide.md:28 +msgid "" +"Because of this complexity, we don't teach novice learners about many\n" +"interesting topics, such as branching, hashes, and commit objects." +msgstr "" +"Because of this complexity, we don't teach novice learners about many\n" +"interesting topics, such as branching, hashes, and commit objects." + +#: git-novice/_extras/guide.md:31 +msgid "" +"Instead we try to convince them that version control is useful for researchers\n" +"working in teams or not, because it is" +msgstr "" +"Instead we try to convince them that version control is useful for researchers\n" +"working in teams or not, because it is" + +# unordered list +#: git-novice/_extras/guide.md:34 +msgid "* a better way to \"undo\" changes," +msgstr "* a better way to \"undo\" changes," + +# unordered list +#: git-novice/_extras/guide.md:35 +msgid "* a better way to collaborate than mailing files back and forth, and" +msgstr "* a better way to collaborate than mailing files back and forth, and" + +# unordered list +#: git-novice/_extras/guide.md:36 +msgid "* a better way to share your code and other scientific work with the world." +msgstr "* a better way to share your code and other scientific work with the world." + +# header +#: git-novice/_extras/guide.md:38 +msgid "## Teaching Notes" +msgstr "## Teaching Notes" + +# unordered list +#: git-novice/_extras/guide.md:40 +msgid "* You can \"split\" your shell so that recent commands remain in view using [this](https://github.com/rgaiacs/swc-shell-split-window) script." +msgstr "* You can \"split\" your shell so that recent commands remain in view using [this](https://github.com/rgaiacs/swc-shell-split-window) script." + +# unordered list +#: git-novice/_extras/guide.md:42 +msgid "* Make sure the network is working *before* starting this lesson." +msgstr "* Make sure the network is working *before* starting this lesson." + +# unordered list +#: git-novice/_extras/guide.md:44 +msgid "* Drawings are particularly useful in this lesson: if you have a whiteboard," +msgstr "* Drawings are particularly useful in this lesson: if you have a whiteboard," + +#: git-novice/_extras/guide.md:45 +msgid " [use it][drawings]!" +msgstr " [use it][drawings]!" + +# unordered list +#: git-novice/_extras/guide.md:47 +msgid "* Version control is usually not the first subject in a workshop," +msgstr "* Version control is usually not the first subject in a workshop," + +#: git-novice/_extras/guide.md:48 +msgid "" +" so get learners to create a GitHub account after the session before.\n" +" Remind learners that the username and email they use for GitHub (and setup\n" +" during Git configuration) will be viewable to the public by default.\n" +" However, there are many reasons why a learner may not want their personal\n" +" information viewable, and GitHub has [resources for keeping an email address\n" +" private][github-privacy]." +msgstr "" +" so get learners to create a GitHub account after the session before.\n" +" Remind learners that the username and email they use for GitHub (and setup\n" +" during Git configuration) will be viewable to the public by default.\n" +" However, there are many reasons why a learner may not want their personal\n" +" information viewable, and GitHub has [resources for keeping an email address\n" +" private][github-privacy]." + +# unordered list +#: git-novice/_extras/guide.md:55 +msgid "* If some learners are using Windows, there will inevitably be issues" +msgstr "* If some learners are using Windows, there will inevitably be issues" + +#: git-novice/_extras/guide.md:56 +msgid "" +" merging files with different line endings. (Even if everyone's on\n" +" some flavor of Unix, different editors may or may not add a\n" +" newline to the last line of a file.) Take a moment to explain\n" +" these issues, since learners will almost certainly trip over them\n" +" again. If learners are running into line ending problems, GitHub\n" +" has a [page][github-line-endings] that helps with troubleshooting." +msgstr "" +" merging files with different line endings. (Even if everyone's on\n" +" some flavor of Unix, different editors may or may not add a\n" +" newline to the last line of a file.) Take a moment to explain\n" +" these issues, since learners will almost certainly trip over them\n" +" again. If learners are running into line ending problems, GitHub\n" +" has a [page][github-line-endings] that helps with troubleshooting." + +# unordered list +#: git-novice/_extras/guide.md:63 +msgid "* We don't use a Git GUI in these notes because we haven't found one that" +msgstr "* We don't use a Git GUI in these notes because we haven't found one that" + +#: git-novice/_extras/guide.md:64 +msgid "" +" installs easily and runs reliably on the three major operating systems, and\n" +" because we want learners to understand what commands are being run. That\n" +" said, instructors should demo a GUI on their desktop at some point during\n" +" this lesson and point learners at [this page][github-gui]." +msgstr "" +" installs easily and runs reliably on the three major operating systems, and\n" +" because we want learners to understand what commands are being run. That\n" +" said, instructors should demo a GUI on their desktop at some point during\n" +" this lesson and point learners at [this page][github-gui]." + +# unordered list +#: git-novice/_extras/guide.md:69 +msgid "* Instructors should show learners graphical diff/merge tools like" +msgstr "* Instructors should show learners graphical diff/merge tools like" + +#: git-novice/_extras/guide.md:70 +msgid " [DiffMerge][diffmerge]." +msgstr " [DiffMerge][diffmerge]." + +# unordered list +#: git-novice/_extras/guide.md:72 +msgid "* When appropriate, explain that we teach Git rather than CVS, Subversion, or" +msgstr "* When appropriate, explain that we teach Git rather than CVS, Subversion, or" + +#: git-novice/_extras/guide.md:73 +msgid "" +" Mercurial primarily because of GitHub's growing popularity: CVS and\n" +" Subversion are now seen as legacy systems, and Mercurial isn't nearly as\n" +" widely used in the sciences right now." +msgstr "" +" Mercurial primarily because of GitHub's growing popularity: CVS and\n" +" Subversion are now seen as legacy systems, and Mercurial isn't nearly as\n" +" widely used in the sciences right now." + +# unordered list +#: git-novice/_extras/guide.md:77 +msgid "* Further resources:" +msgstr "* Further resources:" + +# unordered list +#: git-novice/_extras/guide.md:78 +msgid " * [git-it][git-it] is a self-paced command-line Git demo," +msgstr " * [git-it][git-it] is a self-paced command-line Git demo," + +#: git-novice/_extras/guide.md:79 +msgid "" +" with [git-it-electron][git-it-electron] its GitHub Desktop successor.\n" +" * [Code School][code-school] has a free interactive course, [Try Git][try-git].\n" +" * for instructors, [the Git parable][git-parable] is useful background reading" +msgstr "" +" with [git-it-electron][git-it-electron] its GitHub Desktop successor.\n" +" * [Code School][code-school] has a free interactive course, [Try Git][try-git].\n" +" * for instructors, [the Git parable][git-parable] is useful background reading" + +# header +#: git-novice/_extras/guide.md:83 +msgid "## [Automated Version Control]({{ page.root }}/01-basics/)" +msgstr "## [Automated Version Control]({{ page.root }}/01-basics/)" + +# unordered list +#: git-novice/_extras/guide.md:85 +msgid "* Ask, \"Who uses 'undo' in their editor?\" All say \"Me\". 'Undo' is the simplest" +msgstr "* Ask, \"Who uses 'undo' in their editor?\" All say \"Me\". 'Undo' is the simplest" + +#: git-novice/_extras/guide.md:86 +msgid " form of version control." +msgstr " form of version control." + +# unordered list +#: git-novice/_extras/guide.md:88 +msgid "* Give learners a five-minute overview of what version control does for them" +msgstr "* Give learners a five-minute overview of what version control does for them" + +#: git-novice/_extras/guide.md:89 +msgid "" +" before diving into the watch-and-do practicals. Most of them will have\n" +" tried to co-author papers by emailing files back and forth, or will have\n" +" biked into the office only to realize that the USB key with last night's\n" +" work is still on the kitchen table. Instructors can also make jokes about\n" +" directories with names like \"final version\", \"final version revised\",\n" +" \"final version with reviewer three's corrections\", \"really final version\",\n" +" and, \"come on this really has to be the last version\" to motivate version\n" +" control as a better way to collaborate and as a better way to back work up." +msgstr "" +" before diving into the watch-and-do practicals. Most of them will have\n" +" tried to co-author papers by emailing files back and forth, or will have\n" +" biked into the office only to realize that the USB key with last night's\n" +" work is still on the kitchen table. Instructors can also make jokes about\n" +" directories with names like \"final version\", \"final version revised\",\n" +" \"final version with reviewer three's corrections\", \"really final version\",\n" +" and, \"come on this really has to be the last version\" to motivate version\n" +" control as a better way to collaborate and as a better way to back work up." + +# header +#: git-novice/_extras/guide.md:98 +msgid "## [Setting Up Git]({{ page.root }}/02-setup/)" +msgstr "## [Setting Up Git]({{ page.root }}/02-setup/)" + +# unordered list +#: git-novice/_extras/guide.md:100 +msgid "* We suggest instructors and students use `nano` as the text editor for this" +msgstr "* We suggest instructors and students use `nano` as the text editor for this" + +#: git-novice/_extras/guide.md:101 +msgid " lessons because" +msgstr " lessons because" + +# unordered list +#: git-novice/_extras/guide.md:103 +msgid " * it runs in all three major operating systems," +msgstr " * it runs in all three major operating systems," + +# unordered list +#: git-novice/_extras/guide.md:104 +msgid " * it runs inside the shell (switching windows can be confusing to students), and" +msgstr " * it runs inside the shell (switching windows can be confusing to students), and" + +# unordered list +#: git-novice/_extras/guide.md:105 +msgid " * it has shortcut help at the bottom of the window." +msgstr " * it has shortcut help at the bottom of the window." + +#: git-novice/_extras/guide.md:107 +msgid "" +" Please point out to students during setup that they can and should use\n" +" another text editor if they're already familiar with it." +msgstr "" +" Please point out to students during setup that they can and should use\n" +" another text editor if they're already familiar with it." + +# unordered list +#: git-novice/_extras/guide.md:110 +msgid "* When setting up Git, be very clear what learners have to enter: it is" +msgstr "* When setting up Git, be very clear what learners have to enter: it is" + +#: git-novice/_extras/guide.md:111 +msgid "" +" common for them to edit the instructor's details (e.g. email). Check at\n" +" the end using `git config --list`." +msgstr "" +" common for them to edit the instructor's details (e.g. email). Check at\n" +" the end using `git config --list`." + +# header +#: git-novice/_extras/guide.md:114 +msgid "## [Creating a Repository]({{ page.root }}/03-create/)" +msgstr "## [Creating a Repository]({{ page.root }}/03-create/)" + +# unordered list +#: git-novice/_extras/guide.md:116 +msgid "* When you do `git status`, Mac users may see a `.DS_Store` file showing as" +msgstr "* When you do `git status`, Mac users may see a `.DS_Store` file showing as" + +#: git-novice/_extras/guide.md:117 +msgid " untracked. This a file that Mac OS creates in each directory." +msgstr " untracked. This a file that Mac OS creates in each directory." + +# unordered list +#: git-novice/_extras/guide.md:119 +msgid "* The challenge \"Places to create repositories\" tries to reinforce the idea" +msgstr "* The challenge \"Places to create repositories\" tries to reinforce the idea" + +#: git-novice/_extras/guide.md:120 +msgid "" +" that the `.git` folder contains the whole Git repo and deleting this folder\n" +" undoes a `git init`. It also gives the learner the way to fix the common\n" +" mistake of putting unwanted folders (like `Desktop`) under version control." +msgstr "" +" that the `.git` folder contains the whole Git repo and deleting this folder\n" +" undoes a `git init`. It also gives the learner the way to fix the common\n" +" mistake of putting unwanted folders (like `Desktop`) under version control." + +#: git-novice/_extras/guide.md:124 +msgid "" +" Instead of removing the `.git` folder directly, you can choose to move it\n" +" first to a safer directory and remove it from there:" +msgstr "" +" Instead of removing the `.git` folder directly, you can choose to move it\n" +" first to a safer directory and remove it from there:" + +#: git-novice/_extras/guide.md:127 git-novice/_locale/es/_extras/guide.md:101 +msgid "" +" ~~~\n" +" $ mv .git temp_git\n" +" $ rm -rf temp_git\n" +" ~~~\n" +" {: .language-bash}" +msgstr "" +" ~~~\n" +" $ mv .git temp_git\n" +" $ rm -rf temp_git\n" +" ~~~\n" +" {: .language-bash}" + +#: git-novice/_extras/guide.md:133 +msgid "" +" The challenge suggests that it is a bad idea to create a Git repo inside another repo.\n" +" For more discussion on this topic, please see [this issue][repos-in-repos]." +msgstr "" +" The challenge suggests that it is a bad idea to create a Git repo inside another repo.\n" +" For more discussion on this topic, please see [this issue][repos-in-repos]." + +# header +#: git-novice/_extras/guide.md:136 +msgid "## [Tracking Changes]({{ page.root }}/04-changes/)" +msgstr "## [Tracking Changes]({{ page.root }}/04-changes/)" + +# unordered list +#: git-novice/_extras/guide.md:138 +msgid "* It's important that learners do a full commit cycle by themselves (make" +msgstr "* It's important that learners do a full commit cycle by themselves (make" + +#: git-novice/_extras/guide.md:139 +msgid "" +" changes, `git diff`, `git add`, and `git commit`). The \"`bio` repository\"\n" +" challenge does that." +msgstr "" +" changes, `git diff`, `git add`, and `git commit`). The \"`bio` repository\"\n" +" challenge does that." + +# unordered list +#: git-novice/_extras/guide.md:142 +msgid "* This is a good moment to show a diff with a graphical diff tool. If you" +msgstr "* This is a good moment to show a diff with a graphical diff tool. If you" + +#: git-novice/_extras/guide.md:143 +msgid " skip it because you're short on time, show it once in GitHub." +msgstr " skip it because you're short on time, show it once in GitHub." + +# unordered list +#: git-novice/_extras/guide.md:145 +msgid "* One thing may cause confusion is recovering old versions. If, instead of" +msgstr "* One thing may cause confusion is recovering old versions. If, instead of" + +#: git-novice/_extras/guide.md:146 +msgid "" +" doing `$ git checkout f22b25e mars.txt`, someone does `$ git checkout\n" +" f22b25e`, they wind up in the \"detached HEAD\" state and confusion abounds.\n" +" It's then possible to keep on committing, but things like `git push origin\n" +" master` a bit later will not give easily comprehensible results. It also\n" +" makes it look like commits can be lost. To \"re-attach\" HEAD, use\n" +" `git checkout master`." +msgstr "" +" doing `$ git checkout f22b25e mars.txt`, someone does `$ git checkout\n" +" f22b25e`, they wind up in the \"detached HEAD\" state and confusion abounds.\n" +" It's then possible to keep on committing, but things like `git push origin\n" +" master` a bit later will not give easily comprehensible results. It also\n" +" makes it look like commits can be lost. To \"re-attach\" HEAD, use\n" +" `git checkout master`." + +# unordered list +#: git-novice/_extras/guide.md:153 +msgid "* This is a good moment to show a log within a Git GUI. If you skip it" +msgstr "* This is a good moment to show a log within a Git GUI. If you skip it" + +#: git-novice/_extras/guide.md:154 +msgid " because you're short on time, show it once in GitHub." +msgstr " because you're short on time, show it once in GitHub." + +# header +#: git-novice/_extras/guide.md:156 +msgid "## [Ignoring Things]({{ page.root }}/06-ignore/)" +msgstr "## [Ignoring Things]({{ page.root }}/06-ignore/)" + +#: git-novice/_extras/guide.md:158 +msgid "" +"Just remember that you can use wildcards and regular expressions to ignore a\n" +"particular set of files in `.gitignore`." +msgstr "" +"Just remember that you can use wildcards and regular expressions to ignore a\n" +"particular set of files in `.gitignore`." + +# header +#: git-novice/_extras/guide.md:161 +msgid "## [Remotes in GitHub]({{ page.root }}/07-github/)" +msgstr "## [Remotes in GitHub]({{ page.root }}/07-github/)" + +# unordered list +#: git-novice/_extras/guide.md:163 +msgid "* Make it clear that Git and GitHub are not the same thing: Git is an open" +msgstr "* Make it clear that Git and GitHub are not the same thing: Git is an open" + +#: git-novice/_extras/guide.md:164 +msgid "" +" source version control tool, GitHub is a company that hosts Git\n" +" repositories in the web and provides a web interface to interact with repos\n" +" they host." +msgstr "" +" source version control tool, GitHub is a company that hosts Git\n" +" repositories in the web and provides a web interface to interact with repos\n" +" they host." + +# unordered list +#: git-novice/_extras/guide.md:168 +msgid "* If your learners are advanced enough to be comfortable with SSH, tell them" +msgstr "* If your learners are advanced enough to be comfortable with SSH, tell them" + +#: git-novice/_extras/guide.md:169 +msgid "" +" they can use keys to authenticate on GitHub instead of passwords, but don't\n" +" try to set this up during class: it takes too long, and is a distraction\n" +" from the core ideas of the lesson." +msgstr "" +" they can use keys to authenticate on GitHub instead of passwords, but don't\n" +" try to set this up during class: it takes too long, and is a distraction\n" +" from the core ideas of the lesson." + +# unordered list +#: git-novice/_extras/guide.md:173 +msgid "* It is very useful to draw a diagram showing the different repositories" +msgstr "* It is very useful to draw a diagram showing the different repositories" + +#: git-novice/_extras/guide.md:174 +msgid " involved." +msgstr " involved." + +# header +#: git-novice/_extras/guide.md:176 +msgid "## [Collaborating]({{ page.root }}/08-collab/)" +msgstr "## [Collaborating]({{ page.root }}/08-collab/)" + +# unordered list +#: git-novice/_extras/guide.md:178 +msgid "* Decide in advance whether all the learners will work in one shared" +msgstr "* Decide in advance whether all the learners will work in one shared" + +#: git-novice/_extras/guide.md:179 +msgid "" +" repository, or whether they will work in pairs (or other small groups) in\n" +" separate repositories. The former is easier to set up; the latter runs\n" +" more smoothly." +msgstr "" +" repository, or whether they will work in pairs (or other small groups) in\n" +" separate repositories. The former is easier to set up; the latter runs\n" +" more smoothly." + +# unordered list +#: git-novice/_extras/guide.md:183 +msgid "* Role playing between two instructors can be effective when teaching the" +msgstr "* Role playing between two instructors can be effective when teaching the" + +#: git-novice/_extras/guide.md:184 +msgid "" +" collaboration and conflict sections of the lesson. One instructor can play\n" +" the role of the repository owner, while the second instructor can play the\n" +" role of the collaborator. If it is possible, try to use two projectors so\n" +" that the computer screens of both instructors can be seen. This makes for\n" +" a very clear illustration to the students as to who does what." +msgstr "" +" collaboration and conflict sections of the lesson. One instructor can play\n" +" the role of the repository owner, while the second instructor can play the\n" +" role of the collaborator. If it is possible, try to use two projectors so\n" +" that the computer screens of both instructors can be seen. This makes for\n" +" a very clear illustration to the students as to who does what." + +# unordered list +#: git-novice/_extras/guide.md:190 +msgid "* It is also effective to pair up students during this lesson and assign one" +msgstr "* It is also effective to pair up students during this lesson and assign one" + +#: git-novice/_extras/guide.md:191 +msgid "" +" member of the pair to take the role of the owner and the other the role of\n" +" the collaborator. In this setup, challenges can include asking the\n" +" collaborator to make a change, commit it, and push the change to the remote\n" +" repository so that the owner can then retrieve it, and vice-versa. The\n" +" role playing between the instructors can get a bit \"dramatic\" in the\n" +" conflicts part of the lesson if the instructors want to inject some humor\n" +" into the room." +msgstr "" +" member of the pair to take the role of the owner and the other the role of\n" +" the collaborator. In this setup, challenges can include asking the\n" +" collaborator to make a change, commit it, and push the change to the remote\n" +" repository so that the owner can then retrieve it, and vice-versa. The\n" +" role playing between the instructors can get a bit \"dramatic\" in the\n" +" conflicts part of the lesson if the instructors want to inject some humor\n" +" into the room." + +# unordered list +#: git-novice/_extras/guide.md:199 +msgid "* If you don't have two projectors, have two instructors at the front of the" +msgstr "* If you don't have two projectors, have two instructors at the front of the" + +#: git-novice/_extras/guide.md:200 +msgid "" +" room. Each instructor does their piece of the collaboration demonstration\n" +" on their own computer and then passes the projector cord back and forth\n" +" with the other instructor when it's time for them to do the other part of\n" +" the collaborative workflow. It takes less than 10 seconds for each\n" +" switchover, so it doesn't interrupt the flow of the lesson.\n" +" And of course it helps to give each of the instructors a different-colored\n" +" hat, or put different-colored sticky notes on their foreheads." +msgstr "" +" room. Each instructor does their piece of the collaboration demonstration\n" +" on their own computer and then passes the projector cord back and forth\n" +" with the other instructor when it's time for them to do the other part of\n" +" the collaborative workflow. It takes less than 10 seconds for each\n" +" switchover, so it doesn't interrupt the flow of the lesson.\n" +" And of course it helps to give each of the instructors a different-colored\n" +" hat, or put different-colored sticky notes on their foreheads." + +# unordered list +#: git-novice/_extras/guide.md:208 +msgid "* If you're the only instructor, the best way to create is clone the two" +msgstr "* If you're the only instructor, the best way to create is clone the two" + +#: git-novice/_extras/guide.md:209 +msgid "" +" repos in your Desktop, but under different names, e.g., pretend one is your\n" +" computer at work:" +msgstr "" +" repos in your Desktop, but under different names, e.g., pretend one is your\n" +" computer at work:" + +#: git-novice/_extras/guide.md:212 git-novice/_locale/es/_extras/guide.md:157 +msgid "" +" ~~~\n" +" $ git clone https://github.com/vlad/planets.git planets-at-work\n" +" ~~~\n" +" {: .language-bash}" +msgstr "" +" ~~~\n" +" $ git clone https://github.com/vlad/planets.git planets-at-work\n" +" ~~~\n" +" {: .language-bash}" + +# unordered list +#: git-novice/_extras/guide.md:217 +msgid "* It's very common that learners mistype the remote alias or the remote URL" +msgstr "* It's very common that learners mistype the remote alias or the remote URL" + +#: git-novice/_extras/guide.md:218 +msgid "" +" when adding a remote, so they cannot `push`. You can diagnose this with\n" +" `git remote -v` and checking carefully for typos.\n" +" - To fix a wrong alias, you can do `git remote rename `.\n" +" - To fix a wrong URL, you can do `git remote set-url `." +msgstr "" +" when adding a remote, so they cannot `push`. You can diagnose this with\n" +" `git remote -v` and checking carefully for typos.\n" +" - To fix a wrong alias, you can do `git remote rename `.\n" +" - To fix a wrong URL, you can do `git remote set-url `." + +# unordered list +#: git-novice/_extras/guide.md:223 +msgid "* Before cloning the repo, be sure that nobody is inside another repo. The" +msgstr "* Before cloning the repo, be sure that nobody is inside another repo. The" + +#: git-novice/_extras/guide.md:224 +msgid "" +" best way to achieve this is moving to the `Desktop` before cloning: `cd &&\n" +" cd Desktop`." +msgstr "" +" best way to achieve this is moving to the `Desktop` before cloning: `cd &&\n" +" cd Desktop`." + +# unordered list +#: git-novice/_extras/guide.md:227 +msgid "* If both repos are in the `Desktop`, have them to clone their collaborator" +msgstr "* If both repos are in the `Desktop`, have them to clone their collaborator" + +#: git-novice/_extras/guide.md:228 +msgid " repo under a given directory using a second argument:" +msgstr " repo under a given directory using a second argument:" + +#: git-novice/_extras/guide.md:230 git-novice/_locale/es/_extras/guide.md:173 +msgid "" +" ~~~\n" +" $ git clone https://github.com/vlad/planets.git vlad-planet\n" +" ~~~\n" +" {: .language-bash}" +msgstr "" +" ~~~\n" +" $ git clone https://github.com/vlad/planets.git vlad-planet\n" +" ~~~\n" +" {: .language-bash}" + +# unordered list +#: git-novice/_extras/guide.md:235 +msgid "* The most common mistake is that learners `push` before `pull`ing. If they" +msgstr "* The most common mistake is that learners `push` before `pull`ing. If they" + +#: git-novice/_extras/guide.md:236 +msgid " `pull` afterward, they may get a conflict." +msgstr " `pull` afterward, they may get a conflict." + +# unordered list +#: git-novice/_extras/guide.md:238 +msgid "* Conflicts, sometimes weird, will start to arise. Stay tight: conflicts are" +msgstr "* Conflicts, sometimes weird, will start to arise. Stay tight: conflicts are" + +#: git-novice/_extras/guide.md:239 +msgid " next." +msgstr " next." + +# header +#: git-novice/_extras/guide.md:241 +msgid "## [Conflicts]({{ page.root }}/09-conflict/)" +msgstr "## [Conflicts]({{ page.root }}/09-conflict/)" + +# unordered list +#: git-novice/_extras/guide.md:243 +msgid "* Expect the learners to make mistakes. Expect *yourself* to make mistakes. This" +msgstr "* Expect the learners to make mistakes. Expect *yourself* to make mistakes. This" + +#: git-novice/_extras/guide.md:244 +msgid " happens because it is late in the lesson and everyone is tired." +msgstr " happens because it is late in the lesson and everyone is tired." + +# unordered list +#: git-novice/_extras/guide.md:246 +msgid "* If you're the only instructor, the best way to create a conflict is:" +msgstr "* If you're the only instructor, the best way to create a conflict is:" + +# unordered list +#: git-novice/_extras/guide.md:248 +msgid " * Clone your repo in a different directory, pretending is your computer at" +msgstr " * Clone your repo in a different directory, pretending is your computer at" + +#: git-novice/_extras/guide.md:249 +msgid "" +" work: `git clone https://github.com/vlad/planets.git planets-at-work`.\n" +" * At the office, you make a change, commit and push.\n" +" * At your laptop repo, you (forget to pull and) make a change, commit and\n" +" try to push.\n" +" * `git pull` now and show the conflict." +msgstr "" +" work: `git clone https://github.com/vlad/planets.git planets-at-work`.\n" +" * At the office, you make a change, commit and push.\n" +" * At your laptop repo, you (forget to pull and) make a change, commit and\n" +" try to push.\n" +" * `git pull` now and show the conflict." + +# unordered list +#: git-novice/_extras/guide.md:255 +msgid "* Learners usually forget to `git add` the file after fixing the conflict and" +msgstr "* Learners usually forget to `git add` the file after fixing the conflict and" + +#: git-novice/_extras/guide.md:256 +msgid " just (try to) commit. You can diagnose this with `git status`." +msgstr " just (try to) commit. You can diagnose this with `git status`." + +# unordered list +#: git-novice/_extras/guide.md:258 +msgid "* Remember that you can discard one of the two parents of the merge:" +msgstr "* Remember that you can discard one of the two parents of the merge:" + +# unordered list +#: git-novice/_extras/guide.md:260 +msgid " * discard the remote file, `git checkout --ours conflicted_file.txt`" +msgstr " * discard the remote file, `git checkout --ours conflicted_file.txt`" + +# unordered list +#: git-novice/_extras/guide.md:261 +msgid " * discard the local file, `git checkout --theirs conflicted_file.txt`" +msgstr " * discard the local file, `git checkout --theirs conflicted_file.txt`" + +#: git-novice/_extras/guide.md:263 +msgid "" +" You still have to `git add` and `git commit` after this. This is\n" +" particularly useful when working with binary files." +msgstr "" +" You still have to `git add` and `git commit` after this. This is\n" +" particularly useful when working with binary files." + +# header +#: git-novice/_extras/guide.md:266 +msgid "## [Open Science]({{ page.root }}/10-open/)" +msgstr "## [Open Science]({{ page.root }}/10-open/)" + +# header +#: git-novice/_extras/guide.md:268 +msgid "## [Licensing]({{ page.root }}/11-licensing/)" +msgstr "## [Licensing]({{ page.root }}/11-licensing/)" + +#: git-novice/_extras/guide.md:270 +msgid "" +"We teach about licensing because questions about who owns what, or can use\n" +"what, arise naturally once we start talking about using public services like\n" +"GitHub to store files. Also, the discussion gives learners a chance to catch\n" +"their breath after what is often a frustrating couple of hours." +msgstr "" +"We teach about licensing because questions about who owns what, or can use\n" +"what, arise naturally once we start talking about using public services like\n" +"GitHub to store files. Also, the discussion gives learners a chance to catch\n" +"their breath after what is often a frustrating couple of hours." + +# header +#: git-novice/_extras/guide.md:275 git-novice/_locale/es/_extras/guide.md:214 +msgid "## [Citation]({{ page.root }}/12-citation/)" +msgstr "## [Citation]({{ page.root }}/12-citation/)" + +# header +#: git-novice/_extras/guide.md:277 +msgid "## [Hosting]({{ page.root }}/13-hosting/)" +msgstr "## [Hosting]({{ page.root }}/13-hosting/)" + +#: git-novice/_extras/guide.md:279 +msgid "" +"A common concern for learners is having their work publicly available on\n" +"GitHub. While we encourage open science, sometimes private repos are the\n" +"only choice. It's always interesting to mention the options to have\n" +"web-hosted private repositories." +msgstr "" +"A common concern for learners is having their work publicly available on\n" +"GitHub. While we encourage open science, sometimes private repos are the\n" +"only choice. It's always interesting to mention the options to have\n" +"web-hosted private repositories." + +#: git-novice/_extras/guide.md:284 +msgid "" +"[code-school]: https://www.codeschool.com/\n" +"[diffmerge]: https://sourcegear.com/diffmerge/\n" +"[drawings]: https://marklodato.github.io/visual-git-guide/index-en.html\n" +"[git-it]: https://github.com/jlord/git-it\n" +"[git-it-electron]: https://github.com/jlord/git-it-electron\n" +"[git-parable]: http://tom.preston-werner.com/2009/05/19/the-git-parable.html\n" +"[github]: https://github.com/\n" +"[github-gui]: https://git-scm.com/downloads/guis\n" +"[github-line-endings]: https://help.github.com/articles/dealing-with-line-endings/#platform-all\n" +"[github-privacy]: https://help.github.com/articles/keeping-your-email-address-private/\n" +"[repos-in-repos]: https://github.com/swcarpentry/git-novice/issues/272\n" +"[try-git]: https://try.github.io" +msgstr "" +"[code-school]: https://www.codeschool.com/\n" +"[diffmerge]: https://sourcegear.com/diffmerge/\n" +"[drawings]: https://marklodato.github.io/visual-git-guide/index-en.html\n" +"[git-it]: https://github.com/jlord/git-it\n" +"[git-it-electron]: https://github.com/jlord/git-it-electron\n" +"[git-parable]: http://tom.preston-werner.com/2009/05/19/the-git-parable.html\n" +"[github]: https://github.com/\n" +"[github-gui]: https://git-scm.com/downloads/guis\n" +"[github-line-endings]: https://help.github.com/articles/dealing-with-line-endings/#platform-all\n" +"[github-privacy]: https://help.github.com/articles/keeping-your-email-address-private/\n" +"[repos-in-repos]: https://github.com/swcarpentry/git-novice/issues/272\n" +"[try-git]: https://try.github.io" + +# Front Matter +#: git-novice/_locale/es/CODE_OF_CONDUCT.md:1 +msgid "" +"---\n" +"layout: page\n" +"title: \"Contributor Code of Conduct\"\n" +"permalink: /es/conduct/\n" +"---" +msgstr "" +"---\n" +"layout: page\n" +"title: \"Contributor Code of Conduct\"\n" +"permalink: /es/conduct/\n" +"---" + +# header +#: git-novice/_locale/es/CONTRIBUTING.md:1 +msgid "# Contribuyendo" +msgstr "# Contribuyendo" + +#: git-novice/_locale/es/CONTRIBUTING.md:3 +msgid "" +"[Software Carpentry][swc-site] y [Data Carpentry][dc-site] son ​\n" +"proyectos de código abierto, y damos la bienvenida a contribuciones \n" +"de todo tipo: nuevas lecciones, correcciones al material existente, \n" +"informes de errores, y revisiones de cambios propuestos son todas\n" +"bienvenidas." +msgstr "" +"[Software Carpentry][swc-site] y [Data Carpentry][dc-site] son ​\n" +"proyectos de código abierto, y damos la bienvenida a contribuciones \n" +"de todo tipo: nuevas lecciones, correcciones al material existente, \n" +"informes de errores, y revisiones de cambios propuestos son todas\n" +"bienvenidas." + +# header +#: git-novice/_locale/es/CONTRIBUTING.md:9 +msgid "## Acuerdo de Colaboración" +msgstr "## Acuerdo de Colaboración" + +#: git-novice/_locale/es/CONTRIBUTING.md:11 +msgid "" +"Al contribuir, aceptas que podemos redistribuir tu trabajo bajo\n" +"[nuestra licencia](LICENCIA.md). A cambio, abordaremos tus problemas \n" +"y/o evaluaremos tu propuesta de cambio tan pronto como podamos, y \n" +"te ayudaremos a convertirte en miembro de nuestra comunidad. Todos los \n" +"involucrados en [Software Carpentry][swc-site] y \n" +"[Data Carpentry][dc-site]\n" +"aceptan cumplir con nuestro [código de conducta](CONDUCT.md)." +msgstr "" +"Al contribuir, aceptas que podemos redistribuir tu trabajo bajo\n" +"[nuestra licencia](LICENCIA.md). A cambio, abordaremos tus problemas \n" +"y/o evaluaremos tu propuesta de cambio tan pronto como podamos, y \n" +"te ayudaremos a convertirte en miembro de nuestra comunidad. Todos los \n" +"involucrados en [Software Carpentry][swc-site] y \n" +"[Data Carpentry][dc-site]\n" +"aceptan cumplir con nuestro [código de conducta](CONDUCT.md)." + +# header +#: git-novice/_locale/es/CONTRIBUTING.md:19 +msgid "## Cómo contribuir" +msgstr "## Cómo contribuir" + +#: git-novice/_locale/es/CONTRIBUTING.md:21 +msgid "" +"La forma más fácil de comenzar es presentar un problema para \n" +"poder corregirlo, como un error ortográfico, algunas palabras no claras,\n" +"o un error fáctico. Contribuir es una buena forma de presentarte \n" +"y conocer a algunos de los miembros de nuestra comunidad." +msgstr "" +"La forma más fácil de comenzar es presentar un problema para \n" +"poder corregirlo, como un error ortográfico, algunas palabras no claras,\n" +"o un error fáctico. Contribuir es una buena forma de presentarte \n" +"y conocer a algunos de los miembros de nuestra comunidad." + +# ordered list +#: git-novice/_locale/es/CONTRIBUTING.md:26 +msgid "1. Si no tienes una cuenta de [GitHub][github]," +msgstr "1. Si no tienes una cuenta de [GitHub][github]," + +#: git-novice/_locale/es/CONTRIBUTING.md:27 +msgid " puedes [enviarnos comentarios por correo electrónico][contacto]. Sin embargo, podremos responder más rápidamente si usas uno de los otros métodos descritos a continuación." +msgstr " puedes [enviarnos comentarios por correo electrónico][contacto]. Sin embargo, podremos responder más rápidamente si usas uno de los otros métodos descritos a continuación." + +# ordered list +#: git-novice/_locale/es/CONTRIBUTING.md:29 +msgid "2. Si tienes una cuenta de[GitHub][github]," +msgstr "2. Si tienes una cuenta de[GitHub][github]," + +#: git-novice/_locale/es/CONTRIBUTING.md:30 +msgid " o estás dispuesto a [crear una][github-join], pero no sabes como usar git, puedes informar de problemas o sugerir mejoras al [crear un problema o **issue**][nuevo-problema]. Esto nos permite asignar la tarea a alguien y responderle en un hilo de discusión." +msgstr " o estás dispuesto a [crear una][github-join], pero no sabes como usar git, puedes informar de problemas o sugerir mejoras al [crear un problema o **issue**][nuevo-problema]. Esto nos permite asignar la tarea a alguien y responderle en un hilo de discusión." + +# ordered list +#: git-novice/_locale/es/CONTRIBUTING.md:32 +msgid "3. Si te sientes cómodo con Git," +msgstr "3. Si te sientes cómodo con Git," + +#: git-novice/_locale/es/CONTRIBUTING.md:33 +msgid " y te gustaría agregar o cambiar material, puedes enviar una solicitud de inclusión o **pull request** (PR). Las instrucciones para hacerlo [se incluyen a continuación](#using-github)." +msgstr " y te gustaría agregar o cambiar material, puedes enviar una solicitud de inclusión o **pull request** (PR). Las instrucciones para hacerlo [se incluyen a continuación](#using-github)." + +# header +#: git-novice/_locale/es/CONTRIBUTING.md:35 +msgid "## Donde Contribuir" +msgstr "## Donde Contribuir" + +# ordered list +#: git-novice/_locale/es/CONTRIBUTING.md:37 +msgid "1. Si deseas cambiar esta lección," +msgstr "1. Si deseas cambiar esta lección," + +#: git-novice/_locale/es/CONTRIBUTING.md:38 +msgid " por favor trabaja en , que se puede ver en ." +msgstr " por favor trabaja en , que se puede ver en ." + +# ordered list +#: git-novice/_locale/es/CONTRIBUTING.md:40 +msgid "2. Si deseas cambiar la lección de ejemplo," +msgstr "2. Si deseas cambiar la lección de ejemplo," + +#: git-novice/_locale/es/CONTRIBUTING.md:41 +msgid " por favor trabaja en , que documenta el formato de nuestras lecciones y se puede ver en ." +msgstr " por favor trabaja en , que documenta el formato de nuestras lecciones y se puede ver en ." + +# ordered list +#: git-novice/_locale/es/CONTRIBUTING.md:43 +msgid "3. Si deseas cambiar la plantilla utilizada para los sitios web del taller," +msgstr "3. Si deseas cambiar la plantilla utilizada para los sitios web del taller," + +#: git-novice/_locale/es/CONTRIBUTING.md:44 +msgid " por favor trabaja en . La página de inicio de ese repositorio explica cómo configurar los sitios web de los talleres, mientras que las páginas adicionales en proporcionan más información sobre nuestros criterios de diseño." +msgstr " por favor trabaja en . La página de inicio de ese repositorio explica cómo configurar los sitios web de los talleres, mientras que las páginas adicionales en proporcionan más información sobre nuestros criterios de diseño." + +# ordered list +#: git-novice/_locale/es/CONTRIBUTING.md:46 +msgid "4. Si deseas cambiar los archivos de estilo CSS, herramientas," +msgstr "4. Si deseas cambiar los archivos de estilo CSS, herramientas," + +#: git-novice/_locale/es/CONTRIBUTING.md:47 +msgid " o texto estándar HTML para lecciones o talleres almacenados en `_includes` o` _layouts`, por favor trabaja en ." +msgstr " o texto estándar HTML para lecciones o talleres almacenados en `_includes` o` _layouts`, por favor trabaja en ." + +# header +#: git-novice/_locale/es/CONTRIBUTING.md:49 +msgid "## Qué aportar" +msgstr "## Qué aportar" + +#: git-novice/_locale/es/CONTRIBUTING.md:51 +msgid "" +"Hay muchas maneras de contribuir, desde escribir nuevos ejercicios y\n" +"mejorar los existentes hasta actualizar o completar la documentación y\n" +"enviando [informes de error o **issues**][nuevo-problema] sobre cosas que no\n" +"funcionan, no son claras o faltan. Si estás buscando ideas, por favor\n" +"revisa [la lista de problemas para este repositorio][issues], o la de los \n" +"problemas de los proyectos [Data Carpentry][dc-issues] y \n" +"[Software Carpentry][swc-issues]." +msgstr "" +"Hay muchas maneras de contribuir, desde escribir nuevos ejercicios y\n" +"mejorar los existentes hasta actualizar o completar la documentación y\n" +"enviando [informes de error o **issues**][nuevo-problema] sobre cosas que no\n" +"funcionan, no son claras o faltan. Si estás buscando ideas, por favor\n" +"revisa [la lista de problemas para este repositorio][issues], o la de los \n" +"problemas de los proyectos [Data Carpentry][dc-issues] y \n" +"[Software Carpentry][swc-issues]." + +#: git-novice/_locale/es/CONTRIBUTING.md:59 +msgid "" +"Los comentarios sobre problemas y revisiones de solicitudes de\n" +"inclusión son igualmente bienvenidos: somos más inteligentes juntos\n" +"que por nuestra cuenta. Los comentarios de principiantes y recién \n" +"llegados son particularmente valiosos: es fácil para las personas\n" +"que han estado usando estas lecciones por un tiempo, olvidar lo \n" +"impenetrable que puede ser parte de este material, por lo que los \n" +"ojos frescos son siempre bienvenidos." +msgstr "" +"Los comentarios sobre problemas y revisiones de solicitudes de\n" +"inclusión son igualmente bienvenidos: somos más inteligentes juntos\n" +"que por nuestra cuenta. Los comentarios de principiantes y recién \n" +"llegados son particularmente valiosos: es fácil para las personas\n" +"que han estado usando estas lecciones por un tiempo, olvidar lo \n" +"impenetrable que puede ser parte de este material, por lo que los \n" +"ojos frescos son siempre bienvenidos." + +# header +#: git-novice/_locale/es/CONTRIBUTING.md:67 +msgid "## Qué *No* contribuir" +msgstr "## Qué *No* contribuir" + +#: git-novice/_locale/es/CONTRIBUTING.md:69 +msgid "" +"Nuestras lecciones ya contienen más material de lo que podemos cubrir\n" +"en un taller típico, por lo que usualmente *no* buscamos más \n" +"conceptos o herramientas para agregarles. Como regla general, si quieres\n" +"presentar una nueva idea, debes (a) estimar cuánto tiempo tomará \n" +"enseñarla y (b) explicar lo que sacarías para darle espacio. El primero\n" +"anima a los contribuyentes a ser honestos acerca de los requisitos;\n" +"el segundo, pensar bien las prioridades." +msgstr "" +"Nuestras lecciones ya contienen más material de lo que podemos cubrir\n" +"en un taller típico, por lo que usualmente *no* buscamos más \n" +"conceptos o herramientas para agregarles. Como regla general, si quieres\n" +"presentar una nueva idea, debes (a) estimar cuánto tiempo tomará \n" +"enseñarla y (b) explicar lo que sacarías para darle espacio. El primero\n" +"anima a los contribuyentes a ser honestos acerca de los requisitos;\n" +"el segundo, pensar bien las prioridades." + +#: git-novice/_locale/es/CONTRIBUTING.md:77 +msgid "" +"Tampoco buscamos ejercicios u otro material que sólo se ejecute en \n" +"una plataforma. Nuestros talleres suelen contener una mezcla de \n" +"usuarios de Windows, Mac OS X y Linux; para ser utilizable, nuestras \n" +"lecciones deben correr igualmente bien en las tres plataformas." +msgstr "" +"Tampoco buscamos ejercicios u otro material que sólo se ejecute en \n" +"una plataforma. Nuestros talleres suelen contener una mezcla de \n" +"usuarios de Windows, Mac OS X y Linux; para ser utilizable, nuestras \n" +"lecciones deben correr igualmente bien en las tres plataformas." + +# header +#: git-novice/_locale/es/CONTRIBUTING.md:82 +msgid "## Usando GitHub" +msgstr "## Usando GitHub" + +# ordered list +#: git-novice/_locale/es/CONTRIBUTING.md:89 +msgid "1. La copia publicada de la lección está en la rama `gh-pages` del repositorio " +msgstr "1. La copia publicada de la lección está en la rama `gh-pages` del repositorio " + +#: git-novice/_locale/es/CONTRIBUTING.md:90 +msgid "(para que GitHub la regenere automáticamente). Por favor crea todas las ramas de eso, y fusiona la rama `gh-pages` del [repositorio maestro][repo] en la rama` gh-pages` antes de comenzar a trabajar. Por favor, *no* trabajes directamente en su rama `gh-pages`, ya que eso te dificultará trabajar en otras contribuciones." +msgstr "(para que GitHub la regenere automáticamente). Por favor crea todas las ramas de eso, y fusiona la rama `gh-pages` del [repositorio maestro][repo] en la rama` gh-pages` antes de comenzar a trabajar. Por favor, *no* trabajes directamente en su rama `gh-pages`, ya que eso te dificultará trabajar en otras contribuciones." + +# ordered list +#: git-novice/_locale/es/CONTRIBUTING.md:92 +msgid "2. Usamos [GitHub flow] [github-flow] para gestionar los cambios:" +msgstr "2. Usamos [GitHub flow] [github-flow] para gestionar los cambios:" + +#: git-novice/_locale/es/CONTRIBUTING.md:93 +msgid "" +"   1. Crea una nueva rama en tu copia de escritorio de este repositorio para cada cambio significativo.\n" +"   2. Confirma (**commit**) el cambio en esa rama.\n" +"   3. Empuja esa rama a su tenedor de este repositorio en GitHub.\n" +"   4. Envía una solicitud de inserción (**pull request**) desde esa rama al [repositorio principal] [repo].\n" +"   5. Si recibe comentarios,\n" +"      haz cambios en tu escritorio y envíalos (**push**) a tu rama en GitHub:\n" +"      la solicitud de inserción se actualizará automáticamente." +msgstr "" +"   1. Crea una nueva rama en tu copia de escritorio de este repositorio para cada cambio significativo.\n" +"   2. Confirma (**commit**) el cambio en esa rama.\n" +"   3. Empuja esa rama a su tenedor de este repositorio en GitHub.\n" +"   4. Envía una solicitud de inserción (**pull request**) desde esa rama al [repositorio principal] [repo].\n" +"   5. Si recibe comentarios,\n" +"      haz cambios en tu escritorio y envíalos (**push**) a tu rama en GitHub:\n" +"      la solicitud de inserción se actualizará automáticamente." + +#: git-novice/_locale/es/CONTRIBUTING.md:101 +msgid "" +"Cada lección tiene dos mantenedores que revisan problemas y solicitudes \n" +"inserción o animan a otros a hacerlos. Los mantenedores son \n" +"voluntarios de la comunidad, y tener la última palabra sobre lo que \n" +"se incluye en la lección." +msgstr "" +"Cada lección tiene dos mantenedores que revisan problemas y solicitudes \n" +"inserción o animan a otros a hacerlos. Los mantenedores son \n" +"voluntarios de la comunidad, y tener la última palabra sobre lo que \n" +"se incluye en la lección." + +# header +#: git-novice/_locale/es/CONTRIBUTING.md:106 +msgid "## Otros recursos" +msgstr "## Otros recursos" + +#: git-novice/_locale/es/CONTRIBUTING.md:108 +msgid "" +"La discusión general de [Software Carpentry][swc-site] y \n" +"[Data Carpentry][dc-site] ocurre en la \n" +"[lista de distribución de discusiones][lista-de-discusión], \n" +"a la cual todos son bienvenidos. También puedes \n" +"[contactarnos por correo electrónico][contacto]." +msgstr "" +"La discusión general de [Software Carpentry][swc-site] y \n" +"[Data Carpentry][dc-site] ocurre en la \n" +"[lista de distribución de discusiones][lista-de-discusión], \n" +"a la cual todos son bienvenidos. También puedes \n" +"[contactarnos por correo electrónico][contacto]." + +#: git-novice/_locale/es/CONTRIBUTING.md:114 +msgid "" +"[contacto]: mailto:admin@software-carpentry.org\n" +"[dc-issues]: https://github.com/issues?q=user%3Adatacarpentry\n" +"[dc-lessons]: http://datacarpentry.org/lessons/\n" +"[dc-site]: http://datacarpentry.org/\n" +"[lista-de-discusión]: http://lists.software-carpentry.org/listinfo/discuss\n" +"[github]: http://github.com\n" +"[github-flow]: https://guides.github.com/introduction/flow/\n" +"[github-join]: https://github.com/join\n" +"[cómo-contribuir]: https://egghead.io/series/how-to-contribute-to-an-open-source-project-on-github\n" +"[nuevo-problema]: https://github.com/swcarpentry/git-novice/issues/new\n" +"[issues]: https://github.com/swcarpentry/git-novice/issues/\n" +"[repo]: https://github.com/swcarpentry/git-novice/\n" +"[swc-issues]: https://github.com/issues?q=user%3Aswcarpentry\n" +"[swc-lessons]: http://software-carpentry.org/lessons/\n" +"[swc-site]: http://software-carpentry.org/" +msgstr "" +"[contacto]: mailto:admin@software-carpentry.org\n" +"[dc-issues]: https://github.com/issues?q=user%3Adatacarpentry\n" +"[dc-lessons]: http://datacarpentry.org/lessons/\n" +"[dc-site]: http://datacarpentry.org/\n" +"[lista-de-discusión]: http://lists.software-carpentry.org/listinfo/discuss\n" +"[github]: http://github.com\n" +"[github-flow]: https://guides.github.com/introduction/flow/\n" +"[github-join]: https://github.com/join\n" +"[cómo-contribuir]: https://egghead.io/series/how-to-contribute-to-an-open-source-project-on-github\n" +"[nuevo-problema]: https://github.com/swcarpentry/git-novice/issues/new\n" +"[issues]: https://github.com/swcarpentry/git-novice/issues/\n" +"[repo]: https://github.com/swcarpentry/git-novice/\n" +"[swc-issues]: https://github.com/issues?q=user%3Aswcarpentry\n" +"[swc-lessons]: http://software-carpentry.org/lessons/\n" +"[swc-site]: http://software-carpentry.org/" + +# Front Matter +#: git-novice/_locale/es/LICENSE.md:1 +msgid "" +"---\n" +"layout: page\n" +"title: \"Licencias\"\n" +"root: .\n" +"---" +msgstr "" +"---\n" +"layout: page\n" +"title: \"Licencias\"\n" +"root: .\n" +"---" + +# header +#: git-novice/_locale/es/LICENSE.md:6 +msgid "### Material didáctico" +msgstr "### Material didáctico" + +#: git-novice/_locale/es/LICENSE.md:8 +msgid "" +"Todo el material de instrucción de Software Carpentry and Data Carpentry está\n" +"disponible bajo la licencia [Creative Commons Attribution][cc-por-humano]. El siguiente es un resumen de licencia\n" +"(y no un sustituto) del [texto legal completo de CC BY 4.0\n" +"licencia][cc-by-legal]." +msgstr "" +"Todo el material de instrucción de Software Carpentry and Data Carpentry está\n" +"disponible bajo la licencia [Creative Commons Attribution][cc-por-humano]. El siguiente es un resumen de licencia\n" +"(y no un sustituto) del [texto legal completo de CC BY 4.0\n" +"licencia][cc-by-legal]." + +#: git-novice/_locale/es/LICENSE.md:13 +msgid "Puedes libremente:" +msgstr "Puedes libremente:" + +# unordered list +#: git-novice/_locale/es/LICENSE.md:15 +msgid "* **Compartir** --- copiar y redistribuir el material en cualquier medio o formato" +msgstr "* **Compartir** --- copiar y redistribuir el material en cualquier medio o formato" + +# unordered list +#: git-novice/_locale/es/LICENSE.md:16 +msgid "* **Adaptar** --- remezclar, transformar y construir a partir del material" +msgstr "* **Adaptar** --- remezclar, transformar y construir a partir del material" + +#: git-novice/_locale/es/LICENSE.md:18 +msgid "para cualquier propósito, incluso comercialmente." +msgstr "para cualquier propósito, incluso comercialmente." + +#: git-novice/_locale/es/LICENSE.md:20 +msgid "" +"El licenciante no puede revocar estas libertades mientras se siga las\n" +"condiciones de la licencia." +msgstr "" +"El licenciante no puede revocar estas libertades mientras se siga las\n" +"condiciones de la licencia." + +#: git-novice/_locale/es/LICENSE.md:23 +msgid "Bajo los siguientes términos:" +msgstr "Bajo los siguientes términos:" + +# unordered list +#: git-novice/_locale/es/LICENSE.md:25 +msgid "* **Atribución** --- Debes otorgar crédito a éste material de manera adecuada (mencionando que" +msgstr "* **Atribución** --- Debes otorgar crédito a éste material de manera adecuada (mencionando que" + +#: git-novice/_locale/es/LICENSE.md:26 +msgid "" +"  su trabajo se deriva del trabajo que es Copyright de © Software\n" +"  Carpentry y, donde sea práctico, agrega un enlace a\n" +"  http://software-carpentry.org/), proporciona un [enlace a la\n" +"  licencia][cc-por-humano], e indica si se realizaron cambios. Puedes hacerlo en cualquier forma razonable, \n" +" pero no de forma tal que sugiera que tú o el uso del material derivado tienen el respaldo del licenciante. " +msgstr "" +"  su trabajo se deriva del trabajo que es Copyright de © Software\n" +"  Carpentry y, donde sea práctico, agrega un enlace a\n" +"  http://software-carpentry.org/), proporciona un [enlace a la\n" +"  licencia][cc-por-humano], e indica si se realizaron cambios. Puedes hacerlo en cualquier forma razonable, \n" +" pero no de forma tal que sugiera que tú o el uso del material derivado tienen el respaldo del licenciante. " + +#: git-novice/_locale/es/LICENSE.md:32 +msgid "" +"**Sin restricciones adicionales** --- No puedes aplicar términos legales o\n" +"medidas tecnológicas que restrinjan a otros hacer\n" +"todo lo que la licencia permite. " +msgstr "" +"**Sin restricciones adicionales** --- No puedes aplicar términos legales o\n" +"medidas tecnológicas que restrinjan a otros hacer\n" +"todo lo que la licencia permite. " + +#: git-novice/_locale/es/LICENSE.md:36 +msgid "Avisos:" +msgstr "Avisos:" + +# unordered list +#: git-novice/_locale/es/LICENSE.md:38 +msgid "* No tiene que cumplir con la licencia con los materiales que estén en el dominio público " +msgstr "* No tiene que cumplir con la licencia con los materiales que estén en el dominio público " + +#: git-novice/_locale/es/LICENSE.md:39 +msgid "" +" o cuando su uso esté permitido por una excepción o limitación aplicable. \n" +"* No se dan garantías. La licencia puede no darle todos los\n" +"  permisos necesarios para su uso previsto. Por ejemplo, otros\n" +"  derechos como la publicidad, la privacidad, o los derechos morales pueden limitar la forma en que\n" +"  uses el material." +msgstr "" +" o cuando su uso esté permitido por una excepción o limitación aplicable. \n" +"* No se dan garantías. La licencia puede no darle todos los\n" +"  permisos necesarios para su uso previsto. Por ejemplo, otros\n" +"  derechos como la publicidad, la privacidad, o los derechos morales pueden limitar la forma en que\n" +"  uses el material." + +#: git-novice/_locale/es/LICENSE.md:47 +msgid "" +"Salvo que se indique lo contrario, los programas de ejemplo y otro software\n" +"proporcionado por Software Carpentry y Data Carpentry están disponibles bajo el\n" +"[OSI][osi]-aprobado\n" +"[Licencia de MIT][mit-license]." +msgstr "" +"Salvo que se indique lo contrario, los programas de ejemplo y otro software\n" +"proporcionado por Software Carpentry y Data Carpentry están disponibles bajo el\n" +"[OSI][osi]-aprobado\n" +"[Licencia de MIT][mit-license]." + +#: git-novice/_locale/es/LICENSE.md:52 +msgid "" +"Se concede permiso, de forma gratuita, a cualquier persona que obtenga\n" +"una copia de este software y los archivos de documentación asociados (el\n" +"\"Software\"), para tratar el Software sin restricciones, incluyendo\n" +"sin limitación, los derechos de uso, copia, modificación, fusión, publicación,\n" +"distribuir, sublicenciar y / o vender copias del Software, y\n" +"Permitir a las personas a quienes se les proporciona el Software que lo hagan, sujeto a\n" +"las siguientes condiciones:" +msgstr "" +"Se concede permiso, de forma gratuita, a cualquier persona que obtenga\n" +"una copia de este software y los archivos de documentación asociados (el\n" +"\"Software\"), para tratar el Software sin restricciones, incluyendo\n" +"sin limitación, los derechos de uso, copia, modificación, fusión, publicación,\n" +"distribuir, sublicenciar y / o vender copias del Software, y\n" +"Permitir a las personas a quienes se les proporciona el Software que lo hagan, sujeto a\n" +"las siguientes condiciones:" + +#: git-novice/_locale/es/LICENSE.md:60 +msgid "" +"El aviso de copyright anterior y este aviso de permiso serán\n" +"incluido en todas las copias o porciones sustanciales del software." +msgstr "" +"El aviso de copyright anterior y este aviso de permiso serán\n" +"incluido en todas las copias o porciones sustanciales del software." + +#: git-novice/_locale/es/LICENSE.md:63 +msgid "" +"EL SOFTWARE SE PROPORCIONA \"TAL CUAL\", SIN GARANTÍA DE NINGÚN TIPO,\n" +"EXPRESO O IMPLICADO, INCLUIDAS, ENTRE OTRAS, LAS GARANTÍAS DE\n" +"COMERCIABILIDAD, APTITUD PARA UN PROPÓSITO PARTICULAR Y\n" +"NO INFRACCIÓN EN NINGÚN CASO SERÁN LOS AUTORES O LOS TITULARES DE LOS DERECHOS DE AUTOR\n" +"RESPONSABLE POR CUALQUIER RECLAMO, DAÑOS U OTRA RESPONSABILIDAD, YA SEA EN ACCIÓN\n" +"DEL CONTRATO, EXTRACONTRACTUAL O DE OTRO TIPO, DERIVADOS, FUERA DE O EN CONEXIÓN\n" +"CON EL SOFTWARE O EL USO U OTROS TRATOS EN EL SOFTWARE." +msgstr "" +"EL SOFTWARE SE PROPORCIONA \"TAL CUAL\", SIN GARANTÍA DE NINGÚN TIPO,\n" +"EXPRESO O IMPLICADO, INCLUIDAS, ENTRE OTRAS, LAS GARANTÍAS DE\n" +"COMERCIABILIDAD, APTITUD PARA UN PROPÓSITO PARTICULAR Y\n" +"NO INFRACCIÓN EN NINGÚN CASO SERÁN LOS AUTORES O LOS TITULARES DE LOS DERECHOS DE AUTOR\n" +"RESPONSABLE POR CUALQUIER RECLAMO, DAÑOS U OTRA RESPONSABILIDAD, YA SEA EN ACCIÓN\n" +"DEL CONTRATO, EXTRACONTRACTUAL O DE OTRO TIPO, DERIVADOS, FUERA DE O EN CONEXIÓN\n" +"CON EL SOFTWARE O EL USO U OTROS TRATOS EN EL SOFTWARE." + +# header +#: git-novice/_locale/es/LICENSE.md:71 +msgid "## Marca registrada" +msgstr "## Marca registrada" + +#: git-novice/_locale/es/LICENSE.md:73 +msgid "" +"\"Software Carpentry\" y \"Data Carpentry\" y sus respectivos logos\n" +"son marcas registradas de [Community Initiatives][ci]." +msgstr "" +"\"Software Carpentry\" y \"Data Carpentry\" y sus respectivos logos\n" +"son marcas registradas de [Community Initiatives][ci]." + +#: git-novice/_locale/es/LICENSE.md:76 +msgid "" +"[cc-por-humano]: https://creativecommons.org/licenses/by/4.0/\n" +"[cc-by-legal]: https://creativecommons.org/licenses/by/4.0/legalcode\n" +"[mit-license]: https://opensource.org/licenses/mit-license.html\n" +"[ci]: http://communityin.org/\n" +"[osi]: https://opensource.org" +msgstr "" +"[cc-por-humano]: https://creativecommons.org/licenses/by/4.0/\n" +"[cc-by-legal]: https://creativecommons.org/licenses/by/4.0/legalcode\n" +"[mit-license]: https://opensource.org/licenses/mit-license.html\n" +"[ci]: http://communityin.org/\n" +"[osi]: https://opensource.org" + +#: git-novice/_locale/es/README.md:1 +msgid "" +"[![Create a Slack Account with us](https://img.shields.io/badge/Create_Slack_Account-The_Carpentries-071159.svg)](https://swc-slack-invite.herokuapp.com/) \n" +" [![Slack Status](https://img.shields.io/badge/Slack_Channel-swc--git--es-E01563.svg)](https://swcarpentry.slack.com/messages/C9X42NTQC) " +msgstr "" +"[![Create a Slack Account with us](https://img.shields.io/badge/Create_Slack_Account-The_Carpentries-071159.svg)](https://swc-slack-invite.herokuapp.com/) \n" +" [![Slack Status](https://img.shields.io/badge/Slack_Channel-swc--git--es-E01563.svg)](https://swcarpentry.slack.com/messages/C9X42NTQC) " + +#: git-novice/_locale/es/README.md:7 +msgid "" +"Una introdución para principiantes sobre control de versiones usando Git.\n" +"Puedes encontrar la traducción de este material en \n" +"y también puedes ver el [modelo de documentación][lesson-example]\n" +"para las instrucciones de formato y como mejorar el material, \n" +"o también puedes run `make` en este directorio para ver una lista de comandos útiles." +msgstr "" +"Una introdución para principiantes sobre control de versiones usando Git.\n" +"Puedes encontrar la traducción de este material en \n" +"y también puedes ver el [modelo de documentación][lesson-example]\n" +"para las instrucciones de formato y como mejorar el material, \n" +"o también puedes run `make` en este directorio para ver una lista de comandos útiles." + +# unordered list +#: git-novice/_locale/es/README.md:16 +msgid "* [Rayna Harris][harris_rayna]: [@raynamharris](https://github.com/raynamharris)" +msgstr "* [Rayna Harris][harris_rayna]: [@raynamharris](https://github.com/raynamharris)" + +# unordered list +#: git-novice/_locale/es/README.md:17 +msgid "* [Clara Llebot Lorente][llebot_clara]: [@clarallebot](https://github.com/clarallebot)" +msgstr "* [Clara Llebot Lorente][llebot_clara]: [@clarallebot](https://github.com/clarallebot)" + +#: git-novice/_locale/es/README.md:21 +msgid "" +"[llebot_clara]: https://software-carpentry.org/team/#llebot_clara\n" +"[gonzalez_ivan]: https://software-carpentry.org/team/#gonzalez_ivan\n" +"[harris_rayna]: http://software-carpentry.org/team/#harris_rayna\n" +"[lesson-example]: https://carpentries.github.io/lesson-example" +msgstr "" +"[llebot_clara]: https://software-carpentry.org/team/#llebot_clara\n" +"[gonzalez_ivan]: https://software-carpentry.org/team/#gonzalez_ivan\n" +"[harris_rayna]: http://software-carpentry.org/team/#harris_rayna\n" +"[lesson-example]: https://carpentries.github.io/lesson-example" + +# Front Matter +#: git-novice/_locale/es/_episodes/01-basics.md:1 +msgid "" +"---\n" +"title: Control Automatizado de Versiones\n" +"teaching: 5\n" +"exercises: 0\n" +"questions:\n" +"- \"¿Qué es el control de versiones y por qué se deberá usar?\"\n" +"objectives:\n" +"- \"Comprender los beneficios de usar un sistema automático de control de versiones.\"\n" +"- \"Comprender los fundamentos básicos del funcionamiento de Git.\"\n" +"keypoints:\n" +"- \"El control de versiones es como un 'deshacer' sin límites.\"\n" +"- \"El control de versiones permite que mucha gente trabaje en lo mismo en paralelo.\"\n" +"---" +msgstr "" +"---\n" +"title: Control Automatizado de Versiones\n" +"teaching: 5\n" +"exercises: 0\n" +"questions:\n" +"- \"¿Qué es el control de versiones y por qué se deberá usar?\"\n" +"objectives:\n" +"- \"Comprender los beneficios de usar un sistema automático de control de versiones.\"\n" +"- \"Comprender los fundamentos básicos del funcionamiento de Git.\"\n" +"keypoints:\n" +"- \"El control de versiones es como un 'deshacer' sin límites.\"\n" +"- \"El control de versiones permite que mucha gente trabaje en lo mismo en paralelo.\"\n" +"---" + +#: git-novice/_locale/es/_episodes/01-basics.md:15 +msgid "" +"Empezaremos por explorar cómo el control de versiones puede ser usado\n" +"para hacer un seguimiento de lo que hizo una persona y cuándo.\n" +"Incluso si no se está colaborando con otras personas, \n" +"el control automatizado de versiones es mucho mejor que la siguiente situación:" +msgstr "" +"Empezaremos por explorar cómo el control de versiones puede ser usado\n" +"para hacer un seguimiento de lo que hizo una persona y cuándo.\n" +"Incluso si no se está colaborando con otras personas, \n" +"el control automatizado de versiones es mucho mejor que la siguiente situación:" + +#: git-novice/_locale/es/_episodes/01-basics.md:24 +msgid "" +"Todos hemos estado en esta situación alguna vez: parece ridículo tener \n" +"varias versiones casi idénticas del mismo documento. Algunos procesadores de texto \n" +"nos permiten lidiar con esto un poco mejor, como por ejemplo el [*Track Changes* de Microsoft Word](https://support.office.com/en-us/article/Track-changes-in-Word-197ba630-0f5f-4a8e-9a77-3712475e806a), el [historial de versiones de Google](https://support.google.com/docs/answer/190843?hl=en) o la [grabación y visualización de cambios de LibreOffice](https://help.libreoffice.org/Common/Recording_and_Displaying_Changes)." +msgstr "" +"Todos hemos estado en esta situación alguna vez: parece ridículo tener \n" +"varias versiones casi idénticas del mismo documento. Algunos procesadores de texto \n" +"nos permiten lidiar con esto un poco mejor, como por ejemplo el [*Track Changes* de Microsoft Word](https://support.office.com/en-us/article/Track-changes-in-Word-197ba630-0f5f-4a8e-9a77-3712475e806a), el [historial de versiones de Google](https://support.google.com/docs/answer/190843?hl=en) o la [grabación y visualización de cambios de LibreOffice](https://help.libreoffice.org/Common/Recording_and_Displaying_Changes)." + +#: git-novice/_locale/es/_episodes/01-basics.md:28 +msgid "" +"Los sistemas de control de versiones comienzan con una versión básica del documento y \n" +"luego van guardando sólo los cambios que se hicieron en cada paso del proceso. Se puede \n" +"pensar en ello como en una cinta: si se rebobina la cinta y se inicia de nuevo en el documento \n" +"base, se puede reproducir cada cambio y terminar con la versión más reciente." +msgstr "" +"Los sistemas de control de versiones comienzan con una versión básica del documento y \n" +"luego van guardando sólo los cambios que se hicieron en cada paso del proceso. Se puede \n" +"pensar en ello como en una cinta: si se rebobina la cinta y se inicia de nuevo en el documento \n" +"base, se puede reproducir cada cambio y terminar con la versión más reciente." + +#: git-novice/_locale/es/_episodes/01-basics.md:35 +msgid "Una vez que piensas en los cambios como separados del documento en sí, entonces se puede pensar en \"deshacer\" diferentes conjuntos de cambios en el documento base y obtener así diferentes versiones del documento. Por ejemplo, dos usuarios pueden hacer conjuntos independientes de cambios basados en el mismo documento." +msgstr "Una vez que piensas en los cambios como separados del documento en sí, entonces se puede pensar en \"deshacer\" diferentes conjuntos de cambios en el documento base y obtener así diferentes versiones del documento. Por ejemplo, dos usuarios pueden hacer conjuntos independientes de cambios basados en el mismo documento." + +#: git-novice/_locale/es/_episodes/01-basics.md:39 +msgid "A menos que haya conflictos, se puede incluso tener dos conjuntos de cambios en el mismo documento base." +msgstr "A menos que haya conflictos, se puede incluso tener dos conjuntos de cambios en el mismo documento base." + +#: git-novice/_locale/es/_episodes/01-basics.md:43 +msgid "" +"Un sistema de control de versiones es una herramienta que realiza un seguimiento de estos cambios para nosotros y\n" +"nos ayuda a controlar la versión y fusionar nuestros archivos. Nos permite\n" +"decidir qué cambios conforman la siguiente versión, a lo que llamamos hacer un\n" +"[**commit**]({{ page.root }}/reference/#commit), y mantiene metadatos útiles sobre dichos cambios. El\n" +"historial completo de **commits** para un proyecto en particular y sus metadatos forman un\n" +"[repositorio]({{ page.root }}/reference/#repository). Los repositorios pueden mantenerse sincronizados\n" +"en diferentes computadoras, facilitando así la colaboración entre diferentes personas." +msgstr "" +"Un sistema de control de versiones es una herramienta que realiza un seguimiento de estos cambios para nosotros y\n" +"nos ayuda a controlar la versión y fusionar nuestros archivos. Nos permite\n" +"decidir qué cambios conforman la siguiente versión, a lo que llamamos hacer un\n" +"[**commit**]({{ page.root }}/reference/#commit), y mantiene metadatos útiles sobre dichos cambios. El\n" +"historial completo de **commits** para un proyecto en particular y sus metadatos forman un\n" +"[repositorio]({{ page.root }}/reference/#repository). Los repositorios pueden mantenerse sincronizados\n" +"en diferentes computadoras, facilitando así la colaboración entre diferentes personas." + +# blockquote, which can be cascaded +#: git-novice/_locale/es/_episodes/01-basics.md:51 +msgid "> ## La larga historia de los sistemas de control de versiones " +msgstr "> ## La larga historia de los sistemas de control de versiones " + +#: git-novice/_locale/es/_episodes/01-basics.md:52 +msgid "" +">\n" +"> Los sistemas automatizados de control de versiones no son nada nuevo.\n" +"> Herramientas como RCS, CVS o Subversion han existido desde principios de los 1980 y son utilizadas por muchas grandes empresas.\n" +"> Sin embargo, muchos de estos han sido relegados debido a lo limitado de su capacidad.\n" +"> En particular, los sistemas más modernos, como Git y [Mercurial](http://swcarpentry.github.io/hg-novice/) \n" +"> son *distribuidos*, lo que significa que no necesitan un servidor centralizado para alojar el repositorio. \n" +"> Estos sistemas modernos también incluyen potentes herramientas de fusión que hacen posible que múltiples autores trabajen dentro de \n" +"> los mismos archivos simultáneamente." +msgstr "" +">\n" +"> Los sistemas automatizados de control de versiones no son nada nuevo.\n" +"> Herramientas como RCS, CVS o Subversion han existido desde principios de los 1980 y son utilizadas por muchas grandes empresas.\n" +"> Sin embargo, muchos de estos han sido relegados debido a lo limitado de su capacidad.\n" +"> En particular, los sistemas más modernos, como Git y [Mercurial](http://swcarpentry.github.io/hg-novice/) \n" +"> son *distribuidos*, lo que significa que no necesitan un servidor centralizado para alojar el repositorio. \n" +"> Estos sistemas modernos también incluyen potentes herramientas de fusión que hacen posible que múltiples autores trabajen dentro de \n" +"> los mismos archivos simultáneamente." + +# blockquote, which can be cascaded +#: git-novice/_locale/es/_episodes/01-basics.md:62 +msgid "> ## ¿Qué harías en las siguientes situaciones?" +msgstr "> ## ¿Qué harías en las siguientes situaciones?" + +#: git-novice/_locale/es/_episodes/01-basics.md:63 +msgid "" +">\n" +"> * Imagina que has redactado un excelente párrafo para un artículo que estás escribiendo, pero más tarde lo estropeas. ¿Cómo recuperarías \n" +"> aquella *excelente* versión de la conclusión? ¿Es esto posible?\n" +">\n" +"> * Imagina que tienes 5 coautores. ¿Cómo administrarías los cambios y comentarios que ellos hagan en el artículo? \n" +"> Si usas LibreOffice Writer o Microsoft Word, ¿qué sucede si aceptas los cambios realizados con la opción \n" +"> `Track Changes`? ¿Tienes un historial de esos cambios? " +msgstr "" +">\n" +"> * Imagina que has redactado un excelente párrafo para un artículo que estás escribiendo, pero más tarde lo estropeas. ¿Cómo recuperarías \n" +"> aquella *excelente* versión de la conclusión? ¿Es esto posible?\n" +">\n" +"> * Imagina que tienes 5 coautores. ¿Cómo administrarías los cambios y comentarios que ellos hagan en el artículo? \n" +"> Si usas LibreOffice Writer o Microsoft Word, ¿qué sucede si aceptas los cambios realizados con la opción \n" +"> `Track Changes`? ¿Tienes un historial de esos cambios? " + +# Front Matter +#: git-novice/_locale/es/_episodes/02-setup.md:1 +msgid "" +"---\n" +"title: Configurando Git\n" +"teaching: 5\n" +"exercises: 0\n" +"questions:\n" +"- \"¿Cómo me preparo para utilizar Git?\"\n" +"objectives:\n" +"- \"Configurar `git` la primera vez que utilice la computadora.\"\n" +"- \"Comprender el significado del flag de configuración `--global`.\"\n" +"keypoints:\n" +"- \"Use `git config` para configurar un nombre de usuario, email, editor, y otras preferencias.\"\n" +"---" +msgstr "" +"---\n" +"title: Configurando Git\n" +"teaching: 5\n" +"exercises: 0\n" +"questions:\n" +"- \"¿Cómo me preparo para utilizar Git?\"\n" +"objectives:\n" +"- \"Configurar `git` la primera vez que utilice la computadora.\"\n" +"- \"Comprender el significado del flag de configuración `--global`.\"\n" +"keypoints:\n" +"- \"Use `git config` para configurar un nombre de usuario, email, editor, y otras preferencias.\"\n" +"---" + +#: git-novice/_locale/es/_episodes/02-setup.md:14 +msgid "" +"Cuando usamos Git en una computadora por primera vez, \n" +"es necesario configurar algunas cosas. A continuación se presentan algunos ejemplos \n" +"de configuraciones que estableceremos a medida que trabajemos con Git:" +msgstr "" +"Cuando usamos Git en una computadora por primera vez, \n" +"es necesario configurar algunas cosas. A continuación se presentan algunos ejemplos \n" +"de configuraciones que estableceremos a medida que trabajemos con Git:" + +# unordered list +#: git-novice/_locale/es/_episodes/02-setup.md:18 +msgid "* nombre y correo electrónico," +msgstr "* nombre y correo electrónico," + +# unordered list +#: git-novice/_locale/es/_episodes/02-setup.md:19 +msgid "* cuál es nuestro editor de texto preferido," +msgstr "* cuál es nuestro editor de texto preferido," + +# unordered list +#: git-novice/_locale/es/_episodes/02-setup.md:20 +msgid "* y que queremos utilizar estos ajustes globalmente (es decir, para cada proyecto)." +msgstr "* y que queremos utilizar estos ajustes globalmente (es decir, para cada proyecto)." + +#: git-novice/_locale/es/_episodes/02-setup.md:22 +msgid "" +"En la línea de comandos, los comandos de Git se escriben como `git verb`, \n" +"donde` verb` es lo que queremos hacer. Así es como \n" +"Drácula configura su nueva computadora:" +msgstr "" +"En la línea de comandos, los comandos de Git se escriben como `git verb`, \n" +"donde` verb` es lo que queremos hacer. Así es como \n" +"Drácula configura su nueva computadora:" + +#: git-novice/_locale/es/_episodes/02-setup.md:32 +msgid "" +"Utiliza tu propio nombre y dirección de correo electrónico en lugar de los de Drácula. El nombre de usuario y el correo electrónico se asociarán con tu actividad posterior de Git, \n" +"lo que significa que cualquier cambio realizado en\n" +"[GitHub] (http://github.com/), \n" +"[BitBucket] (http://bitbucket.org/), \n" +"[GitLab] (http://gitlab.com/) u\n" +"otro servidor de Git \n" +"en una lección posterior incluirá esta información." +msgstr "" +"Utiliza tu propio nombre y dirección de correo electrónico en lugar de los de Drácula. El nombre de usuario y el correo electrónico se asociarán con tu actividad posterior de Git, \n" +"lo que significa que cualquier cambio realizado en\n" +"[GitHub] (http://github.com/), \n" +"[BitBucket] (http://bitbucket.org/), \n" +"[GitLab] (http://gitlab.com/) u\n" +"otro servidor de Git \n" +"en una lección posterior incluirá esta información." + +# blockquote, which can be cascaded +#: git-novice/_locale/es/_episodes/02-setup.md:40 +msgid "> ## Finales de línea" +msgstr "> ## Finales de línea" + +#: git-novice/_locale/es/_episodes/02-setup.md:41 +msgid "" +">\n" +"> Al igual que con otras teclas, cuando haces click en la tecla 'Enter' de tu teclado,\n" +"> tu computadora codifica este input como un caracter.\n" +"> Por razones que son demasiado largas para explicar aquí, diferentes sistemas operativos \n" +"> usan diferentes caracteres para representar el final de una línea.\n" +"> (También son conocidas como *newlines* o *line breaks*.)\n" +"> Como Git usa éstos caracteres para comparar archivos,\n" +"> esto puede causar problemas inesperados cuando se edita un archivo en máquinas diferentes. \n" +"> \n" +"> Puedes cambiar el modo en que Git reconoce y codifica finales de línea\n" +"> usando el comando `core.autocrlf` con `git config`.\n" +"> Se recomiendan las siguientes configuraciones:\n" +">\n" +"> En OS X y Linux:\n" +">\n" +"> ~~~\n" +"> $ git config --global core.autocrlf input\n" +"> ~~~\n" +"> {: .language-bash}\n" +">\n" +"> Y en Windows:\n" +">\n" +"> ~~~\n" +"> $ git config --global core.autocrlf true\n" +"> ~~~\n" +"> {: .language-bash}\n" +"> \n" +"> Puedes leer más sobre este tema \n" +"> [en esta página de GitHub](https://help.github.com/articles/dealing-with-line-endings/)." +msgstr "" +">\n" +"> Al igual que con otras teclas, cuando haces click en la tecla 'Enter' de tu teclado,\n" +"> tu computadora codifica este input como un caracter.\n" +"> Por razones que son demasiado largas para explicar aquí, diferentes sistemas operativos \n" +"> usan diferentes caracteres para representar el final de una línea.\n" +"> (También son conocidas como *newlines* o *line breaks*.)\n" +"> Como Git usa éstos caracteres para comparar archivos,\n" +"> esto puede causar problemas inesperados cuando se edita un archivo en máquinas diferentes. \n" +"> \n" +"> Puedes cambiar el modo en que Git reconoce y codifica finales de línea\n" +"> usando el comando `core.autocrlf` con `git config`.\n" +"> Se recomiendan las siguientes configuraciones:\n" +">\n" +"> En OS X y Linux:\n" +">\n" +"> ~~~\n" +"> $ git config --global core.autocrlf input\n" +"> ~~~\n" +"> {: .language-bash}\n" +">\n" +"> Y en Windows:\n" +">\n" +"> ~~~\n" +"> $ git config --global core.autocrlf true\n" +"> ~~~\n" +"> {: .language-bash}\n" +"> \n" +"> Puedes leer más sobre este tema \n" +"> [en esta página de GitHub](https://help.github.com/articles/dealing-with-line-endings/)." + +#: git-novice/_locale/es/_episodes/02-setup.md:72 +msgid "" +"Para estas lecciones, estaremos interactuando con [GitHub] (http://github.com/), por lo tanto la dirección de correo electrónico utilizada debe ser la misma que utilizaste al configurar tu cuenta de GitHub. Si te preocupa la privacidad, revisa [las instrucciones de GitHub para mantener tu dirección de correo electrónico privada] [git-privacy].\n" +"Si eliges utilizar una dirección de correo electrónico privada con GitHub, usa la misma dirección de correo electrónico para el valor `user.email`, por ejemplo, `username@users.noreply.github.com` reemplazando` username` con tu nombre de usuario de GitHub. Puedes cambiar la dirección de correo electrónico posteriormente utilizando el comando `git config` nuevamente." +msgstr "" +"Para estas lecciones, estaremos interactuando con [GitHub] (http://github.com/), por lo tanto la dirección de correo electrónico utilizada debe ser la misma que utilizaste al configurar tu cuenta de GitHub. Si te preocupa la privacidad, revisa [las instrucciones de GitHub para mantener tu dirección de correo electrónico privada] [git-privacy].\n" +"Si eliges utilizar una dirección de correo electrónico privada con GitHub, usa la misma dirección de correo electrónico para el valor `user.email`, por ejemplo, `username@users.noreply.github.com` reemplazando` username` con tu nombre de usuario de GitHub. Puedes cambiar la dirección de correo electrónico posteriormente utilizando el comando `git config` nuevamente." + +#: git-novice/_locale/es/_episodes/02-setup.md:75 +msgid "Drácula también tiene que establecer su editor de texto favorito, siguiendo esta tabla:" +msgstr "Drácula también tiene que establecer su editor de texto favorito, siguiendo esta tabla:" + +#: git-novice/_locale/es/_episodes/02-setup.md:93 +msgid "Es posible reconfigurar el editor de texto para Git siempre que quieras." +msgstr "Es posible reconfigurar el editor de texto para Git siempre que quieras." + +# blockquote, which can be cascaded +#: git-novice/_locale/es/_episodes/02-setup.md:95 +msgid "> ## Saliendo de Vim" +msgstr "> ## Saliendo de Vim" + +#: git-novice/_locale/es/_episodes/02-setup.md:96 +msgid "" +">\n" +">Ten en cuenta que `vim` es el editor por defecto para muchos programas, si no has utilizado` vim` antes y deseas salir de una sesión, presiona la tecla `Esc` y posteriormente escribe `: q!` y `Enter`." +msgstr "" +">\n" +">Ten en cuenta que `vim` es el editor por defecto para muchos programas, si no has utilizado` vim` antes y deseas salir de una sesión, presiona la tecla `Esc` y posteriormente escribe `: q!` y `Enter`." + +#: git-novice/_locale/es/_episodes/02-setup.md:100 +msgid "Los cuatro comandos que acabamos de ejecutar sólo se tienen que ejecutar una vez: la flag `--global` le dice a Git que use la configuración para cada proyecto, en tu cuenta de usuario, en esta computadora." +msgstr "Los cuatro comandos que acabamos de ejecutar sólo se tienen que ejecutar una vez: la flag `--global` le dice a Git que use la configuración para cada proyecto, en tu cuenta de usuario, en esta computadora." + +#: git-novice/_locale/es/_episodes/02-setup.md:102 +msgid "Puedes comprobar tu configuración en cualquier momento:" +msgstr "Puedes comprobar tu configuración en cualquier momento:" + +#: git-novice/_locale/es/_episodes/02-setup.md:109 +msgid "Puedes cambiar la configuración tantas veces como quieras: sólo usa los mismos comandos para elegir otro editor o actualizar tu correo electrónico." +msgstr "Puedes cambiar la configuración tantas veces como quieras: sólo usa los mismos comandos para elegir otro editor o actualizar tu correo electrónico." + +#: git-novice/_locale/es/_episodes/02-setup.md:112 +msgid "" +">\n" +"> En algunas redes es necesario usar un\n" +"> [proxy](https://en.wikipedia.org/wiki/Proxy_server). Si este es el caso, es\n" +"> posible que también necesites proporcionarle a Git el proxy:\n" +">\n" +"> ~~~\n" +"> $ git config --global http.proxy proxy-url\n" +"> $ git config --global https.proxy proxy-url\n" +"> ~~~\n" +"> {: .language-bash}\n" +">\n" +"> Para deshabilitar el proxy, utiliza\n" +">\n" +"> ~~~\n" +"> $ git config --global --unset http.proxy\n" +"> $ git config --global --unset https.proxy\n" +"> ~~~\n" +"> {: .language-bash}" +msgstr "" +">\n" +"> En algunas redes es necesario usar un\n" +"> [proxy](https://en.wikipedia.org/wiki/Proxy_server). Si este es el caso, es\n" +"> posible que también necesites proporcionarle a Git el proxy:\n" +">\n" +"> ~~~\n" +"> $ git config --global http.proxy proxy-url\n" +"> $ git config --global https.proxy proxy-url\n" +"> ~~~\n" +"> {: .language-bash}\n" +">\n" +"> Para deshabilitar el proxy, utiliza\n" +">\n" +"> ~~~\n" +"> $ git config --global --unset http.proxy\n" +"> $ git config --global --unset https.proxy\n" +"> ~~~\n" +"> {: .language-bash}" + +# blockquote, which can be cascaded +#: git-novice/_locale/es/_episodes/02-setup.md:132 +msgid "> ## Ayuda y manual de Git" +msgstr "> ## Ayuda y manual de Git" + +#: git-novice/_locale/es/_episodes/02-setup.md:133 +msgid "" +">\n" +"> Ten presente que si no recuerdas algún comando de `git`, puedes acceder a la lista de comandos utilizando la opción `-h` y al manual de Git con la flag `--help` :\n" +">\n" +"> ~~~\n" +"> $ git config -h\n" +"> $ git config --help\n" +"> ~~~\n" +"> {: .language-bash}" +msgstr "" +">\n" +"> Ten presente que si no recuerdas algún comando de `git`, puedes acceder a la lista de comandos utilizando la opción `-h` y al manual de Git con la flag `--help` :\n" +">\n" +"> ~~~\n" +"> $ git config -h\n" +"> $ git config --help\n" +"> ~~~\n" +"> {: .language-bash}" + +# Front Matter +#: git-novice/_locale/es/_episodes/03-create.md:1 +msgid "" +"---\n" +"title: Creando un repositorio\n" +"teaching: 10\n" +"exercises: 0\n" +"questions:\n" +"- \"¿Dónde almacena Git la información?\"\n" +"objectives:\n" +"- \"Crear un repositorio local de Git.\"\n" +"keypoints:\n" +"- \"`git init` inicializa un repositorio.\"\n" +"---" +msgstr "" +"---\n" +"title: Creando un repositorio\n" +"teaching: 10\n" +"exercises: 0\n" +"questions:\n" +"- \"¿Dónde almacena Git la información?\"\n" +"objectives:\n" +"- \"Crear un repositorio local de Git.\"\n" +"keypoints:\n" +"- \"`git init` inicializa un repositorio.\"\n" +"---" + +#: git-novice/_locale/es/_episodes/03-create.md:13 +msgid "" +"Una vez que Git está configurado,\n" +"podemos comenzar a usarlo." +msgstr "" +"Una vez que Git está configurado,\n" +"podemos comenzar a usarlo." + +#: git-novice/_locale/es/_episodes/03-create.md:16 +msgid "Vamos a crear un directorio para nuestro trabajo y nos movemos dentro de ese directorio:" +msgstr "Vamos a crear un directorio para nuestro trabajo y nos movemos dentro de ese directorio:" + +# code block +#: git-novice/_locale/es/_episodes/03-create.md:18 +msgid "" +"~~~\n" +"$ mkdir planets\n" +"$ cd planets\n" +"~~~" +msgstr "" +"~~~\n" +"$ mkdir planets\n" +"$ cd planets\n" +"~~~" + +#: git-novice/_locale/es/_episodes/03-create.md:24 +msgid "" +"Después le indicamos a Git hacer de `planets` un [repository]({{ page.root }}/reference/#repository)— un lugar donde\n" +"Git puede almacenar las versiones de nuestros archivos:" +msgstr "" +"Después le indicamos a Git hacer de `planets` un [repository]({{ page.root }}/reference/#repository)— un lugar donde\n" +"Git puede almacenar las versiones de nuestros archivos:" + +#: git-novice/_locale/es/_episodes/03-create.md:32 +msgid "" +"Si usamos `ls` para mostrar el contenido del directorio,\n" +"parece que nada ha cambiado:" +msgstr "" +"Si usamos `ls` para mostrar el contenido del directorio,\n" +"parece que nada ha cambiado:" + +#: git-novice/_locale/es/_episodes/03-create.md:40 +msgid "" +"Pero si agregamos la flag `-a` para mostrar todo,\n" +"podemos ver que Git ha creado un directorio oculto dentro de `planets` llamado `.git`:" +msgstr "" +"Pero si agregamos la flag `-a` para mostrar todo,\n" +"podemos ver que Git ha creado un directorio oculto dentro de `planets` llamado `.git`:" + +# code block +#: git-novice/_locale/es/_episodes/03-create.md:48 +msgid "" +"~~~\n" +".\\t..\\t.git\n" +"~~~" +msgstr "" +"~~~\n" +".\\t..\\t.git\n" +"~~~" + +#: git-novice/_locale/es/_episodes/03-create.md:53 +msgid "" +"Git utiliza este subdirectorio especial para almacenar toda la información del proyecto, incluyendo todos los archivos y subdirectorios. Si alguna vez borramos el directorio `.git`,\n" +"perderemos la historia del proyecto." +msgstr "" +"Git utiliza este subdirectorio especial para almacenar toda la información del proyecto, incluyendo todos los archivos y subdirectorios. Si alguna vez borramos el directorio `.git`,\n" +"perderemos la historia del proyecto." + +#: git-novice/_locale/es/_episodes/03-create.md:56 +msgid "" +"Podemos revisar que todo esté configurado correctamente\n" +"pidiendo a Git que nos informe el estado de nuestro proyecto:" +msgstr "" +"Podemos revisar que todo esté configurado correctamente\n" +"pidiendo a Git que nos informe el estado de nuestro proyecto:" + +#: git-novice/_locale/es/_episodes/03-create.md:64 +msgid "Si estás utilizando una versión de git distinta a la que yo utilizo, el output puede ser ligeramente distinto. " +msgstr "Si estás utilizando una versión de git distinta a la que yo utilizo, el output puede ser ligeramente distinto. " + +# blockquote, which can be cascaded +#: git-novice/_locale/es/_episodes/03-create.md:75 +msgid "> ## Lugares para crear un repositorio Git" +msgstr "> ## Lugares para crear un repositorio Git" + +# blockquote, which can be cascaded +#: git-novice/_locale/es/_episodes/03-create.md:124 +msgid "> ## Corrigiendo errores de `git init`" +msgstr "> ## Corrigiendo errores de `git init`" + +# blockquote, which can be cascaded +#: git-novice/_locale/es/_episodes/03-create.md:125 +msgid "> Wolfman le explica a Dracula cómo un repositorio anidado es redudante y puede causar problemas ms adelante." +msgstr "> ドラえもん le explica a のび太 cómo un repositorio anidado es redudante y puede causar problemas ms adelante." + +# blockquote, which can be cascaded +#: git-novice/_locale/es/_episodes/03-create.md:126 +msgid "> Dracula quiere eliminar el repositorio anidado." +msgstr "> のび太 quiere eliminar el repositorio anidado." + +# blockquote, which can be cascaded +#: git-novice/_locale/es/_episodes/03-create.md:127 +msgid "> Cómo puede Dracula deshacer el último `git init` en el sub-directorio `moons`?" +msgstr "> Cómo puede のび太 deshacer el último `git init` en el sub-directorio `moons`?" + +#: git-novice/_locale/es/_episodes/03-create.md:128 +msgid "" +">\n" +"> > ## Solución - USAR CON CUIDADO!\n" +"> >\n" +"> > Para deshacerse de este pequeño error, Dracula puede simplemente eliminar el directorio `.git`\n" +"> > del subdirectorio `moons`. Para ello puede ejecutar el siguiente comando desde el interior del directorio `moons`:\n" +"> >\n" +"> > ~~~\n" +"> > $ rm -rf moons/.git\n" +"> > ~~~\n" +"> > {: .language-bash}\n" +"> >\n" +"> > ¡Pero ten cuidado! Ejecutar este comando en el directorio incorrecto eliminará\n" +"> > toda la historia git de un proyecto que podrías querer conservar. \n" +"> > Por lo tanto, revisa siempre tu directorio actual usando el comando `pwd`." +msgstr "" +">\n" +"> > ## Solución - USAR CON CUIDADO!\n" +"> >\n" +"> > Para deshacerse de este pequeño error, のび太 puede simplemente eliminar el directorio `.git`\n" +"> > del subdirectorio `moons`. Para ello puede ejecutar el siguiente comando desde el interior del directorio `moons`:\n" +"> >\n" +"> > ~~~\n" +"> > $ rm -rf moons/.git\n" +"> > ~~~\n" +"> > {: .language-bash}\n" +"> >\n" +"> > ¡Pero ten cuidado! Ejecutar este comando en el directorio incorrecto eliminará\n" +"> > toda la historia git de un proyecto que podrías querer conservar. \n" +"> > Por lo tanto, revisa siempre tu directorio actual usando el comando `pwd`." + +# Front Matter +#: git-novice/_locale/es/_episodes/04-changes.md:1 +msgid "" +"---\n" +"title: Rastreando Cambios\n" +"teaching: 20\n" +"exercises: 0\n" +"questions:\n" +"- \"¿Cómo registro cambios en Git?\"\n" +"- \"¿Cómo reviso el estatus de mi repositorio de control de versiones?\"\n" +"- \"¿Cómo registro notas acerca de los cambios que he hecho y por qué?\"\n" +"objectives:\n" +"- \"Ir a través del ciclo modificar-agregar-commit para uno o más archivos.\"\n" +"- \"Explicar dónde se almacena la información en cada etapa del flujo de trabajo de un **commit** de Git.\"\n" +"- \"Distinguir entre mensajes descriptivos y no-descriptivos de un **commit**.\"\n" +"keypoints:\n" +"- \"`git status` muestra el estatus de un repositorio.\"\n" +"- \"Los archivos pueden ser almacenados en un directorio de trabajo del proyecto (el cual ven los usuarios), el **staging area** (donde el siguiente **commit** está siendo construido) y el repositorio local (donde los **commits** son registrados permanentemente).\"\n" +"- \"`git add` pone archivos en el **staging area**.\"\n" +"- \"`git commit` guarda el contenido del **staging area** como un nuevo **commit** en el repositorio local.\"\n" +"- \"Siempre escribe un mensaje de registro cuando hagas un **commit** con cambios.\"\n" +"---" +msgstr "" +"---\n" +"title: Rastreando Cambios\n" +"teaching: 20\n" +"exercises: 0\n" +"questions:\n" +"- \"¿Cómo registro cambios en Git?\"\n" +"- \"¿Cómo reviso el estatus de mi repositorio de control de versiones?\"\n" +"- \"¿Cómo registro notas acerca de los cambios que he hecho y por qué?\"\n" +"objectives:\n" +"- \"Ir a través del ciclo modificar-agregar-commit para uno o más archivos.\"\n" +"- \"Explicar dónde se almacena la información en cada etapa del flujo de trabajo de un **commit** de Git.\"\n" +"- \"Distinguir entre mensajes descriptivos y no-descriptivos de un **commit**.\"\n" +"keypoints:\n" +"- \"`git status` muestra el estatus de un repositorio.\"\n" +"- \"Los archivos pueden ser almacenados en un directorio de trabajo del proyecto (el cual ven los usuarios), el **staging area** (donde el siguiente **commit** está siendo construido) y el repositorio local (donde los **commits** son registrados permanentemente).\"\n" +"- \"`git add` pone archivos en el **staging area**.\"\n" +"- \"`git commit` guarda el contenido del **staging area** como un nuevo **commit** en el repositorio local.\"\n" +"- \"Siempre escribe un mensaje de registro cuando hagas un **commit** con cambios.\"\n" +"---" + +#: git-novice/_locale/es/_episodes/04-changes.md:21 +msgid "" +"Primero asegúrate que estamos aún en el directorio correcto.\n" +"Deberías estar en el directorio `planets`." +msgstr "" +"Primero asegúrate que estamos aún en el directorio correcto.\n" +"Deberías estar en el directorio `planets`." + +#: git-novice/_locale/es/_episodes/04-changes.md:29 +msgid "Si aún estás en `moons` navega de regreso a `planets`" +msgstr "Si aún estás en `moons` navega de regreso a `planets`" + +#: git-novice/_locale/es/_episodes/04-changes.md:36 +msgid "" +"Vamos a crear un archivo llamado `mars.txt` que contiene algunas notas\n" +"sobre la aptitud del Planeta Rojo como base.\n" +"Usaremos `nano` para editar el archivo;\n" +"puedes usar el editor que prefieras.\n" +"En particular, éste no tiene que ser el `core.editor` que definiste globalmente con anterioridad. Pero recuerda, los comandos **bash** para crear o editar un nuevo archivo van a depender del editor que tú escojas (podría no ser `nano`). Para un repaso sobre editores de texto, echa un vistazo a [\"¿Qué editor usar?\"](https://swcarpentry.github.io/shell-novice-es/03-create/) en la lección [La terminal de Unix](https://swcarpentry.github.io/shell-novice-es) ." +msgstr "" +"Vamos a crear un archivo llamado `mars.txt` que contiene algunas notas\n" +"sobre la aptitud del Planeta Rojo como base.\n" +"Usaremos `nano` para editar el archivo;\n" +"puedes usar el editor que prefieras.\n" +"En particular, éste no tiene que ser el `core.editor` que definiste globalmente con anterioridad. Pero recuerda, los comandos **bash** para crear o editar un nuevo archivo van a depender del editor que tú escojas (podría no ser `nano`). Para un repaso sobre editores de texto, echa un vistazo a [\"¿Qué editor usar?\"](https://swcarpentry.github.io/shell-novice-es/03-create/) en la lección [La terminal de Unix](https://swcarpentry.github.io/shell-novice-es) ." + +#: git-novice/_locale/es/_episodes/04-changes.md:47 +msgid "Ingresa el texto siguiente en el archivo `mars.txt`:" +msgstr "Ingresa el texto siguiente en el archivo `mars.txt`:" + +#: git-novice/_locale/es/_episodes/04-changes.md:53 +msgid "`mars.txt` ahora contiene una sola línea, la cual podemos ver ejecutando:" +msgstr "`mars.txt` ahora contiene una sola línea, la cual podemos ver ejecutando:" + +#: git-novice/_locale/es/_episodes/04-changes.md:75 +msgid "" +"Si revisamos el estatus de nuestro proyecto otra vez,\n" +"Git nos dice que ha reconocido el nuevo archivo:" +msgstr "" +"Si revisamos el estatus de nuestro proyecto otra vez,\n" +"Git nos dice que ha reconocido el nuevo archivo:" + +# code block +#: git-novice/_locale/es/_episodes/04-changes.md:83 +msgid "" +"~~~\n" +"On branch master\n" +"\n" +"Initial commit\n" +"\n" +"Untracked files:\n" +" (use \"git add ...\" to include in what will be committed)\n" +"\n" +"\\tmars.txt\n" +"nothing added to commit but untracked files present (use \"git add\" to track)\n" +"~~~" +msgstr "" +"~~~\n" +"On branch master\n" +"\n" +"Initial commit\n" +"\n" +"Untracked files:\n" +" (use \"git add ...\" to include in what will be committed)\n" +"\n" +"\\tmars.txt\n" +"nothing added to commit but untracked files present (use \"git add\" to track)\n" +"~~~" + +#: git-novice/_locale/es/_episodes/04-changes.md:96 +msgid "" +"El mensaje de \"untracked files\" significa que \n" +"un archivo no está siendo rastreado por Git.\n" +"Podemos poner los archivos en el **staging area** con `git add`." +msgstr "" +"El mensaje de \"untracked files\" significa que \n" +"un archivo no está siendo rastreado por Git.\n" +"Podemos poner los archivos en el **staging area** con `git add`." + +#: git-novice/_locale/es/_episodes/04-changes.md:105 +msgid "y luego verifica que hizo lo correcto:" +msgstr "y luego verifica que hizo lo correcto:" + +# code block +#: git-novice/_locale/es/_episodes/04-changes.md:112 +msgid "" +"~~~\n" +"On branch master\n" +"\n" +"Initial commit\n" +"\n" +"Changes to be committed:\n" +" (use \"git rm --cached ...\" to unstage)\n" +"\n" +"\\tnew file: mars.txt\n" +"\n" +"~~~" +msgstr "" +"~~~\n" +"On branch master\n" +"\n" +"Initial commit\n" +"\n" +"Changes to be committed:\n" +" (use \"git rm --cached ...\" to unstage)\n" +"\n" +"\\tnew file: mars.txt\n" +"\n" +"~~~" + +#: git-novice/_locale/es/_episodes/04-changes.md:125 +msgid "" +"Git ahora sabe que tiene que seguir la pista de `mars.txt`,\n" +"pero no ha registrado los cambios con un **commit** aún.\n" +"Para que lo haga,\n" +"necesitamos ejecutar un comando más:" +msgstr "" +"Git ahora sabe que tiene que seguir la pista de `mars.txt`,\n" +"pero no ha registrado los cambios con un **commit** aún.\n" +"Para que lo haga,\n" +"necesitamos ejecutar un comando más:" + +#: git-novice/_locale/es/_episodes/04-changes.md:142 +msgid "" +"Cuando ejecutamos `git commit`,\n" +"Git toma todo lo que le hemos dicho que salve usando `git add`\n" +"y almacena una copia permanentemente dentro del directorio especial `.git`.\n" +"Esta copia permanente es llamada un [commit]({{ page.root }}/reference/#commit)\n" +"(o [revision]({{ page.root }}/reference/#revision)) y su identificador corto es `f22b25e`\n" +"(Tu **commit** podría tener otro identificador.)" +msgstr "" +"Cuando ejecutamos `git commit`,\n" +"Git toma todo lo que le hemos dicho que salve usando `git add`\n" +"y almacena una copia permanentemente dentro del directorio especial `.git`.\n" +"Esta copia permanente es llamada un [commit]({{ page.root }}/reference/#commit)\n" +"(o [revision]({{ page.root }}/reference/#revision)) y su identificador corto es `f22b25e`\n" +"(Tu **commit** podría tener otro identificador.)" + +#: git-novice/_locale/es/_episodes/04-changes.md:149 +msgid "" +"Usamos la **flag** `-m` (por \"message\")\n" +"para registrar un comentario corto, descriptivo y específico que nos ayudará a recordar más tarde lo que hicimos y por qué.\n" +"Si ejecutamos `git commit` sin la opción `-m`,\n" +"Git ejecutará `nano` (o cualquier otro editor que hayamos configurado como `core.editor`)\n" +"para que podamos escribir un mensaje más largo." +msgstr "" +"Usamos la **flag** `-m` (por \"message\")\n" +"para registrar un comentario corto, descriptivo y específico que nos ayudará a recordar más tarde lo que hicimos y por qué.\n" +"Si ejecutamos `git commit` sin la opción `-m`,\n" +"Git ejecutará `nano` (o cualquier otro editor que hayamos configurado como `core.editor`)\n" +"para que podamos escribir un mensaje más largo." + +#: git-novice/_locale/es/_episodes/04-changes.md:155 +msgid "" +"[Los Buenos mensajes en un **commit**][commit-messages] inician con un breve resumen (<50 caracteres) de los\n" +"cambios hechos en el **commit**. Si quieres entrar en más detalles, agrega\n" +"una línea blanca entre la línea del resumen y tus notas adicionales." +msgstr "" +"[Los Buenos mensajes en un **commit**][commit-messages] inician con un breve resumen (<50 caracteres) de los\n" +"cambios hechos en el **commit**. Si quieres entrar en más detalles, agrega\n" +"una línea blanca entre la línea del resumen y tus notas adicionales." + +#: git-novice/_locale/es/_episodes/04-changes.md:159 +msgid "Si ejecutamos `git status` ahora:" +msgstr "Si ejecutamos `git status` ahora:" + +#: git-novice/_locale/es/_episodes/04-changes.md:172 +msgid "" +"nos dice que todo está actualizado.\n" +"Si queremos saber lo que hemos hecho recientemente,\n" +"podemos pedir a Git que nos muestre la historia del proyecto usando `git log`:" +msgstr "" +"nos dice que todo está actualizado.\n" +"Si queremos saber lo que hemos hecho recientemente,\n" +"podemos pedir a Git que nos muestre la historia del proyecto usando `git log`:" + +#: git-novice/_locale/es/_episodes/04-changes.md:190 +msgid "" +"`git log` lista todos los **commits** hechos a un repositorio en orden cronológico inverso.\n" +"El listado de cada **commit** incluye\n" +"el identificador completo del **commit**\n" +"(el cual comienza con el mismo caracter que\n" +"el identificador corto que imprime el comando `git commit` anterior),\n" +"el autor del **commit**,\n" +"cuándo fue creado,\n" +"y el mensaje de registro que se le dio a Git cuando el **commit** fue creado." +msgstr "" +"`git log` lista todos los **commits** hechos a un repositorio en orden cronológico inverso.\n" +"El listado de cada **commit** incluye\n" +"el identificador completo del **commit**\n" +"(el cual comienza con el mismo caracter que\n" +"el identificador corto que imprime el comando `git commit` anterior),\n" +"el autor del **commit**,\n" +"cuándo fue creado,\n" +"y el mensaje de registro que se le dio a Git cuando el **commit** fue creado." + +# blockquote, which can be cascaded +#: git-novice/_locale/es/_episodes/04-changes.md:199 +msgid "> ## ¿Dónde están mis cambios?" +msgstr "> ## ¿Dónde están mis cambios?" + +#: git-novice/_locale/es/_episodes/04-changes.md:200 +msgid "" +">\n" +"> Si ejecutamos `ls` en este punto, aún veremos un solo archivo llamado `mars.txt`.\n" +"> Esto es porque Git guarda información acerca de la historia de los archivos\n" +"> en el directorio especial `.git` mencionado antes\n" +">para que nuestro sistema de archivos no se abarrote\n" +"> (y para que no podamos editar o borrar accidentalmente una versión anterior)." +msgstr "" +">\n" +"> Si ejecutamos `ls` en este punto, aún veremos un solo archivo llamado `mars.txt`.\n" +"> Esto es porque Git guarda información acerca de la historia de los archivos\n" +"> en el directorio especial `.git` mencionado antes\n" +">para que nuestro sistema de archivos no se abarrote\n" +"> (y para que no podamos editar o borrar accidentalmente una versión anterior)." + +#: git-novice/_locale/es/_episodes/04-changes.md:208 +msgid "" +"Ahora supón que Dracula agrega más información al archivo.\n" +"(Otra vez, editaremos con `nano` y luego con `cat` mostraremos el contenido del archivo;\n" +"podrías usar un editor diferente y no necesitar `cat`.)" +msgstr "" +"Ahora supón que のび太 agrega más información al archivo.\n" +"(Otra vez, editaremos con `nano` y luego con `cat` mostraremos el contenido del archivo;\n" +"podrías usar un editor diferente y no necesitar `cat`.)" + +#: git-novice/_locale/es/_episodes/04-changes.md:224 +msgid "" +"Cuando ejecutamos `git status` ahora\n" +"nos dice que un archivo ya sabe que ha sido modificado:" +msgstr "" +"Cuando ejecutamos `git status` ahora\n" +"nos dice que un archivo ya sabe que ha sido modificado:" + +# code block +#: git-novice/_locale/es/_episodes/04-changes.md:232 +#: git-novice/_locale/es/_episodes/04-changes.md:295 +#: git-novice/_locale/es/_episodes/05-history.md:194 +msgid "" +"~~~\n" +"On branch master\n" +"Changes not staged for commit:\n" +" (use \"git add ...\" to update what will be committed)\n" +" (use \"git checkout -- ...\" to discard changes in working directory)\n" +"\n" +"\\tmodified: mars.txt\n" +"\n" +"no changes added to commit (use \"git add\" and/or \"git commit -a\")\n" +"~~~" +msgstr "" +"~~~\n" +"On branch master\n" +"Changes not staged for commit:\n" +" (use \"git add ...\" to update what will be committed)\n" +" (use \"git checkout -- ...\" to discard changes in working directory)\n" +"\n" +"\\tmodified: mars.txt\n" +"\n" +"no changes added to commit (use \"git add\" and/or \"git commit -a\")\n" +"~~~" + +#: git-novice/_locale/es/_episodes/04-changes.md:244 +msgid "" +"La última línea es la frase clave:\n" +"\"no changes added to commit\".\n" +"Hemos cambiado este archivo,\n" +"pero no le hemos dicho a Git que queremos que guarde los cambios\n" +"(lo cual hacemos con `git add`)\n" +"ni los hemos guardado (lo cual hacemos con `git commit`).\n" +"Así que hagamos eso ahora. Es una buena práctica revisar siempre\n" +"nuestros cambios antes de guardarlos. Hacemos esto usando `git diff`.\n" +"Esto nos muestra las diferencias entre el estado actual\n" +"del archivo y la versión guardada más reciente:" +msgstr "" +"La última línea es la frase clave:\n" +"\"no changes added to commit\".\n" +"Hemos cambiado este archivo,\n" +"pero no le hemos dicho a Git que queremos que guarde los cambios\n" +"(lo cual hacemos con `git add`)\n" +"ni los hemos guardado (lo cual hacemos con `git commit`).\n" +"Así que hagamos eso ahora. Es una buena práctica revisar siempre\n" +"nuestros cambios antes de guardarlos. Hacemos esto usando `git diff`.\n" +"Esto nos muestra las diferencias entre el estado actual\n" +"del archivo y la versión guardada más reciente:" + +#: git-novice/_locale/es/_episodes/04-changes.md:271 +msgid "" +"La salida es críptica porque \n" +"en realidad es una serie de comandos para herramientas como editores y `patch`\n" +"que les dice cómo reconstruir un archivo a partir del otro.\n" +"Si lo dividimos en secciones:" +msgstr "" +"La salida es críptica porque \n" +"en realidad es una serie de comandos para herramientas como editores y `patch`\n" +"que les dice cómo reconstruir un archivo a partir del otro.\n" +"Si lo dividimos en secciones:" + +# ordered list +#: git-novice/_locale/es/_episodes/04-changes.md:276 +msgid "1. La primera línea nos dice que Git está produciendo un **output** similar al del comando Unix `diff`" +msgstr "1. La primera línea nos dice que Git está produciendo un **output** similar al del comando Unix `diff`" + +#: git-novice/_locale/es/_episodes/04-changes.md:277 +msgid "" +" comparando las versiones anterior y nueva del archivo.\n" +"2. La segunda línea dice exactamente qué versiones del archivo\n" +" está comparando Git;\n" +" `df0654a` y `315bf3a` son etiquetas únicas generadas por computadora para esas versiones.\n" +"3. Las líneas tercera y cuarta muestran una vez más el nombre del archivo que se está cambiando.\n" +"4. Las líneas restantes son las más interesantes, ellas nos muestran las diferencias en cuestión\n" +" y las líneas donde ellas ocurren.\n" +" En particular,\n" +" el marcador `+` en la primera columna muestra dónde agregamos una línea." +msgstr "" +" comparando las versiones anterior y nueva del archivo.\n" +"2. La segunda línea dice exactamente qué versiones del archivo\n" +" está comparando Git;\n" +" `df0654a` y `315bf3a` son etiquetas únicas generadas por computadora para esas versiones.\n" +"3. Las líneas tercera y cuarta muestran una vez más el nombre del archivo que se está cambiando.\n" +"4. Las líneas restantes son las más interesantes, ellas nos muestran las diferencias en cuestión\n" +" y las líneas donde ellas ocurren.\n" +" En particular,\n" +" el marcador `+` en la primera columna muestra dónde agregamos una línea." + +#: git-novice/_locale/es/_episodes/04-changes.md:287 +msgid "Después de revisar nuestro cambio, es tiempo de hacer un **commit** de eso:" +msgstr "Después de revisar nuestro cambio, es tiempo de hacer un **commit** de eso:" + +#: git-novice/_locale/es/_episodes/04-changes.md:307 +msgid "" +"¡Vaya!:\n" +"Git no hará **commit** porque no usamos `git add` primero.\n" +"Arreglemos esto:" +msgstr "" +"¡Vaya!:\n" +"Git no hará **commit** porque no usamos `git add` primero.\n" +"Arreglemos esto:" + +#: git-novice/_locale/es/_episodes/04-changes.md:323 +msgid "" +"Git insiste en que agreguemos archivos al conjunto de cambios que queremos hacer\n" +"antes de hacer **commit** de alguna cosa. Esto permite hacer **commit** de nuestros\n" +"cambios en etapas y capturarlos en porciones lógicas en lugar de\n" +"solo lotes grandes.\n" +"Por ejemplo,\n" +"supongamos que agregamos algunas citas a una investigación relevante para nuestra tesis.\n" +"Podríamos querer hacer **commit** a esas adiciones,\n" +"y su correspondiente registro bibliográfico,\n" +"pero *no* hacer **commit** del trabajo que estamos haciendo sobre la conclusión\n" +"(el cual no hemos terminado aún)." +msgstr "" +"Git insiste en que agreguemos archivos al conjunto de cambios que queremos hacer\n" +"antes de hacer **commit** de alguna cosa. Esto permite hacer **commit** de nuestros\n" +"cambios en etapas y capturarlos en porciones lógicas en lugar de\n" +"solo lotes grandes.\n" +"Por ejemplo,\n" +"supongamos que agregamos algunas citas a una investigación relevante para nuestra tesis.\n" +"Podríamos querer hacer **commit** a esas adiciones,\n" +"y su correspondiente registro bibliográfico,\n" +"pero *no* hacer **commit** del trabajo que estamos haciendo sobre la conclusión\n" +"(el cual no hemos terminado aún)." + +#: git-novice/_locale/es/_episodes/04-changes.md:334 +msgid "" +"Para permitir esto,\n" +"Git tiene un *staging area* especial\n" +"donde mantiene registro de cosas que han sido agregadas al actual [changeset]({{ page.root }}/reference/#changeset)\n" +"pero aún no se han vuelto **commit**." +msgstr "" +"Para permitir esto,\n" +"Git tiene un *staging area* especial\n" +"donde mantiene registro de cosas que han sido agregadas al actual [changeset]({{ page.root }}/reference/#changeset)\n" +"pero aún no se han vuelto **commit**." + +#: git-novice/_locale/es/_episodes/04-changes.md:340 +msgid "" +">\n" +"> Si piensas en Git como tomar instantáneas de cambios durante la vida de un proyecto,\n" +"> `git add` especifica *qué* irá en una instantánea\n" +"> (poniendo cosas en el **staging area**),\n" +"> y `git commit` entonces *realmente toma* la instantánea, y\n" +"> genera un registro permanente de esto (como un **commit**).\n" +"> Si no tienes nada en el staging area cuando escribes `git commit`,\n" +"> Git te pedirá que uses `git commit -a` o `git commit --all`,\n" +"> ¡Que es como reunir *a todos* para la foto!\n" +"> Sin embargo, es casi siempre mejor\n" +"> agregar explícitamente cosas al **staging area**, porque podrías\n" +"> hacer **commit** de cambios que habías olvidado. (Volviendo a las instantáneas,\n" +"> podrías capturar al extra con el maquillaje incompleto caminando en el escenario para la toma\n" +"> porque usaste `-a`!)\n" +"> Trata de organizar las cosas manualmente\n" +"> o podrías encontrarte buscando \"deshacer git commit\" más\n" +"> de lo que te gustaría!" +msgstr "" +">\n" +"> Si piensas en Git como tomar instantáneas de cambios durante la vida de un proyecto,\n" +"> `git add` especifica *qué* irá en una instantánea\n" +"> (poniendo cosas en el **staging area**),\n" +"> y `git commit` entonces *realmente toma* la instantánea, y\n" +"> genera un registro permanente de esto (como un **commit**).\n" +"> Si no tienes nada en el staging area cuando escribes `git commit`,\n" +"> Git te pedirá que uses `git commit -a` o `git commit --all`,\n" +"> ¡Que es como reunir *a todos* para la foto!\n" +"> Sin embargo, es casi siempre mejor\n" +"> agregar explícitamente cosas al **staging area**, porque podrías\n" +"> hacer **commit** de cambios que habías olvidado. (Volviendo a las instantáneas,\n" +"> podrías capturar al extra con el maquillaje incompleto caminando en el escenario para la toma\n" +"> porque usaste `-a`!)\n" +"> Trata de organizar las cosas manualmente\n" +"> o podrías encontrarte buscando \"deshacer git commit\" más\n" +"> de lo que te gustaría!" + +#: git-novice/_locale/es/_episodes/04-changes.md:361 +msgid "" +"Veamos cómo nuestros cambios a un archivo se mueven de nuestro editor\n" +"al **staging area**\n" +"y luego al almacenamiento de largo plazo.\n" +"Primero,\n" +"agregamos otra línea al archivo:" +msgstr "" +"Veamos cómo nuestros cambios a un archivo se mueven de nuestro editor\n" +"al **staging area**\n" +"y luego al almacenamiento de largo plazo.\n" +"Primero,\n" +"agregamos otra línea al archivo:" + +#: git-novice/_locale/es/_episodes/04-changes.md:397 +msgid "" +"Hasta aquí, todo bien:\n" +"hemos agregado una línea al final del archivo\n" +"(mostrado con un `+` en la primera columna).\n" +"Ahora pongamos el cambio en el **staging area**\n" +"y veamos lo que reporta `git diff`:" +msgstr "" +"Hasta aquí, todo bien:\n" +"hemos agregado una línea al final del archivo\n" +"(mostrado con un `+` en la primera columna).\n" +"Ahora pongamos el cambio en el **staging area**\n" +"y veamos lo que reporta `git diff`:" + +#: git-novice/_locale/es/_episodes/04-changes.md:409 +msgid "" +"No hay **output**:\n" +"hasta donde Git puede decir,\n" +"no hay diferencias entre lo que se pidió guardar permanentemente\n" +"y lo que actualmente está en el directorio.\n" +"Sin embargo,\n" +"si hacemos esto:" +msgstr "" +"No hay **output**:\n" +"hasta donde Git puede decir,\n" +"no hay diferencias entre lo que se pidió guardar permanentemente\n" +"y lo que actualmente está en el directorio.\n" +"Sin embargo,\n" +"si hacemos esto:" + +#: git-novice/_locale/es/_episodes/04-changes.md:433 +msgid "" +"esto nos muestra la diferencia entre\n" +"el último cambio que sí hizo **commit**\n" +"y lo que está en el **staging area**.\n" +"Guardemos nuestros cambios:" +msgstr "" +"esto nos muestra la diferencia entre\n" +"el último cambio que sí hizo **commit**\n" +"y lo que está en el **staging area**.\n" +"Guardemos nuestros cambios:" + +#: git-novice/_locale/es/_episodes/04-changes.md:449 +msgid "revisa nuestro estatus:" +msgstr "revisa nuestro estatus:" + +#: git-novice/_locale/es/_episodes/04-changes.md:462 +msgid "y mira en la historia lo que hemos hecho hasta aquí:" +msgstr "y mira en la historia lo que hemos hecho hasta aquí:" + +# blockquote, which can be cascaded +#: git-novice/_locale/es/_episodes/04-changes.md:490 +msgid "> ## Diferencias basadas en palabras" +msgstr "> ## Diferencias basadas en palabras" + +#: git-novice/_locale/es/_episodes/04-changes.md:491 +msgid "" +">\n" +"> A veces, por ejemplo en el caso de documentos de texto, un diff por líneas\n" +"> es demasiado caótico. Es en ese caso donde la opción `--color-words` de\n" +"> `git diff` se vuelve muy útil ya que resalta las palabras\n" +"> modificadas usando colores." +msgstr "" +">\n" +"> A veces, por ejemplo en el caso de documentos de texto, un diff por líneas\n" +"> es demasiado caótico. Es en ese caso donde la opción `--color-words` de\n" +"> `git diff` se vuelve muy útil ya que resalta las palabras\n" +"> modificadas usando colores." + +# blockquote, which can be cascaded +#: git-novice/_locale/es/_episodes/04-changes.md:498 +msgid "> ## Paginación del Registro" +msgstr "> ## Paginación del Registro" + +#: git-novice/_locale/es/_episodes/04-changes.md:499 +msgid "" +">\n" +"> Cuando el **output** de `git log` es demasiado largo para caber en tu pantalla,\n" +"> `git` usa un programa para dividirlo en páginas del tamaño de tu pantalla.\n" +"> Cuando este \"paginador\" es llamado, notarás que la última línea de tu\n" +"> pantalla es un `:`, en lugar de tu prompt de siempre.\n" +">\n" +"> * Para salir del paginador, presiona `q`.\n" +"> * Para moverte a la siguiente página, presiona la barra espaciadora.\n" +"> * Para buscar `alguna_palabra` en todas las páginas, escribe `/alguna_palabra`\n" +"> y navega entre las coincidencias presionando `n` (next)." +msgstr "" +">\n" +"> Cuando el **output** de `git log` es demasiado largo para caber en tu pantalla,\n" +"> `git` usa un programa para dividirlo en páginas del tamaño de tu pantalla.\n" +"> Cuando este \"paginador\" es llamado, notarás que la última línea de tu\n" +"> pantalla es un `:`, en lugar de tu prompt de siempre.\n" +">\n" +"> * Para salir del paginador, presiona `q`.\n" +"> * Para moverte a la siguiente página, presiona la barra espaciadora.\n" +"> * Para buscar `alguna_palabra` en todas las páginas, escribe `/alguna_palabra`\n" +"> y navega entre las coincidencias presionando `n` (next)." + +# blockquote, which can be cascaded +#: git-novice/_locale/es/_episodes/04-changes.md:511 +msgid "> ## Tamaño Límite del Registro" +msgstr "> ## Tamaño Límite del Registro" + +#: git-novice/_locale/es/_episodes/04-changes.md:512 +msgid "" +">\n" +"> Para evitar que `git log` cubra toda la pantalla de tu terminal, puedes limitar el\n" +"> número de **commits** que Git lista usando `-N`, donde `N` es el número de\n" +"> **commits** que quieres ver. Por ejemplo, si sólo quieres información de\n" +"> el último **commit**, puedes usar:\n" +">\n" +"> ~~~\n" +"> $ git log -1\n" +"> ~~~\n" +"> {: .language-bash}\n" +">\n" +"> ~~~\n" +"> commit 005937fbe2a98fb83f0ade869025dc2636b4dad5\n" +"> Author: Vlad Dracula \n" +"> Date: Thu Aug 22 10:14:07 2013 -0400\n" +">\n" +"> Discuss concerns about Mars' climate for Mummy\n" +"> ~~~" +msgstr "" +">\n" +"> Para evitar que `git log` cubra toda la pantalla de tu terminal, puedes limitar el\n" +"> número de **commits** que Git lista usando `-N`, donde `N` es el número de\n" +"> **commits** que quieres ver. Por ejemplo, si sólo quieres información de\n" +"> el último **commit**, puedes usar:\n" +">\n" +"> ~~~\n" +"> $ git log -1\n" +"> ~~~\n" +"> {: .language-bash}\n" +">\n" +"> ~~~\n" +"> commit 005937fbe2a98fb83f0ade869025dc2636b4dad5\n" +"> Author: Vlad のび太 \n" +"> Date: Thu Aug 22 10:14:07 2013 -0400\n" +">\n" +"> Discuss concerns about Mars' climate for Mummy\n" +"> ~~~" + +#: git-novice/_locale/es/_episodes/04-changes.md:531 +msgid "" +">\n" +"> Puedes reducir la cantidad de información usando la\n" +"> opción `--oneline`:\n" +">\n" +"> ~~~\n" +"> $ git log --oneline\n" +"> ~~~\n" +"> {: .language-bash}\n" +"> ~~~\n" +"> * 005937f Discuss concerns about Mars' climate for Mummy\n" +"> * 34961b1 Add concerns about effects of Mars' moons on Wolfman\n" +"> * f22b25e Start notes on Mars as a base\n" +"> ~~~" +msgstr "" +">\n" +"> Puedes reducir la cantidad de información usando la\n" +"> opción `--oneline`:\n" +">\n" +"> ~~~\n" +"> $ git log --oneline\n" +"> ~~~\n" +"> {: .language-bash}\n" +"> ~~~\n" +"> * 005937f Discuss concerns about Mars' climate for Mummy\n" +"> * 34961b1 Add concerns about effects of Mars' moons on ドラえもん\n" +"> * f22b25e Start notes on Mars as a base\n" +"> ~~~" + +#: git-novice/_locale/es/_episodes/04-changes.md:545 +msgid "" +">\n" +"> También puedes combinar las opciones `--oneline` con otras. Una combinación\n" +"> útil es:\n" +">\n" +"> ~~~\n" +"> $ git log --oneline --graph --all --decorate\n" +"> ~~~\n" +"> {: .language-bash}\n" +"> ~~~\n" +"> * 005937f Discuss concerns about Mars' climate for Mummy (HEAD, master)\n" +"> * 34961b1 Add concerns about effects of Mars' moons on Wolfman\n" +"> * f22b25e Start notes on Mars as a base\n" +"> ~~~" +msgstr "" +">\n" +"> También puedes combinar las opciones `--oneline` con otras. Una combinación\n" +"> útil es:\n" +">\n" +"> ~~~\n" +"> $ git log --oneline --graph --all --decorate\n" +"> ~~~\n" +"> {: .language-bash}\n" +"> ~~~\n" +"> * 005937f Discuss concerns about Mars' climate for Mummy (HEAD, master)\n" +"> * 34961b1 Add concerns about effects of Mars' moons on ドラえもん\n" +"> * f22b25e Start notes on Mars as a base\n" +"> ~~~" + +# blockquote, which can be cascaded +#: git-novice/_locale/es/_episodes/04-changes.md:561 +msgid "> ## Directorios" +msgstr "> ## Directorios" + +#: git-novice/_locale/es/_episodes/04-changes.md:562 +msgid "" +">\n" +"> Dos hechos importantes que deberías saber acerca de directorios en Git.\n" +">\n" +"> 1. Git no rastrea directorios por sí mismos, sólo los archivos dentro de ellos.\n" +"> Inténtalo tú mismo:\n" +">\n" +"> ~~~\n" +"> $ mkdir directory\n" +"> $ git status\n" +"> $ git add directory\n" +"> $ git status\n" +"> ~~~\n" +"> {: .language-bash}\n" +">\n" +"> Nota que, nuestro nuevo y vació directorio `directory` no aparece en\n" +"> la lista de archivos no rastreados aún si nosotros explícitamente lo agregamos(_via_ `git add`) a nuestro\n" +"> repositorio. Esta es la razón por la que algunas veces verás archivos `.gitkeep`\n" +"> en directorios que si no fuera por ello estarían vacíos. A diferencia de `.gitignore`, \n" +"> estos archivos no son especiales\n" +"> y su único propósito es poblar un directorio para que Git lo agregue\n" +"> al repositorio. En efecto, podrías nombrar estos archivos como quieras.\n" +">\n" +"> {:start=\"2\"}\n" +"> 2. Si creas un directorio en tu repositorio Git y lo llenas con archivos,\n" +"> podrás agregar todos los archivos en el directorio a la vez haciendo:\n" +">\n" +"> ~~~\n" +"> git add \n" +"> ~~~\n" +"> {: .language-bash}" +msgstr "" +">\n" +"> Dos hechos importantes que deberías saber acerca de directorios en Git.\n" +">\n" +"> 1. Git no rastrea directorios por sí mismos, sólo los archivos dentro de ellos.\n" +"> Inténtalo tú mismo:\n" +">\n" +"> ~~~\n" +"> $ mkdir directory\n" +"> $ git status\n" +"> $ git add directory\n" +"> $ git status\n" +"> ~~~\n" +"> {: .language-bash}\n" +">\n" +"> Nota que, nuestro nuevo y vació directorio `directory` no aparece en\n" +"> la lista de archivos no rastreados aún si nosotros explícitamente lo agregamos(_via_ `git add`) a nuestro\n" +"> repositorio. Esta es la razón por la que algunas veces verás archivos `.gitkeep`\n" +"> en directorios que si no fuera por ello estarían vacíos. A diferencia de `.gitignore`, \n" +"> estos archivos no son especiales\n" +"> y su único propósito es poblar un directorio para que Git lo agregue\n" +"> al repositorio. En efecto, podrías nombrar estos archivos como quieras.\n" +">\n" +"> {:start=\"2\"}\n" +"> 2. Si creas un directorio en tu repositorio Git y lo llenas con archivos,\n" +"> podrás agregar todos los archivos en el directorio a la vez haciendo:\n" +">\n" +"> ~~~\n" +"> git add \n" +"> ~~~\n" +"> {: .language-bash}" + +#: git-novice/_locale/es/_episodes/04-changes.md:594 +msgid "" +"Recapitulando, cuando queremos agregar cambios a nuestro repositorio,\n" +"primero necesitamos agregar los archivos cambiados al **staging area**\n" +"(`git add`) y luego hacer un **commit** de los cambios al\n" +"repositorio (`git commit`):" +msgstr "" +"Recapitulando, cuando queremos agregar cambios a nuestro repositorio,\n" +"primero necesitamos agregar los archivos cambiados al **staging area**\n" +"(`git add`) y luego hacer un **commit** de los cambios al\n" +"repositorio (`git commit`):" + +# blockquote, which can be cascaded +#: git-novice/_locale/es/_episodes/04-changes.md:601 +msgid "> ## Escogiendo un Mensaje para el **Commit**" +msgstr "> ## Escogiendo un Mensaje para el **Commit**" + +#: git-novice/_locale/es/_episodes/04-changes.md:602 +msgid "" +">\n" +"> ¿Cuál de los siguientes mensajes de **commit** sería el más apropiado para el\n" +"> último **commit** hecho a `mars.txt`?\n" +">\n" +"> 1. \"Changes\"\n" +"> 2. \"Added line 'But the Mummy will appreciate the lack of humidity' to mars.txt\"\n" +"> 3. \"Discuss effects of Mars' climate on the Mummy\"\n" +">\n" +"> > ## Solución\n" +"> > La respuesta 1 no es suficientemente descriptiva,\n" +"> > y la respuesta 2 es demasiado descriptiva y redundante,\n" +"> > pero la respuesta 3 es buena: corta pero descriptiva." +msgstr "" +">\n" +"> ¿Cuál de los siguientes mensajes de **commit** sería el más apropiado para el\n" +"> último **commit** hecho a `mars.txt`?\n" +">\n" +"> 1. \"Changes\"\n" +"> 2. \"Added line 'But the Mummy will appreciate the lack of humidity' to mars.txt\"\n" +"> 3. \"Discuss effects of Mars' climate on the Mummy\"\n" +">\n" +"> > ## Solución\n" +"> > La respuesta 1 no es suficientemente descriptiva,\n" +"> > y la respuesta 2 es demasiado descriptiva y redundante,\n" +"> > pero la respuesta 3 es buena: corta pero descriptiva." + +# blockquote, which can be cascaded +#: git-novice/_locale/es/_episodes/04-changes.md:617 +msgid "> ## Haciendo Commit de Cambios a Git" +msgstr "> ## Haciendo Commit de Cambios a Git" + +#: git-novice/_locale/es/_episodes/04-changes.md:618 +msgid "" +">\n" +"> ¿Cuál comando(s) de abajo debería guardar los cambios de `myfile.txt`\n" +"> a mi repositorio local Git?\n" +">\n" +"> 1. `$ git commit -m \"my recent changes\"`\n" +">\n" +"> 2. `$ git init myfile.txt`\n" +"> `$ git commit -m \"my recent changes\"`\n" +">\n" +"> 3. `$ git add myfile.txt`\n" +"> `$ git commit -m \"my recent changes\"`\n" +">\n" +"> 4. `$ git commit -m myfile.txt \"my recent changes\"`\n" +">\n" +"> > ## Solución\n" +"> >\n" +"> > 1. Debería crear un **commit** solamente si los archivos ya han sido agregados al **staging area**.\n" +"> > 2. Trataría de crear un nuevo respositorio.\n" +"> > 3. Es correcto: primero agrega el archivo al **staging area**, luego hace **commit**.\n" +"> > 4. Intentaría hacer **commit** al archivo \"my recent changes\" con el mensaje myfile.txt." +msgstr "" +">\n" +"> ¿Cuál comando(s) de abajo debería guardar los cambios de `myfile.txt`\n" +"> a mi repositorio local Git?\n" +">\n" +"> 1. `$ git commit -m \"my recent changes\"`\n" +">\n" +"> 2. `$ git init myfile.txt`\n" +"> `$ git commit -m \"my recent changes\"`\n" +">\n" +"> 3. `$ git add myfile.txt`\n" +"> `$ git commit -m \"my recent changes\"`\n" +">\n" +"> 4. `$ git commit -m myfile.txt \"my recent changes\"`\n" +">\n" +"> > ## Solución\n" +"> >\n" +"> > 1. Debería crear un **commit** solamente si los archivos ya han sido agregados al **staging area**.\n" +"> > 2. Trataría de crear un nuevo respositorio.\n" +"> > 3. Es correcto: primero agrega el archivo al **staging area**, luego hace **commit**.\n" +"> > 4. Intentaría hacer **commit** al archivo \"my recent changes\" con el mensaje myfile.txt." + +# blockquote, which can be cascaded +#: git-novice/_locale/es/_episodes/04-changes.md:641 +msgid "> ## Haciendo **Commit** a Multiples Archivos" +msgstr "> ## Haciendo **Commit** a Multiples Archivos" + +#: git-novice/_locale/es/_episodes/04-changes.md:642 +msgid "" +">\n" +"> El **staging area** puede tener cambios de cualquier número de archivos\n" +"> a los que quieras hacer **commit**, como una sóla instantánea.\n" +">\n" +"> 1. Agrega algún texto a `mars.txt` anotando tu decisión\n" +"> de considerar Venus como base\n" +"> 2. Crea un nuevo archivo `venus.txt` con tus pensamientos iniciales\n" +"> acerca de Venus como base para tí y tus amigos\n" +"> 3. Agrega los cambios de ambos archivos al **staging area**,\n" +"> y haz un **commit** de esos cambios.\n" +">\n" +"> > ## Solución\n" +"> >\n" +"> > Primero haremos nuestros cambios a los archivos `mars.txt` y `venus.txt`:\n" +"> > ~~~\n" +"> > $ nano mars.txt\n" +"> > $ cat mars.txt\n" +"> > ~~~\n" +"> > {: .language-bash}\n" +"> > ~~~\n" +"> > Maybe I should start with a base on Venus.\n" +"> > ~~~\n" +"> > {: .output}\n" +"> > ~~~\n" +"> > $ nano venus.txt\n" +"> > $ cat venus.txt\n" +"> > ~~~\n" +"> > {: .language-bash}\n" +"> > ~~~\n" +"> > Venus is a nice planet and I definitely should consider it as a base.\n" +"> > ~~~\n" +"> > {: .output}\n" +"> > Ahora puedes agregar ambos archivos al **staging area**. Podemos hacer esto en una sóla línea:\n" +"> >\n" +"> > ~~~\n" +"> > $ git add mars.txt venus.txt\n" +"> > ~~~\n" +"> > {: .language-bash}\n" +"> > O con varios comandos:\n" +"> > ~~~\n" +"> > $ git add mars.txt\n" +"> > $ git add venus.txt\n" +"> > ~~~\n" +"> > {: .language-bash}\n" +"> > Ahora los archivos están listos para hacer **commit**. Puedes verificar esto usando `git status`. Si estás lista para hacer **commit** usa:\n" +"> > ~~~\n" +"> > $ git commit -m \"Write plans to start a base on Venus\"\n" +"> > ~~~\n" +"> > {: .language-bash}\n" +"> > ~~~\n" +"> > [master cc127c2]\n" +"> > Write plans to start a base on Venus\n" +"> > 2 files changed, 2 insertions(+)\n" +"> > create mode 100644 venus.txt\n" +"> > ~~~\n" +"> > {: .output}" +msgstr "" +">\n" +"> El **staging area** puede tener cambios de cualquier número de archivos\n" +"> a los que quieras hacer **commit**, como una sóla instantánea.\n" +">\n" +"> 1. Agrega algún texto a `mars.txt` anotando tu decisión\n" +"> de considerar Venus como base\n" +"> 2. Crea un nuevo archivo `venus.txt` con tus pensamientos iniciales\n" +"> acerca de Venus como base para tí y tus amigos\n" +"> 3. Agrega los cambios de ambos archivos al **staging area**,\n" +"> y haz un **commit** de esos cambios.\n" +">\n" +"> > ## Solución\n" +"> >\n" +"> > Primero haremos nuestros cambios a los archivos `mars.txt` y `venus.txt`:\n" +"> > ~~~\n" +"> > $ nano mars.txt\n" +"> > $ cat mars.txt\n" +"> > ~~~\n" +"> > {: .language-bash}\n" +"> > ~~~\n" +"> > Maybe I should start with a base on Venus.\n" +"> > ~~~\n" +"> > {: .output}\n" +"> > ~~~\n" +"> > $ nano venus.txt\n" +"> > $ cat venus.txt\n" +"> > ~~~\n" +"> > {: .language-bash}\n" +"> > ~~~\n" +"> > Venus is a nice planet and I definitely should consider it as a base.\n" +"> > ~~~\n" +"> > {: .output}\n" +"> > Ahora puedes agregar ambos archivos al **staging area**. Podemos hacer esto en una sóla línea:\n" +"> >\n" +"> > ~~~\n" +"> > $ git add mars.txt venus.txt\n" +"> > ~~~\n" +"> > {: .language-bash}\n" +"> > O con varios comandos:\n" +"> > ~~~\n" +"> > $ git add mars.txt\n" +"> > $ git add venus.txt\n" +"> > ~~~\n" +"> > {: .language-bash}\n" +"> > Ahora los archivos están listos para hacer **commit**. Puedes verificar esto usando `git status`. Si estás lista para hacer **commit** usa:\n" +"> > ~~~\n" +"> > $ git commit -m \"Write plans to start a base on Venus\"\n" +"> > ~~~\n" +"> > {: .language-bash}\n" +"> > ~~~\n" +"> > [master cc127c2]\n" +"> > Write plans to start a base on Venus\n" +"> > 2 files changed, 2 insertions(+)\n" +"> > create mode 100644 venus.txt\n" +"> > ~~~\n" +"> > {: .output}" + +# header +#: git-novice/_locale/es/_episodes/04-changes.md:701 +msgid "## Repositorio `bio` " +msgstr "## Repositorio `bio` " + +#: git-novice/_locale/es/_episodes/04-changes.md:702 +msgid "" +">\n" +"> * Crea un nuevo repositorio Git en tu computadora, llamado `bio`.\n" +"> * Escribe una autobiografía de tres líneas en un archivo llamado `me.txt`,\n" +"> haz **commit** de tus cambios\n" +"> * Modifica una línea, agrega una cuarta línea \n" +"> * Muestra las diferencias entre el estado actualizado y el original\n" +">\n" +"> > ## Soluciónn\n" +"> >\n" +"> > Si es necesario, sal de la carpeta `planets`:\n" +"> >\n" +"> > ~~~\n" +"> > $ cd ..\n" +"> > ~~~\n" +"> > {: .language-bash}\n" +"> >\n" +"> > Crea una nueva carpeta llamada `bio` y 'navega' a ella:\n" +"> >\n" +"> > ~~~\n" +"> > $ mkdir bio\n" +"> > $ cd bio\n" +"> > ~~~\n" +"> > {: .language-bash}\n" +"> >\n" +"> > Inicia git:\n" +"> >\n" +"> > ~~~\n" +"> > $ git init\n" +"> > ~~~\n" +"> > {: .language-bash}\n" +"> >\n" +"> > Crea tu archivo de biografía `me.txt` usando `nano` u otro editor de texto.\n" +"> > Una vez hecho, agrega y haz **commit** de tu cambio al repositorio:\n" +"> >\n" +"> > ~~~\n" +"> > $ git add me.txt\n" +"> > $ git commit -m'Adding biography file'\n" +"> > ~~~\n" +"> > {: .language-bash}\n" +"> >\n" +"> > Modifica el archivo como se describe arriba (modifica una línea, agrega una cuarta línea).\n" +"> > Para mostrar las diferencias entre el estado actual y el original, usa `git diff`:\n" +"> >\n" +"> > ~~~\n" +"> > $ git diff me.txt\n" +"> > ~~~\n" +"> > {: .language-bash}\n" +"> >" +msgstr "" +">\n" +"> * Crea un nuevo repositorio Git en tu computadora, llamado `bio`.\n" +"> * Escribe una autobiografía de tres líneas en un archivo llamado `me.txt`,\n" +"> haz **commit** de tus cambios\n" +"> * Modifica una línea, agrega una cuarta línea \n" +"> * Muestra las diferencias entre el estado actualizado y el original\n" +">\n" +"> > ## Soluciónn\n" +"> >\n" +"> > Si es necesario, sal de la carpeta `planets`:\n" +"> >\n" +"> > ~~~\n" +"> > $ cd ..\n" +"> > ~~~\n" +"> > {: .language-bash}\n" +"> >\n" +"> > Crea una nueva carpeta llamada `bio` y 'navega' a ella:\n" +"> >\n" +"> > ~~~\n" +"> > $ mkdir bio\n" +"> > $ cd bio\n" +"> > ~~~\n" +"> > {: .language-bash}\n" +"> >\n" +"> > Inicia git:\n" +"> >\n" +"> > ~~~\n" +"> > $ git init\n" +"> > ~~~\n" +"> > {: .language-bash}\n" +"> >\n" +"> > Crea tu archivo de biografía `me.txt` usando `nano` u otro editor de texto.\n" +"> > Una vez hecho, agrega y haz **commit** de tu cambio al repositorio:\n" +"> >\n" +"> > ~~~\n" +"> > $ git add me.txt\n" +"> > $ git commit -m'Adding biography file'\n" +"> > ~~~\n" +"> > {: .language-bash}\n" +"> >\n" +"> > Modifica el archivo como se describe arriba (modifica una línea, agrega una cuarta línea).\n" +"> > Para mostrar las diferencias entre el estado actual y el original, usa `git diff`:\n" +"> >\n" +"> > ~~~\n" +"> > $ git diff me.txt\n" +"> > ~~~\n" +"> > {: .language-bash}\n" +"> >" + +#: git-novice/_locale/es/_episodes/04-changes.md:754 +msgid "" +">\n" +"> Para cada uno de los **commits** que hayas hecho, Git almacenó tu nombre 2 veces.\n" +"> Tú eres nombrado como el **author** y el **committer**. Puedes observar\n" +"> esto, diciendo a Git que te muestre más información acerca de tus últimos\n" +"> **commits**:\n" +">\n" +"> ~~~\n" +"> $ git log --format=full\n" +"> ~~~\n" +"> {: .language-bash}\n" +">\n" +"> Cuando haces **commit** puedes nombrar a alguien más como el **author**:\n" +">\n" +"> ~~~\n" +"> $ git commit --author=\"Vlad Dracula \"\n" +"> ~~~\n" +"> {: .language-bash}\n" +">\n" +"> Crea un nuevo repositorio y crea dos **commits**: uno sin la\n" +"> opción `--author` y uno nombrando a un colega tuyo como el\n" +"> **author**. Ejecuta `git log` y `git log --format=full`. Piensa acerca de \n" +"> cómo esto puede permitirte colaborar con tus colegas.\n" +">\n" +"> > ## Solución\n" +"> >\n" +"> > ~~~\n" +"> > $ git add me.txt\n" +"> > $ git commit -m \"Update Vlad's bio.\" --author=\"Frank N. Stein \"\n" +"> > ~~~\n" +"> > {: .language-bash}\n" +"> > \n" +"> > ~~~\n" +"> > [master 4162a51] Update Vlad's bio.\n" +"> > Author: Frank N. Stein \n" +"> > 1 file changed, 2 insertions(+), 2 deletions(-)\n" +"> > ~~~\n" +"> > {: .output}\n" +"> >\n" +"> > ~~~\n" +"> > $ git log --format=full\n" +"> > ~~~\n" +"> > {: .language-bash}\n" +"> >\n" +"> > ~~~\n" +"> > commit 4162a51b273ba799a9d395dd70c45d96dba4e2ff\n" +"> > Author: Frank N. Stein \n" +"> > Commit: Vlad Dracula \n" +"> >\n" +"> > Update Vlad's bio.\n" +"> >\n" +"> > commit aaa3271e5e26f75f11892718e83a3e2743fab8ea\n" +"> > Author: Vlad Dracula \n" +"> > Commit: Vlad Dracula \n" +"> >\n" +"> > Vlad's initial bio.\n" +"> > ~~~\n" +"> > {: .output}" +msgstr "" +">\n" +"> Para cada uno de los **commits** que hayas hecho, Git almacenó tu nombre 2 veces.\n" +"> Tú eres nombrado como el **author** y el **committer**. Puedes observar\n" +"> esto, diciendo a Git que te muestre más información acerca de tus últimos\n" +"> **commits**:\n" +">\n" +"> ~~~\n" +"> $ git log --format=full\n" +"> ~~~\n" +"> {: .language-bash}\n" +">\n" +"> Cuando haces **commit** puedes nombrar a alguien más como el **author**:\n" +">\n" +"> ~~~\n" +"> $ git commit --author=\"Vlad のび太 \"\n" +"> ~~~\n" +"> {: .language-bash}\n" +">\n" +"> Crea un nuevo repositorio y crea dos **commits**: uno sin la\n" +"> opción `--author` y uno nombrando a un colega tuyo como el\n" +"> **author**. Ejecuta `git log` y `git log --format=full`. Piensa acerca de \n" +"> cómo esto puede permitirte colaborar con tus colegas.\n" +">\n" +"> > ## Solución\n" +"> >\n" +"> > ~~~\n" +"> > $ git add me.txt\n" +"> > $ git commit -m \"Update Vlad's bio.\" --author=\"Frank N. Stein \"\n" +"> > ~~~\n" +"> > {: .language-bash}\n" +"> > \n" +"> > ~~~\n" +"> > [master 4162a51] Update Vlad's bio.\n" +"> > Author: Frank N. Stein \n" +"> > 1 file changed, 2 insertions(+), 2 deletions(-)\n" +"> > ~~~\n" +"> > {: .output}\n" +"> >\n" +"> > ~~~\n" +"> > $ git log --format=full\n" +"> > ~~~\n" +"> > {: .language-bash}\n" +"> >\n" +"> > ~~~\n" +"> > commit 4162a51b273ba799a9d395dd70c45d96dba4e2ff\n" +"> > Author: Frank N. Stein \n" +"> > Commit: Vlad のび太 \n" +"> >\n" +"> > Update Vlad's bio.\n" +"> >\n" +"> > commit aaa3271e5e26f75f11892718e83a3e2743fab8ea\n" +"> > Author: Vlad のび太 \n" +"> > Commit: Vlad のび太 \n" +"> >\n" +"> > Vlad's initial bio.\n" +"> > ~~~\n" +"> > {: .output}" + +# Front Matter +#: git-novice/_locale/es/_episodes/05-history.md:1 +msgid "" +"---\n" +"title: Explorando el \"History\"\n" +"teaching: 25\n" +"exercises: 0\n" +"questions:\n" +"- \"¿Cómo puedo identificar versiones anteriores de archivos?\"\n" +"- \"¿Cómo puedo revisar mis cambios?\"\n" +"- \"¿Cómo puedo recuperar versiones anteriores de archivos?\"\n" +"objectives:\n" +"- \"Explicar qué es el **HEAD** de un repositorio y cómo usarlo.\"\n" +"- \"Identificar y usar el número de **commit** the Git.\"\n" +"- \"Comparar varias versiones de archivos.\"\n" +"- \"Restaurar versiones anteriores de archivos.\"\n" +"keypoints:\n" +"- \"`git diff` despliega diferencias entre **commits**.\"\n" +"- \"`git checkout` recupera versiones anteriores de archivos.\"\n" +"---" +msgstr "" +"---\n" +"title: Explorando el \"History\"\n" +"teaching: 25\n" +"exercises: 0\n" +"questions:\n" +"- \"¿Cómo puedo identificar versiones anteriores de archivos?\"\n" +"- \"¿Cómo puedo revisar mis cambios?\"\n" +"- \"¿Cómo puedo recuperar versiones anteriores de archivos?\"\n" +"objectives:\n" +"- \"Explicar qué es el **HEAD** de un repositorio y cómo usarlo.\"\n" +"- \"Identificar y usar el número de **commit** the Git.\"\n" +"- \"Comparar varias versiones de archivos.\"\n" +"- \"Restaurar versiones anteriores de archivos.\"\n" +"keypoints:\n" +"- \"`git diff` despliega diferencias entre **commits**.\"\n" +"- \"`git checkout` recupera versiones anteriores de archivos.\"\n" +"---" + +#: git-novice/_locale/es/_episodes/05-history.md:19 +msgid "" +"Como vimos en la lección anterior, podemos referirnos a los **commits** por sus\n" +"identificadores. Puedes referirte al _commit más reciente_ del directorio de trabajo \n" +"usando el identificador `HEAD`." +msgstr "" +"Como vimos en la lección anterior, podemos referirnos a los **commits** por sus\n" +"identificadores. Puedes referirte al _commit más reciente_ del directorio de trabajo \n" +"usando el identificador `HEAD`." + +#: git-novice/_locale/es/_episodes/05-history.md:23 +msgid "" +"Hemos estado agregando una línea a la vez a `mars.txt`, por lo que es fácil rastrear nuestro\n" +"progreso, así que hagamos eso usando `HEAD`. Antes de iniciar,\n" +"hagamos un cambio en `mars.txt`." +msgstr "" +"Hemos estado agregando una línea a la vez a `mars.txt`, por lo que es fácil rastrear nuestro\n" +"progreso, así que hagamos eso usando `HEAD`. Antes de iniciar,\n" +"hagamos un cambio en `mars.txt`." + +#: git-novice/_locale/es/_episodes/05-history.md:40 +msgid "Ahora, veamos lo que tenemos." +msgstr "Ahora, veamos lo que tenemos." + +#: git-novice/_locale/es/_episodes/05-history.md:59 +msgid "" +"Lo mismo obtendrías si omites `HEAD` (intentalo). \n" +"La verdadera ventaja en todo esto es cuando puedes referirte a **commits** previos. Hacemos\n" +"esto agregando `~1` para referirnos al **commit** inmediatamente anterior a `HEAD`." +msgstr "" +"Lo mismo obtendrías si omites `HEAD` (intentalo). \n" +"La verdadera ventaja en todo esto es cuando puedes referirte a **commits** previos. Hacemos\n" +"esto agregando `~1` para referirnos al **commit** inmediatamente anterior a `HEAD`." + +#: git-novice/_locale/es/_episodes/05-history.md:68 +msgid "" +"Si queremos ver las diferencias entre **commits** anteriores podemos usar `git diff`\n" +"nuevamente, pero con la notación `HEAD~1`,`HEAD~2`, y así sucesivamente, para referirse a ellos:" +msgstr "" +"Si queremos ver las diferencias entre **commits** anteriores podemos usar `git diff`\n" +"nuevamente, pero con la notación `HEAD~1`,`HEAD~2`, y así sucesivamente, para referirse a ellos:" + +#: git-novice/_locale/es/_episodes/05-history.md:89 +msgid "También podríamos usar `git show`, que nos muestra qué cambios hemos realizado en un **commit** anterior así como el mensaje del **commit**, en lugar de las _diferencias_ entre un **commit** y nuestro directorio de trabajo, que vemos usando `git diff`." +msgstr "También podríamos usar `git show`, que nos muestra qué cambios hemos realizado en un **commit** anterior así como el mensaje del **commit**, en lugar de las _diferencias_ entre un **commit** y nuestro directorio de trabajo, que vemos usando `git diff`." + +#: git-novice/_locale/es/_episodes/05-history.md:113 +msgid "" +"De este modo,\n" +"podemos construir una cadena de **commits**.\n" +"El más reciente de la cadena es referido como `HEAD`;\n" +"podemos referirnos a **commits** anteriores utilizando la notación `~`,\n" +"así `HEAD~1` (pronunciado \"head minus one\")\n" +"significa \"el commit anterior\",\n" +"mientras que `HEAD~123` va 123 **commits** hacia atrás desde donde estamos ahora." +msgstr "" +"De este modo,\n" +"podemos construir una cadena de **commits**.\n" +"El más reciente de la cadena es referido como `HEAD`;\n" +"podemos referirnos a **commits** anteriores utilizando la notación `~`,\n" +"así `HEAD~1` (pronunciado \"head minus one\")\n" +"significa \"el commit anterior\",\n" +"mientras que `HEAD~123` va 123 **commits** hacia atrás desde donde estamos ahora." + +#: git-novice/_locale/es/_episodes/05-history.md:121 +msgid "" +"También podemos referirnos a los **commits** usando\n" +"esas largas cadenas de dígitos y letras\n" +"que `git log` despliega.\n" +"Estos son IDs únicos para los cambios,\n" +"y aquí \"únicos\" realmente significa únicos:\n" +"cada cambio a cualquier conjunto de archivos en cualquier computadora\n" +"tiene un identificador único de 40 caracteres.\n" +"Nuestro primer **commit** recibió el ID\n" +"`f22b25e3233b4645dabd0d81e651fe074bd8e73b`,\n" +"así que probemos esto:" +msgstr "" +"También podemos referirnos a los **commits** usando\n" +"esas largas cadenas de dígitos y letras\n" +"que `git log` despliega.\n" +"Estos son IDs únicos para los cambios,\n" +"y aquí \"únicos\" realmente significa únicos:\n" +"cada cambio a cualquier conjunto de archivos en cualquier computadora\n" +"tiene un identificador único de 40 caracteres.\n" +"Nuestro primer **commit** recibió el ID\n" +"`f22b25e3233b4645dabd0d81e651fe074bd8e73b`,\n" +"así que probemos esto:" + +#: git-novice/_locale/es/_episodes/05-history.md:149 +msgid "" +"Esa es la respuesta correcta,\n" +"pero escribir cadenas aleatorias de 40 caracteres es molesto,\n" +"entonces Git nos permite usar solo los primeros caracteres:" +msgstr "" +"Esa es la respuesta correcta,\n" +"pero escribir cadenas aleatorias de 40 caracteres es molesto,\n" +"entonces Git nos permite usar solo los primeros caracteres:" + +#: git-novice/_locale/es/_episodes/05-history.md:170 +msgid "" +"¡Todo bien! Asi que\n" +"podemos guardar cambios en los archivos y ver qué hemos cambiado —ahora \n" +"¿Cómo podemos restaurar versiones anteriores de las cosas?\n" +"Supongamos que accidentalmente sobrescribimos nuestro archivo:" +msgstr "" +"¡Todo bien! Asi que\n" +"podemos guardar cambios en los archivos y ver qué hemos cambiado —ahora \n" +"¿Cómo podemos restaurar versiones anteriores de las cosas?\n" +"Supongamos que accidentalmente sobrescribimos nuestro archivo:" + +#: git-novice/_locale/es/_episodes/05-history.md:186 +msgid "" +"`git status` ahora nos dice que el archivo ha sido cambiado,\n" +"pero esos cambios no se han organizado:" +msgstr "" +"`git status` ahora nos dice que el archivo ha sido cambiado,\n" +"pero esos cambios no se han organizado:" + +#: git-novice/_locale/es/_episodes/05-history.md:206 +msgid "" +"Podemos volver a poner las cosas tal como estaban\n" +"usando `git checkout`:" +msgstr "" +"Podemos volver a poner las cosas tal como estaban\n" +"usando `git checkout`:" + +#: git-novice/_locale/es/_episodes/05-history.md:222 +msgid "" +"Como puedes adivinar por su nombre,\n" +"`git checkout` recupera (es decir, restaura) una versión anterior de un archivo.\n" +"En este caso,\n" +"le estamos diciendo a Git que queremos recuperar la versión del archivo grabado en `HEAD`,\n" +"que es el último **commit** guardado.\n" +"Si queremos volver más allá,\n" +"podemos usar un identificador de **commit** en su lugar:" +msgstr "" +"Como puedes adivinar por su nombre,\n" +"`git checkout` recupera (es decir, restaura) una versión anterior de un archivo.\n" +"En este caso,\n" +"le estamos diciendo a Git que queremos recuperar la versión del archivo grabado en `HEAD`,\n" +"que es el último **commit** guardado.\n" +"Si queremos volver más allá,\n" +"podemos usar un identificador de **commit** en su lugar:" + +# code block +#: git-novice/_locale/es/_episodes/05-history.md:250 +msgid "" +"~~~\n" +"# On branch master\n" +"Changes to be committed:\n" +" (use \"git reset HEAD ...\" to unstage)\n" +"# Changes not staged for commit:\n" +"# (use \"git add ...\" to update what will be committed)\n" +"# (use \"git checkout -- ...\" to discard changes in working directory)\n" +"#\n" +"#\\tmodified: mars.txt\n" +"#\n" +"no changes added to commit (use \"git add\" and/or \"git commit -a\")\n" +"~~~" +msgstr "" +"~~~\n" +"# On branch master\n" +"Changes to be committed:\n" +" (use \"git reset HEAD ...\" to unstage)\n" +"# Changes not staged for commit:\n" +"# (use \"git add ...\" to update what will be committed)\n" +"# (use \"git checkout -- ...\" to discard changes in working directory)\n" +"#\n" +"#\\tmodified: mars.txt\n" +"#\n" +"no changes added to commit (use \"git add\" and/or \"git commit -a\")\n" +"~~~" + +#: git-novice/_locale/es/_episodes/05-history.md:264 +msgid "" +"Ten en cuenta que los cambios están en el **staging area** de almacenamiento.\n" +"Nuevamente, podemos volver a poner las cosas tal como estaban\n" +"usando `git checkout`:" +msgstr "" +"Ten en cuenta que los cambios están en el **staging area** de almacenamiento.\n" +"Nuevamente, podemos volver a poner las cosas tal como estaban\n" +"usando `git checkout`:" + +# blockquote, which can be cascaded +#: git-novice/_locale/es/_episodes/05-history.md:273 +msgid "> ## No pierdas tu HEAD" +msgstr "> ## No pierdas tu HEAD" + +#: git-novice/_locale/es/_episodes/05-history.md:274 +msgid "" +">\n" +"> Arriba usamos\n" +">\n" +"> ~~~\n" +"> $ git checkout f22b25e mars.txt\n" +"> ~~~\n" +"> {: .language-bash}\n" +">\n" +"> para revertir `mars.txt` a su estado después del **commit** `f22b25e`.\n" +"> Pero ¡Ten cuidado! El comando `checkout` tiene otras funcionalidades importantes y Git puede malinterpretar tus intenciones si \n" +"> no sos precisa a la hora de tipear. Por ejemplo, \n" +"> si olvidas `mars.txt` en ese comando, Git te dirá que \"You are in\n" +"> 'detached HEAD' state\". En este estado, no deberías hacer ningún cambio.\n" +"> Puedes arreglar esto volviendo a conectar tu **head** usando `git checkout master`" +msgstr "" +">\n" +"> Arriba usamos\n" +">\n" +"> ~~~\n" +"> $ git checkout f22b25e mars.txt\n" +"> ~~~\n" +"> {: .language-bash}\n" +">\n" +"> para revertir `mars.txt` a su estado después del **commit** `f22b25e`.\n" +"> Pero ¡Ten cuidado! El comando `checkout` tiene otras funcionalidades importantes y Git puede malinterpretar tus intenciones si \n" +"> no sos precisa a la hora de tipear. Por ejemplo, \n" +"> si olvidas `mars.txt` en ese comando, Git te dirá que \"You are in\n" +"> 'detached HEAD' state\". En este estado, no deberías hacer ningún cambio.\n" +"> Puedes arreglar esto volviendo a conectar tu **head** usando `git checkout master`" + +#: git-novice/_locale/es/_episodes/05-history.md:290 +msgid "" +"Es importante recordar que\n" +"debemos usar el número de **commit** que identifica el estado del repositorio\n" +"*antes* del cambio que intentamos deshacer.\n" +"Un error común es usar el número de \n" +"**commit** en el cual hicimos el cambio del cual nos estamos tratando de deshacer.\n" +"En el siguiente ejemplo, queremos recuperar el estado antes del más reciente\n" +"**commit** (`HEAD~1`), que es **commit** `f22b25e`:" +msgstr "" +"Es importante recordar que\n" +"debemos usar el número de **commit** que identifica el estado del repositorio\n" +"*antes* del cambio que intentamos deshacer.\n" +"Un error común es usar el número de \n" +"**commit** en el cual hicimos el cambio del cual nos estamos tratando de deshacer.\n" +"En el siguiente ejemplo, queremos recuperar el estado antes del más reciente\n" +"**commit** (`HEAD~1`), que es **commit** `f22b25e`:" + +#: git-novice/_locale/es/_episodes/05-history.md:300 +msgid "" +"Así que, para poner todo junto,\n" +"aqui esta como Git trabaja, en forma de dibujo:" +msgstr "" +"Así que, para poner todo junto,\n" +"aqui esta como Git trabaja, en forma de dibujo:" + +# blockquote, which can be cascaded +#: git-novice/_locale/es/_episodes/05-history.md:305 +msgid "> ## Simplificando el caso común" +msgstr "> ## Simplificando el caso común" + +#: git-novice/_locale/es/_episodes/05-history.md:306 +msgid "" +">\n" +"> Si lees el **output** de `git status` detenidamente,\n" +"> verás que incluye esta sugerencia:\n" +">\n" +"> ~~~\n" +"> (use \"git checkout -- ...\" to discard changes in working directory)\n" +"> ~~~\n" +"> {: .language-bash}\n" +">\n" +"> Como deciamos,\n" +"> `git checkout` sin un identificador de versión restaura los archivos al estado guardado en `HEAD`.\n" +"> El doble guión `--` es necesario para separar los nombres de los archivos que se están recuperando\n" +"> del comando mismo:\n" +"> sin esto,\n" +"> Git intentaría usar el nombre del archivo como el identificador del **commit**." +msgstr "" +">\n" +"> Si lees el **output** de `git status` detenidamente,\n" +"> verás que incluye esta sugerencia:\n" +">\n" +"> ~~~\n" +"> (use \"git checkout -- ...\" to discard changes in working directory)\n" +"> ~~~\n" +"> {: .language-bash}\n" +">\n" +"> Como deciamos,\n" +"> `git checkout` sin un identificador de versión restaura los archivos al estado guardado en `HEAD`.\n" +"> El doble guión `--` es necesario para separar los nombres de los archivos que se están recuperando\n" +"> del comando mismo:\n" +"> sin esto,\n" +"> Git intentaría usar el nombre del archivo como el identificador del **commit**." + +#: git-novice/_locale/es/_episodes/05-history.md:323 +msgid "" +"El hecho de que los archivos puedan revertirse uno por uno\n" +"tiende a cambiar la forma en que las personas organizan su trabajo.\n" +"Si todo está en un documento grande,\n" +"es difícil (pero no imposible) deshacer cambios a la introducción\n" +"sin deshacer los cambios posteriores a la conclusión.\n" +"Si la introducción y la conclusión se almacenan en archivos separados,\n" +"por otra parte,\n" +"retroceder y avanzar en el tiempo se vuelve mucho más fácil." +msgstr "" +"El hecho de que los archivos puedan revertirse uno por uno\n" +"tiende a cambiar la forma en que las personas organizan su trabajo.\n" +"Si todo está en un documento grande,\n" +"es difícil (pero no imposible) deshacer cambios a la introducción\n" +"sin deshacer los cambios posteriores a la conclusión.\n" +"Si la introducción y la conclusión se almacenan en archivos separados,\n" +"por otra parte,\n" +"retroceder y avanzar en el tiempo se vuelve mucho más fácil." + +# blockquote, which can be cascaded +#: git-novice/_locale/es/_episodes/05-history.md:332 +msgid "> ## Recuperando versiones anteriores de un archivo" +msgstr "> ## Recuperando versiones anteriores de un archivo" + +#: git-novice/_locale/es/_episodes/05-history.md:333 +msgid "" +">\n" +"> Jennifer ha realizado cambios en el **script** de Python en el que ha estado trabajando durante semanas, y las\n" +"> modificaciones que hizo esta mañana \"corrompieron\" el **script** y ya no funciona. Ella ha pasado\n" +"> ~ 1hr tratando de solucionarlo, sin tener suerte...\n" +">\n" +"> Por suerte, ¡Ella ha estado haciendo un seguimiento de las versiones de su proyecto usando Git! ¿Cuáles comandos \n" +"> le permitirán recuperar la última versión estable de su **script** Python llamado \n" +"> `data_cruncher.py`?\n" +">\n" +"> 1. `$ git checkout HEAD`\n" +">\n" +"> 2. `$ git checkout HEAD data_cruncher.py`\n" +">\n" +"> 3. `$ git checkout HEAD~1 data_cruncher.py`\n" +">\n" +"> 4. `$ git checkout data_cruncher.py`\n" +">\n" +"> 5. Ambos 2 y 4" +msgstr "" +">\n" +"> Jennifer ha realizado cambios en el **script** de Python en el que ha estado trabajando durante semanas, y las\n" +"> modificaciones que hizo esta mañana \"corrompieron\" el **script** y ya no funciona. Ella ha pasado\n" +"> ~ 1hr tratando de solucionarlo, sin tener suerte...\n" +">\n" +"> Por suerte, ¡Ella ha estado haciendo un seguimiento de las versiones de su proyecto usando Git! ¿Cuáles comandos \n" +"> le permitirán recuperar la última versión estable de su **script** Python llamado \n" +"> `data_cruncher.py`?\n" +">\n" +"> 1. `$ git checkout HEAD`\n" +">\n" +"> 2. `$ git checkout HEAD data_cruncher.py`\n" +">\n" +"> 3. `$ git checkout HEAD~1 data_cruncher.py`\n" +">\n" +"> 4. `$ git checkout data_cruncher.py`\n" +">\n" +"> 5. Ambos 2 y 4" + +# blockquote, which can be cascaded +#: git-novice/_locale/es/_episodes/05-history.md:353 +msgid "> ## Revertir un commit" +msgstr "> ## Revertir un commit" + +#: git-novice/_locale/es/_episodes/05-history.md:354 +msgid "" +">\n" +"> Jennifer está colaborando en su **script** de Python con sus colegas y\n" +"> se da cuenta que su último **commit** en el repositorio del grupo es incorrecto y quiere\n" +"> deshacerlo. Jennifer necesita deshacer correctamente para que todos en el repositorio\n" +"> del grupo tengan el cambio correcto. `git revert [ID de commit incorrecto]`\n" +"> hará un nuevo **commit** que va a deshacer el commit anterior erroneo de Jennifer. \n" +"> Por lo tanto, `git revert` es diferente de `git checkout [commit\n" +"> ID]` porque `checkout` es para cambios locales no comprometidos con el\n" +"> repositorio de grupo. A continuación se encuentran los pasos correctos y explicaciones para\n" +"> que Jennifer use `git revert`, ¿Cuál es el comando que falta?\n" +">\n" +"> 1. ________ # Mira el historial de git del proyecto para encontrar el ID del **commit**\n" +">\n" +"> 2. Copia el ID (los primeros caracteres del ID, por ejemplo 0b1d055).\n" +">\n" +"> 3. `git revert [commit ID]`\n" +">\n" +"> 4. Escriba el nuevo mensaje del **commit**.\n" +">\n" +"> 5. Salva y cierra" +msgstr "" +">\n" +"> Jennifer está colaborando en su **script** de Python con sus colegas y\n" +"> se da cuenta que su último **commit** en el repositorio del grupo es incorrecto y quiere\n" +"> deshacerlo. Jennifer necesita deshacer correctamente para que todos en el repositorio\n" +"> del grupo tengan el cambio correcto. `git revert [ID de commit incorrecto]`\n" +"> hará un nuevo **commit** que va a deshacer el commit anterior erroneo de Jennifer. \n" +"> Por lo tanto, `git revert` es diferente de `git checkout [commit\n" +"> ID]` porque `checkout` es para cambios locales no comprometidos con el\n" +"> repositorio de grupo. A continuación se encuentran los pasos correctos y explicaciones para\n" +"> que Jennifer use `git revert`, ¿Cuál es el comando que falta?\n" +">\n" +"> 1. ________ # Mira el historial de git del proyecto para encontrar el ID del **commit**\n" +">\n" +"> 2. Copia el ID (los primeros caracteres del ID, por ejemplo 0b1d055).\n" +">\n" +"> 3. `git revert [commit ID]`\n" +">\n" +"> 4. Escriba el nuevo mensaje del **commit**.\n" +">\n" +"> 5. Salva y cierra" + +# blockquote, which can be cascaded +#: git-novice/_locale/es/_episodes/05-history.md:376 +msgid "> ## Entendiendo Workflow y History" +msgstr "> ## Entendiendo Workflow y History" + +#: git-novice/_locale/es/_episodes/05-history.md:377 +msgid "" +">\n" +"> ¿Cuál es el **output** de cat venus.txt al final de este conjunto de comandos?\n" +">\n" +"> ~~~\n" +"> $ cd planets\n" +"> $ nano venus.txt #captura el siguiente texto: Venus is beautiful and full of love\n" +"> $ git add venus.txt\n" +"> $ nano venus.txt #agrega el siguiente texto: Venus is too hot to be suitable as a base\n" +"> $ git commit -m \"Comment on Venus as an unsuitable base\"\n" +"> $ git checkout HEAD venus.txt\n" +"> $ cat venus.txt #esto imprimirá el contenido de venus.txt en la pantalla\n" +"> ~~~\n" +"> {: .language-bash}\n" +">\n" +"> 1.\n" +">\n" +"> ~~~\n" +"> Venus is too hot to be suitable as a base\n" +"> ~~~" +msgstr "" +">\n" +"> ¿Cuál es el **output** de cat venus.txt al final de este conjunto de comandos?\n" +">\n" +"> ~~~\n" +"> $ cd planets\n" +"> $ nano venus.txt #captura el siguiente texto: Venus is beautiful and full of love\n" +"> $ git add venus.txt\n" +"> $ nano venus.txt #agrega el siguiente texto: Venus is too hot to be suitable as a base\n" +"> $ git commit -m \"Comment on Venus as an unsuitable base\"\n" +"> $ git checkout HEAD venus.txt\n" +"> $ cat venus.txt #esto imprimirá el contenido de venus.txt en la pantalla\n" +"> ~~~\n" +"> {: .language-bash}\n" +">\n" +"> 1.\n" +">\n" +"> ~~~\n" +"> Venus is too hot to be suitable as a base\n" +"> ~~~" + +#: git-novice/_locale/es/_episodes/05-history.md:419 +msgid "" +">\n" +"> > ## Solución\n" +"> >\n" +"> > The answer is 2 because `git add venus.txt` was used only before add the line\n" +"> > `Venus is too hot to be suitable as a base`\n" +"> > which was lost when `git checkout` was executed.\n" +"> > Using the flag `-a` with `git commit` would have prevented the lost." +msgstr "" +">\n" +"> > ## Solución\n" +"> >\n" +"> > The answer is 2 because `git add venus.txt` was used only before add the line\n" +"> > `Venus is too hot to be suitable as a base`\n" +"> > which was lost when `git checkout` was executed.\n" +"> > Using the flag `-a` with `git commit` would have prevented the lost." + +# blockquote, which can be cascaded +#: git-novice/_locale/es/_episodes/05-history.md:429 +msgid "> ## Comprobando lo que entendiste de `git diff`" +msgstr "> ## Comprobando lo que entendiste de `git diff`" + +#: git-novice/_locale/es/_episodes/05-history.md:430 +msgid "" +">\n" +"> Considera este comando: `git diff HEAD~3 mars.txt`. ¿Qué predices que hará este comando si lo ejecutas? ¿Qué sucede cuando lo ejecutas? ¿Por qué?\n" +">\n" +"> Prueba éste otro comando, `git diff [ID] mars.txt`, donde [ID] es \n" +"> el identificador único para tu commit más reciente. ¿Qué piensas tú que sucederá,\n" +"> y qué es lo que pasa?" +msgstr "" +">\n" +"> Considera este comando: `git diff HEAD~3 mars.txt`. ¿Qué predices que hará este comando si lo ejecutas? ¿Qué sucede cuando lo ejecutas? ¿Por qué?\n" +">\n" +"> Prueba éste otro comando, `git diff [ID] mars.txt`, donde [ID] es \n" +"> el identificador único para tu commit más reciente. ¿Qué piensas tú que sucederá,\n" +"> y qué es lo que pasa?" + +# blockquote, which can be cascaded +#: git-novice/_locale/es/_episodes/05-history.md:438 +msgid "> ## Deshacer los cambios almacenados" +msgstr "> ## Deshacer los cambios almacenados" + +#: git-novice/_locale/es/_episodes/05-history.md:439 +msgid "" +">\n" +"> `git checkout` puede usarse para restaurar un **commit** anterior cuando cambios no marcados se han \n" +"> hecho, pero ¿También funcionará para los cambios que se han marcado pero no se han vuelto **commit**?\n" +"> Haz un cambio a `mars.txt`, agrega el cambio y usa` git checkout` para ver si\n" +"> puedes eliminar tu cambio." +msgstr "" +">\n" +"> `git checkout` puede usarse para restaurar un **commit** anterior cuando cambios no marcados se han \n" +"> hecho, pero ¿También funcionará para los cambios que se han marcado pero no se han vuelto **commit**?\n" +"> Haz un cambio a `mars.txt`, agrega el cambio y usa` git checkout` para ver si\n" +"> puedes eliminar tu cambio." + +# blockquote, which can be cascaded +#: git-novice/_locale/es/_episodes/05-history.md:446 +msgid "> ## Explorar y resumir el History" +msgstr "> ## Explorar y resumir el History" + +#: git-novice/_locale/es/_episodes/05-history.md:447 +msgid "" +">\n" +"> Explorar el **history** es una parte importante de git, a menudo es un desafío encontrar\n" +"> el ID de confirmación correcto, especialmente si el **commit** es de hace varios meses.\n" +">\n" +"> Imagina que el proyecto `planets` tiene más de 50 archivos.\n" +"> Deseas encontrar un **commit** con texto específico en `mars.txt`.\n" +"> Cuando escribes `git log`, aparece una lista muy larga,\n" +"> ¿Cómo puede restringir la búsqueda?\n" +">\n" +"> Recuerda que el comando `git diff` nos permite explorar un archivo específico,\n" +"> por ejemplo `git diff mars.txt`. Podemos aplicar una idea similar aquí.\n" +">\n" +"> ~~~\n" +"> $ git log mars.txt\n" +"> ~~~\n" +"> {: .language-bash}\n" +">\n" +"> Desafortunadamente, algunos de estos mensajes en los **commits** son muy ambiguos, por ejemplo `update files`.\n" +"> ¿Cómo puedes buscar a través de estos archivos?\n" +">\n" +"> Tanto `git diff` como `git log` son muy útiles y resumen una parte diferente del **history** para ti.\n" +"> ¿Es posible combinar ambos? Vamos a intentar lo siguiente:\n" +">\n" +"> ~~~\n" +"> $ git log --patch mars.txt\n" +"> ~~~\n" +"> {: .language-bash}\n" +">\n" +"> Deberías obtener una larga lista de output, y deberías poder ver tanto los dos mensajes del **commit** como la diferencia entre cada \n" +"> **commit**.\n" +">\n" +"> Pregunta: ¿Qué hace el siguiente comando?\n" +">\n" +"> ~~~\n" +"> $ git log --patch HEAD~3 *.txt\n" +"> ~~~\n" +"> {: .language-bash}" +msgstr "" +">\n" +"> Explorar el **history** es una parte importante de git, a menudo es un desafío encontrar\n" +"> el ID de confirmación correcto, especialmente si el **commit** es de hace varios meses.\n" +">\n" +"> Imagina que el proyecto `planets` tiene más de 50 archivos.\n" +"> Deseas encontrar un **commit** con texto específico en `mars.txt`.\n" +"> Cuando escribes `git log`, aparece una lista muy larga,\n" +"> ¿Cómo puede restringir la búsqueda?\n" +">\n" +"> Recuerda que el comando `git diff` nos permite explorar un archivo específico,\n" +"> por ejemplo `git diff mars.txt`. Podemos aplicar una idea similar aquí.\n" +">\n" +"> ~~~\n" +"> $ git log mars.txt\n" +"> ~~~\n" +"> {: .language-bash}\n" +">\n" +"> Desafortunadamente, algunos de estos mensajes en los **commits** son muy ambiguos, por ejemplo `update files`.\n" +"> ¿Cómo puedes buscar a través de estos archivos?\n" +">\n" +"> Tanto `git diff` como `git log` son muy útiles y resumen una parte diferente del **history** para ti.\n" +"> ¿Es posible combinar ambos? Vamos a intentar lo siguiente:\n" +">\n" +"> ~~~\n" +"> $ git log --patch mars.txt\n" +"> ~~~\n" +"> {: .language-bash}\n" +">\n" +"> Deberías obtener una larga lista de output, y deberías poder ver tanto los dos mensajes del **commit** como la diferencia entre cada \n" +"> **commit**.\n" +">\n" +"> Pregunta: ¿Qué hace el siguiente comando?\n" +">\n" +"> ~~~\n" +"> $ git log --patch HEAD~3 *.txt\n" +"> ~~~\n" +"> {: .language-bash}" + +# Front Matter +#: git-novice/_locale/es/_episodes/06-ignore.md:1 +msgid "" +"---\n" +"title: Ignorando cosas\n" +"teaching: 5\n" +"exercises: 0\n" +"questions:\n" +"- \"¿Cómo puedo indicarle a Git que ignore los archivos que no quiero rastrear?\"\n" +"objectives:\n" +"- \"Configure Git para ignorar archivos específicos.\"\n" +"- \"Explica por qué ignorar los archivos puede ser útil.\"\n" +"keypoints:\n" +"- \"El archivo `.gitignore` le dice a Git qué archivos ignorar.\"\n" +"---" +msgstr "" +"---\n" +"title: Ignorando cosas\n" +"teaching: 5\n" +"exercises: 0\n" +"questions:\n" +"- \"¿Cómo puedo indicarle a Git que ignore los archivos que no quiero rastrear?\"\n" +"objectives:\n" +"- \"Configure Git para ignorar archivos específicos.\"\n" +"- \"Explica por qué ignorar los archivos puede ser útil.\"\n" +"keypoints:\n" +"- \"El archivo `.gitignore` le dice a Git qué archivos ignorar.\"\n" +"---" + +#: git-novice/_locale/es/_episodes/06-ignore.md:14 +msgid "" +"¿Qué pasa si tenemos archivos que no queremos que Git rastree,\n" +"como archivos de copia de seguridad creados por nuestro editor\n" +"o archivos intermedios creados durante el análisis de datos?\n" +"Vamos a crear algunos archivos ficticios:" +msgstr "" +"¿Qué pasa si tenemos archivos que no queremos que Git rastree,\n" +"como archivos de copia de seguridad creados por nuestro editor\n" +"o archivos intermedios creados durante el análisis de datos?\n" +"Vamos a crear algunos archivos ficticios:" + +#: git-novice/_locale/es/_episodes/06-ignore.md:25 +msgid "Mira lo que Git dice:" +msgstr "Mira lo que Git dice:" + +# code block +#: git-novice/_locale/es/_episodes/06-ignore.md:32 +msgid "" +"~~~\n" +"On branch master\n" +"Untracked files:\n" +" (use \"git add ...\" to include in what will be committed)\n" +"\n" +"\\ta.dat\n" +"\\tb.dat\n" +"\\tc.dat\n" +"\\tresults/\n" +"nothing added to commit but untracked files present (use \"git add\" to track)\n" +"~~~" +msgstr "" +"~~~\n" +"On branch master\n" +"Untracked files:\n" +" (use \"git add ...\" to include in what will be committed)\n" +"\n" +"\\ta.dat\n" +"\\tb.dat\n" +"\\tc.dat\n" +"\\tresults/\n" +"nothing added to commit but untracked files present (use \"git add\" to track)\n" +"~~~" + +#: git-novice/_locale/es/_episodes/06-ignore.md:45 +msgid "" +"Colocar estos archivos bajo el control de versiones sería un desperdicio de espacio en disco. \n" +"Y lo que es peor, \n" +"al tenerlos todos listados, podría distraernos de los cambios que realmente importan, \n" +"así que vamos a decirle a Git que los ignore." +msgstr "" +"Colocar estos archivos bajo el control de versiones sería un desperdicio de espacio en disco. \n" +"Y lo que es peor, \n" +"al tenerlos todos listados, podría distraernos de los cambios que realmente importan, \n" +"así que vamos a decirle a Git que los ignore." + +#: git-novice/_locale/es/_episodes/06-ignore.md:50 +msgid "Lo hacemos creando un archivo en el directorio raíz de nuestro proyecto llamado `.gitignore`:" +msgstr "Lo hacemos creando un archivo en el directorio raíz de nuestro proyecto llamado `.gitignore`:" + +#: git-novice/_locale/es/_episodes/06-ignore.md:64 +msgid "" +"Estos patrones le dicen a Git que ignore cualquier archivo cuyo nombre termine en `.dat`\n" +"y todo lo que haya en el directorio `results`.\n" +"(Si alguno de estos archivos ya estaba siendo rastreado, \n" +"Git seguirá rastreándolos.)" +msgstr "" +"Estos patrones le dicen a Git que ignore cualquier archivo cuyo nombre termine en `.dat`\n" +"y todo lo que haya en el directorio `results`.\n" +"(Si alguno de estos archivos ya estaba siendo rastreado, \n" +"Git seguirá rastreándolos.)" + +#: git-novice/_locale/es/_episodes/06-ignore.md:69 +msgid "" +"Una vez que hemos creado este archivo, \n" +"la salida de `git status` es mucho más limpia:" +msgstr "" +"Una vez que hemos creado este archivo, \n" +"la salida de `git status` es mucho más limpia:" + +# code block +#: git-novice/_locale/es/_episodes/06-ignore.md:77 +msgid "" +"~~~\n" +"On branch master\n" +"Untracked files:\n" +" (use \"git add ...\" to include in what will be committed)\n" +"\n" +"\\t.gitignore\n" +"nothing added to commit but untracked files present (use \"git add\" to track)\n" +"~~~" +msgstr "" +"~~~\n" +"On branch master\n" +"Untracked files:\n" +" (use \"git add ...\" to include in what will be committed)\n" +"\n" +"\\t.gitignore\n" +"nothing added to commit but untracked files present (use \"git add\" to track)\n" +"~~~" + +#: git-novice/_locale/es/_episodes/06-ignore.md:87 +msgid "" +"Lo único que Git advierte ahora, es el archivo `.gitignore` recién creado.\n" +"Podrías pensar que no queremos rastrearlo, \n" +"pero todos aquellos con los que compartimos nuestro repositorio probablemente desearán\n" +"ignorar las mismas cosas que nosotros.\n" +"Vamos a agregar y hacer \"commit\" de `.gitignore`:" +msgstr "" +"Lo único que Git advierte ahora, es el archivo `.gitignore` recién creado.\n" +"Podrías pensar que no queremos rastrearlo, \n" +"pero todos aquellos con los que compartimos nuestro repositorio probablemente desearán\n" +"ignorar las mismas cosas que nosotros.\n" +"Vamos a agregar y hacer \"commit\" de `.gitignore`:" + +#: git-novice/_locale/es/_episodes/06-ignore.md:106 +msgid "Como ventaja, usar `.gitignore` nos ayuda a evitar agregar accidentalmente al repositorio los archivos que no queremos rastrear:" +msgstr "Como ventaja, usar `.gitignore` nos ayuda a evitar agregar accidentalmente al repositorio los archivos que no queremos rastrear:" + +#: git-novice/_locale/es/_episodes/06-ignore.md:120 +msgid "" +"Si realmente queremos anular la configuración de ignorar, \n" +"podemos usar `git add -f` para obligar a Git a añadir algo. Por ejemplo, \n" +"`git add -f a.dat`.\n" +"También podemos ver siempre el estado de los archivos ignorados si queremos:" +msgstr "" +"Si realmente queremos anular la configuración de ignorar, \n" +"podemos usar `git add -f` para obligar a Git a añadir algo. Por ejemplo, \n" +"`git add -f a.dat`.\n" +"También podemos ver siempre el estado de los archivos ignorados si queremos:" + +# blockquote, which can be cascaded +#: git-novice/_locale/es/_episodes/06-ignore.md:144 +msgid "> ## Ignorar archivos anidados" +msgstr "> ## Ignorar archivos anidados" + +#: git-novice/_locale/es/_episodes/06-ignore.md:145 +msgid "" +">\n" +"> Dado un directorio con la siguiente estructura:\n" +">\n" +"> ~~~\n" +"> results/data\n" +"> results/plots\n" +"> ~~~\n" +"> {: .language-bash}\n" +">\n" +"> ¿Cómo ignorarías sólo `results/plots` y no `results/data`?\n" +">\n" +"> > ## Solución\n" +"> >\n" +"> > Como ocurre con la mayoría de los problemas de programación, hay \n" +"> > varias maneras de resolver esto. Si sólo deseas ignorar el \n" +"> > contenido de `results/plots`, puedes cambiar tu `.gitignore` para \n" +"> > ignorar solamente la subcarpeta `/plots/` añadiendo la siguiente línea a su .gitignore:\n" +"> >\n" +"> > `results/plots/`\n" +"> >\n" +"> > Si, en cambio, deseas ignorar todo en `/results/`, pero deseas realizar el\n" +"> > seguimiento de `results/data`, puedes agregar `results/` a su .gitignore y\n" +"> > crear una excepción para la carpeta `results/data/`.\n" +"> > El siguiente reto cubrirá este tipo de solución.\n" +"> >\n" +"> >\n" +"> > A veces el patrón `**` viene muy bien para referirse a múltiples\n" +"> > niveles de directorio. E.g. `**/results/plots/*` hará que git ignore el\n" +"> > directorio `results/plots` en cualquier directorio raíz." +msgstr "" +">\n" +"> Dado un directorio con la siguiente estructura:\n" +">\n" +"> ~~~\n" +"> results/data\n" +"> results/plots\n" +"> ~~~\n" +"> {: .language-bash}\n" +">\n" +"> ¿Cómo ignorarías sólo `results/plots` y no `results/data`?\n" +">\n" +"> > ## Solución\n" +"> >\n" +"> > Como ocurre con la mayoría de los problemas de programación, hay \n" +"> > varias maneras de resolver esto. Si sólo deseas ignorar el \n" +"> > contenido de `results/plots`, puedes cambiar tu `.gitignore` para \n" +"> > ignorar solamente la subcarpeta `/plots/` añadiendo la siguiente línea a su .gitignore:\n" +"> >\n" +"> > `results/plots/`\n" +"> >\n" +"> > Si, en cambio, deseas ignorar todo en `/results/`, pero deseas realizar el\n" +"> > seguimiento de `results/data`, puedes agregar `results/` a su .gitignore y\n" +"> > crear una excepción para la carpeta `results/data/`.\n" +"> > El siguiente reto cubrirá este tipo de solución.\n" +"> >\n" +"> >\n" +"> > A veces el patrón `**` viene muy bien para referirse a múltiples\n" +"> > niveles de directorio. E.g. `**/results/plots/*` hará que git ignore el\n" +"> > directorio `results/plots` en cualquier directorio raíz." + +# blockquote, which can be cascaded +#: git-novice/_locale/es/_episodes/06-ignore.md:177 +msgid "> ## Incluyendo archivos específicos" +msgstr "> ## Incluyendo archivos específicos" + +#: git-novice/_locale/es/_episodes/06-ignore.md:178 +msgid "" +">\n" +"> ¿Cómo ignorarías todos los archivos `.data` en tu directorio raíz, excepto` final.data`?\n" +"> Sugerencia: Descubre lo que `!` (el signo de exclamación) hace\n" +">\n" +"> > ## Solución\n" +"> >\n" +"> > Agrega las siguientes dos líneas a tu archivo .gitignore:\n" +"> >\n" +"> > ~~~\n" +"> > *.data # ignora todos los archivos .data\n" +"> > !final.data # excepto el archivo final.data\n" +"> > ~~~\n" +"> > {: .language-bash}\n" +"> >\n" +"> > El signo de exclamación incluirá una entrada previamente excluida." +msgstr "" +">\n" +"> ¿Cómo ignorarías todos los archivos `.data` en tu directorio raíz, excepto` final.data`?\n" +"> Sugerencia: Descubre lo que `!` (el signo de exclamación) hace\n" +">\n" +"> > ## Solución\n" +"> >\n" +"> > Agrega las siguientes dos líneas a tu archivo .gitignore:\n" +"> >\n" +"> > ~~~\n" +"> > *.data # ignora todos los archivos .data\n" +"> > !final.data # excepto el archivo final.data\n" +"> > ~~~\n" +"> > {: .language-bash}\n" +"> >\n" +"> > El signo de exclamación incluirá una entrada previamente excluida." + +# blockquote, which can be cascaded +#: git-novice/_locale/es/_episodes/06-ignore.md:196 +msgid "> ## Ignorando todos los archivos de datos en un directorio" +msgstr "> ## Ignorando todos los archivos de datos en un directorio" + +#: git-novice/_locale/es/_episodes/06-ignore.md:197 +msgid "" +">\n" +"> Dado un directorio con la siguiente estructura:\n" +">\n" +"> ~~~\n" +"> results/data/position/gps/a.data\n" +"> results/data/position/gps/b.data\n" +"> results/data/position/gps/c.data\n" +"> results/data/position/gps/info.txt\n" +"> results/plots\n" +"> ~~~\n" +"> {: .language-bash}\n" +">\n" +"> ¿Cuál es la regla más corta en `.gitignore` para ignorar todos los archivos `.data`\n" +"> en `result/data/position/gps`? No ignores el archivo `info.txt`.\n" +">\n" +"> > ## Solución\n" +"> >\n" +"> > Agregando `results/data/position/gps/*.data` coincidirá con cada archivo en\n" +"> > `results/data/position/gps` que termine con `.data`.\n" +"> > El archivo `results/data/position/gps/info.txt` no será ignorado." +msgstr "" +">\n" +"> Dado un directorio con la siguiente estructura:\n" +">\n" +"> ~~~\n" +"> results/data/position/gps/a.data\n" +"> results/data/position/gps/b.data\n" +"> results/data/position/gps/c.data\n" +"> results/data/position/gps/info.txt\n" +"> results/plots\n" +"> ~~~\n" +"> {: .language-bash}\n" +">\n" +"> ¿Cuál es la regla más corta en `.gitignore` para ignorar todos los archivos `.data`\n" +"> en `result/data/position/gps`? No ignores el archivo `info.txt`.\n" +">\n" +"> > ## Solución\n" +"> >\n" +"> > Agregando `results/data/position/gps/*.data` coincidirá con cada archivo en\n" +"> > `results/data/position/gps` que termine con `.data`.\n" +"> > El archivo `results/data/position/gps/info.txt` no será ignorado." + +# blockquote, which can be cascaded +#: git-novice/_locale/es/_episodes/06-ignore.md:220 +msgid "> ## El orden de las reglas" +msgstr "> ## El orden de las reglas" + +#: git-novice/_locale/es/_episodes/06-ignore.md:221 +msgid "" +">\n" +"> Dado un archivo `.gitignore` con el siguiente contenido:\n" +">\n" +"> ~~~\n" +"> *.data\n" +"> !*.data\n" +"> ~~~\n" +"> {: .language-bash}\n" +">\n" +"> ¿Cuál será el resultado?\n" +">\n" +"> > ## Solución\n" +"> >\n" +"> > El modificador `!` anulará algún patrón ignorado previamente definido.\n" +"> > Debido a que la entrada `!*.data` anula todos los archivos` .data` anteriores en `.gitignore`,\n" +"> > ninguno de ellos será ignorado, y todos los archivos` .data` serán rastreados.\n" +"> >" +msgstr "" +">\n" +"> Dado un archivo `.gitignore` con el siguiente contenido:\n" +">\n" +"> ~~~\n" +"> *.data\n" +"> !*.data\n" +"> ~~~\n" +"> {: .language-bash}\n" +">\n" +"> ¿Cuál será el resultado?\n" +">\n" +"> > ## Solución\n" +"> >\n" +"> > El modificador `!` anulará algún patrón ignorado previamente definido.\n" +"> > Debido a que la entrada `!*.data` anula todos los archivos` .data` anteriores en `.gitignore`,\n" +"> > ninguno de ellos será ignorado, y todos los archivos` .data` serán rastreados.\n" +"> >" + +# blockquote, which can be cascaded +#: git-novice/_locale/es/_episodes/06-ignore.md:241 +msgid "> ## Archivos de bitácora" +msgstr "> ## Archivos de bitácora" + +#: git-novice/_locale/es/_episodes/06-ignore.md:242 +msgid "" +">\n" +"> Supón que escribiste un **script** que crea muchos archivos de registro con la estructura `log_01`, `log_02`, `log_03`, etc. Deseas conservarlos pero no rastrearlos a través de `git`.\n" +">\n" +"> 1. Escribe **una entrada** en tu archivo `.gitignore` que excluya los archivos con estructura `log_01`, `log_02`, etc.\n" +">\n" +"> 2. Prueba tu \"patrón de ignorar\" creando algunos archivos ficticios `log_01`, etc.\n" +">\n" +"> 3. Te das cuenta de que el archivo `log_01` es muy importante después de todo, así que lo tienes que agregar a los archivos rastreados sin cambiar el` .gitignore` de nuevo\n" +">\n" +"> 4. Discute con tu compañero de a lado qué otros tipos de archivos podrían residir en tu directorio que no deseas seguir y por tanto excluir a través de `.gitignore`.\n" +">\n" +"> > ## Solución\n" +"> >\n" +"> > 1. Agrega `log_*` o `log*` como nueva entrada en tu archivo .gitignore\n" +"> > 3. Rastrea `log_01` usando `git add -f log_01`" +msgstr "" +">\n" +"> Supón que escribiste un **script** que crea muchos archivos de registro con la estructura `log_01`, `log_02`, `log_03`, etc. Deseas conservarlos pero no rastrearlos a través de `git`.\n" +">\n" +"> 1. Escribe **una entrada** en tu archivo `.gitignore` que excluya los archivos con estructura `log_01`, `log_02`, etc.\n" +">\n" +"> 2. Prueba tu \"patrón de ignorar\" creando algunos archivos ficticios `log_01`, etc.\n" +">\n" +"> 3. Te das cuenta de que el archivo `log_01` es muy importante después de todo, así que lo tienes que agregar a los archivos rastreados sin cambiar el` .gitignore` de nuevo\n" +">\n" +"> 4. Discute con tu compañero de a lado qué otros tipos de archivos podrían residir en tu directorio que no deseas seguir y por tanto excluir a través de `.gitignore`.\n" +">\n" +"> > ## Solución\n" +"> >\n" +"> > 1. Agrega `log_*` o `log*` como nueva entrada en tu archivo .gitignore\n" +"> > 3. Rastrea `log_01` usando `git add -f log_01`" + +# Front Matter +#: git-novice/_locale/es/_episodes/07-github.md:1 +msgid "" +"---\n" +"title: Repositorios remotos en GitHub\n" +"teaching: 30\n" +"exercises: 0\n" +"questions:\n" +"- \"¿Cómo puedo compartir los cambios con otros en la web?\"\n" +"objectives:\n" +"- \"Explica qué es un repositorio remoto y por qué es útil.\"\n" +"- \"Hacer **push** y **pull** en un repositorio remoto\"\n" +"keypoints:\n" +"- \"Un repositorio Git local puede ser conectado a uno o más repositorios remotos.\"\n" +"- \"Usa el protocolo HTTPS para conectarte a un repositorio remoto hasta que hayas aprendido como hacerlo con SSH.\"\n" +"- \"`git push` copia los cambios desde el repositorio local a un repositorio remoto.\"\n" +"- \"`git pull` copia los cambios desde un repositorio remoto a un repositorio local.\"\n" +"---" +msgstr "" +"---\n" +"title: Repositorios remotos en GitHub\n" +"teaching: 30\n" +"exercises: 0\n" +"questions:\n" +"- \"¿Cómo puedo compartir los cambios con otros en la web?\"\n" +"objectives:\n" +"- \"Explica qué es un repositorio remoto y por qué es útil.\"\n" +"- \"Hacer **push** y **pull** en un repositorio remoto\"\n" +"keypoints:\n" +"- \"Un repositorio Git local puede ser conectado a uno o más repositorios remotos.\"\n" +"- \"Usa el protocolo HTTPS para conectarte a un repositorio remoto hasta que hayas aprendido como hacerlo con SSH.\"\n" +"- \"`git push` copia los cambios desde el repositorio local a un repositorio remoto.\"\n" +"- \"`git pull` copia los cambios desde un repositorio remoto a un repositorio local.\"\n" +"---" + +#: git-novice/_locale/es/_episodes/07-github.md:17 +msgid "Cuando se trabaja en colaboración con otras personas es cuando el sistema de control de versiones alcanza su pleno potencial. Ya hemos visto la mayor parte de las herramientas que necesitamos para ello, tan sólo nos falta ver cómo copiar los cambios realizados de un repositorio a otro." +msgstr "Cuando se trabaja en colaboración con otras personas es cuando el sistema de control de versiones alcanza su pleno potencial. Ya hemos visto la mayor parte de las herramientas que necesitamos para ello, tan sólo nos falta ver cómo copiar los cambios realizados de un repositorio a otro." + +#: git-novice/_locale/es/_episodes/07-github.md:19 +msgid "Sistemas como Git ya nos permiten mover el trabajo realizado entre dos repositorios cualesquiera. Sin embargo, en la práctica es más sencillo establecer uno de ellos como repositorio central y tenerlo en la red en lugar de tu computadora particular. La mayoría de desarrolladores usan servicios de alojamiento en la red, tales como [GitHub](http://github.com), [BitBucket](http://bitbucket.org) o [GitLab](http://gitlab.com/), para alojar ese repositorio central; en la última sección de esta lección exploraremos los pros y los contras de cada uno de ellos." +msgstr "Sistemas como Git ya nos permiten mover el trabajo realizado entre dos repositorios cualesquiera. Sin embargo, en la práctica es más sencillo establecer uno de ellos como repositorio central y tenerlo en la red en lugar de tu computadora particular. La mayoría de desarrolladores usan servicios de alojamiento en la red, tales como [GitHub](http://github.com), [BitBucket](http://bitbucket.org) o [GitLab](http://gitlab.com/), para alojar ese repositorio central; en la última sección de esta lección exploraremos los pros y los contras de cada uno de ellos." + +#: git-novice/_locale/es/_episodes/07-github.md:21 +msgid "Empecemos por compartir con todos los demás los cambios que hemos realizado en nuestro proyecto actual. Para ello, ingresa en tu cuenta de GitHub y haz click en el icono que hay en la esquina superior derecha para crear un nuevo repositorio llamado `planets`:" +msgstr "Empecemos por compartir con todos los demás los cambios que hemos realizado en nuestro proyecto actual. Para ello, ingresa en tu cuenta de GitHub y haz click en el icono que hay en la esquina superior derecha para crear un nuevo repositorio llamado `planets`:" + +#: git-novice/_locale/es/_episodes/07-github.md:23 +msgid "![Creando un Repositorio en GitHub (Paso 1)](../fig/github-create-repo-01.png)" +msgstr "![Creando un Repositorio en GitHub (Paso 1)](../fig/github-create-repo-01.png)" + +#: git-novice/_locale/es/_episodes/07-github.md:25 +msgid "Dale a tu repositorio el nombre \"planets\" y haz click en \"Create repository\":" +msgstr "Dale a tu repositorio el nombre \"planets\" y haz click en \"Create repository\":" + +#: git-novice/_locale/es/_episodes/07-github.md:27 +msgid "![Creando un Repositorio en GitHub (Paso 2)](../fig/github-create-repo-02.png)" +msgstr "![Creando un Repositorio en GitHub (Paso 2)](../fig/github-create-repo-02.png)" + +#: git-novice/_locale/es/_episodes/07-github.md:29 +msgid "Tan pronto es creado el repositorio, GitHub muestra una página con una URL y algo de información sobre cómo configurar tu repositorio local." +msgstr "Tan pronto es creado el repositorio, GitHub muestra una página con una URL y algo de información sobre cómo configurar tu repositorio local." + +#: git-novice/_locale/es/_episodes/07-github.md:31 +msgid "![Creando un Repositorio en GitHub (Paso 3)](../fig/github-create-repo-03.png)" +msgstr "![Creando un Repositorio en GitHub (Paso 3)](../fig/github-create-repo-03.png)" + +#: git-novice/_locale/es/_episodes/07-github.md:33 +msgid "Esto en realidad ejecuta lo siguiente en los servidores de GitHub:" +msgstr "Esto en realidad ejecuta lo siguiente en los servidores de GitHub:" + +#: git-novice/_locale/es/_episodes/07-github.md:42 +msgid "Nuestro repositorio local contiene nuestro trabajo previo en `mars.txt`, pero el repositorio remoto en GitHub todavía no contiene ningún archivo:" +msgstr "Nuestro repositorio local contiene nuestro trabajo previo en `mars.txt`, pero el repositorio remoto en GitHub todavía no contiene ningún archivo:" + +#: git-novice/_locale/es/_episodes/07-github.md:44 +msgid "![Repositorio en GitHub recién creado](../fig/git-freshly-made-github-repo.svg)" +msgstr "![Repositorio en GitHub recién creado](../fig/git-freshly-made-github-repo.svg)" + +#: git-novice/_locale/es/_episodes/07-github.md:46 +msgid "El siguiente paso es conectar los dos repositorios. Ello se consigue convirtiendo al repositorio en GitHub en un [repositorio remoto]({{ page.root }}/reference/#remote) del repositorio local. La página de inicio del repositorio en GitHub incluye la secuencia de caracteres que necesitamos para identificarlo:" +msgstr "El siguiente paso es conectar los dos repositorios. Ello se consigue convirtiendo al repositorio en GitHub en un [repositorio remoto]({{ page.root }}/reference/#remote) del repositorio local. La página de inicio del repositorio en GitHub incluye la secuencia de caracteres que necesitamos para identificarlo:" + +#: git-novice/_locale/es/_episodes/07-github.md:48 +msgid "![Dónde encontrar la URL del Repositorio en GitHub](../fig/github-find-repo-string.png)" +msgstr "![Dónde encontrar la URL del Repositorio en GitHub](../fig/github-find-repo-string.png)" + +#: git-novice/_locale/es/_episodes/07-github.md:50 +msgid "Haz click en el enlace 'HTTPS' para cambiar el [protocolo]({{ page.root }}/reference/#protocol) de SSH a HTTPS." +msgstr "Haz click en el enlace 'HTTPS' para cambiar el [protocolo]({{ page.root }}/reference/#protocol) de SSH a HTTPS." + +#: git-novice/_locale/es/_episodes/07-github.md:53 +msgid "" +">\n" +">Usamos aquí HTTPS porque no necesita ninguna configuración adicional.\n" +">Si en el curso quieres configurar el acceso mediante SSH, que es un poco más seguro,\n" +">puedes seguir cualquiera de los excelentes tutoriales que existen en\n" +">[GitHub](https://help.github.com/articles/generating-ssh-keys), \n" +">[Atlassian/BitBucket](https://confluence.atlassian.com/display/BITBUCKET/Set+up+SSH+for+Git) y\n" +">[GitLab](https://about.gitlab.com/2014/03/04/add-ssh-key-screencast/)\n" +">(este último con capturas animadas de pantalla)." +msgstr "" +">\n" +">Usamos aquí HTTPS porque no necesita ninguna configuración adicional.\n" +">Si en el curso quieres configurar el acceso mediante SSH, que es un poco más seguro,\n" +">puedes seguir cualquiera de los excelentes tutoriales que existen en\n" +">[GitHub](https://help.github.com/articles/generating-ssh-keys), \n" +">[Atlassian/BitBucket](https://confluence.atlassian.com/display/BITBUCKET/Set+up+SSH+for+Git) y\n" +">[GitLab](https://about.gitlab.com/2014/03/04/add-ssh-key-screencast/)\n" +">(este último con capturas animadas de pantalla)." + +#: git-novice/_locale/es/_episodes/07-github.md:63 +msgid "![Cambiando la URL del Repositorio en GitHub](../fig/github-change-repo-string.png)" +msgstr "![Cambiando la URL del Repositorio en GitHub](../fig/github-change-repo-string.png)" + +#: git-novice/_locale/es/_episodes/07-github.md:65 +msgid "Copia dicha URL desde el navegador, ve al repositorio local `planets` y ejecuta allí este comando:" +msgstr "Copia dicha URL desde el navegador, ve al repositorio local `planets` y ejecuta allí este comando:" + +#: git-novice/_locale/es/_episodes/07-github.md:72 +msgid "Asegúrate de usar la URL de tu repositorio en lugar de la de vlad: la única diferencia debería ser tu nombre de usuario en lugar de `vlad`." +msgstr "Asegúrate de usar la URL de tu repositorio en lugar de la de vlad: la única diferencia debería ser tu nombre de usuario en lugar de `vlad`." + +#: git-novice/_locale/es/_episodes/07-github.md:74 +msgid "Podemos comprobar que el comando ha funcionado bien ejecutando `git remote -v`:" +msgstr "Podemos comprobar que el comando ha funcionado bien ejecutando `git remote -v`:" + +#: git-novice/_locale/es/_episodes/07-github.md:87 +msgid "El nombre `origin` es un apodo local para tu repositorio remoto. Se puede usar cualquier otro nombre si se desea, pero `origin` es la elección más habitual." +msgstr "El nombre `origin` es un apodo local para tu repositorio remoto. Se puede usar cualquier otro nombre si se desea, pero `origin` es la elección más habitual." + +#: git-novice/_locale/es/_episodes/07-github.md:89 +msgid "Una vez seleccionado el apodo local `origin`, el siguiente comando enviará los cambios realizados en nuestro repositorio local al repositorio en GitHub:" +msgstr "Una vez seleccionado el apodo local `origin`, el siguiente comando enviará los cambios realizados en nuestro repositorio local al repositorio en GitHub:" + +#: git-novice/_locale/es/_episodes/07-github.md:109 +msgid "" +">\n" +"> Si la red a la que estás conectado usa un proxy es posible que tu último\n" +"> comando fallara con el siguiente mensaje de error: \"Could not resolve hostname\".\n" +"> Para solucionarlo es necesario informar a Git sobre el proxy:\n" +">\n" +"> ~~~\n" +"> $ git config --global http.proxy http://user:password@proxy.url\n" +"> $ git config --global https.proxy http://user:password@proxy.url\n" +"> ~~~\n" +"> {: .language-bash}\n" +">\n" +"> Si después te conectas a otra red que no usa un proxy es necesario decirle\n" +"> a Git que deshabilite el proxy:\n" +">\n" +"> ~~~\n" +"> $ git config --global --unset http.proxy\n" +"> $ git config --global --unset https.proxy\n" +"> ~~~\n" +"> {: .language-bash}" +msgstr "" +">\n" +"> Si la red a la que estás conectado usa un proxy es posible que tu último\n" +"> comando fallara con el siguiente mensaje de error: \"Could not resolve hostname\".\n" +"> Para solucionarlo es necesario informar a Git sobre el proxy:\n" +">\n" +"> ~~~\n" +"> $ git config --global http.proxy http://user:password@proxy.url\n" +"> $ git config --global https.proxy http://user:password@proxy.url\n" +"> ~~~\n" +"> {: .language-bash}\n" +">\n" +"> Si después te conectas a otra red que no usa un proxy es necesario decirle\n" +"> a Git que deshabilite el proxy:\n" +">\n" +"> ~~~\n" +"> $ git config --global --unset http.proxy\n" +"> $ git config --global --unset https.proxy\n" +"> ~~~\n" +"> {: .language-bash}" + +# blockquote, which can be cascaded +#: git-novice/_locale/es/_episodes/07-github.md:130 +msgid "> ## Gestores de contraseñas" +msgstr "> ## Gestores de contraseñas" + +#: git-novice/_locale/es/_episodes/07-github.md:131 +msgid "" +">\n" +"> Si tu sistema operativo tiene un gestor de contraseñas configurado, `git push`\n" +"> intentará usarlo cuando necesite un nombre de usuario y contraseña. Al menos\n" +"> ese es el comportamiento por defecto para Git.language-bash en Windows.\n" +"> Si quieres que haya que introducir el nombre de usuario y contraseña en la terminal,\n" +"> en lugar de usar el gestor de contraseñas, hay que ejecutar el siguiente\n" +"> comando en la terminal antes de lanzar `git push`:\n" +">\n" +"> ~~~\n" +"> $ unset SSH_ASKPASS\n" +"> ~~~\n" +"> {: .language-bash}\n" +">\n" +"> A pesar de lo que se podría deducir por el nombre, [git usa `SSH_ASKPASS`\n" +"> para todas las peticiones de credenciales](http://git-scm.com/docs/gitcredentials#_requesting_credentials),\n" +"> tanto si se está usando git vía SSH como si se está usando vía https, por lo\n" +"> que es posible que quieras deshabilitarlo en ambos casos con `unset SSH_ASKPASS` .\n" +">\n" +"> Otra alternativa es añadir `unset SSH_ASKPASS` al final de tu `~/.bashrc` para que\n" +"> git use por defecto la terminal para los nombres de usuario y las contraseñas." +msgstr "" +">\n" +"> Si tu sistema operativo tiene un gestor de contraseñas configurado, `git push`\n" +"> intentará usarlo cuando necesite un nombre de usuario y contraseña. Al menos\n" +"> ese es el comportamiento por defecto para Git.language-bash en Windows.\n" +"> Si quieres que haya que introducir el nombre de usuario y contraseña en la terminal,\n" +"> en lugar de usar el gestor de contraseñas, hay que ejecutar el siguiente\n" +"> comando en la terminal antes de lanzar `git push`:\n" +">\n" +"> ~~~\n" +"> $ unset SSH_ASKPASS\n" +"> ~~~\n" +"> {: .language-bash}\n" +">\n" +"> A pesar de lo que se podría deducir por el nombre, [git usa `SSH_ASKPASS`\n" +"> para todas las peticiones de credenciales](http://git-scm.com/docs/gitcredentials#_requesting_credentials),\n" +"> tanto si se está usando git vía SSH como si se está usando vía https, por lo\n" +"> que es posible que quieras deshabilitarlo en ambos casos con `unset SSH_ASKPASS` .\n" +">\n" +"> Otra alternativa es añadir `unset SSH_ASKPASS` al final de tu `~/.bashrc` para que\n" +"> git use por defecto la terminal para los nombres de usuario y las contraseñas." + +#: git-novice/_locale/es/_episodes/07-github.md:153 +msgid "Nuestros repositorios local y remoto se encuentran ahora en el siguiente estado:" +msgstr "Nuestros repositorios local y remoto se encuentran ahora en el siguiente estado:" + +#: git-novice/_locale/es/_episodes/07-github.md:155 +msgid "![Repositorio en GitHub después del primer envío](../fig/github-repo-after-first-push.svg)" +msgstr "![Repositorio en GitHub después del primer envío](../fig/github-repo-after-first-push.svg)" + +# blockquote, which can be cascaded +#: git-novice/_locale/es/_episodes/07-github.md:157 +msgid "> ## La opción '-u'" +msgstr "> ## La opción '-u'" + +#: git-novice/_locale/es/_episodes/07-github.md:158 +msgid "" +">\n" +"> En la documentación puedes ver que en ocasiones se usa la opción `-u` con el comando `git push`.\n" +"> Esta opción es sinónimo de la opción `--set-upstream-to` para el comando `git branch` y se usa\n" +"> para asociar el **branch** actual con un **branch** remoto, de modo que el comando `git pull`\n" +"> pueda usarse sin argumentos. Para hacer esto simplemente ejecuta `git push -u origin master`\n" +"> una vez que el repositorio remoto haya sido creado." +msgstr "" +">\n" +"> En la documentación puedes ver que en ocasiones se usa la opción `-u` con el comando `git push`.\n" +"> Esta opción es sinónimo de la opción `--set-upstream-to` para el comando `git branch` y se usa\n" +"> para asociar el **branch** actual con un **branch** remoto, de modo que el comando `git pull`\n" +"> pueda usarse sin argumentos. Para hacer esto simplemente ejecuta `git push -u origin master`\n" +"> una vez que el repositorio remoto haya sido creado." + +#: git-novice/_locale/es/_episodes/07-github.md:166 +msgid "También podemos hacer **pull**, es decir, traernos cambios desde el repositorio remoto al repositorio local:" +msgstr "También podemos hacer **pull**, es decir, traernos cambios desde el repositorio remoto al repositorio local:" + +#: git-novice/_locale/es/_episodes/07-github.md:180 +msgid "En este caso, hacer **pull** no ha tenido ningún efecto porque los dos repositorios están ya sincronizados. Por el contrario, si alguien antes hubiera subido con **push** algunos cambios al repositorio en GitHub, este comando los habría incorporado a nuestro repositorio local." +msgstr "En este caso, hacer **pull** no ha tenido ningún efecto porque los dos repositorios están ya sincronizados. Por el contrario, si alguien antes hubiera subido con **push** algunos cambios al repositorio en GitHub, este comando los habría incorporado a nuestro repositorio local." + +# blockquote, which can be cascaded +#: git-novice/_locale/es/_episodes/07-github.md:182 +msgid "> ## Interfaz gráfica de GitHub" +msgstr "> ## Interfaz gráfica de GitHub" + +#: git-novice/_locale/es/_episodes/07-github.md:183 +msgid "" +">\n" +"> Navega hasta tu repositorio `planets` en GitHub.\n" +"> En la pestaña Code, localiza el texto \"XX commits\" (donde \"XX\" es algún número) y haz click en él.\n" +"> Mueve el cursor sobre los tres botones que hay a la derecha de cada **commit**, y haz click en ellos.\n" +"> ¿Qué información puedes obtener/explorar con estos botones?\n" +"> ¿Cómo obtendrías la misma información en la terminal?\n" +">\n" +"> > ## Solución\n" +"> > El botón más a la izquierda (con el dibujo de un portapapeles) sirve para copiar en el portapapeles el identificador completo del **commit** en cuestión. En la terminal, ```git log``` muestra los identificadores completos de cada **commit**.\n" +"> >\n" +"> > Haciendo click en el botón de en medio, se pueden ver todos los cambios efectuados con el **commit** en cuestión. Las líneas verdes sombreadas indican adiciones y las rojas eliminaciones. En la terminal se puede ver lo mismo con ```git diff```. En particular, ```git diff ID1..ID2``` donde ID1 y ID2 son identificadores de **commits** (e.g. ```git diff a3bf1e5..041e637```) mostrará las diferencias entre esos dos **commits**.\n" +"> >\n" +"> > El botón más a la derecha permite ver todos los archivos que existían en el repositorio en el momento del **commit** en cuestión. Para ver lo mismo en la terminal sería necesario hacer **checkout** del repositorio a ese momento del tiempo. Para ello se ejecutaría ```git checkout ID``` donde ID es el identificador del **commit** que queremos investigar. ¡Si se hace esto hay que acordarse luego de poner el repositorio de nuevo en el estado correcto!" +msgstr "" +">\n" +"> Navega hasta tu repositorio `planets` en GitHub.\n" +"> En la pestaña Code, localiza el texto \"XX commits\" (donde \"XX\" es algún número) y haz click en él.\n" +"> Mueve el cursor sobre los tres botones que hay a la derecha de cada **commit**, y haz click en ellos.\n" +"> ¿Qué información puedes obtener/explorar con estos botones?\n" +"> ¿Cómo obtendrías la misma información en la terminal?\n" +">\n" +"> > ## Solución\n" +"> > El botón más a la izquierda (con el dibujo de un portapapeles) sirve para copiar en el portapapeles el identificador completo del **commit** en cuestión. En la terminal, ```git log``` muestra los identificadores completos de cada **commit**.\n" +"> >\n" +"> > Haciendo click en el botón de en medio, se pueden ver todos los cambios efectuados con el **commit** en cuestión. Las líneas verdes sombreadas indican adiciones y las rojas eliminaciones. En la terminal se puede ver lo mismo con ```git diff```. En particular, ```git diff ID1..ID2``` donde ID1 y ID2 son identificadores de **commits** (e.g. ```git diff a3bf1e5..041e637```) mostrará las diferencias entre esos dos **commits**.\n" +"> >\n" +"> > El botón más a la derecha permite ver todos los archivos que existían en el repositorio en el momento del **commit** en cuestión. Para ver lo mismo en la terminal sería necesario hacer **checkout** del repositorio a ese momento del tiempo. Para ello se ejecutaría ```git checkout ID``` donde ID es el identificador del **commit** que queremos investigar. ¡Si se hace esto hay que acordarse luego de poner el repositorio de nuevo en el estado correcto!" + +# blockquote, which can be cascaded +#: git-novice/_locale/es/_episodes/07-github.md:199 +msgid "> ## Fecha y Hora en GitHub" +msgstr "> ## Fecha y Hora en GitHub" + +#: git-novice/_locale/es/_episodes/07-github.md:200 +msgid "" +">\n" +"> Crea un repositorio remoto en GitHub. Haz **push** de los contenidos de tu repositorio local\n" +"> al remoto. Haz cambios en tu repositorio local y haz **push** de dichos cambios.\n" +"> Ve al repo recién creado en GitHub y comprueba las fechas y horas, también llamadas\n" +"> [timestamps]({{ page.root }}/reference/#timestamp) de los ficheros. ¿Cómo registra\n" +"> GitHub los tiempos, y por qué?\n" +">\n" +"> > ## Solución\n" +"> > Github muestra los tiempos en formato relativo legible para los humanos (i.e. \"22 hours ago\" or \"three weeks ago\"). Sin embargo, si mueves el cursor sobre un **timestamp**, podrás ver el tiempo exacto en el que se realizó el último cambio al fichero." +msgstr "" +">\n" +"> Crea un repositorio remoto en GitHub. Haz **push** de los contenidos de tu repositorio local\n" +"> al remoto. Haz cambios en tu repositorio local y haz **push** de dichos cambios.\n" +"> Ve al repo recién creado en GitHub y comprueba las fechas y horas, también llamadas\n" +"> [timestamps]({{ page.root }}/reference/#timestamp) de los ficheros. ¿Cómo registra\n" +"> GitHub los tiempos, y por qué?\n" +">\n" +"> > ## Solución\n" +"> > Github muestra los tiempos en formato relativo legible para los humanos (i.e. \"22 hours ago\" or \"three weeks ago\"). Sin embargo, si mueves el cursor sobre un **timestamp**, podrás ver el tiempo exacto en el que se realizó el último cambio al fichero." + +#: git-novice/_locale/es/_episodes/07-github.md:213 +msgid "" +">\n" +"> En esta lección hemos introducido el comando \"git push\".\n" +"> ¿En qué se diferencia \"git push\" de \"git commit\"?\n" +">\n" +"> > ## Solución\n" +"> > Cuando enviamos cambios con **push**, estamos interaccionando con un repositorio remoto para actualizarlo con los cambios que hemos hecho localmente (a menudo esto supone compartir con otros los cambios realizados). Por el contrario, **commit** únicamente actualiza tu repositorio local." +msgstr "" +">\n" +"> En esta lección hemos introducido el comando \"git push\".\n" +"> ¿En qué se diferencia \"git push\" de \"git commit\"?\n" +">\n" +"> > ## Solución\n" +"> > Cuando enviamos cambios con **push**, estamos interaccionando con un repositorio remoto para actualizarlo con los cambios que hemos hecho localmente (a menudo esto supone compartir con otros los cambios realizados). Por el contrario, **commit** únicamente actualiza tu repositorio local." + +# blockquote, which can be cascaded +#: git-novice/_locale/es/_episodes/07-github.md:222 +msgid "> ## Corrigiendo ajustes en el repositorio remoto" +msgstr "> ## Corrigiendo ajustes en el repositorio remoto" + +#: git-novice/_locale/es/_episodes/07-github.md:223 +msgid "" +">\n" +"> Es muy frecuente cometer un error al especificar la URL del repositorio remoto.\n" +"> Este ejercicio trata de cómo corregir este tipo de errores.\n" +"> Empecemos por añadir un repositorio remoto con una URL inválida:\n" +">\n" +"> ~~~\n" +"> git remote add broken https://github.com/this/url/is/invalid\n" +"> ~~~\n" +"> {: .language-bash}\n" +">\n" +"> ¿Obtienes un error al añadir el repositorio remoto? ¿Se te ocurre algún\n" +"> comando que hiciera obvio que la URL de tu repositorio remoto no es \n" +"> válida? ¿Se te ocurre cómo corregir la URL? (pista: usa `git remote\n" +"> -h`). No olvides eliminar este repositorio remoto una vez que\n" +"> hayas terminado este ejercicio.\n" +">\n" +"> > ## Solución\n" +"> > No aparece ningún error cuando añadimos el repositorio remoto (añadir un repositorio remoto informa a git sobre dicho repositorio, pero no intenta usarlo todavía). Sí veremos un error en cuanto intentemos usarlo con ```git push```. El comando ```git remote set-url``` nos permite cambiar la URL del repositorio remoto para corregirla." +msgstr "" +">\n" +"> Es muy frecuente cometer un error al especificar la URL del repositorio remoto.\n" +"> Este ejercicio trata de cómo corregir este tipo de errores.\n" +"> Empecemos por añadir un repositorio remoto con una URL inválida:\n" +">\n" +"> ~~~\n" +"> git remote add broken https://github.com/this/url/is/invalid\n" +"> ~~~\n" +"> {: .language-bash}\n" +">\n" +"> ¿Obtienes un error al añadir el repositorio remoto? ¿Se te ocurre algún\n" +"> comando que hiciera obvio que la URL de tu repositorio remoto no es \n" +"> válida? ¿Se te ocurre cómo corregir la URL? (pista: usa `git remote\n" +"> -h`). No olvides eliminar este repositorio remoto una vez que\n" +"> hayas terminado este ejercicio.\n" +">\n" +"> > ## Solución\n" +"> > No aparece ningún error cuando añadimos el repositorio remoto (añadir un repositorio remoto informa a git sobre dicho repositorio, pero no intenta usarlo todavía). Sí veremos un error en cuanto intentemos usarlo con ```git push```. El comando ```git remote set-url``` nos permite cambiar la URL del repositorio remoto para corregirla." + +# blockquote, which can be cascaded +#: git-novice/_locale/es/_episodes/07-github.md:244 +msgid "> ## Licencia GitHub y ficheros README" +msgstr "> ## Licencia GitHub y ficheros README" + +#: git-novice/_locale/es/_episodes/07-github.md:245 +msgid "" +">\n" +"> En esta sección hemos aprendido cómo crear un repositorio remoto en GitHub, pero cuando lo hicimos\n" +"> no añadimos ningún fichero README.md ni ningún fichero de licencia. Si lo hubiéramos hecho, ¿qué crees que habría sucedido\n" +"> cuando intentaste enlazar tus repositorios local y remoto?\n" +">\n" +"> > ## Solución\n" +"> > En este caso, puesto que ya teníamos un fichero README en nuestro propio repositorio (local), habríamos visto un conficto de unión, conocido como **merge conflict** (que es cuando git se da cuenta de que hay dos versiones de un mismo fichero y nos pide que resolvamos las diferencias)." +msgstr "" +">\n" +"> En esta sección hemos aprendido cómo crear un repositorio remoto en GitHub, pero cuando lo hicimos\n" +"> no añadimos ningún fichero README.md ni ningún fichero de licencia. Si lo hubiéramos hecho, ¿qué crees que habría sucedido\n" +"> cuando intentaste enlazar tus repositorios local y remoto?\n" +">\n" +"> > ## Solución\n" +"> > En este caso, puesto que ya teníamos un fichero README en nuestro propio repositorio (local), habríamos visto un conficto de unión, conocido como **merge conflict** (que es cuando git se da cuenta de que hay dos versiones de un mismo fichero y nos pide que resolvamos las diferencias)." + +# Front Matter +#: git-novice/_locale/es/_episodes/08-collab.md:1 +msgid "" +"---\n" +"title: Trabajos en colaboración\n" +"teaching: 5\n" +"exercises: 0\n" +"questions:\n" +"- \"¿Cómo puedo usar el control de versiones para colaborar con otras personas?\" \n" +"objectives:\n" +"- Clonar un repositorio remoto.\n" +"- Colaborar en crear un repositorio común.\n" +"keypoints: \n" +"- '`git clone` copia un repositorio remoto para crear un repositorio local llamado `origin` configurado automáticamente.'\n" +"---" +msgstr "" +"---\n" +"title: Trabajos en colaboración\n" +"teaching: 5\n" +"exercises: 0\n" +"questions:\n" +"- \"¿Cómo puedo usar el control de versiones para colaborar con otras personas?\" \n" +"objectives:\n" +"- Clonar un repositorio remoto.\n" +"- Colaborar en crear un repositorio común.\n" +"keypoints: \n" +"- '`git clone` copia un repositorio remoto para crear un repositorio local llamado `origin` configurado automáticamente.'\n" +"---" + +#: git-novice/_locale/es/_episodes/08-collab.md:14 +msgid "Para el siguiente paso, formen parejas. Una persona será el \"dueño\" y la otra el \"colaborador\". El objetivo es que el colaborador agregue cambios al repositorio del dueño. Vamos a cambiar roles al final, de modo que ambas personas puedan participar como dueño y colaborador" +msgstr "Para el siguiente paso, formen parejas. Una persona será el \"dueño\" y la otra el \"colaborador\". El objetivo es que el colaborador agregue cambios al repositorio del dueño. Vamos a cambiar roles al final, de modo que ambas personas puedan participar como dueño y colaborador" + +# blockquote, which can be cascaded +#: git-novice/_locale/es/_episodes/08-collab.md:16 +msgid "> ## Practicando por tu cuenta" +msgstr "> ## Practicando por tu cuenta" + +#: git-novice/_locale/es/_episodes/08-collab.md:17 +msgid "" +">\n" +"> Si estás trabajando en esta lección por tu cuenta, puedes hacerlo abriendo una segunda sesión en la \n" +"> ventana de la terminal. Esta ventana representará a tu compañero trabajando en otra computadora. No necesitas darle acceso a nadie en GitHub, pues tú serás ambos \"compañeros\"." +msgstr "" +">\n" +"> Si estás trabajando en esta lección por tu cuenta, puedes hacerlo abriendo una segunda sesión en la \n" +"> ventana de la terminal. Esta ventana representará a tu compañero trabajando en otra computadora. No necesitas darle acceso a nadie en GitHub, pues tú serás ambos \"compañeros\"." + +#: git-novice/_locale/es/_episodes/08-collab.md:22 +msgid "" +"El dueño debe dar acceso al colaborador. En GitHub, haz clic en el botón de configuración arriba a la derecha,\n" +"luego selecciona \"Collaborators\" e ingresa el nombre de tu colaborador." +msgstr "" +"El dueño debe dar acceso al colaborador. En GitHub, haz clic en el botón de configuración arriba a la derecha,\n" +"luego selecciona \"Collaborators\" e ingresa el nombre de tu colaborador." + +#: git-novice/_locale/es/_episodes/08-collab.md:27 +msgid "" +"Para aceptar la invitación de acceso al repositorio, el colaborador\n" +"debe ingresar a [https://github.com/notifications](https://github.com/notifications).\n" +"Una vez allí, se puede aceptar la invitación a dicho repositorio." +msgstr "" +"Para aceptar la invitación de acceso al repositorio, el colaborador\n" +"debe ingresar a [https://github.com/notifications](https://github.com/notifications).\n" +"Una vez allí, se puede aceptar la invitación a dicho repositorio." + +#: git-novice/_locale/es/_episodes/08-collab.md:31 +msgid "Luego, el colaborador debe descargar una copia del repositorio del dueño a su máquina. Esto se conoce como \"clonar un repositorio\". Para clonar el repositorio del dueño en su carpeta de `Desktop`, el colaborador debe ejecutar las siguientes líneas:" +msgstr "Luego, el colaborador debe descargar una copia del repositorio del dueño a su máquina. Esto se conoce como \"clonar un repositorio\". Para clonar el repositorio del dueño en su carpeta de `Desktop`, el colaborador debe ejecutar las siguientes líneas:" + +#: git-novice/_locale/es/_episodes/08-collab.md:38 +msgid "Reemplaza 'vlad' con el nombre de usuario del dueño." +msgstr "Reemplaza 'vlad' con el nombre de usuario del dueño." + +#: git-novice/_locale/es/_episodes/08-collab.md:42 +msgid "El colaborador puede ahora hacer cambios en la versión clonada del repositorio del dueño, en la misma forma en que se hacían previamente:" +msgstr "El colaborador puede ahora hacer cambios en la versión clonada del repositorio del dueño, en la misma forma en que se hacían previamente:" + +#: git-novice/_locale/es/_episodes/08-collab.md:68 +msgid "Luego enviar los cambios hacia el *repositorio del dueño* en GitHub haciendo **push**:" +msgstr "Luego enviar los cambios hacia el *repositorio del dueño* en GitHub haciendo **push**:" + +#: git-novice/_locale/es/_episodes/08-collab.md:86 +msgid "Nota que no es necesario crear un directorio remoto llamado `origin`: Git utiliza este nombre de manera automática cuando clonamos un repositorio. (Esta es la razón por la cual `origin` era una opción sensata a la hora de configurar directorios remotos a mano)." +msgstr "Nota que no es necesario crear un directorio remoto llamado `origin`: Git utiliza este nombre de manera automática cuando clonamos un repositorio. (Esta es la razón por la cual `origin` era una opción sensata a la hora de configurar directorios remotos a mano)." + +#: git-novice/_locale/es/_episodes/08-collab.md:88 +msgid "Ahora echa un vistazo al repositorio del dueño en su sitio de Github (quizá debas actualizar la página). Deberás ver el nuevo **commit** hecho por el colaborador." +msgstr "Ahora echa un vistazo al repositorio del dueño en su sitio de Github (quizá debas actualizar la página). Deberás ver el nuevo **commit** hecho por el colaborador." + +#: git-novice/_locale/es/_episodes/08-collab.md:90 +msgid "Para descargar los cambios hechos por el colaborador desde GitHub, el dueño debe correr las siguientes líneas:" +msgstr "Para descargar los cambios hechos por el colaborador desde GitHub, el dueño debe correr las siguientes líneas:" + +#: git-novice/_locale/es/_episodes/08-collab.md:112 +msgid "Ahora hay tres repositorios sincronizados (el local del dueño, el local del colaborador y el del dueño en GitHub)." +msgstr "Ahora hay tres repositorios sincronizados (el local del dueño, el local del colaborador y el del dueño en GitHub)." + +# blockquote, which can be cascaded +#: git-novice/_locale/es/_episodes/08-collab.md:114 +msgid "> ## Un flujo de trabajo colaborativo básico" +msgstr "> ## Un flujo de trabajo colaborativo básico" + +# blockquote, which can be cascaded +#: git-novice/_locale/es/_episodes/08-collab.md:115 +#: git-novice/_locale/es/_episodes/08-collab.md:121 +#: git-novice/_locale/es/_episodes/08-collab.md:141 +msgid "> " +msgstr "> " + +# blockquote, which can be cascaded +#: git-novice/_locale/es/_episodes/08-collab.md:116 +msgid "> Es considerado buena práctica estar seguro de que tienes una versión actualizada del repositorio en el que colaboras. Para ello deberías hacer un `git pull` antes de hacer cambios. El enfoque sería:" +msgstr "> Es considerado buena práctica estar seguro de que tienes una versión actualizada del repositorio en el que colaboras. Para ello deberías hacer un `git pull` antes de hacer cambios. El enfoque sería:" + +# blockquote, which can be cascaded +#: git-novice/_locale/es/_episodes/08-collab.md:117 +msgid "> * actualizar el repositorio local `git pull origin master`," +msgstr "> * actualizar el repositorio local `git pull origin master`," + +# blockquote, which can be cascaded +#: git-novice/_locale/es/_episodes/08-collab.md:118 +msgid "> * realizar cambios `git add`," +msgstr "> * realizar cambios `git add`," + +# blockquote, which can be cascaded +#: git-novice/_locale/es/_episodes/08-collab.md:119 +msgid "> * realizar un **commit** `git commit -m`, y" +msgstr "> * realizar un **commit** `git commit -m`, y" + +# blockquote, which can be cascaded +#: git-novice/_locale/es/_episodes/08-collab.md:120 +msgid "> * cargar las actualizaciones a GitHub con `git push origin master`" +msgstr "> * cargar las actualizaciones a GitHub con `git push origin master`" + +# blockquote, which can be cascaded +#: git-novice/_locale/es/_episodes/08-collab.md:122 +msgid "> Es mejor hacer varias actualizaciones pequeñas que un **commit** grande con cambios enormes. **Commits** pequeños son más fáciles de leer y revisar." +msgstr "> Es mejor hacer varias actualizaciones pequeñas que un **commit** grande con cambios enormes. **Commits** pequeños son más fáciles de leer y revisar." + +# blockquote, which can be cascaded +#: git-novice/_locale/es/_episodes/08-collab.md:125 +msgid "> ## Cambiar roles" +msgstr "> ## Cambiar roles" + +#: git-novice/_locale/es/_episodes/08-collab.md:126 +msgid "" +">\n" +"> Cambien los roles y repitan todo el proceso." +msgstr "" +">\n" +"> Cambien los roles y repitan todo el proceso." + +# blockquote, which can be cascaded +#: git-novice/_locale/es/_episodes/08-collab.md:130 +msgid "> ## Revisar Cambios" +msgstr "> ## Revisar Cambios" + +#: git-novice/_locale/es/_episodes/08-collab.md:131 +msgid "" +">\n" +"> El dueño hace un **push** de los **commits** al repositorio sin dar información al colaborador. ¿Cómo puede éste saberlo desde la linea de comandos y desde GitHub?\n" +">\n" +"> > ## Solution\n" +"> > En la linea de comandos, el colaborador puede usar ```git fetch origin master``` para acceder a los cambios remotos en el repositorio local, sin hacer un **merge**. Luego, corriendo ```git diff master origin/master```, el colaborador verá los cambios en la terminal. \n" +"> > En GitHub, el colaborador puede realizar su propio **fork** y hallar la barra gris que indica \"This branch is 1 commit behind Our-Respository:master.\". Lejos, a la derecha de la barra gris, hay un link para comparar. En la página para comparar, el colaborador debe cambiar el **fork** hacia su propio repositorio, luego hacer click en el link para \"comparar entre forks\" y, finalmente, cambiar el **fork** al repositorio principal. Esto mostrará todos los **commits** que sean distintos." +msgstr "" +">\n" +"> El dueño hace un **push** de los **commits** al repositorio sin dar información al colaborador. ¿Cómo puede éste saberlo desde la linea de comandos y desde GitHub?\n" +">\n" +"> > ## Solution\n" +"> > En la linea de comandos, el colaborador puede usar ```git fetch origin master``` para acceder a los cambios remotos en el repositorio local, sin hacer un **merge**. Luego, corriendo ```git diff master origin/master```, el colaborador verá los cambios en la terminal. \n" +"> > En GitHub, el colaborador puede realizar su propio **fork** y hallar la barra gris que indica \"This branch is 1 commit behind Our-Respository:master.\". Lejos, a la derecha de la barra gris, hay un link para comparar. En la página para comparar, el colaborador debe cambiar el **fork** hacia su propio repositorio, luego hacer click en el link para \"comparar entre forks\" y, finalmente, cambiar el **fork** al repositorio principal. Esto mostrará todos los **commits** que sean distintos." + +# blockquote, which can be cascaded +#: git-novice/_locale/es/_episodes/08-collab.md:140 +msgid "> ## Comentar cambios en GitHub" +msgstr "> ## Comentar cambios en GitHub" + +# blockquote, which can be cascaded +#: git-novice/_locale/es/_episodes/08-collab.md:142 +msgid "> El colaborador podría tener algunas preguntas sobre cambios en una línea hechos por el dueño. " +msgstr "> El colaborador podría tener algunas preguntas sobre cambios en una línea hechos por el dueño. " + +#: git-novice/_locale/es/_episodes/08-collab.md:143 +msgid "" +">\n" +"> Con GitHub, es posible comentar la diferencia en un **commit**. Sobre la línea de código a comentar aparece un botón azul para abrir una ventana. \n" +">\n" +"> El colaborador puede escribir sus comentarios y sugerencias usando la interfaz de GitHub." +msgstr "" +">\n" +"> Con GitHub, es posible comentar la diferencia en un **commit**. Sobre la línea de código a comentar aparece un botón azul para abrir una ventana. \n" +">\n" +"> El colaborador puede escribir sus comentarios y sugerencias usando la interfaz de GitHub." + +# blockquote, which can be cascaded +#: git-novice/_locale/es/_episodes/08-collab.md:149 +msgid "> ## Historial de versiones, backup y control de versiones" +msgstr "> ## Historial de versiones, backup y control de versiones" + +# blockquote, which can be cascaded +#: git-novice/_locale/es/_episodes/08-collab.md:150 +msgid "> Algunos softwares que permiten hacer **backups** también permiten guardar un historial de versiones y recuperar versiones específicas. ¿Cómo es esta funcionalidad distinta del control de versiones? ¿Cuáles son los beneficios de usar control de versiones, Git y GitHub? " +msgstr "> Algunos softwares que permiten hacer **backups** también permiten guardar un historial de versiones y recuperar versiones específicas. ¿Cómo es esta funcionalidad distinta del control de versiones? ¿Cuáles son los beneficios de usar control de versiones, Git y GitHub? " + +# Front Matter +#: git-novice/_locale/es/_episodes/09-conflict.md:1 +msgid "" +"---\n" +"title: Conflictos\n" +"teaching: 15\n" +"exercises: 0\n" +"questions:\n" +"- \"¿Qué hago cuando mis cambios entran en conflicto con los de otra persona?\"\n" +"objectives:\n" +"- \"Explicar qué son los conflictos y cuándo pueden ocurrir.\"\n" +"- \"Resolver conflictos que resultan de una fusión.\"\n" +"keypoints:\n" +"- \"Los conflictos ocurren cuando dos o más personas cambian el mismo archivo(s) al mismo tiempo.\"\n" +"- \"El sistema de control de versiones no permite a las personas sobreescribir ciegamente los\n" +"cambios del otro, pero resalta los conflictos para poder resolverlos.\"\n" +"---" +msgstr "" +"---\n" +"title: Conflictos\n" +"teaching: 15\n" +"exercises: 0\n" +"questions:\n" +"- \"¿Qué hago cuando mis cambios entran en conflicto con los de otra persona?\"\n" +"objectives:\n" +"- \"Explicar qué son los conflictos y cuándo pueden ocurrir.\"\n" +"- \"Resolver conflictos que resultan de una fusión.\"\n" +"keypoints:\n" +"- \"Los conflictos ocurren cuando dos o más personas cambian el mismo archivo(s) al mismo tiempo.\"\n" +"- \"El sistema de control de versiones no permite a las personas sobreescribir ciegamente los\n" +"cambios del otro, pero resalta los conflictos para poder resolverlos.\"\n" +"---" + +#: git-novice/_locale/es/_episodes/09-conflict.md:16 +msgid "Tan pronto como podemos trabajar en paralelo, es probable que alquien deshaga lo que otro hizo. Esto incluso es probable con una única persona: si estamos trabajando en un software al mismo tiempo en nuestra computadora portátil y un servidor en el laboratorio, podríamos hacer cambios diferentes a cada copia del trabajo. El control de versiones nos ayuda a manejar estos [confictos]({{ page.root }}/reference/#conflicts) al darnos herramientas para [resolver]({{ page.root }}/reference/#resolve) cambios que se hayan solapado. " +msgstr "Tan pronto como podemos trabajar en paralelo, es probable que alquien deshaga lo que otro hizo. Esto incluso es probable con una única persona: si estamos trabajando en un software al mismo tiempo en nuestra computadora portátil y un servidor en el laboratorio, podríamos hacer cambios diferentes a cada copia del trabajo. El control de versiones nos ayuda a manejar estos [confictos]({{ page.root }}/reference/#conflicts) al darnos herramientas para [resolver]({{ page.root }}/reference/#resolve) cambios que se hayan solapado. " + +#: git-novice/_locale/es/_episodes/09-conflict.md:18 +msgid "Para ver cómo podemos resolver conflictos, primero debemos crear uno. Actualmente, el archivo `mars.txt` se ve de la siguiente manera en dos copias de diferentes compañeros en nuestro repositorio `planetas`:" +msgstr "Para ver cómo podemos resolver conflictos, primero debemos crear uno. Actualmente, el archivo `mars.txt` se ve de la siguiente manera en dos copias de diferentes compañeros en nuestro repositorio `planetas`:" + +#: git-novice/_locale/es/_episodes/09-conflict.md:32 +msgid "Agreguemos una línea únicamente a la copia de uno de los dos compañeros:" +msgstr "Agreguemos una línea únicamente a la copia de uno de los dos compañeros:" + +#: git-novice/_locale/es/_episodes/09-conflict.md:48 +msgid "y luego hacer `push` al cambio en GitHub:" +msgstr "y luego hacer `push` al cambio en GitHub:" + +#: git-novice/_locale/es/_episodes/09-conflict.md:78 +msgid "" +"Ahora haremos que el otro compañero\n" +"haga un cambio diferente a su copia\n" +"*sin* actualizar desde GitHub:" +msgstr "" +"Ahora haremos que el otro compañero\n" +"haga un cambio diferente a su copia\n" +"*sin* actualizar desde GitHub:" + +#: git-novice/_locale/es/_episodes/09-conflict.md:96 +msgid "Podemos hacer **commit** del cambio localmente" +msgstr "Podemos hacer **commit** del cambio localmente" + +#: git-novice/_locale/es/_episodes/09-conflict.md:110 +msgid "pero Git no nos dejará hacer **push** en GitHub:" +msgstr "pero Git no nos dejará hacer **push** en GitHub:" + +#: git-novice/_locale/es/_episodes/09-conflict.md:130 +msgid "" +"Git detecta que los cambios hechos en una copia se solapan con los cambios hechos en la otra\n" +"y nos impide destruir nuestro trabajo previo.\n" +"Lo que debemos hacer es traer -`pull`- los cambios desde GitHub,\n" +"[unirlos]({{ page.root }}/reference/#merge) dentro de la copia en la que estamos trabajando actualmente,\n" +"y luego hacer `push` al resultado.\n" +"Empecemos haciendo `pull` a lo siguiente:" +msgstr "" +"Git detecta que los cambios hechos en una copia se solapan con los cambios hechos en la otra\n" +"y nos impide destruir nuestro trabajo previo.\n" +"Lo que debemos hacer es traer -`pull`- los cambios desde GitHub,\n" +"[unirlos]({{ page.root }}/reference/#merge) dentro de la copia en la que estamos trabajando actualmente,\n" +"y luego hacer `push` al resultado.\n" +"Empecemos haciendo `pull` a lo siguiente:" + +#: git-novice/_locale/es/_episodes/09-conflict.md:155 +msgid "" +"`git pull` nos dice que hay un conflicto,\n" +"y marca ese conflicto en el archivo afectado:" +msgstr "" +"`git pull` nos dice que hay un conflicto,\n" +"y marca ese conflicto en el archivo afectado:" + +#: git-novice/_locale/es/_episodes/09-conflict.md:175 +msgid "" +"Nuestro cambio —señalado en `HEAD`— es precedido por `<<<<<<<`.\n" +"Luego, Git insertó `=======` como un separador entre los cambios conflictivos\n" +"y marcó el fin del contenido descargado desde GitHub con `>>>>>>>`.\n" +"(El código de letras y números luego del marcador\n" +"identifica el **commit** que acabamos de descargar.)" +msgstr "" +"Nuestro cambio —señalado en `HEAD`— es precedido por `<<<<<<<`.\n" +"Luego, Git insertó `=======` como un separador entre los cambios conflictivos\n" +"y marcó el fin del contenido descargado desde GitHub con `>>>>>>>`.\n" +"(El código de letras y números luego del marcador\n" +"identifica el **commit** que acabamos de descargar.)" + +#: git-novice/_locale/es/_episodes/09-conflict.md:181 +msgid "" +"Ahora debemos editar este archivo para eliminar estos marcadores\n" +"y reconciliar los cambios.\n" +"Podemos hacer lo que queramos: mantener el cambio hecho en el repositorio local, mantener\n" +"el cambio hecho en el repositorio remoto, redactar algo nuevo para reemplazar ambos,\n" +"o eliminar el cambio completamente.\n" +"Reemplacemos ambos de manera que el archivo quede así:" +msgstr "" +"Ahora debemos editar este archivo para eliminar estos marcadores\n" +"y reconciliar los cambios.\n" +"Podemos hacer lo que queramos: mantener el cambio hecho en el repositorio local, mantener\n" +"el cambio hecho en el repositorio remoto, redactar algo nuevo para reemplazar ambos,\n" +"o eliminar el cambio completamente.\n" +"Reemplacemos ambos de manera que el archivo quede así:" + +#: git-novice/_locale/es/_episodes/09-conflict.md:201 +msgid "" +"Para finalizar la unión,\n" +"agregamos `mars.txt` a los cambios hechos por el **merge**\n" +"y luego hacemos **commit**:" +msgstr "" +"Para finalizar la unión,\n" +"agregamos `mars.txt` a los cambios hechos por el **merge**\n" +"y luego hacemos **commit**:" + +# code block +#: git-novice/_locale/es/_episodes/09-conflict.md:211 +msgid "" +"~~~\n" +"On branch master\n" +"All conflicts fixed but you are still merging.\n" +" (use \"git commit\" to conclude merge)\n" +"\n" +"Changes to be committed:\n" +"\n" +"\\tmodified: mars.txt\n" +"\n" +"~~~" +msgstr "" +"~~~\n" +"On branch master\n" +"All conflicts fixed but you are still merging.\n" +" (use \"git commit\" to conclude merge)\n" +"\n" +"Changes to be committed:\n" +"\n" +"\\tmodified: mars.txt\n" +"\n" +"~~~" + +#: git-novice/_locale/es/_episodes/09-conflict.md:233 +msgid "Ahora podemos hacer **push** a nuestros cambios en GitHub:" +msgstr "Ahora podemos hacer **push** a nuestros cambios en GitHub:" + +#: git-novice/_locale/es/_episodes/09-conflict.md:251 +msgid "" +"Git lleva el registro de qué hemos unificado con qué,\n" +"de manera que no debemos arreglar las cosas a mano nuevamente\n" +"cuando el colaborador que hizo el primer cambio hace **pull** de nuevo:" +msgstr "" +"Git lleva el registro de qué hemos unificado con qué,\n" +"de manera que no debemos arreglar las cosas a mano nuevamente\n" +"cuando el colaborador que hizo el primer cambio hace **pull** de nuevo:" + +#: git-novice/_locale/es/_episodes/09-conflict.md:274 +msgid "Obtenemos el archivo unificado:" +msgstr "Obtenemos el archivo unificado:" + +#: git-novice/_locale/es/_episodes/09-conflict.md:289 +msgid "No es necesario unificar el contenido nuevamente porque Git sabe que alguien ya ha hecho eso." +msgstr "No es necesario unificar el contenido nuevamente porque Git sabe que alguien ya ha hecho eso." + +#: git-novice/_locale/es/_episodes/09-conflict.md:291 +msgid "" +"La habilidad de Git de resolver conflictos es muy útil, pero la resolución de conflictos\n" +"cuesta tiempo y esfuerzo, y puede introducir errores si los conflictos no son resueltos\n" +"correctamente. Si te encuentras resolviendo muchos conflictos en un proyecto\n" +"ten en cuenta estas aproximaciones técnicas para reducirlas:" +msgstr "" +"La habilidad de Git de resolver conflictos es muy útil, pero la resolución de conflictos\n" +"cuesta tiempo y esfuerzo, y puede introducir errores si los conflictos no son resueltos\n" +"correctamente. Si te encuentras resolviendo muchos conflictos en un proyecto\n" +"ten en cuenta estas aproximaciones técnicas para reducirlas:" + +# unordered list +#: git-novice/_locale/es/_episodes/09-conflict.md:296 +msgid "- Hacer **pull** con mayor frecuencia, especialmente antes de empezar una nueva tarea" +msgstr "- Hacer **pull** con mayor frecuencia, especialmente antes de empezar una nueva tarea" + +# unordered list +#: git-novice/_locale/es/_episodes/09-conflict.md:297 +msgid "- Usar ramas temáticas para separar trabajo, uniéndolas a la rama principal - `master`- cuando estén completas" +msgstr "- Usar ramas temáticas para separar trabajo, uniéndolas a la rama principal - `master`- cuando estén completas" + +# unordered list +#: git-novice/_locale/es/_episodes/09-conflict.md:298 +msgid "- Hacer comentarios mas cortos y concisos" +msgstr "- Hacer comentarios mas cortos y concisos" + +# unordered list +#: git-novice/_locale/es/_episodes/09-conflict.md:299 +msgid "- Cuando sea apropiado, dividir archivos grandes en varios pequeños de manera que sea" +msgstr "- Cuando sea apropiado, dividir archivos grandes en varios pequeños de manera que sea" + +#: git-novice/_locale/es/_episodes/09-conflict.md:300 +msgid " menos probable que dos autores alteren el mismo archivo simultáneamente" +msgstr " menos probable que dos autores alteren el mismo archivo simultáneamente" + +#: git-novice/_locale/es/_episodes/09-conflict.md:302 +msgid "Los conflictos también pueden ser minimizados con estrategias de administración de proyectos:" +msgstr "Los conflictos también pueden ser minimizados con estrategias de administración de proyectos:" + +# unordered list +#: git-novice/_locale/es/_episodes/09-conflict.md:304 +msgid "- Aclarar con tus colaboradores quién es responsable de cada área" +msgstr "- Aclarar con tus colaboradores quién es responsable de cada área" + +# unordered list +#: git-novice/_locale/es/_episodes/09-conflict.md:305 +msgid "- Discutir con tus colaboradores en qué orden deben realizarse las tareas para que " +msgstr "- Discutir con tus colaboradores en qué orden deben realizarse las tareas para que " + +#: git-novice/_locale/es/_episodes/09-conflict.md:306 +msgid "" +" las tareas que puedan cambiar las mismas líneas no se trabajen simultáneamente. \n" +"- Si los conflictos son de estilo (e.g. tabulaciones vs. espacios), establecer una\n" +" convención que rija el proyecto y utilizar herramientas de estilo de código (e.g.\n" +" `htmltidy`, `perltidy`, `rubocop`, etc.) para forzarlas, si es necesario" +msgstr "" +" las tareas que puedan cambiar las mismas líneas no se trabajen simultáneamente. \n" +"- Si los conflictos son de estilo (e.g. tabulaciones vs. espacios), establecer una\n" +" convención que rija el proyecto y utilizar herramientas de estilo de código (e.g.\n" +" `htmltidy`, `perltidy`, `rubocop`, etc.) para forzarlas, si es necesario" + +# blockquote, which can be cascaded +#: git-novice/_locale/es/_episodes/09-conflict.md:311 +msgid "> ## Solucionando conflictos creados por ti" +msgstr "> ## Solucionando conflictos creados por ti" + +#: git-novice/_locale/es/_episodes/09-conflict.md:312 +msgid "" +">\n" +"> Clona el repositorio creado por tu instructor.\n" +"> Agrégale un nuevo archivo \n" +"> y modificar un archivo existente (tu instructor te dirá cuál).\n" +"> Cuando tu instructor te lo pida, \n" +"> trae los cambios -haciendo **pull**- desde el repositorio para crear un conflicto,\n" +"> y luego resuélvelo." +msgstr "" +">\n" +"> Clona el repositorio creado por tu instructor.\n" +"> Agrégale un nuevo archivo \n" +"> y modificar un archivo existente (tu instructor te dirá cuál).\n" +"> Cuando tu instructor te lo pida, \n" +"> trae los cambios -haciendo **pull**- desde el repositorio para crear un conflicto,\n" +"> y luego resuélvelo." + +# blockquote, which can be cascaded +#: git-novice/_locale/es/_episodes/09-conflict.md:321 +msgid "> ## Conflictos en archivos no textuales" +msgstr "> ## Conflictos en archivos no textuales" + +#: git-novice/_locale/es/_episodes/09-conflict.md:322 +msgid "" +">\n" +"> ¿Qué hace Git \n" +"> cuando hay un conflicto en una imagen u otro archivo no de texto \n" +"> que está almacenado con control de versiones?\n" +">\n" +"> > ## Solución\n" +"> >\n" +"> > Intentémoslo. Supón que **Dracula** toma una foto de la superficie de Marte y la llama `mars.jpg`.\n" +"> >\n" +"> > Si no tienes una imagen de Marte, puedes crear un archivo\n" +"> > binario de prueba de la siguiente manera:\n" +"> >\n" +"> > ~~~\n" +"> > $ head --bytes 1024 /dev/urandom > mars.jpg\n" +"> > $ ls -lh mars.jpg\n" +"> > ~~~\n" +"> > {: .language-bash}\n" +"> >\n" +"> > ~~~\n" +"> > -rw-r--r-- 1 vlad 57095 1.0K Mar 8 20:24 mars.jpg\n" +"> > ~~~\n" +"> > {: .output}\n" +"> >\n" +"> > `ls` nos muestra que se creó un archivo de 1-kilobyte. Está lleno de bytes al azar\n" +"> > leídos a partir del archivo especial, `/dev/urandom`.\n" +"> >\n" +"> > Ahora, supón que **Dracula** agrega `mars.jpg` a su repositorio:\n" +"> >\n" +"> > ~~~\n" +"> > $ git add mars.jpg\n" +"> > $ git commit -m \"Add picture of Martian surface\"\n" +"> > ~~~\n" +"> > {: .language-bash}\n" +"> >\n" +"> > ~~~\n" +"> > [master 8e4115c] Add picture of Martian surface\n" +"> > 1 file changed, 0 insertions(+), 0 deletions(-)\n" +"> > create mode 100644 mars.jpg\n" +"> > ~~~\n" +"> > {: .output}\n" +"> >\n" +"> > Supón que Wolfman agregó una imagen similar al mismo tiempo. \n" +"> > La suya es una imagen del cielo de Marte, pero *también* se llama `mars.jpg`.\n" +"> > Cuando **Dracula** intenta hacer push, recibe un mensaje familiar:\n" +"> >\n" +"> > ~~~\n" +"> > $ git push origin master\n" +"> > ~~~\n" +"> > {: .language-bash}\n" +"> >\n" +"> > ~~~\n" +"> > To https://github.com/vlad/planets.git\n" +"> > ! [rejected] master -> master (fetch first)\n" +"> > error: failed to push some refs to 'https://github.com/vlad/planets.git'\n" +"> > hint: Updates were rejected because the remote contains work that you do\n" +"> > hint: not have locally. This is usually caused by another repository pushing\n" +"> > hint: to the same ref. You may want to first integrate the remote changes\n" +"> > hint: (e.g., 'git pull ...') before pushing again.\n" +"> > hint: See the 'Note about fast-forwards' in 'git push --help' for details.\n" +"> > ~~~\n" +"> > {: .output}\n" +"> >\n" +"> > Hemos aprendido que primero debemos hacer **pull** y resolver conflictos:\n" +"> >\n" +"> > ~~~\n" +"> > $ git pull origin master\n" +"> > ~~~\n" +"> > {: .language-bash}\n" +"> >\n" +"> > Cuando hay un conflicto en una imagen u otro archivo binario, git imprime\n" +"> > un mensaje así:\n" +"> >\n" +"> > ~~~\n" +"> > $ git pull origin master\n" +"> > remote: Counting objects: 3, done.\n" +"> > remote: Compressing objects: 100% (3/3), done.\n" +"> > remote: Total 3 (delta 0), reused 0 (delta 0)\n" +"> > Unpacking objects: 100% (3/3), done.\n" +"> > From https://github.com/vlad/planets.git\n" +"> > * branch master -> FETCH_HEAD\n" +"> > 6a67967..439dc8c master -> origin/master\n" +"> > warning: Cannot merge binary files: mars.jpg (HEAD vs. 439dc8c08869c342438f6dc4a2b615b05b93c76e)\n" +"> > Auto-merging mars.jpg\n" +"> > CONFLICT (add/add): Merge conflict in mars.jpg\n" +"> > Automatic merge failed; fix conflicts and then commit the result.\n" +"> > ~~~\n" +"> > {: .output}\n" +"> >\n" +"> > El mensaje informando el conflicto es básicamente el mismo que se imprimió para `mars.txt`, pero\n" +"> > hay una línea adicional:\n" +"> >\n" +"> > ~~~\n" +"> > warning: Cannot merge binary files: mars.jpg (HEAD vs. 439dc8c08869c342438f6dc4a2b615b05b93c76e)\n" +"> > ~~~\n" +"> > {: .output}\n" +"> > \n" +"> > Git no puede insertar indicadores de conflicto en una imagen como lo hace en los\n" +"> > archivos de texto. Por lo tanto, en vez de editar la imagen, debemos revisar la versión que \n" +"> > queremos mantener. Luego podemos agregar y hacer **commit** a esta versión.\n" +"> >\n" +"> > En la línea agregada de arriba, Git convenientemente nos dio identificadores de **commit**\n" +"> > para las dos versiones de `mars.jpg`. Nuestra versión es `HEAD`, y la de Wolfman\n" +"> > es `439dc8c0...`. Si queremos usar nuestra versión, podemos usar\n" +"> > `git checkout`:\n" +"> >\n" +"> > ~~~\n" +"> > $ git checkout HEAD mars.jpg\n" +"> > $ git add mars.jpg\n" +"> > $ git commit -m \"Use image of surface instead of sky\"\n" +"> > ~~~\n" +"> > {: .language-bash}\n" +"> >\n" +"> > ~~~\n" +"> > [master 21032c3] Use image of surface instead of sky\n" +"> > ~~~\n" +"> > {: .output}\n" +"> >\n" +"> > En cambio si queremos usar la versión de Wolfman, podemos usar `git checkout` con\n" +"> > el identificador de **commit** de Wolfman, `439dc8c0`:\n" +"> >\n" +"> > ~~~\n" +"> > $ git checkout 439dc8c0 mars.jpg\n" +"> > $ git add mars.jpg\n" +"> > $ git commit -m \"Use image of sky instead of surface\"\n" +"> > ~~~\n" +"> > {: .language-bash}\n" +"> >\n" +"> > ~~~\n" +"> > [master da21b34] Use image of sky instead of surface\n" +"> > ~~~\n" +"> > {: .output}\n" +"> >\n" +"> > También podemos mantener *ambas* imágenes. La clave es que no podemos mantenerlas con el mismo\n" +"> > nombre. Pero podemos verificar cada versión de forma sucesiva y *renombrarla*, y luego agregar las versiones renombradas.\n" +"> > Primero, revisa cada imagen y renómbrala:\n" +"> >\n" +"> > ~~~\n" +"> > $ git checkout HEAD mars.jpg\n" +"> > $ git mv mars.jpg mars-surface.jpg\n" +"> > $ git checkout 439dc8c0 mars.jpg\n" +"> > $ mv mars.jpg mars-sky.jpg\n" +"> > ~~~\n" +"> > {: .language-bash}\n" +"> >\n" +"> > Luego, elimina la vieja imagen `mars.jpg` y agrega los dos archivos nuevos:\n" +"> >\n" +"> > ~~~\n" +"> > $ git rm mars.jpg\n" +"> > $ git add mars-surface.jpg\n" +"> > $ git add mars-sky.jpg\n" +"> > $ git commit -m \"Use two images: surface and sky\"\n" +"> > ~~~\n" +"> > {: .language-bash}\n" +"> >\n" +"> > ~~~\n" +"> > [master 94ae08c] Use two images: surface and sky\n" +"> > 2 files changed, 0 insertions(+), 0 deletions(-)\n" +"> > create mode 100644 mars-sky.jpg\n" +"> > rename mars.jpg => mars-surface.jpg (100%)\n" +"> > ~~~\n" +"> > {: .output}\n" +"> >\n" +"> > Ahora ambas imágenes de Marte estan ingresadas en el repositorio, y `mars.jpg`\n" +"> > ya no existe." +msgstr "" +">\n" +"> ¿Qué hace Git \n" +"> cuando hay un conflicto en una imagen u otro archivo no de texto \n" +"> que está almacenado con control de versiones?\n" +">\n" +"> > ## Solución\n" +"> >\n" +"> > Intentémoslo. Supón que **のび太** toma una foto de la superficie de Marte y la llama `mars.jpg`.\n" +"> >\n" +"> > Si no tienes una imagen de Marte, puedes crear un archivo\n" +"> > binario de prueba de la siguiente manera:\n" +"> >\n" +"> > ~~~\n" +"> > $ head --bytes 1024 /dev/urandom > mars.jpg\n" +"> > $ ls -lh mars.jpg\n" +"> > ~~~\n" +"> > {: .language-bash}\n" +"> >\n" +"> > ~~~\n" +"> > -rw-r--r-- 1 vlad 57095 1.0K Mar 8 20:24 mars.jpg\n" +"> > ~~~\n" +"> > {: .output}\n" +"> >\n" +"> > `ls` nos muestra que se creó un archivo de 1-kilobyte. Está lleno de bytes al azar\n" +"> > leídos a partir del archivo especial, `/dev/urandom`.\n" +"> >\n" +"> > Ahora, supón que **のび太** agrega `mars.jpg` a su repositorio:\n" +"> >\n" +"> > ~~~\n" +"> > $ git add mars.jpg\n" +"> > $ git commit -m \"Add picture of Martian surface\"\n" +"> > ~~~\n" +"> > {: .language-bash}\n" +"> >\n" +"> > ~~~\n" +"> > [master 8e4115c] Add picture of Martian surface\n" +"> > 1 file changed, 0 insertions(+), 0 deletions(-)\n" +"> > create mode 100644 mars.jpg\n" +"> > ~~~\n" +"> > {: .output}\n" +"> >\n" +"> > Supón que ドラえもん agregó una imagen similar al mismo tiempo. \n" +"> > La suya es una imagen del cielo de Marte, pero *también* se llama `mars.jpg`.\n" +"> > Cuando **のび太** intenta hacer push, recibe un mensaje familiar:\n" +"> >\n" +"> > ~~~\n" +"> > $ git push origin master\n" +"> > ~~~\n" +"> > {: .language-bash}\n" +"> >\n" +"> > ~~~\n" +"> > To https://github.com/vlad/planets.git\n" +"> > ! [rejected] master -> master (fetch first)\n" +"> > error: failed to push some refs to 'https://github.com/vlad/planets.git'\n" +"> > hint: Updates were rejected because the remote contains work that you do\n" +"> > hint: not have locally. This is usually caused by another repository pushing\n" +"> > hint: to the same ref. You may want to first integrate the remote changes\n" +"> > hint: (e.g., 'git pull ...') before pushing again.\n" +"> > hint: See the 'Note about fast-forwards' in 'git push --help' for details.\n" +"> > ~~~\n" +"> > {: .output}\n" +"> >\n" +"> > Hemos aprendido que primero debemos hacer **pull** y resolver conflictos:\n" +"> >\n" +"> > ~~~\n" +"> > $ git pull origin master\n" +"> > ~~~\n" +"> > {: .language-bash}\n" +"> >\n" +"> > Cuando hay un conflicto en una imagen u otro archivo binario, git imprime\n" +"> > un mensaje así:\n" +"> >\n" +"> > ~~~\n" +"> > $ git pull origin master\n" +"> > remote: Counting objects: 3, done.\n" +"> > remote: Compressing objects: 100% (3/3), done.\n" +"> > remote: Total 3 (delta 0), reused 0 (delta 0)\n" +"> > Unpacking objects: 100% (3/3), done.\n" +"> > From https://github.com/vlad/planets.git\n" +"> > * branch master -> FETCH_HEAD\n" +"> > 6a67967..439dc8c master -> origin/master\n" +"> > warning: Cannot merge binary files: mars.jpg (HEAD vs. 439dc8c08869c342438f6dc4a2b615b05b93c76e)\n" +"> > Auto-merging mars.jpg\n" +"> > CONFLICT (add/add): Merge conflict in mars.jpg\n" +"> > Automatic merge failed; fix conflicts and then commit the result.\n" +"> > ~~~\n" +"> > {: .output}\n" +"> >\n" +"> > El mensaje informando el conflicto es básicamente el mismo que se imprimió para `mars.txt`, pero\n" +"> > hay una línea adicional:\n" +"> >\n" +"> > ~~~\n" +"> > warning: Cannot merge binary files: mars.jpg (HEAD vs. 439dc8c08869c342438f6dc4a2b615b05b93c76e)\n" +"> > ~~~\n" +"> > {: .output}\n" +"> > \n" +"> > Git no puede insertar indicadores de conflicto en una imagen como lo hace en los\n" +"> > archivos de texto. Por lo tanto, en vez de editar la imagen, debemos revisar la versión que \n" +"> > queremos mantener. Luego podemos agregar y hacer **commit** a esta versión.\n" +"> >\n" +"> > En la línea agregada de arriba, Git convenientemente nos dio identificadores de **commit**\n" +"> > para las dos versiones de `mars.jpg`. Nuestra versión es `HEAD`, y la de ドラえもん\n" +"> > es `439dc8c0...`. Si queremos usar nuestra versión, podemos usar\n" +"> > `git checkout`:\n" +"> >\n" +"> > ~~~\n" +"> > $ git checkout HEAD mars.jpg\n" +"> > $ git add mars.jpg\n" +"> > $ git commit -m \"Use image of surface instead of sky\"\n" +"> > ~~~\n" +"> > {: .language-bash}\n" +"> >\n" +"> > ~~~\n" +"> > [master 21032c3] Use image of surface instead of sky\n" +"> > ~~~\n" +"> > {: .output}\n" +"> >\n" +"> > En cambio si queremos usar la versión de ドラえもん, podemos usar `git checkout` con\n" +"> > el identificador de **commit** de ドラえもん, `439dc8c0`:\n" +"> >\n" +"> > ~~~\n" +"> > $ git checkout 439dc8c0 mars.jpg\n" +"> > $ git add mars.jpg\n" +"> > $ git commit -m \"Use image of sky instead of surface\"\n" +"> > ~~~\n" +"> > {: .language-bash}\n" +"> >\n" +"> > ~~~\n" +"> > [master da21b34] Use image of sky instead of surface\n" +"> > ~~~\n" +"> > {: .output}\n" +"> >\n" +"> > También podemos mantener *ambas* imágenes. La clave es que no podemos mantenerlas con el mismo\n" +"> > nombre. Pero podemos verificar cada versión de forma sucesiva y *renombrarla*, y luego agregar las versiones renombradas.\n" +"> > Primero, revisa cada imagen y renómbrala:\n" +"> >\n" +"> > ~~~\n" +"> > $ git checkout HEAD mars.jpg\n" +"> > $ git mv mars.jpg mars-surface.jpg\n" +"> > $ git checkout 439dc8c0 mars.jpg\n" +"> > $ mv mars.jpg mars-sky.jpg\n" +"> > ~~~\n" +"> > {: .language-bash}\n" +"> >\n" +"> > Luego, elimina la vieja imagen `mars.jpg` y agrega los dos archivos nuevos:\n" +"> >\n" +"> > ~~~\n" +"> > $ git rm mars.jpg\n" +"> > $ git add mars-surface.jpg\n" +"> > $ git add mars-sky.jpg\n" +"> > $ git commit -m \"Use two images: surface and sky\"\n" +"> > ~~~\n" +"> > {: .language-bash}\n" +"> >\n" +"> > ~~~\n" +"> > [master 94ae08c] Use two images: surface and sky\n" +"> > 2 files changed, 0 insertions(+), 0 deletions(-)\n" +"> > create mode 100644 mars-sky.jpg\n" +"> > rename mars.jpg => mars-surface.jpg (100%)\n" +"> > ~~~\n" +"> > {: .output}\n" +"> >\n" +"> > Ahora ambas imágenes de Marte estan ingresadas en el repositorio, y `mars.jpg`\n" +"> > ya no existe." + +# blockquote, which can be cascaded +#: git-novice/_locale/es/_episodes/09-conflict.md:489 +msgid "> ## Una típica sesión de trabajo" +msgstr "> ## Una típica sesión de trabajo" + +#: git-novice/_locale/es/_episodes/09-conflict.md:490 +msgid "" +">\n" +"> Te sientas en tu computadora para trabajar en un proyecto compartido que es mantenido en un\n" +"> repositorio Git remoto. Durante tu sesión de trabajo, realizas las siguientes acciones, \n" +"> pero no en éste orden:\n" +">\n" +">\n" +"> - *Hacer cambios* agregando el número `100` al archivo de texto `numbers.txt`\n" +"> - *Actualizar repositorio remoto* para actualizar el repositorio local\n" +"> - *Celebrar* tu éxito con cerveza(s)\n" +"> - *Actualizar repositorio local* para actualizar el repositorio remoto\n" +"> - *Realizar cambios* con los cuales voy a hacer commit\n" +"> - *Hacer commit a los cambios* al repositorio local\n" +">\n" +"> ¿En qué orden deberías hacer estas acciones para minimizar la posibilidad de conflictos?\n" +"> Pon los comandos de arriba en orden en la columna *acción* de la tabla de abajo.\n" +"> Cuando tengas el orden correcto, ve si puedes escribir los comandos correspondientes en la columna \n" +"> *comando*. Algunos campos ya están completados para ayudarte a \n" +"> comenzar.\n" +">\n" +"> |orden|acción . . . . . . . . . . |comando . . . . . . . . . . |\n" +"> |-----|---------------------------|----------------------------|\n" +"> |1 | | |\n" +"> |2 | | `echo 100 >> numbers.txt` |\n" +"> |3 | | |\n" +"> |4 | | |\n" +"> |5 | | |\n" +"> |6 | ¡Celebrar! | `AFK` |\n" +">\n" +"> > ## Solución\n" +"> >\n" +"> > |orden|acción . . . . . . . . . . |comando . . . . . . . . . . |\n" +"> > |-----|-------------------|----------------------------------------------|\n" +"> > |1 | Actualizar repositorio local | `git pull origin master` |\n" +"> > |2 | Hacer cambios | `echo 100 >> numbers.txt` |\n" +"> > |3 | Realizar cambios | `git add numbers.txt` |\n" +"> > |4 | Hacer commit a los cambios | `git commit -m \"Agregar 100 a numbers.txt\"` |\n" +"> > |5 | Actualizar repositorio remoto | `git push origin master` |\n" +"> > |6 | ¡Celebrar! | `AFK` |\n" +"> >" +msgstr "" +">\n" +"> Te sientas en tu computadora para trabajar en un proyecto compartido que es mantenido en un\n" +"> repositorio Git remoto. Durante tu sesión de trabajo, realizas las siguientes acciones, \n" +"> pero no en éste orden:\n" +">\n" +">\n" +"> - *Hacer cambios* agregando el número `100` al archivo de texto `numbers.txt`\n" +"> - *Actualizar repositorio remoto* para actualizar el repositorio local\n" +"> - *Celebrar* tu éxito con cerveza(s)\n" +"> - *Actualizar repositorio local* para actualizar el repositorio remoto\n" +"> - *Realizar cambios* con los cuales voy a hacer commit\n" +"> - *Hacer commit a los cambios* al repositorio local\n" +">\n" +"> ¿En qué orden deberías hacer estas acciones para minimizar la posibilidad de conflictos?\n" +"> Pon los comandos de arriba en orden en la columna *acción* de la tabla de abajo.\n" +"> Cuando tengas el orden correcto, ve si puedes escribir los comandos correspondientes en la columna \n" +"> *comando*. Algunos campos ya están completados para ayudarte a \n" +"> comenzar.\n" +">\n" +"> |orden|acción . . . . . . . . . . |comando . . . . . . . . . . |\n" +"> |-----|---------------------------|----------------------------|\n" +"> |1 | | |\n" +"> |2 | | `echo 100 >> numbers.txt` |\n" +"> |3 | | |\n" +"> |4 | | |\n" +"> |5 | | |\n" +"> |6 | ¡Celebrar! | `AFK` |\n" +">\n" +"> > ## Solución\n" +"> >\n" +"> > |orden|acción . . . . . . . . . . |comando . . . . . . . . . . |\n" +"> > |-----|-------------------|----------------------------------------------|\n" +"> > |1 | Actualizar repositorio local | `git pull origin master` |\n" +"> > |2 | Hacer cambios | `echo 100 >> numbers.txt` |\n" +"> > |3 | Realizar cambios | `git add numbers.txt` |\n" +"> > |4 | Hacer commit a los cambios | `git commit -m \"Agregar 100 a numbers.txt\"` |\n" +"> > |5 | Actualizar repositorio remoto | `git push origin master` |\n" +"> > |6 | ¡Celebrar! | `AFK` |\n" +"> >" + +# Front Matter +#: git-novice/_locale/es/_episodes/10-open.md:1 +msgid "" +"---\n" +"title: La ciencia abierta\n" +"teaching: 5\n" +"exercises: 5\n" +"questions:\n" +"- \"¿Cómo un control de versiones me puede ayudar a tener mi trabajo más abierto?\"\n" +"objectives:\n" +"- \"Explica como el control de versiones nos ayuda a tener un cuaderno electrónico para todo nuestro trabajo computacional.\"\n" +"keypoints:\n" +"- \"Trabajo científico abierto es más útil y puede ser citado más que si no lo es.\"\n" +"---" +msgstr "" +"---\n" +"title: La ciencia abierta\n" +"teaching: 5\n" +"exercises: 5\n" +"questions:\n" +"- \"¿Cómo un control de versiones me puede ayudar a tener mi trabajo más abierto?\"\n" +"objectives:\n" +"- \"Explica como el control de versiones nos ayuda a tener un cuaderno electrónico para todo nuestro trabajo computacional.\"\n" +"keypoints:\n" +"- \"Trabajo científico abierto es más útil y puede ser citado más que si no lo es.\"\n" +"---" + +# blockquote, which can be cascaded +#: git-novice/_locale/es/_episodes/10-open.md:13 +msgid "> Lo opuesto a \"abierto\" no es \"cerrado\". " +msgstr "> Lo opuesto a \"abierto\" no es \"cerrado\". " + +# blockquote, which can be cascaded +#: git-novice/_locale/es/_episodes/10-open.md:14 +msgid "> Lo opuesto a \"abierto\" es \"quebrado\"." +msgstr "> Lo opuesto a \"abierto\" es \"quebrado\"." + +#: git-novice/_locale/es/_episodes/10-open.md:19 +msgid "" +"El libre intercambio de información podría ser el ideal en Ciencia. Pero la realidad, a menudo, es mucho más complicada.\n" +"En la práctica cotidiana vemos situaciones como la siguiente: " +msgstr "" +"El libre intercambio de información podría ser el ideal en Ciencia. Pero la realidad, a menudo, es mucho más complicada.\n" +"En la práctica cotidiana vemos situaciones como la siguiente: " + +# unordered list +#: git-novice/_locale/es/_episodes/10-open.md:22 +msgid "* Una científica recoge algunos datos y los almacena en una máquina que seguramente tiene en su oficina." +msgstr "* Una científica recoge algunos datos y los almacena en una máquina que seguramente tiene en su oficina." + +# unordered list +#: git-novice/_locale/es/_episodes/10-open.md:23 +msgid "* Luego ella escribe y modifica unos pocos programas para analizar los datos (los cuales residen en su computadora)." +msgstr "* Luego ella escribe y modifica unos pocos programas para analizar los datos (los cuales residen en su computadora)." + +# unordered list +#: git-novice/_locale/es/_episodes/10-open.md:24 +msgid "* Una vez que tiene algunos resultados, ella escribe y presenta su artículo. Podría incluir sus datos -en varias revistas que los requieran- pero probablemente no incluya su código." +msgstr "* Una vez que tiene algunos resultados, ella escribe y presenta su artículo. Podría incluir sus datos -en varias revistas que los requieran- pero probablemente no incluya su código." + +# unordered list +#: git-novice/_locale/es/_episodes/10-open.md:25 +msgid "* El tiempo pasa." +msgstr "* El tiempo pasa." + +# unordered list +#: git-novice/_locale/es/_episodes/10-open.md:26 +msgid "* La revista envía las revisiones de un puñado de personas anónimas que trabajan en su campo de actividad." +msgstr "* La revista envía las revisiones de un puñado de personas anónimas que trabajan en su campo de actividad." + +#: git-novice/_locale/es/_episodes/10-open.md:27 +msgid "" +" Ella revisa su artículo para satisfacer las revisiones propuestas. Durante ese tiempo ella también podría modificar los **scripts** que escribió anteriormente, y vuelve a enviar.\n" +"* Pasa más tiempo.\n" +"* El artículo finalmente se publica. \n" +"* Se podría incluir un enlace a una copia online de sus datos, pero el mismo artículo está detrás de un sitio web de pago: sólo las personas que tienen acceso personal o institucional serán capaces de leerlo." +msgstr "" +" Ella revisa su artículo para satisfacer las revisiones propuestas. Durante ese tiempo ella también podría modificar los **scripts** que escribió anteriormente, y vuelve a enviar.\n" +"* Pasa más tiempo.\n" +"* El artículo finalmente se publica. \n" +"* Se podría incluir un enlace a una copia online de sus datos, pero el mismo artículo está detrás de un sitio web de pago: sólo las personas que tienen acceso personal o institucional serán capaces de leerlo." + +#: git-novice/_locale/es/_episodes/10-open.md:32 +msgid "Para muchos otros científicos, el proceso abierto se ve así:" +msgstr "Para muchos otros científicos, el proceso abierto se ve así:" + +# unordered list +#: git-novice/_locale/es/_episodes/10-open.md:34 +msgid "* Los datos que obtiene son almacenados, tan pronto como los colecta, en un repositorio de acceso abierto, " +msgstr "* Los datos que obtiene son almacenados, tan pronto como los colecta, en un repositorio de acceso abierto, " + +#: git-novice/_locale/es/_episodes/10-open.md:35 +msgid "" +" como puede ser [figshare](http://figshare.com/) o [Zenodo](http://zenodo.org), obteniendo su propio [Digital Object Identifier] (https://en.wikipedia.org/wiki/Digital_object_identifier) (DOI). O los datos que han sido recientemente publicados, son almacenados en [Dryad](http://datadryad.org/).\n" +"* La científica crea un nuevo repositorio en GitHub para guardar su trabajo.\n" +"* Al hacer su análisis de los datos, guarda los cambios de sus **scripts** (y posiblemente algunos archivos de salida) en ese repositorio. También utiliza el repositorio para su artículo. Entonces ese repositorio es el centro de colaboración con sus colegas.\n" +"* Cuando está satisfecha con el estado de su artículo, publica una versión en [arXiv](http://arxiv.org/) o en algún otro servidor de preimpresión para invitar a sus compañeros a una retroalimentación. \n" +"* Basado en esa retroalimentación, puede escribir varias revisiones antes de enviar finalmente su artículo a la revista. \n" +"* El artículo publicado incluye enlaces a su preimpresión y a sus repositorios de código y datos, lo que hace mucho más fácil para otros científicos utilizar este trabajo como punto de partida para su propia investigación." +msgstr "" +" como puede ser [figshare](http://figshare.com/) o [Zenodo](http://zenodo.org), obteniendo su propio [Digital Object Identifier] (https://en.wikipedia.org/wiki/Digital_object_identifier) (DOI). O los datos que han sido recientemente publicados, son almacenados en [Dryad](http://datadryad.org/).\n" +"* La científica crea un nuevo repositorio en GitHub para guardar su trabajo.\n" +"* Al hacer su análisis de los datos, guarda los cambios de sus **scripts** (y posiblemente algunos archivos de salida) en ese repositorio. También utiliza el repositorio para su artículo. Entonces ese repositorio es el centro de colaboración con sus colegas.\n" +"* Cuando está satisfecha con el estado de su artículo, publica una versión en [arXiv](http://arxiv.org/) o en algún otro servidor de preimpresión para invitar a sus compañeros a una retroalimentación. \n" +"* Basado en esa retroalimentación, puede escribir varias revisiones antes de enviar finalmente su artículo a la revista. \n" +"* El artículo publicado incluye enlaces a su preimpresión y a sus repositorios de código y datos, lo que hace mucho más fácil para otros científicos utilizar este trabajo como punto de partida para su propia investigación." + +#: git-novice/_locale/es/_episodes/10-open.md:42 +msgid "Este modelo abierto acelera la investigación: el trabajo abierto [se cita y se reutiliza](http://dx.doi.org/10.1371/journal.pone.0000308). Sin embargo, las personas que quieren trabajar de esta manera necesitan tomar algunas decisiones sobre qué significa exactamente \"abierto\" y cómo hacerlo. Puedes encontrar más información sobre los diferentes aspectos de la Ciencia Abierta en [el libro](http://link.springer.com/book/10.1007/978-3-319-00026-8)." +msgstr "Este modelo abierto acelera la investigación: el trabajo abierto [se cita y se reutiliza](http://dx.doi.org/10.1371/journal.pone.0000308). Sin embargo, las personas que quieren trabajar de esta manera necesitan tomar algunas decisiones sobre qué significa exactamente \"abierto\" y cómo hacerlo. Puedes encontrar más información sobre los diferentes aspectos de la Ciencia Abierta en [el libro](http://link.springer.com/book/10.1007/978-3-319-00026-8)." + +#: git-novice/_locale/es/_episodes/10-open.md:44 +msgid "Ésta es una de las muchas razones por las que enseñamos el control de versiones. Cuando se utiliza con diligencia, responde a \"cómo\" actúa un cuaderno electrónico compartible:" +msgstr "Ésta es una de las muchas razones por las que enseñamos el control de versiones. Cuando se utiliza con diligencia, responde a \"cómo\" actúa un cuaderno electrónico compartible:" + +# unordered list +#: git-novice/_locale/es/_episodes/10-open.md:46 +msgid "* Las etapas conceptuales del trabajo están documentadas, incluyendo quién hizo" +msgstr "* Las etapas conceptuales del trabajo están documentadas, incluyendo quién hizo" + +#: git-novice/_locale/es/_episodes/10-open.md:47 +msgid "" +" qué y cuándo se hizo. Cada paso está marcado con un identificador (el ID de confirmación) de cada uno de los intentos y propósitos.\n" +"* Puedes vincular tu documentación de ideas y otros trabajos intelectuales directamente con los cambios que surgen de ellos.\n" +"* Puedes referirte a lo que utilizaste en tu investigación para obtener tus resultados computacionales de manera única y recuperable.\n" +"* Con un sistema de control de versiones como Git, todo el historial del repositorio es fácil de archivar para siempre." +msgstr "" +" qué y cuándo se hizo. Cada paso está marcado con un identificador (el ID de confirmación) de cada uno de los intentos y propósitos.\n" +"* Puedes vincular tu documentación de ideas y otros trabajos intelectuales directamente con los cambios que surgen de ellos.\n" +"* Puedes referirte a lo que utilizaste en tu investigación para obtener tus resultados computacionales de manera única y recuperable.\n" +"* Con un sistema de control de versiones como Git, todo el historial del repositorio es fácil de archivar para siempre." + +# blockquote, which can be cascaded +#: git-novice/_locale/es/_episodes/10-open.md:52 +msgid "> ## Haciendo código citable" +msgstr "> ## Haciendo código citable" + +# blockquote, which can be cascaded +#: git-novice/_locale/es/_episodes/10-open.md:59 +msgid "> ## ¿Cuán reproducible es mi trabajo?" +msgstr "> ## ¿Cuán reproducible es mi trabajo?" + +#: git-novice/_locale/es/_episodes/10-open.md:60 +msgid "" +">\n" +"> Pide a un compañero de laboratorio que reproduzca un resultado que obtuviste \n" +"> utilizando sólo lo que está disponible en un documento publicado o en la web.\n" +"> Luego, trata de hacer lo mismo con los resultados de tu labmate.\n" +"> Finalmente, reproducir los resultados de otro laboratorio." +msgstr "" +">\n" +"> Pide a un compañero de laboratorio que reproduzca un resultado que obtuviste \n" +"> utilizando sólo lo que está disponible en un documento publicado o en la web.\n" +"> Luego, trata de hacer lo mismo con los resultados de tu labmate.\n" +"> Finalmente, reproducir los resultados de otro laboratorio." + +# blockquote, which can be cascaded +#: git-novice/_locale/es/_episodes/10-open.md:67 +msgid "> ## ¿Cómo encontrar un repositorio de datos adecuado?" +msgstr "> ## ¿Cómo encontrar un repositorio de datos adecuado?" + +#: git-novice/_locale/es/_episodes/10-open.md:68 +msgid "" +">\n" +"> Navega por Internet durante un par de minutos y echa un vistazo a los repositorios de datos mencionado anteriormente: [Figshare](http://figshare.com/), [Zenodo](http://zenodo.org), [Dryad](http://datadryad.org/). Dependiendo de tu campo de investigación, encuentra repositorios reconocidos por la comunidad en tu campo. También puede ser útil [estos repositorios de datos recomendados por Nature](http://www.nature.com/sdata/data-policies/repositories). Discute con tu vecino qué repositorio de datos deseas abordar para tu proyecto actual y explicale por qué." +msgstr "" +">\n" +"> Navega por Internet durante un par de minutos y echa un vistazo a los repositorios de datos mencionado anteriormente: [Figshare](http://figshare.com/), [Zenodo](http://zenodo.org), [Dryad](http://datadryad.org/). Dependiendo de tu campo de investigación, encuentra repositorios reconocidos por la comunidad en tu campo. También puede ser útil [estos repositorios de datos recomendados por Nature](http://www.nature.com/sdata/data-policies/repositories). Discute con tu vecino qué repositorio de datos deseas abordar para tu proyecto actual y explicale por qué." + +# Front Matter +#: git-novice/_locale/es/_episodes/11-licensing.md:1 +msgid "" +"---\n" +"title: Licencia\n" +"teaching: 5\n" +"exercises: 0\n" +"questions:\n" +"- \"¿Qué información sobre licencias debería incluir en mi trabajo?\"\n" +"objectives:\n" +"- \"Explicar la importancia de agregar información de licencias a nuestro repositorio de código.\"\n" +"- \"Escoger la licencia apropiada.\"\n" +"- \"Explicar las diferencias en licencias y algunas expectativas sociales.\"\n" +"keypoints:\n" +"- \"Las personas que usan la licencia **GPL** en su software tienen que asegurarse de que toda la estructura esté bajo ésta licencia; muchas otras licencias no requieren esto.\"\n" +"- \"La familia de licencias **Creative Commons** permite a las personas adaptarse a varios requerimientos y restricciones de atribución, la creación de trabajo derivado, compartir el trabajo, y comercialización.\"\n" +"- \"Personas sin conocimientos de leyes no deberían tratar de escribir nuevas licencias desde cero.\"\n" +"---" +msgstr "" +"---\n" +"title: Licencia\n" +"teaching: 5\n" +"exercises: 0\n" +"questions:\n" +"- \"¿Qué información sobre licencias debería incluir en mi trabajo?\"\n" +"objectives:\n" +"- \"Explicar la importancia de agregar información de licencias a nuestro repositorio de código.\"\n" +"- \"Escoger la licencia apropiada.\"\n" +"- \"Explicar las diferencias en licencias y algunas expectativas sociales.\"\n" +"keypoints:\n" +"- \"Las personas que usan la licencia **GPL** en su software tienen que asegurarse de que toda la estructura esté bajo ésta licencia; muchas otras licencias no requieren esto.\"\n" +"- \"La familia de licencias **Creative Commons** permite a las personas adaptarse a varios requerimientos y restricciones de atribución, la creación de trabajo derivado, compartir el trabajo, y comercialización.\"\n" +"- \"Personas sin conocimientos de leyes no deberían tratar de escribir nuevas licencias desde cero.\"\n" +"---" + +#: git-novice/_locale/es/_episodes/11-licensing.md:17 +msgid "Cuando un repositorio público contiene código fuente, un manuscrito u otro trabajo creativo, éste debe incluir un archivo con el nombre `LICENCIA` o `LICENCIA.txt` en el directorio base del repositorio, que indique claramente bajo qué licencia se pone a disposición el contenido. Esto se debe a que la protección de propiedad intelectual (y por lo tanto derechos de autor) se aplica automáticamente a las obras creativas. La reutilización de trabajos creativos sin licencia es peligrosa, ya que los titulares de los derechos de autor podrían realizar una demanda por infringir la misma." +msgstr "Cuando un repositorio público contiene código fuente, un manuscrito u otro trabajo creativo, éste debe incluir un archivo con el nombre `LICENCIA` o `LICENCIA.txt` en el directorio base del repositorio, que indique claramente bajo qué licencia se pone a disposición el contenido. Esto se debe a que la protección de propiedad intelectual (y por lo tanto derechos de autor) se aplica automáticamente a las obras creativas. La reutilización de trabajos creativos sin licencia es peligrosa, ya que los titulares de los derechos de autor podrían realizar una demanda por infringir la misma." + +#: git-novice/_locale/es/_episodes/11-licensing.md:19 +msgid "Una licencia resuelve el problema otorgando derechos a otros (los licenciatarios) que de otro modo no tendrían. Los derechos que se otorgan y bajo qué condiciones difieren, a menudo de forma leve, de una licencia a otra. En la práctica, algunas licencias son las más populares, y el sitio [choosealicense.com](http://choosealicense.com/) te ayudará a encontrar una licencia que se adapte a tus necesidades. Las cosas importantes a considerar son:" +msgstr "Una licencia resuelve el problema otorgando derechos a otros (los licenciatarios) que de otro modo no tendrían. Los derechos que se otorgan y bajo qué condiciones difieren, a menudo de forma leve, de una licencia a otra. En la práctica, algunas licencias son las más populares, y el sitio [choosealicense.com](http://choosealicense.com/) te ayudará a encontrar una licencia que se adapte a tus necesidades. Las cosas importantes a considerar son:" + +# unordered list +#: git-novice/_locale/es/_episodes/11-licensing.md:21 +msgid "* Si deseas abordar los derechos de patente." +msgstr "* Si deseas abordar los derechos de patente." + +# unordered list +#: git-novice/_locale/es/_episodes/11-licensing.md:22 +msgid "* Si necesitas personas que distribuyan los trabajos derivados de tu código fuente." +msgstr "* Si necesitas personas que distribuyan los trabajos derivados de tu código fuente." + +# unordered list +#: git-novice/_locale/es/_episodes/11-licensing.md:23 +msgid "* Si el contenido al que estás otorgando la licencia es código fuente." +msgstr "* Si el contenido al que estás otorgando la licencia es código fuente." + +# unordered list +#: git-novice/_locale/es/_episodes/11-licensing.md:24 +msgid "* Si realmente deseas licenciar el código." +msgstr "* Si realmente deseas licenciar el código." + +#: git-novice/_locale/es/_episodes/11-licensing.md:26 +msgid "" +"Elegir una licencia que sea de uso común hace la vida más fácil para los contribuyentes y los usuarios, porque es probable que ya estén familiarizados con la licencia y no tengan que sortear una jerga específica para decidir si están de acuerdo con la licencia.\n" +"La [Iniciativa Open Source](http://opensource.org/licenses) y [Free Software Foundation](http://www.gnu.org/licenses/license-list.html) mantienen listas de licencias que pueden son buenas opciones a considerar." +msgstr "" +"Elegir una licencia que sea de uso común hace la vida más fácil para los contribuyentes y los usuarios, porque es probable que ya estén familiarizados con la licencia y no tengan que sortear una jerga específica para decidir si están de acuerdo con la licencia.\n" +"La [Iniciativa Open Source](http://opensource.org/licenses) y [Free Software Foundation](http://www.gnu.org/licenses/license-list.html) mantienen listas de licencias que pueden son buenas opciones a considerar." + +#: git-novice/_locale/es/_episodes/11-licensing.md:29 +msgid "Este artículo sobre [licencias de software](https://doi.org/10.1371/journal.pcbi.1002598) proporciona una excelente descripción de licencias y de opciones de licencias desde la perspectiva de los científicos que también escriben código." +msgstr "Este artículo sobre [licencias de software](https://doi.org/10.1371/journal.pcbi.1002598) proporciona una excelente descripción de licencias y de opciones de licencias desde la perspectiva de los científicos que también escriben código." + +#: git-novice/_locale/es/_episodes/11-licensing.md:31 +msgid "Al fin de cuentas, lo que importa es que haya información clara sobre cuál es la licencia. Además, es mejor elegir la licencia desde el principio, incluso si se trata de un repositorio que no es público. Retrasar la decisión de sobre qué licencia elegir sólo complica las cosas más adelante, porque cada vez que un nuevo colaborador comienza a contribuir, ellos también tienen derechos de autor y, por lo tanto, se les debe pedir aprobación una vez que se elige una licencia." +msgstr "Al fin de cuentas, lo que importa es que haya información clara sobre cuál es la licencia. Además, es mejor elegir la licencia desde el principio, incluso si se trata de un repositorio que no es público. Retrasar la decisión de sobre qué licencia elegir sólo complica las cosas más adelante, porque cada vez que un nuevo colaborador comienza a contribuir, ellos también tienen derechos de autor y, por lo tanto, se les debe pedir aprobación una vez que se elige una licencia." + +# blockquote, which can be cascaded +#: git-novice/_locale/es/_episodes/11-licensing.md:33 +msgid "> ## ¿Puedo usar una **Open License**?" +msgstr "> ## ¿Puedo usar una **Open License**?" + +#: git-novice/_locale/es/_episodes/11-licensing.md:34 +msgid "" +">\n" +"> Investiga si puedes usar una **Open license** o \"Licencia Abierta\" en tu **software**. ¿Puedes hacer eso por tí mismo?, ¿o necesitas permiso de alguien dentro de tu institución? Si necesitas permiso, ¿de quién?" +msgstr "" +">\n" +"> Investiga si puedes usar una **Open license** o \"Licencia Abierta\" en tu **software**. ¿Puedes hacer eso por tí mismo?, ¿o necesitas permiso de alguien dentro de tu institución? Si necesitas permiso, ¿de quién?" + +# blockquote, which can be cascaded +#: git-novice/_locale/es/_episodes/11-licensing.md:38 +msgid "> ## ¿Qué licencias ya he aceptado?" +msgstr "> ## ¿Qué licencias ya he aceptado?" + +#: git-novice/_locale/es/_episodes/11-licensing.md:39 +msgid "" +">\n" +"> Muchas herramientas de **software** que usamos día a día (incluyendo las herramientas en este **workshop**) son\n" +"> **open-source software**. Escoge uno de los proyectos de GitHub de la lista de abajo, o algún otro que te interese. Encuentra la licencia (usualmente es un archivo que se llama `LICENSE` o `COPYING`) y luego habla con tus compañeros sobre como ésta licencia te permite o te restringe el uso del **software**. ¿Es una de las licencias que hemos visto en esta sesión? ¿Qué tan diferente es ésta licencia?\n" +"> - [Git](https://github.com/git/git), herramientas para el manejo de código fuente.\n" +"> - [CPython](https://github.com/python/cpython), implementación estándar del lenguaje Python.\n" +"> - [Jupyter](https://github.com/jupyter), el proyecto que implementa **notebooks** para correr Python en la **web** que usaremos en este **workshop**.\n" +"> - [EtherPad](https://github.com/ether/etherpad-lite), un editor colaborativo en tiempo real." +msgstr "" +">\n" +"> Muchas herramientas de **software** que usamos día a día (incluyendo las herramientas en este **workshop**) son\n" +"> **open-source software**. Escoge uno de los proyectos de GitHub de la lista de abajo, o algún otro que te interese. Encuentra la licencia (usualmente es un archivo que se llama `LICENSE` o `COPYING`) y luego habla con tus compañeros sobre como ésta licencia te permite o te restringe el uso del **software**. ¿Es una de las licencias que hemos visto en esta sesión? ¿Qué tan diferente es ésta licencia?\n" +"> - [Git](https://github.com/git/git), herramientas para el manejo de código fuente.\n" +"> - [CPython](https://github.com/python/cpython), implementación estándar del lenguaje Python.\n" +"> - [Jupyter](https://github.com/jupyter), el proyecto que implementa **notebooks** para correr Python en la **web** que usaremos en este **workshop**.\n" +"> - [EtherPad](https://github.com/ether/etherpad-lite), un editor colaborativo en tiempo real." + +# Front Matter +#: git-novice/_locale/es/_episodes/12-citation.md:1 +msgid "" +"---\n" +"title: Ejemplo de Referencia o cita\n" +"teaching: 2\n" +"exercises: 0\n" +"questions:\n" +"- \"¿Cómo puedo hacer que mi trabajo sea más fácil de citar?\"\n" +"objectives:\n" +"- \"Haz que tu trabajo sea más fácil de citar\"\n" +"keypoints:\n" +"- \"Agrega un archivo CITATION al repositorio y explica cómo quieres que tu trabajo sea citado.\"\n" +"---" +msgstr "" +"---\n" +"title: Ejemplo de Referencia o cita\n" +"teaching: 2\n" +"exercises: 0\n" +"questions:\n" +"- \"¿Cómo puedo hacer que mi trabajo sea más fácil de citar?\"\n" +"objectives:\n" +"- \"Haz que tu trabajo sea más fácil de citar\"\n" +"keypoints:\n" +"- \"Agrega un archivo CITATION al repositorio y explica cómo quieres que tu trabajo sea citado.\"\n" +"---" + +#: git-novice/_locale/es/_episodes/12-citation.md:13 +msgid "" +"Te recomendamos que incluyas un archivo llamado `CITATION` o `CITATION.txt`\n" +"que describa cómo citar o referenciar tu proyecto.\n" +"La siguiente cita es de \n" +"[Software Carpentry](https://github.com/swcarpentry/website/blob/gh-pages/CITATION):" +msgstr "" +"Te recomendamos que incluyas un archivo llamado `CITATION` o `CITATION.txt`\n" +"que describa cómo citar o referenciar tu proyecto.\n" +"La siguiente cita es de \n" +"[Software Carpentry](https://github.com/swcarpentry/website/blob/gh-pages/CITATION):" + +# Front Matter +#: git-novice/_locale/es/_episodes/13-hosting.md:1 +msgid "" +"---\n" +"title: Hospedaje\n" +"teaching: 10\n" +"exercises: 0\n" +"questions:\n" +"- \"¿Dónde debería alojar mis repositorios de control de versiones?\"\n" +"objectives:\n" +"- \"Explicar diferentes opciones para realizar trabajos científicos.\"\n" +"keypoints:\n" +"- \"Los proyectos pueden alojarse en servidores de la universidad, en dominios personales o públicas.\"\n" +"- \"Las reglas con respecto a la propiedad intelectual y el almacenamiento de información confidencial se aplican sin importar dónde se alojan el código y los datos.\"\n" +"---" +msgstr "" +"---\n" +"title: Hospedaje\n" +"teaching: 10\n" +"exercises: 0\n" +"questions:\n" +"- \"¿Dónde debería alojar mis repositorios de control de versiones?\"\n" +"objectives:\n" +"- \"Explicar diferentes opciones para realizar trabajos científicos.\"\n" +"keypoints:\n" +"- \"Los proyectos pueden alojarse en servidores de la universidad, en dominios personales o públicas.\"\n" +"- \"Las reglas con respecto a la propiedad intelectual y el almacenamiento de información confidencial se aplican sin importar dónde se alojan el código y los datos.\"\n" +"---" + +#: git-novice/_locale/es/_episodes/13-hosting.md:14 +msgid "" +"La segunda gran pregunta para los grupos que quieren liberar su trabajo es dónde\n" +"hospedar su código y datos. Una opción es que el laboratorio, departamento o la\n" +"universidad provean un servidor, gestionen cuentas y respaldos, etc. El principal\n" +"beneficio de esto es que clarifica quién es dueño de qué, lo cual es particularmente\n" +"importante si algún material es sensible (es decir, se relaciona a experimentos\n" +"que involucran sujetos humanos o pueden ser usados en una patente). Las principales\n" +"desventajas son el costo de proveer el servicio y su longevidad: un científico\n" +"que ha pasado diez años colectando datos quisiera asegurarse de que estos estarán\n" +"disponibles en diez años más, pero eso está más allá del tiempo de vida de muchos \n" +"de los subsidios que financian la infraestructura académica." +msgstr "" +"La segunda gran pregunta para los grupos que quieren liberar su trabajo es dónde\n" +"hospedar su código y datos. Una opción es que el laboratorio, departamento o la\n" +"universidad provean un servidor, gestionen cuentas y respaldos, etc. El principal\n" +"beneficio de esto es que clarifica quién es dueño de qué, lo cual es particularmente\n" +"importante si algún material es sensible (es decir, se relaciona a experimentos\n" +"que involucran sujetos humanos o pueden ser usados en una patente). Las principales\n" +"desventajas son el costo de proveer el servicio y su longevidad: un científico\n" +"que ha pasado diez años colectando datos quisiera asegurarse de que estos estarán\n" +"disponibles en diez años más, pero eso está más allá del tiempo de vida de muchos \n" +"de los subsidios que financian la infraestructura académica." + +#: git-novice/_locale/es/_episodes/13-hosting.md:25 +msgid "" +"Otra opción es comprar un dominio y pagar a un Proveedor de Servicios de Internet\n" +"(ISP por sus siglas en inglés) para hospedarlo. Esto da al individuo o grupo mayor\n" +"control, y le da la vuelta a problemas que pueden surgir cuando se cambien de una \n" +"institución a otra, pero requiere más tiempo y esfuerzo para configurar que la\n" +"opción anterior o siguiente." +msgstr "" +"Otra opción es comprar un dominio y pagar a un Proveedor de Servicios de Internet\n" +"(ISP por sus siglas en inglés) para hospedarlo. Esto da al individuo o grupo mayor\n" +"control, y le da la vuelta a problemas que pueden surgir cuando se cambien de una \n" +"institución a otra, pero requiere más tiempo y esfuerzo para configurar que la\n" +"opción anterior o siguiente." + +#: git-novice/_locale/es/_episodes/13-hosting.md:31 +msgid "" +"La tercera opción es utilizar un servicio de hospedaje público como\n" +"[GitHub](http://github.com), [GitLab](http://gitlab.com),\n" +"[BitBucket](http://bitbucket.org) o [SourceForge](http://sourceforge.net).\n" +"Cada uno de estos servicios provee una interfaz web que permite a las personas\n" +"crear, ver y editar sus repositorios de código. Estos servicios también proveen \n" +"herramientas de comunicación y gestión de proyectos que incluyen `seguimiento de problemas`,\n" +"páginas wiki, notificaciones de correo electrónico y revisiones de código. Estos\n" +"servicios se benefician de economías de escalamiento y efectos de redes: es más\n" +"fácil correr un servicio grande bien que correr varios pequeños servicios al\n" +"mismo estándar. También es más fácil para la gente colaborar. Usando un servicio \n" +"popular puede ayudar a conectar tu proyecto con una comunidad que ya está usando el\n" +"mismo servicio." +msgstr "" +"La tercera opción es utilizar un servicio de hospedaje público como\n" +"[GitHub](http://github.com), [GitLab](http://gitlab.com),\n" +"[BitBucket](http://bitbucket.org) o [SourceForge](http://sourceforge.net).\n" +"Cada uno de estos servicios provee una interfaz web que permite a las personas\n" +"crear, ver y editar sus repositorios de código. Estos servicios también proveen \n" +"herramientas de comunicación y gestión de proyectos que incluyen `seguimiento de problemas`,\n" +"páginas wiki, notificaciones de correo electrónico y revisiones de código. Estos\n" +"servicios se benefician de economías de escalamiento y efectos de redes: es más\n" +"fácil correr un servicio grande bien que correr varios pequeños servicios al\n" +"mismo estándar. También es más fácil para la gente colaborar. Usando un servicio \n" +"popular puede ayudar a conectar tu proyecto con una comunidad que ya está usando el\n" +"mismo servicio." + +#: git-novice/_locale/es/_episodes/13-hosting.md:44 +msgid "" +"Como un ejemplo, Software Carpentry [está en \n" +"GitHub]({{ swc_github }}), donde puedes encontrar el [código fuente para esta\n" +"página](https://github.com/swcarpentry/git-novice-es/blob/gh-pages/_episodes/13-hosting.md).\n" +"Cualquiera con una cuenta de GitHub puede sugerir cambios a este texto." +msgstr "" +"Como un ejemplo, Software Carpentry [está en \n" +"GitHub]({{ swc_github }}), donde puedes encontrar el [código fuente para esta\n" +"página](https://github.com/swcarpentry/git-novice-es/blob/gh-pages/_episodes/13-hosting.md).\n" +"Cualquiera con una cuenta de GitHub puede sugerir cambios a este texto." + +#: git-novice/_locale/es/_episodes/13-hosting.md:49 +msgid "" +"Usando servicios grandes y bien establecidos puede también ayudarte a tomar\n" +"ventaja rápidamente de herramientas poderosas tales como la Integración \n" +"Continua (CI por sus siglas en inglés). CI puede automaticamente construir el ejecutable a partir del codigo fuente y probar el \n" +"software automáticamente cada vez que se hace un `commit` o se somete un \n" +"`pull request`. La integración directa de CI con un servicio de hospedaje en \n" +"línea significa que esta información está presente en cualquier `pull request`\n" +"y ayudar a mantener la integridad y estándares de calidad del código. Si bien\n" +"CI está disponible en situaciones de auto-hospedaje, hay menos configuración y\n" +"mantenimiento al usar un servicio en línea. Más aún, estas herramientas son \n" +"proporcionadas sin costo alguno para proyectos de código abierto y están también\n" +"disponibles para repositorios privados por una cuota." +msgstr "" +"Usando servicios grandes y bien establecidos puede también ayudarte a tomar\n" +"ventaja rápidamente de herramientas poderosas tales como la Integración \n" +"Continua (CI por sus siglas en inglés). CI puede automaticamente construir el ejecutable a partir del codigo fuente y probar el \n" +"software automáticamente cada vez que se hace un `commit` o se somete un \n" +"`pull request`. La integración directa de CI con un servicio de hospedaje en \n" +"línea significa que esta información está presente en cualquier `pull request`\n" +"y ayudar a mantener la integridad y estándares de calidad del código. Si bien\n" +"CI está disponible en situaciones de auto-hospedaje, hay menos configuración y\n" +"mantenimiento al usar un servicio en línea. Más aún, estas herramientas son \n" +"proporcionadas sin costo alguno para proyectos de código abierto y están también\n" +"disponibles para repositorios privados por una cuota." + +#: git-novice/_locale/es/_episodes/13-hosting.md:62 +msgid "" +">\n" +"> Compartir es el ideal de la ciencia,\n" +"> pero muchas instituciones imponen restricciones al compartir,\n" +"> por ejemplo para proteger propiedad intelectual potencialmente patentable.\n" +"> Si encuentras tales restricciones,\n" +"> pudiera ser productivo indagar acerca de las motivaciones\n" +"> ya sea para solicitar una excepción para un proyecto específico o dominio,\n" +"> o para impulsar una reforma institucional más amplia para el apoyo de la ciencia abierta." +msgstr "" +">\n" +"> Compartir es el ideal de la ciencia,\n" +"> pero muchas instituciones imponen restricciones al compartir,\n" +"> por ejemplo para proteger propiedad intelectual potencialmente patentable.\n" +"> Si encuentras tales restricciones,\n" +"> pudiera ser productivo indagar acerca de las motivaciones\n" +"> ya sea para solicitar una excepción para un proyecto específico o dominio,\n" +"> o para impulsar una reforma institucional más amplia para el apoyo de la ciencia abierta." + +# blockquote, which can be cascaded +#: git-novice/_locale/es/_episodes/13-hosting.md:72 +msgid "> ## ¿Mi Trabajo Puede Ser Público?" +msgstr "> ## ¿Mi Trabajo Puede Ser Público?" + +#: git-novice/_locale/es/_episodes/13-hosting.md:73 +msgid "" +">\n" +"> Averigua si tienes permitido hospedar tu trabajo abiertamente en un repositorio público.\n" +"> ¿Puedes hacer esto unilateralmente,\n" +"> o necesitas permiso de alguien en tu institución?\n" +"> Si ese es el caso, ¿de quién?" +msgstr "" +">\n" +"> Averigua si tienes permitido hospedar tu trabajo abiertamente en un repositorio público.\n" +"> ¿Puedes hacer esto unilateralmente,\n" +"> o necesitas permiso de alguien en tu institución?\n" +"> Si ese es el caso, ¿de quién?" + +# blockquote, which can be cascaded +#: git-novice/_locale/es/_episodes/13-hosting.md:80 +msgid "> ## ¿Dónde Puedo Compartir Mi Trabajo?" +msgstr "> ## ¿Dónde Puedo Compartir Mi Trabajo?" + +#: git-novice/_locale/es/_episodes/13-hosting.md:81 +msgid "" +">\n" +"> ¿Tu institución tiene un repositorio(s) donde puedas compartir tus \n" +"> artículos, datos y software? ¿Cómo los repositorios institucionales\n" +"> difieren de servicios como [arXiV](http://arxiv.org/), [figshare](http://figshare.com/) y [GitHub](http://github.com/)?" +msgstr "" +">\n" +"> ¿Tu institución tiene un repositorio(s) donde puedas compartir tus \n" +"> artículos, datos y software? ¿Cómo los repositorios institucionales\n" +"> difieren de servicios como [arXiV](http://arxiv.org/), [figshare](http://figshare.com/) y [GitHub](http://github.com/)?" + +# Front Matter +#: git-novice/_locale/es/_episodes/14-supplemental-rstudio.md:1 +msgid "" +"---\n" +"title: Usando Git desde RStudio\n" +"teaching: 10\n" +"exercises: 0\n" +"questions:\n" +"- \"¿Cómo puedo usar Git desde RStudio?\"\n" +"objectives:\n" +"- \"Entender cómo usar Git desde RStudio.\"\n" +"keypoints:\n" +"- \"Crear un proyecto en RStudio\"\n" +"---" +msgstr "" +"---\n" +"title: Usando Git desde RStudio\n" +"teaching: 10\n" +"exercises: 0\n" +"questions:\n" +"- \"¿Cómo puedo usar Git desde RStudio?\"\n" +"objectives:\n" +"- \"Entender cómo usar Git desde RStudio.\"\n" +"keypoints:\n" +"- \"Crear un proyecto en RStudio\"\n" +"---" + +#: git-novice/_locale/es/_episodes/14-supplemental-rstudio.md:13 +msgid "Ya que el uso de control de versiones es muy útil cuando escribimos **scripts**, entonces RStudio esta integrado con Git. Hay algunas otras mas complejas funcionalidades de Git que solamente se pueden usar desde la terminal, pero RStudio tiene una buena interfaz de trabajo para realizar las operaciones más comunes de control de versiones." +msgstr "Ya que el uso de control de versiones es muy útil cuando escribimos **scripts**, entonces RStudio esta integrado con Git. Hay algunas otras mas complejas funcionalidades de Git que solamente se pueden usar desde la terminal, pero RStudio tiene una buena interfaz de trabajo para realizar las operaciones más comunes de control de versiones." + +#: git-novice/_locale/es/_episodes/14-supplemental-rstudio.md:15 +msgid "RStudio te permite crear un proyecto [project][rstudio-projects] asociado a un directorio determinado. Esta es una manera de hacer un seguimiento de los archivos asociados al proyecto. Una manera de tener control de archivos es mediante el uso de un programa de control de versiones. Para empezar a usar RStudio para el control de versiones, comencemos por crear un nuevo proyecto:" +msgstr "RStudio te permite crear un proyecto [project][rstudio-projects] asociado a un directorio determinado. Esta es una manera de hacer un seguimiento de los archivos asociados al proyecto. Una manera de tener control de archivos es mediante el uso de un programa de control de versiones. Para empezar a usar RStudio para el control de versiones, comencemos por crear un nuevo proyecto:" + +#: git-novice/_locale/es/_episodes/14-supplemental-rstudio.md:19 +msgid "" +"Una nueva ventana se abrirá y preguntará cómo queremos crear el proyecto. Tenemos\n" +"aquí varias opciones. Supongamos que queremos usar RStudio con el repositorio de planetas\n" +"que ya hemos creado. Como ese repositorio ya está en una carpeta en tu computadora,\n" +"podemos escoger la opción \"Existing Directory\":" +msgstr "" +"Una nueva ventana se abrirá y preguntará cómo queremos crear el proyecto. Tenemos\n" +"aquí varias opciones. Supongamos que queremos usar RStudio con el repositorio de planetas\n" +"que ya hemos creado. Como ese repositorio ya está en una carpeta en tu computadora,\n" +"podemos escoger la opción \"Existing Directory\":" + +# blockquote, which can be cascaded +#: git-novice/_locale/es/_episodes/14-supplemental-rstudio.md:26 +msgid "> ## ¿Puedes ver la opción de \"Version Control\"?" +msgstr "> ## ¿Puedes ver la opción de \"Version Control\"?" + +#: git-novice/_locale/es/_episodes/14-supplemental-rstudio.md:27 +msgid "" +">\n" +"> Aunque no vamos a usar ésta opción aquí, deberías poder ver una opción en el menú que diga\n" +"> \"Version Control\". Esta es la opción que debes escoger cuando quieras crear\n" +"> un proyecto en tu computadora mediante una clonación de un repositorio de GitHub.\n" +"> Si esta opción no es visible, probablemente significa que RStudio no sabe\n" +"> donde está tu ejecutable de Git. Revisa\n" +"> [esta página](https://stat545-ubc.github.io/git03_rstudio-meet-git.html)\n" +"> para encontrar algunos consejos. Incluso después de instalar Git, si estás usando MacOSX\n" +"> algunas veces puede ser necesario que tengas que aceptar la licencia de XCode" +msgstr "" +">\n" +"> Aunque no vamos a usar ésta opción aquí, deberías poder ver una opción en el menú que diga\n" +"> \"Version Control\". Esta es la opción que debes escoger cuando quieras crear\n" +"> un proyecto en tu computadora mediante una clonación de un repositorio de GitHub.\n" +"> Si esta opción no es visible, probablemente significa que RStudio no sabe\n" +"> donde está tu ejecutable de Git. Revisa\n" +"> [esta página](https://stat545-ubc.github.io/git03_rstudio-meet-git.html)\n" +"> para encontrar algunos consejos. Incluso después de instalar Git, si estás usando MacOSX\n" +"> algunas veces puede ser necesario que tengas que aceptar la licencia de XCode" + +#: git-novice/_locale/es/_episodes/14-supplemental-rstudio.md:38 +msgid "" +"En el siguiente paso, RStudio va a preguntar cuál es la carpeta existente que queremos usar. Haremos\n" +"click en el navegador de archivos para navegar a la carpeta correcta en tu computadora, y luego haremos click en\n" +"\"Create Project\":" +msgstr "" +"En el siguiente paso, RStudio va a preguntar cuál es la carpeta existente que queremos usar. Haremos\n" +"click en el navegador de archivos para navegar a la carpeta correcta en tu computadora, y luego haremos click en\n" +"\"Create Project\":" + +#: git-novice/_locale/es/_episodes/14-supplemental-rstudio.md:44 +msgid "¡Y ya está! Ahora tenemos un proyecto en R que contiene tu propio repositorio. Fíjate que ahora en el menú aparece un botón con \"Git\" en letras verticales. Esto significa que RStudio ha reconocido que ésta carpeta es un repositorio de Git, así que te proporcionará las herramientas para usar Git:" +msgstr "¡Y ya está! Ahora tenemos un proyecto en R que contiene tu propio repositorio. Fíjate que ahora en el menú aparece un botón con \"Git\" en letras verticales. Esto significa que RStudio ha reconocido que ésta carpeta es un repositorio de Git, así que te proporcionará las herramientas para usar Git:" + +#: git-novice/_locale/es/_episodes/14-supplemental-rstudio.md:48 +msgid "Para editar los archivos en tu repositorio, puedes hacer click en el archivo desde el panel inferior izquierdo. Ahora vamos a añadir más información sobre Plutón:" +msgstr "Para editar los archivos en tu repositorio, puedes hacer click en el archivo desde el panel inferior izquierdo. Ahora vamos a añadir más información sobre Plutón:" + +#: git-novice/_locale/es/_episodes/14-supplemental-rstudio.md:52 +msgid "Una vez que hemos guardado nuestros archivos editados, ahora podemos usar RStudio para hacer permanentes los cambios. Usa el botón y haz clik a \"Commit\":" +msgstr "Una vez que hemos guardado nuestros archivos editados, ahora podemos usar RStudio para hacer permanentes los cambios. Usa el botón y haz clik a \"Commit\":" + +#: git-novice/_locale/es/_episodes/14-supplemental-rstudio.md:56 +msgid "" +"Esto abrirá una ventana donde puedes seleccionar qué archivos quieres hacer **commit** (marca\n" +"las casillas en la columna \"Staged\") y luego escribe un mensaje para el **commit** (en el panel\n" +"superior derecho). Los iconos en la columna \"Status\" indican el estado actual de cada\n" +"archivo. También puedes ver los cambios de cada archivo haciendo click en su nombre. Una vez\n" +"que todo esté de la forma que quieres, haz click en \"Commit\":" +msgstr "" +"Esto abrirá una ventana donde puedes seleccionar qué archivos quieres hacer **commit** (marca\n" +"las casillas en la columna \"Staged\") y luego escribe un mensaje para el **commit** (en el panel\n" +"superior derecho). Los iconos en la columna \"Status\" indican el estado actual de cada\n" +"archivo. También puedes ver los cambios de cada archivo haciendo click en su nombre. Una vez\n" +"que todo esté de la forma que quieres, haz click en \"Commit\":" + +#: git-novice/_locale/es/_episodes/14-supplemental-rstudio.md:64 +msgid "" +"Puedes subir los cambios seleccionando \"Push\" en el menú de Git. Allí hay también\n" +"opciones para traer los cambios (hacer **pull**) desde una versión remota de este repositorio, y ver\n" +"el historial de cambios realizados:" +msgstr "" +"Puedes subir los cambios seleccionando \"Push\" en el menú de Git. Allí hay también\n" +"opciones para traer los cambios (hacer **pull**) desde una versión remota de este repositorio, y ver\n" +"el historial de cambios realizados:" + +# blockquote, which can be cascaded +#: git-novice/_locale/es/_episodes/14-supplemental-rstudio.md:70 +msgid "> ¿Están los comandos **Push** y **Pull** en gris?" +msgstr "> ¿Están los comandos **Push** y **Pull** en gris?" + +#: git-novice/_locale/es/_episodes/14-supplemental-rstudio.md:71 +msgid "" +">\n" +"> Si este es el caso, generalmente significa que RStudio no sabe dónde están las\n" +"> otras versiones de tu repositorio (por ejemplo, en GitHub).\n" +"> Para solucionar esto, abre una terminal, sitúate en el repositorio y luego lanza el siguiente comando:\n" +"> `git push -u origin master`. Luego reinicia RStudio." +msgstr "" +">\n" +"> Si este es el caso, generalmente significa que RStudio no sabe dónde están las\n" +"> otras versiones de tu repositorio (por ejemplo, en GitHub).\n" +"> Para solucionar esto, abre una terminal, sitúate en el repositorio y luego lanza el siguiente comando:\n" +"> `git push -u origin master`. Luego reinicia RStudio." + +#: git-novice/_locale/es/_episodes/14-supplemental-rstudio.md:78 +msgid "" +"Si hacemos click en el historial de cambios \"History\", podemos ver una versión gráfica de lo\n" +"que obtendríamos con el comando `git log`:" +msgstr "" +"Si hacemos click en el historial de cambios \"History\", podemos ver una versión gráfica de lo\n" +"que obtendríamos con el comando `git log`:" + +#: git-novice/_locale/es/_episodes/14-supplemental-rstudio.md:83 +msgid "RStudio crea algunos archivos que le ayudan a mantener un control de los cambios en el proyecto. Normalmente no deseamos que Git los incluya en el control de versiones, así que es una buena idea agregar sus nombres al `.gitignore`:" +msgstr "RStudio crea algunos archivos que le ayudan a mantener un control de los cambios en el proyecto. Normalmente no deseamos que Git los incluya en el control de versiones, así que es una buena idea agregar sus nombres al `.gitignore`:" + +# blockquote, which can be cascaded +#: git-novice/_locale/es/_episodes/14-supplemental-rstudio.md:87 +msgid "> ## Tip: Control de versiones del output desechable (versioning disposable output)" +msgstr "> ## Tip: Control de versiones del output desechable (versioning disposable output)" + +#: git-novice/_locale/es/_episodes/14-supplemental-rstudio.md:88 +msgid "" +">\n" +"> Generalmente tu no quieres hacer control de cambios o versiones de tus output desechables (o solo datos de lectura).\n" +"> Entonces, tu debes modificar el archivo `.gitignore` para decirle a Git que ignore estos archivos\n" +"> y directorios. " +msgstr "" +">\n" +"> Generalmente tu no quieres hacer control de cambios o versiones de tus output desechables (o solo datos de lectura).\n" +"> Entonces, tu debes modificar el archivo `.gitignore` para decirle a Git que ignore estos archivos\n" +"> y directorios. " + +#: git-novice/_locale/es/_episodes/14-supplemental-rstudio.md:95 +msgid "" +">\n" +"> 1. Crear un directorio dentro de tu proyecto llamado `graphs`.\n" +"> 2. Modificar el archivo `.gitignore` para que contenga `graphs/`\n" +"> entonces este output desechable no estara **versioned**.\n" +">\n" +"> Agrega el folder recien creado al control de versiones usando la interface de Git.\n" +">\n" +"> > ## Solucion del Challenge\n" +"> >\n" +"> > Esto puede ser realizado con los comandos de linea:\n" +"> > ```\n" +"> > $ mkdir graphs\n" +"> > $ echo \"graphs/\"> > .gitignore\n" +"> > ```\n" +"> > {: . shell}" +msgstr "" +">\n" +"> 1. Crear un directorio dentro de tu proyecto llamado `graphs`.\n" +"> 2. Modificar el archivo `.gitignore` para que contenga `graphs/`\n" +"> entonces este output desechable no estara **versioned**.\n" +">\n" +"> Agrega el folder recien creado al control de versiones usando la interface de Git.\n" +">\n" +"> > ## Solucion del Challenge\n" +"> >\n" +"> > Esto puede ser realizado con los comandos de linea:\n" +"> > ```\n" +"> > $ mkdir graphs\n" +"> > $ echo \"graphs/\"> > .gitignore\n" +"> > ```\n" +"> > {: . shell}" + +#: git-novice/_locale/es/_episodes/14-supplemental-rstudio.md:113 +msgid "" +"Hay muchas más opciones que se pueden encontrar en la interfaz de RStudio,\n" +"pero las que hemos visto son suficientes para comenzar." +msgstr "" +"Hay muchas más opciones que se pueden encontrar en la interfaz de RStudio,\n" +"pero las que hemos visto son suficientes para comenzar." + +# Front Matter +#: git-novice/_locale/es/_extras/about.md:1 +msgid "" +"---\n" +"layout: page\n" +"title: About\n" +"permalink: /es/about/\n" +"---" +msgstr "" +"---\n" +"layout: page\n" +"title: About\n" +"permalink: /es/about/\n" +"---" + +# Front Matter +#: git-novice/_locale/es/_extras/discuss.md:1 +msgid "" +"---\n" +"layout: page\n" +"title: Discussion\n" +"permalink: /es/discuss/\n" +"---" +msgstr "" +"---\n" +"layout: page\n" +"title: Discussion\n" +"permalink: /es/discuss/\n" +"---" + +# header +#: git-novice/_locale/es/_extras/discuss.md:7 +msgid "## Preguntas frecuentes" +msgstr "## Preguntas frecuentes" + +#: git-novice/_locale/es/_extras/discuss.md:9 +msgid "" +"La gente a menudo tiene preguntas sobre Git más allá del alcance del material central.\n" +"Los estudiantes que han completado el resto de las lecciones pueden encontrar valor al examinar los siguientes temas." +msgstr "" +"La gente a menudo tiene preguntas sobre Git más allá del alcance del material central.\n" +"Los estudiantes que han completado el resto de las lecciones pueden encontrar valor al examinar los siguientes temas." + +#: git-novice/_locale/es/_extras/discuss.md:12 +msgid "Tenga en cuenta que dado que este material no es esencial para el uso básico de Git, no será cubierto por el instructor." +msgstr "Tenga en cuenta que dado que este material no es esencial para el uso básico de Git, no será cubierto por el instructor." + +# header +#: git-novice/_locale/es/_extras/discuss.md:14 +msgid "## Más configuración avanzada de Git" +msgstr "## Más configuración avanzada de Git" + +#: git-novice/_locale/es/_extras/discuss.md:16 +msgid "" +"En [Configuración de Git]({{page.root}}/02-setup/),\n" +"usamos `git config --global` para establecer algunas opciones predeterminadas para Git.\n" +"Resulta que estas opciones de configuración se almacenan en su directorio de inicio\n" +"en un archivo de texto sin formato llamado `.gitconfig`." +msgstr "" +"En [Configuración de Git]({{page.root}}/02-setup/),\n" +"usamos `git config --global` para establecer algunas opciones predeterminadas para Git.\n" +"Resulta que estas opciones de configuración se almacenan en su directorio de inicio\n" +"en un archivo de texto sin formato llamado `.gitconfig`." + +# code block +#: git-novice/_locale/es/_extras/discuss.md:26 +msgid "" +"~~~\n" +"[user]\n" +"\\tname = Vlad Dracula\n" +"\\temail = vlad@tran.sylvan.ia\n" +"[color]\n" +"\\tui = true\n" +"[core]\n" +"\\teditor = nano\n" +"~~~" +msgstr "" +"~~~\n" +"[user]\n" +"\\tname = Vlad のび太\n" +"\\temail = vlad@tran.sylvan.ia\n" +"[color]\n" +"\\tui = true\n" +"[core]\n" +"\\teditor = nano\n" +"~~~" + +#: git-novice/_locale/es/_extras/discuss.md:37 +msgid "" +"Este archivo se puede abrir en su editor de texto preferido.\n" +"(Tenga en cuenta que se recomienda continuar usando el comando `git config`,\n" +"ya que esto ayuda a evitar la introducción de errores de sintaxis)." +msgstr "" +"Este archivo se puede abrir en su editor de texto preferido.\n" +"(Tenga en cuenta que se recomienda continuar usando el comando `git config`,\n" +"ya que esto ayuda a evitar la introducción de errores de sintaxis)." + +#: git-novice/_locale/es/_extras/discuss.md:41 +msgid "" +"Eventualmente, querrás comenzar a personalizar el comportamiento de Git.\n" +"Esto se puede hacer agregando más entradas a su `.gitconfig`.\n" +"Las opciones disponibles se describen en el manual:" +msgstr "" +"Eventualmente, querrás comenzar a personalizar el comportamiento de Git.\n" +"Esto se puede hacer agregando más entradas a su `.gitconfig`.\n" +"Las opciones disponibles se describen en el manual:" + +#: git-novice/_locale/es/_extras/discuss.md:50 +msgid "" +"En particular, puede resultarle útil agregar alias.\n" +"Estos son como accesos directos para comandos de git más largos.\n" +"Por ejemplo, si te cansas de escribir `git checkout` todo el tiempo,\n" +"podrías ejecutar el comando:" +msgstr "" +"En particular, puede resultarle útil agregar alias.\n" +"Estos son como accesos directos para comandos de git más largos.\n" +"Por ejemplo, si te cansas de escribir `git checkout` todo el tiempo,\n" +"podrías ejecutar el comando:" + +#: git-novice/_locale/es/_extras/discuss.md:60 +msgid "Ahora, si volvemos al ejemplo de [Explorando el historial]({{ page.root }}/05-history/) where we ran:" +msgstr "Ahora, si volvemos al ejemplo de [Explorando el historial]({{ page.root }}/05-history/) where we ran:" + +#: git-novice/_locale/es/_extras/discuss.md:67 +msgid "ahora podríamos escribir:" +msgstr "ahora podríamos escribir:" + +# header +#: git-novice/_locale/es/_extras/discuss.md:74 +msgid "## Diseñando el registro de Git" +msgstr "## Diseñando el registro de Git" + +#: git-novice/_locale/es/_extras/discuss.md:76 +msgid "" +"Un buen objetivo para la personalización sale del registro.\n" +"El registro predeterminado es bastante detallado pero no da pistas gráficas\n" +"como información sobre qué confirmaciones se realizaron localmente\n" +"y que fueron sacados de controles remotos." +msgstr "" +"Un buen objetivo para la personalización sale del registro.\n" +"El registro predeterminado es bastante detallado pero no da pistas gráficas\n" +"como información sobre qué confirmaciones se realizaron localmente\n" +"y que fueron sacados de controles remotos." + +#: git-novice/_locale/es/_extras/discuss.md:81 +msgid "" +"Puede usar `git log --help` y` git config --help` para buscar diferentes formas de cambiar\n" +"la salida de registro.\n" +"Pruebe los siguientes comandos y vea qué efecto tienen:" +msgstr "" +"Puede usar `git log --help` y` git config --help` para buscar diferentes formas de cambiar\n" +"la salida de registro.\n" +"Pruebe los siguientes comandos y vea qué efecto tienen:" + +#: git-novice/_locale/es/_extras/discuss.md:93 +msgid "" +"Si no te gustan los efectos,\n" +"puedes deshacerlos con:" +msgstr "" +"Si no te gustan los efectos,\n" +"puedes deshacerlos con:" + +# blockquote, which can be cascaded +#: git-novice/_locale/es/_extras/discuss.md:103 +msgid "> ## Deshacer cambios en la configuración de Git" +msgstr "> ## Deshacer cambios en la configuración de Git" + +#: git-novice/_locale/es/_extras/discuss.md:104 +msgid "" +">\n" +"> Puede usar el indicador `--unset` para eliminar las opciones no deseadas de` .gitconfig`.\n" +"> Otra forma de deshacer los cambios es almacenar su `.gitconfig` usando Git.\n" +">\n" +"> Para sugerencias sobre lo que puede querer configurar,\n" +"> vaya a GitHub y busque \"gitconfig\".\n" +"> Encontrará cientos de repositorios en los que las personas han almacenado\n" +"> sus propios archivos de configuración de Git.\n" +"> Ordenarlos por el número de estrellas y echar un vistazo a los mejores.\n" +"> Si encuentras alguno que te guste,\n" +"> compruebe que estén cubiertos por una licencia de código abierto antes de clonarlos." +msgstr "" +">\n" +"> Puede usar el indicador `--unset` para eliminar las opciones no deseadas de` .gitconfig`.\n" +"> Otra forma de deshacer los cambios es almacenar su `.gitconfig` usando Git.\n" +">\n" +"> Para sugerencias sobre lo que puede querer configurar,\n" +"> vaya a GitHub y busque \"gitconfig\".\n" +"> Encontrará cientos de repositorios en los que las personas han almacenado\n" +"> sus propios archivos de configuración de Git.\n" +"> Ordenarlos por el número de estrellas y echar un vistazo a los mejores.\n" +"> Si encuentras alguno que te guste,\n" +"> compruebe que estén cubiertos por una licencia de código abierto antes de clonarlos." + +# header +#: git-novice/_locale/es/_extras/discuss.md:117 +msgid "## Archivos sin texto" +msgstr "## Archivos sin texto" + +#: git-novice/_locale/es/_extras/discuss.md:119 +msgid "" +"Recordar cuando discutimos [Conflictos]({{page.root}}/09-conflict/)\n" +"hubo un desafío que preguntó,\n" +"\"¿Qué hace Git?\n" +"cuando hay un conflicto en una imagen o algún otro archivo no textual\n" +"que está almacenado en el control de la versión?\"" +msgstr "" +"Recordar cuando discutimos [Conflictos]({{page.root}}/09-conflict/)\n" +"hubo un desafío que preguntó,\n" +"\"¿Qué hace Git?\n" +"cuando hay un conflicto en una imagen o algún otro archivo no textual\n" +"que está almacenado en el control de la versión?\"" + +#: git-novice/_locale/es/_extras/discuss.md:125 +msgid "Ahora revisitaremos esto con más detalle." +msgstr "Ahora revisitaremos esto con más detalle." + +#: git-novice/_locale/es/_extras/discuss.md:127 +msgid "" +"Muchas personas desean controlar versiones que no sean archivos de texto, como imágenes, archivos PDF y documentos de Microsoft Office o LibreOffice.\n" +"Es cierto que Git puede manejar estos tipos de archivos (que caen bajo el título de tipos de archivos \"binarios\").\n" +"Sin embargo, solo porque *se puede* hacer no significa que *se deba* hacer." +msgstr "" +"Muchas personas desean controlar versiones que no sean archivos de texto, como imágenes, archivos PDF y documentos de Microsoft Office o LibreOffice.\n" +"Es cierto que Git puede manejar estos tipos de archivos (que caen bajo el título de tipos de archivos \"binarios\").\n" +"Sin embargo, solo porque *se puede* hacer no significa que *se deba* hacer." + +#: git-novice/_locale/es/_extras/discuss.md:131 +msgid "" +"Gran parte de la magia de Git proviene de poder hacer comparaciones línea por línea (\"diffs\") entre archivos.\n" +"Esto es generalmente fácil para programar el código fuente y el texto marcado.\n" +"Para archivos que no son de texto, un diff generalmente solo puede detectar que los archivos han cambiado\n" +"pero no puedo decir cómo o dónde." +msgstr "" +"Gran parte de la magia de Git proviene de poder hacer comparaciones línea por línea (\"diffs\") entre archivos.\n" +"Esto es generalmente fácil para programar el código fuente y el texto marcado.\n" +"Para archivos que no son de texto, un diff generalmente solo puede detectar que los archivos han cambiado\n" +"pero no puedo decir cómo o dónde." + +#: git-novice/_locale/es/_extras/discuss.md:136 +msgid "" +"Esto tiene varios impactos en el rendimiento de Git y hará que sea difícil\n" +"compare diferentes versiones de su proyecto." +msgstr "" +"Esto tiene varios impactos en el rendimiento de Git y hará que sea difícil\n" +"compare diferentes versiones de su proyecto." + +#: git-novice/_locale/es/_extras/discuss.md:139 +msgid "" +"Para un ejemplo básico para mostrar la diferencia que hace,\n" +"vamos a ver qué hubiera pasado si Drácula hubiera intentado\n" +"utilizando salidas de un procesador de texto en lugar de texto sin formato." +msgstr "" +"Para un ejemplo básico para mostrar la diferencia que hace,\n" +"vamos a ver qué hubiera pasado si Drácula hubiera intentado\n" +"utilizando salidas de un procesador de texto en lugar de texto sin formato." + +#: git-novice/_locale/es/_extras/discuss.md:143 +msgid "Crea un nuevo directorio y entra en él:" +msgstr "Crea un nuevo directorio y entra en él:" + +#: git-novice/_locale/es/_extras/discuss.md:151 +msgid "" +"Use un programa como Microsoft Word o LibreOffice Writer para crear un documento nuevo.\n" +"Ingrese el mismo texto con el que comenzamos antes:" +msgstr "" +"Use un programa como Microsoft Word o LibreOffice Writer para crear un documento nuevo.\n" +"Ingrese el mismo texto con el que comenzamos antes:" + +#: git-novice/_locale/es/_extras/discuss.md:159 +msgid "" +"Guarde el documento en el directorio `planets-nontext` con el nombre de `mars.doc`.\n" +"De vuelta en la terminal, ejecute los comandos habituales para configurar un nuevo repositorio de Git:" +msgstr "" +"Guarde el documento en el directorio `planets-nontext` con el nombre de `mars.doc`.\n" +"De vuelta en la terminal, ejecute los comandos habituales para configurar un nuevo repositorio de Git:" + +#: git-novice/_locale/es/_extras/discuss.md:169 +msgid "Luego haga los mismos cambios a `mars.doc` que nosotros (o Vlad) previamente hicimos a `mars.txt`." +msgstr "Luego haga los mismos cambios a `mars.doc` que nosotros (o Vlad) previamente hicimos a `mars.txt`." + +#: git-novice/_locale/es/_extras/discuss.md:177 +msgid "" +"Guarde y cierre el procesador de texto.\n" +"Ahora mira lo que Git piensa de tus cambios:" +msgstr "" +"Guarde y cierre el procesador de texto.\n" +"Ahora mira lo que Git piensa de tus cambios:" + +#: git-novice/_locale/es/_extras/discuss.md:192 +msgid "Compare esto con el anterior `git diff` obtenido al usar archivos de texto:" +msgstr "Compare esto con el anterior `git diff` obtenido al usar archivos de texto:" + +#: git-novice/_locale/es/_extras/discuss.md:205 +msgid "" +"Observe cómo los archivos de texto plano dan una diferencia mucho más informativa.\n" +"Puede ver exactamente qué líneas cambiaron y cuáles fueron los cambios." +msgstr "" +"Observe cómo los archivos de texto plano dan una diferencia mucho más informativa.\n" +"Puede ver exactamente qué líneas cambiaron y cuáles fueron los cambios." + +#: git-novice/_locale/es/_extras/discuss.md:208 +msgid "" +"Un `git diff` no informativo no es la única consecuencia de usar Git en archivos binarios.\n" +"Sin embargo, la mayoría de los otros problemas se reducen a si es posible o no una buena diferencia." +msgstr "" +"Un `git diff` no informativo no es la única consecuencia de usar Git en archivos binarios.\n" +"Sin embargo, la mayoría de los otros problemas se reducen a si es posible o no una buena diferencia." + +#: git-novice/_locale/es/_extras/discuss.md:211 +msgid "" +"Esto no quiere decir que *nunca* debes usar Git en archivos binarios.\n" +"Una regla de oro es que está bien si el archivo binario no cambiará muy a menudo,\n" +"y si cambia, no te importa fusionarte en pequeñas diferencias entre versiones." +msgstr "" +"Esto no quiere decir que *nunca* debes usar Git en archivos binarios.\n" +"Una regla de oro es que está bien si el archivo binario no cambiará muy a menudo,\n" +"y si cambia, no te importa fusionarte en pequeñas diferencias entre versiones." + +#: git-novice/_locale/es/_extras/discuss.md:215 +msgid "" +"Ya hemos visto cómo un informe procesado por palabra no pasará esta prueba.\n" +"Un ejemplo que pasa la prueba es un logotipo para su organización o proyecto.\n" +"Aunque un logotipo se almacenará en un formato binario, como `jpg` o `png`,\n" +"puede esperar que permanezca bastante estático durante la vida útil de su repositorio.\n" +"En la rara ocasión en que la marca cambia,\n" +"probablemente solo quiera reemplazar el logotipo por completo en lugar de combinar pequeñas diferencias." +msgstr "" +"Ya hemos visto cómo un informe procesado por palabra no pasará esta prueba.\n" +"Un ejemplo que pasa la prueba es un logotipo para su organización o proyecto.\n" +"Aunque un logotipo se almacenará en un formato binario, como `jpg` o `png`,\n" +"puede esperar que permanezca bastante estático durante la vida útil de su repositorio.\n" +"En la rara ocasión en que la marca cambia,\n" +"probablemente solo quiera reemplazar el logotipo por completo en lugar de combinar pequeñas diferencias." + +# header +#: git-novice/_locale/es/_extras/discuss.md:222 +msgid "## Eliminar un archivo" +msgstr "## Eliminar un archivo" + +#: git-novice/_locale/es/_extras/discuss.md:224 +msgid "" +"Agregar y modificar archivos no son las únicas acciones que uno podría tomar\n" +"cuando se trabaja en un proyecto. Puede ser necesario para eliminar un archivo\n" +"del repositorio." +msgstr "" +"Agregar y modificar archivos no son las únicas acciones que uno podría tomar\n" +"cuando se trabaja en un proyecto. Puede ser necesario para eliminar un archivo\n" +"del repositorio." + +#: git-novice/_locale/es/_extras/discuss.md:228 +msgid "Crea un nuevo archivo para el planeta Nibiru:" +msgstr "Crea un nuevo archivo para el planeta Nibiru:" + +#: git-novice/_locale/es/_extras/discuss.md:235 +msgid "Ahora agregue al repositorio como lo aprendió anteriormente:" +msgstr "Ahora agregue al repositorio como lo aprendió anteriormente:" + +#: git-novice/_locale/es/_extras/discuss.md:250 +msgid "" +"Nibiru no es un planeta real. Esa fue una idea tonta. Vamos a eliminar\n" +"desde el disco y deja que Git lo sepa:" +msgstr "" +"Nibiru no es un planeta real. Esa fue una idea tonta. Vamos a eliminar\n" +"desde el disco y deja que Git lo sepa:" + +#: git-novice/_locale/es/_extras/discuss.md:269 +msgid "" +"El cambio ha sido organizado. Ahora comprometa la eliminación y elimine\n" +"archivo del propio repositorio. Tenga en cuenta que el archivo se eliminará\n" +"en el nuevo compromiso La confirmación anterior seguirá\n" +"tener el archivo, si fueras a recuperar esa confirmación específica." +msgstr "" +"El cambio ha sido organizado. Ahora comprometa la eliminación y elimine\n" +"archivo del propio repositorio. Tenga en cuenta que el archivo se eliminará\n" +"en el nuevo compromiso La confirmación anterior seguirá\n" +"tener el archivo, si fueras a recuperar esa confirmación específica." + +# header +#: git-novice/_locale/es/_extras/discuss.md:279 +msgid "## Eliminar un archivo con Unix" +msgstr "## Eliminar un archivo con Unix" + +#: git-novice/_locale/es/_extras/discuss.md:281 +msgid "" +"A veces podríamos olvidar eliminar el archivo a través de Git. Si eliminaste el\n" +"archivo con Unix `rm` en lugar de usar` git rm`, sin preocupaciones,\n" +"Git es lo suficientemente inteligente como para notar el archivo perdido. Vamos a recrear el archivo y\n" +"cometerlo de nuevo." +msgstr "" +"A veces podríamos olvidar eliminar el archivo a través de Git. Si eliminaste el\n" +"archivo con Unix `rm` en lugar de usar` git rm`, sin preocupaciones,\n" +"Git es lo suficientemente inteligente como para notar el archivo perdido. Vamos a recrear el archivo y\n" +"cometerlo de nuevo." + +#: git-novice/_locale/es/_extras/discuss.md:293 +msgid "Ahora eliminamos el archivo con Unix `rm`:" +msgstr "Ahora eliminamos el archivo con Unix `rm`:" + +#: git-novice/_locale/es/_extras/discuss.md:313 +msgid "" +"Vea cómo Git ha notado que el archivo `nibiru.txt` ha sido eliminado\n" +"del disco. El siguiente paso es \"escenificar\" la eliminación del archivo\n" +"del repositorio. Esto se hace con el comando `git rm` igual que\n" +"antes de." +msgstr "" +"Vea cómo Git ha notado que el archivo `nibiru.txt` ha sido eliminado\n" +"del disco. El siguiente paso es \"escenificar\" la eliminación del archivo\n" +"del repositorio. Esto se hace con el comando `git rm` igual que\n" +"antes de." + +#: git-novice/_locale/es/_extras/discuss.md:334 +msgid "" +"El cambio que se hizo en Unix ahora se ha organizado y debe ser\n" +"comprometido." +msgstr "" +"El cambio que se hizo en Unix ahora se ha organizado y debe ser\n" +"comprometido." + +# header +#: git-novice/_locale/es/_extras/discuss.md:342 +msgid "## Renombrar un archivo" +msgstr "## Renombrar un archivo" + +#: git-novice/_locale/es/_extras/discuss.md:344 +msgid "Otro cambio común cuando se trabaja en un proyecto es cambiar el nombre de un archivo." +msgstr "Otro cambio común cuando se trabaja en un proyecto es cambiar el nombre de un archivo." + +#: git-novice/_locale/es/_extras/discuss.md:346 +msgid "Crea un archivo para el planeta Krypton:" +msgstr "Crea un archivo para el planeta Krypton:" + +#: git-novice/_locale/es/_extras/discuss.md:353 +msgid "Añádalo al repositorio:" +msgstr "Añádalo al repositorio:" + +#: git-novice/_locale/es/_extras/discuss.md:361 +msgid "" +"Todos sabemos que Superman se mudó a la Tierra. No es que tuviera mucho\n" +"elección. Ahora su planeta de origen es la Tierra." +msgstr "" +"Todos sabemos que Superman se mudó a la Tierra. No es que tuviera mucho\n" +"elección. Ahora su planeta de origen es la Tierra." + +#: git-novice/_locale/es/_extras/discuss.md:364 +msgid "Cambie el nombre del archivo `krypton.txt` a` earth.txt` con Git:" +msgstr "Cambie el nombre del archivo `krypton.txt` a` earth.txt` con Git:" + +# code block +#: git-novice/_locale/es/_extras/discuss.md:372 +msgid "" +"~~~\n" +"# On branch master\n" +"# Changes to be committed:\n" +"# (use \"git reset HEAD ...\" to unstage)\n" +"#\n" +"#\\trenamed: krypton.txt -> earth.txt\n" +"#\n" +"~~~" +msgstr "" +"~~~\n" +"# On branch master\n" +"# Changes to be committed:\n" +"# (use \"git reset HEAD ...\" to unstage)\n" +"#\n" +"#\\trenamed: krypton.txt -> earth.txt\n" +"#\n" +"~~~" + +#: git-novice/_locale/es/_extras/discuss.md:381 +msgid "El último paso es comprometer nuestro cambio al repositorio:" +msgstr "El último paso es comprometer nuestro cambio al repositorio:" + +# header +#: git-novice/_locale/es/_extras/discuss.md:388 +msgid "## Renombrar un archivo con Unix" +msgstr "## Renombrar un archivo con Unix" + +#: git-novice/_locale/es/_extras/discuss.md:390 +msgid "" +"Si olvidó usar Git y usó Unix `mv` en su lugar\n" +"de `git mv`, tendrás un poco más de trabajo que hacer, pero Git lo hará\n" +"ser capaz de lidiar con eso. Intentemos nuevamente cambiar el nombre del archivo,\n" +"esta vez con Unix `mv`. Primero, necesitamos recrear el\n" +"archivo `krypton.txt`:" +msgstr "" +"Si olvidó usar Git y usó Unix `mv` en su lugar\n" +"de `git mv`, tendrás un poco más de trabajo que hacer, pero Git lo hará\n" +"ser capaz de lidiar con eso. Intentemos nuevamente cambiar el nombre del archivo,\n" +"esta vez con Unix `mv`. Primero, necesitamos recrear el\n" +"archivo `krypton.txt`:" + +#: git-novice/_locale/es/_extras/discuss.md:403 +msgid "Vamos a renombrar el archivo y ver lo que Git puede descifrar por sí mismo:" +msgstr "Vamos a renombrar el archivo y ver lo que Git puede descifrar por sí mismo:" + +#: git-novice/_locale/es/_extras/discuss.md:428 +msgid "" +"Git notó que el archivo `krypton.txt` ha desaparecido del\n" +"sistema de archivos y un nuevo archivo `earth.txt` ha aparecido." +msgstr "" +"Git notó que el archivo `krypton.txt` ha desaparecido del\n" +"sistema de archivos y un nuevo archivo `earth.txt` ha aparecido." + +#: git-novice/_locale/es/_extras/discuss.md:431 +msgid "Agregue esos cambios al área de ensayo:" +msgstr "Agregue esos cambios al área de ensayo:" + +#: git-novice/_locale/es/_extras/discuss.md:449 +msgid "" +"Observe cómo Git ahora ha descubierto que el `krypton.txt` no tiene\n" +"desapareció simplemente ha sido renombrado." +msgstr "" +"Observe cómo Git ahora ha descubierto que el `krypton.txt` no tiene\n" +"desapareció simplemente ha sido renombrado." + +#: git-novice/_locale/es/_extras/discuss.md:452 +msgid "El último paso, como antes, es comprometer nuestro cambio al repositorio:" +msgstr "El último paso, como antes, es comprometer nuestro cambio al repositorio:" + +# Front Matter +#: git-novice/_locale/es/_extras/figures.md:1 +msgid "" +"---\n" +"layout: page\n" +"title: Figures\n" +"permalink: /es/figures/\n" +"---" +msgstr "" +"---\n" +"layout: page\n" +"title: Figures\n" +"permalink: /es/figures/\n" +"---" + +# Front Matter +#: git-novice/_locale/es/_extras/guide.md:1 +msgid "" +"---\n" +"layout: page\n" +"title: \"Instructor Notes\"\n" +"permalink: /es/guide/\n" +"---" +msgstr "" +"---\n" +"layout: page\n" +"title: \"Instructor Notes\"\n" +"permalink: /es/guide/\n" +"---" + +#: git-novice/_locale/es/_extras/guide.md:6 +msgid "" +"Usar una herramienta de software para manejar las versiones de tus archivos de proyecto\n" +"le permite enfocarse en los aspectos más interesantes / innovadores de su proyecto." +msgstr "" +"Usar una herramienta de software para manejar las versiones de tus archivos de proyecto\n" +"le permite enfocarse en los aspectos más interesantes / innovadores de su proyecto." + +# unordered list +#: git-novice/_locale/es/_extras/guide.md:9 +msgid "* Ventajas del control de versiones" +msgstr "* Ventajas del control de versiones" + +# unordered list +#: git-novice/_locale/es/_extras/guide.md:10 +msgid " * Es fácil de configurar " +msgstr " * Es fácil de configurar " + +# unordered list +#: git-novice/_locale/es/_extras/guide.md:11 +msgid " * Cada copia de un repositorio de Git es una copia de seguridad completa de un proyecto y su historial" +msgstr " * Cada copia de un repositorio de Git es una copia de seguridad completa de un proyecto y su historial" + +# unordered list +#: git-novice/_locale/es/_extras/guide.md:12 +msgid " * Unos pocos comandos fáciles de recordar son todo lo que necesita para la mayoría de las tareas cotidianas de control de versiones" +msgstr " * Unos pocos comandos fáciles de recordar son todo lo que necesita para la mayoría de las tareas cotidianas de control de versiones" + +# unordered list +#: git-novice/_locale/es/_extras/guide.md:13 +msgid " * El servicio de alojamiento [GitHub][github] proporciona un servicio de colaboración basado en la web" +msgstr " * El servicio de alojamiento [GitHub][github] proporciona un servicio de colaboración basado en la web" + +# unordered list +#: git-novice/_locale/es/_extras/guide.md:14 +msgid "* Dos conceptos principales" +msgstr "* Dos conceptos principales" + +# unordered list +#: git-novice/_locale/es/_extras/guide.md:15 +msgid " * *commit*: un conjunto de cambios registrados en los archivos de su proyecto" +msgstr " * *commit*: un conjunto de cambios registrados en los archivos de su proyecto" + +# unordered list +#: git-novice/_locale/es/_extras/guide.md:16 +msgid " * *repositorio*: el historial de todas las confirmaciones de su proyecto" +msgstr " * *repositorio*: el historial de todas las confirmaciones de su proyecto" + +# unordered list +#: git-novice/_locale/es/_extras/guide.md:17 +msgid "* ¿Por qué usar GitHub?" +msgstr "* ¿Por qué usar GitHub?" + +# unordered list +#: git-novice/_locale/es/_extras/guide.md:18 +msgid " * No es necesario un servidor: fácil de configurar" +msgstr " * No es necesario un servidor: fácil de configurar" + +# unordered list +#: git-novice/_locale/es/_extras/guide.md:19 +msgid " * Comunidad fuerte de GitHub: tus colegas probablemente ya estén allí" +msgstr " * Comunidad fuerte de GitHub: tus colegas probablemente ya estén allí" + +# header +#: git-novice/_locale/es/_extras/guide.md:21 +msgid "## En general" +msgstr "## En general" + +#: git-novice/_locale/es/_extras/guide.md:23 +msgid "" +"El control de versiones podría ser el tema más importante que enseñamos, pero Git es\n" +"Definitivamente la herramienta más complicada. Sin embargo, GitHub actualmente domina el\n" +"abrir el panorama del repositorio de software, por lo que el tiempo y el esfuerzo necesarios para enseñar\n" +"Git fundamental está justificado y vale la pena." +msgstr "" +"El control de versiones podría ser el tema más importante que enseñamos, pero Git es\n" +"Definitivamente la herramienta más complicada. Sin embargo, GitHub actualmente domina el\n" +"abrir el panorama del repositorio de software, por lo que el tiempo y el esfuerzo necesarios para enseñar\n" +"Git fundamental está justificado y vale la pena." + +#: git-novice/_locale/es/_extras/guide.md:28 +msgid "" +"Debido a esta complejidad, no enseñamos a los principiantes acerca de muchos\n" +"temas interesantes, como ramificación, hash y commit de objetos." +msgstr "" +"Debido a esta complejidad, no enseñamos a los principiantes acerca de muchos\n" +"temas interesantes, como ramificación, hash y commit de objetos." + +#: git-novice/_locale/es/_extras/guide.md:31 +msgid "" +"En cambio, tratamos de convencerlos de que el control de versiones es útil para los investigadores\n" +"trabajando en equipo o no, porque es" +msgstr "" +"En cambio, tratamos de convencerlos de que el control de versiones es útil para los investigadores\n" +"trabajando en equipo o no, porque es" + +# unordered list +#: git-novice/_locale/es/_extras/guide.md:34 +msgid "* una mejor forma de \"deshacer\" cambios," +msgstr "* una mejor forma de \"deshacer\" cambios," + +# unordered list +#: git-novice/_locale/es/_extras/guide.md:35 +msgid "* una mejor manera de colaborar que enviar y recibir archivos por correo, y" +msgstr "* una mejor manera de colaborar que enviar y recibir archivos por correo, y" + +# unordered list +#: git-novice/_locale/es/_extras/guide.md:36 +msgid "* una mejor manera de compartir tu código y otro trabajo científico con el mundo." +msgstr "* una mejor manera de compartir tu código y otro trabajo científico con el mundo." + +# header +#: git-novice/_locale/es/_extras/guide.md:38 +msgid "## Notas de enseñanza" +msgstr "## Notas de enseñanza" + +# unordered list +#: git-novice/_locale/es/_extras/guide.md:40 +msgid "* Recursos para \"dividir\" su caparazón para que los comandos recientes permanezcan a la vista: https://github.com/rgaiacs/swc-shell-split-window." +msgstr "* Recursos para \"dividir\" su caparazón para que los comandos recientes permanezcan a la vista: https://github.com/rgaiacs/swc-shell-split-window." + +# unordered list +#: git-novice/_locale/es/_extras/guide.md:42 +msgid "* Asegúrese de que la red esté funcionando *antes* de comenzar esta lección." +msgstr "* Asegúrese de que la red esté funcionando *antes* de comenzar esta lección." + +# unordered list +#: git-novice/_locale/es/_extras/guide.md:44 +msgid "* Los dibujos son particularmente útiles en esta lección: si tiene una pizarra blanca," +msgstr "* Los dibujos son particularmente útiles en esta lección: si tiene una pizarra blanca," + +#: git-novice/_locale/es/_extras/guide.md:45 +msgid " [usarlo][dibujos]!" +msgstr " [usarlo][dibujos]!" + +# unordered list +#: git-novice/_locale/es/_extras/guide.md:47 +msgid "* El control de versiones generalmente no es el primer tema en un taller, " +msgstr "* El control de versiones generalmente no es el primer tema en un taller, " + +#: git-novice/_locale/es/_extras/guide.md:48 +msgid "así que haga que los alumnos creen una cuenta de GitHub después de la sesión anterior. Recuerde a los alumnos que el nombre de usuario y el correo electrónico que usan para GitHub (y configuración durante la configuración de Git) será visible para el público de manera predeterminada. Sin embargo, hay muchas razones por las cuales un alumno puede no querer su personal información visible, y GitHub tiene [recursos para mantener una dirección de correo electrónico privado][github-privacy]." +msgstr "así que haga que los alumnos creen una cuenta de GitHub después de la sesión anterior. Recuerde a los alumnos que el nombre de usuario y el correo electrónico que usan para GitHub (y configuración durante la configuración de Git) será visible para el público de manera predeterminada. Sin embargo, hay muchas razones por las cuales un alumno puede no querer su personal información visible, y GitHub tiene [recursos para mantener una dirección de correo electrónico privado][github-privacy]." + +# unordered list +#: git-novice/_locale/es/_extras/guide.md:50 +msgid "* Si algunos estudiantes usan Windows, inevitablemente habrá problemas" +msgstr "* Si algunos estudiantes usan Windows, inevitablemente habrá problemas" + +#: git-novice/_locale/es/_extras/guide.md:51 +msgid " fusionando archivos con diferentes finales de línea. (Incluso si todos están encendidos un poco de sabor de Unix, diferentes editores pueden o no agregar una nueva línea a la última línea de un archivo.) Tómese un momento para explicar estos problemas, ya que los estudiantes seguramente tropezarán con ellos de nuevo. Si los estudiantes se están encontrando con problemas para terminar la línea, GitHub tiene una [página][github-line-endings] que ayuda a solucionar problemas." +msgstr " fusionando archivos con diferentes finales de línea. (Incluso si todos están encendidos un poco de sabor de Unix, diferentes editores pueden o no agregar una nueva línea a la última línea de un archivo.) Tómese un momento para explicar estos problemas, ya que los estudiantes seguramente tropezarán con ellos de nuevo. Si los estudiantes se están encontrando con problemas para terminar la línea, GitHub tiene una [página][github-line-endings] que ayuda a solucionar problemas." + +# unordered list +#: git-novice/_locale/es/_extras/guide.md:53 +msgid "* No usamos una GUI de Git en estas notas porque no hemos encontrado una que" +msgstr "* No usamos una GUI de Git en estas notas porque no hemos encontrado una que" + +#: git-novice/_locale/es/_extras/guide.md:54 +msgid " se instala fácilmente y funciona confiablemente en los tres principales sistemas operativos, y porque queremos que los alumnos entiendan qué comandos se están ejecutando. Ese dijo, los instructores deberían demo una GUI en su escritorio en algún momento durante esta lección y apunte a los alumnos en [esta página][github-gui]." +msgstr " se instala fácilmente y funciona confiablemente en los tres principales sistemas operativos, y porque queremos que los alumnos entiendan qué comandos se están ejecutando. Ese dijo, los instructores deberían demo una GUI en su escritorio en algún momento durante esta lección y apunte a los alumnos en [esta página][github-gui]." + +# unordered list +#: git-novice/_locale/es/_extras/guide.md:56 +msgid "* Los instructores deben mostrar a los alumnos herramientas gráficas de fusión / fusión como" +msgstr "* Los instructores deben mostrar a los alumnos herramientas gráficas de fusión / fusión como" + +#: git-novice/_locale/es/_extras/guide.md:57 +msgid " [DiffMerge][diffmerge]." +msgstr " [DiffMerge][diffmerge]." + +# unordered list +#: git-novice/_locale/es/_extras/guide.md:59 +msgid "* Cuando sea apropiado, explique que enseñamos a Git en lugar de CVS, Subversion, " +msgstr "* Cuando sea apropiado, explique que enseñamos a Git en lugar de CVS, Subversion, " + +#: git-novice/_locale/es/_extras/guide.md:60 +msgid " o Mercurial principalmente debido a la creciente popularidad de GitHub: CVS y Subversion ahora se ve como sistemas heredados, y Mercurial no es tan ampliamente utilizado en las ciencias en este momento." +msgstr " o Mercurial principalmente debido a la creciente popularidad de GitHub: CVS y Subversion ahora se ve como sistemas heredados, y Mercurial no es tan ampliamente utilizado en las ciencias en este momento." + +# unordered list +#: git-novice/_locale/es/_extras/guide.md:62 +msgid "* Recursos adicionales:" +msgstr "* Recursos adicionales:" + +# unordered list +#: git-novice/_locale/es/_extras/guide.md:63 +msgid " * [git-it][git-it] es una demostración de Git de línea de comandos a tu propio ritmo," +msgstr " * [git-it][git-it] es una demostración de Git de línea de comandos a tu propio ritmo," + +#: git-novice/_locale/es/_extras/guide.md:64 +msgid "" +" con [git-it-electron][git-it-electron] su sucesor de GitHub Desktop.\n" +" * [Code School][code-school] tiene un curso interactivo gratuito, [Try Git][try-git].\n" +" * para instructores, [la parábola de Git][git-parábola] es una lectura de fondo útil" +msgstr "" +" con [git-it-electron][git-it-electron] su sucesor de GitHub Desktop.\n" +" * [Code School][code-school] tiene un curso interactivo gratuito, [Try Git][try-git].\n" +" * para instructores, [la parábola de Git][git-parábola] es una lectura de fondo útil" + +# header +#: git-novice/_locale/es/_extras/guide.md:68 +msgid "## [Control automatizado de versiones]({{page.root}}/01-basics/)" +msgstr "## [Control automatizado de versiones]({{page.root}}/01-basics/)" + +# unordered list +#: git-novice/_locale/es/_extras/guide.md:70 +msgid "* Pregunte, \"¿Quién usa 'deshacer' en su editor?\" Todos dicen \"Yo\". 'Deshacer' es el más simple " +msgstr "* Pregunte, \"¿Quién usa 'deshacer' en su editor?\" Todos dicen \"Yo\". 'Deshacer' es el más simple " + +#: git-novice/_locale/es/_extras/guide.md:71 +msgid "forma de control de versiones." +msgstr "forma de control de versiones." + +# unordered list +#: git-novice/_locale/es/_extras/guide.md:73 +msgid "* Ofrezca a los alumnos una visión general de cinco minutos de lo que el control de versión les hace " +msgstr "* Ofrezca a los alumnos una visión general de cinco minutos de lo que el control de versión les hace " + +#: git-novice/_locale/es/_extras/guide.md:74 +msgid " antes de zambullirte en las prácticas de vigilancia. La mayoría de ellos tendrá intentó coautar documentos enviando archivos por correo electrónico, o tendrá en bicicleta en la oficina solo para darse cuenta de que la llave USB con la última noche el trabajo todavía está en la mesa de la cocina. Los instructores también pueden hacer bromas sobre directorios con nombres como \"versión final\", \"versión final revisada\", \"versión final con las correcciones del revisor tres\", \"versión realmente final\", y, \"vamos, realmente tiene que ser la última versión\" para motivar la versión control como una mejor manera de colaborar y como una mejor manera de respaldar el trabajo." +msgstr " antes de zambullirte en las prácticas de vigilancia. La mayoría de ellos tendrá intentó coautar documentos enviando archivos por correo electrónico, o tendrá en bicicleta en la oficina solo para darse cuenta de que la llave USB con la última noche el trabajo todavía está en la mesa de la cocina. Los instructores también pueden hacer bromas sobre directorios con nombres como \"versión final\", \"versión final revisada\", \"versión final con las correcciones del revisor tres\", \"versión realmente final\", y, \"vamos, realmente tiene que ser la última versión\" para motivar la versión control como una mejor manera de colaborar y como una mejor manera de respaldar el trabajo." + +# header +#: git-novice/_locale/es/_extras/guide.md:76 +msgid "## [Configuración de Git]({{page.root}}/02-setup/)" +msgstr "## [Configuración de Git]({{page.root}}/02-setup/)" + +# unordered list +#: git-novice/_locale/es/_extras/guide.md:78 +msgid "* Sugerimos que los instructores y los estudiantes usen `nano` como editor de texto para este " +msgstr "* Sugerimos que los instructores y los estudiantes usen `nano` como editor de texto para este " + +#: git-novice/_locale/es/_extras/guide.md:79 +msgid " lecciones porque" +msgstr " lecciones porque" + +# unordered list +#: git-novice/_locale/es/_extras/guide.md:81 +msgid " * se ejecuta en los tres principales sistemas operativos," +msgstr " * se ejecuta en los tres principales sistemas operativos," + +# unordered list +#: git-novice/_locale/es/_extras/guide.md:82 +msgid " * se ejecuta dentro del caparazón (las ventanas de conmutación pueden ser confusas para los estudiantes), y" +msgstr " * se ejecuta dentro del caparazón (las ventanas de conmutación pueden ser confusas para los estudiantes), y" + +# unordered list +#: git-novice/_locale/es/_extras/guide.md:83 +msgid " * tiene ayuda contextual en la parte inferior de la ventana." +msgstr " * tiene ayuda contextual en la parte inferior de la ventana." + +#: git-novice/_locale/es/_extras/guide.md:85 +msgid "" +"    Señale a los alumnos durante la configuración que pueden y deben usar\n" +"    otro editor de texto si ya están familiarizados con él." +msgstr "" +"    Señale a los alumnos durante la configuración que pueden y deben usar\n" +"    otro editor de texto si ya están familiarizados con él." + +# unordered list +#: git-novice/_locale/es/_extras/guide.md:88 +msgid "* Al configurar Git, tenga muy claro lo que los alumnos deben ingresar: es " +msgstr "* Al configurar Git, tenga muy claro lo que los alumnos deben ingresar: es " + +#: git-novice/_locale/es/_extras/guide.md:89 +msgid "común que editen los detalles del instructor (por ejemplo, correo electrónico). Verifique en el final usando `git config --list`." +msgstr "común que editen los detalles del instructor (por ejemplo, correo electrónico). Verifique en el final usando `git config --list`." + +# header +#: git-novice/_locale/es/_extras/guide.md:91 +msgid "## [Creación de un repositorio]({{page.root}}/03-create/)" +msgstr "## [Creación de un repositorio]({{page.root}}/03-create/)" + +# unordered list +#: git-novice/_locale/es/_extras/guide.md:93 +msgid "* Cuando haces `git status`, los usuarios de Mac pueden ver un archivo` .DS_Store` mostrando como " +msgstr "* Cuando haces `git status`, los usuarios de Mac pueden ver un archivo` .DS_Store` mostrando como " + +#: git-novice/_locale/es/_extras/guide.md:94 +msgid "sin seguimiento. Este es un archivo que Mac OS crea en cada directorio." +msgstr "sin seguimiento. Este es un archivo que Mac OS crea en cada directorio." + +# unordered list +#: git-novice/_locale/es/_extras/guide.md:96 +msgid "* El desafío \"Lugares para crear repositorios\" intenta reforzar la idea " +msgstr "* El desafío \"Lugares para crear repositorios\" intenta reforzar la idea " + +#: git-novice/_locale/es/_extras/guide.md:97 +msgid "que la carpeta `.git` contiene todo el repositorio de Git y eliminando esta carpeta deshace un `git init`. También le da al alumno la manera de solucionar el problema común error de poner carpetas no deseadas (como `Escritorio`) bajo control de versión." +msgstr "que la carpeta `.git` contiene todo el repositorio de Git y eliminando esta carpeta deshace un `git init`. También le da al alumno la manera de solucionar el problema común error de poner carpetas no deseadas (como `Escritorio`) bajo control de versión." + +#: git-novice/_locale/es/_extras/guide.md:99 +msgid "    En lugar de eliminar la carpeta `.git` directamente, puede elegir moverla primero en un directorio más seguro y eliminarlo de allí:" +msgstr "    En lugar de eliminar la carpeta `.git` directamente, puede elegir moverla primero en un directorio más seguro y eliminarlo de allí:" + +#: git-novice/_locale/es/_extras/guide.md:107 +msgid "" +"    El desafío sugiere que es una mala idea crear un repositorio de Git dentro de otro repositorio.\n" +"    Para obtener más información sobre este tema, consulte [este número][repos-in-repos]." +msgstr "" +"    El desafío sugiere que es una mala idea crear un repositorio de Git dentro de otro repositorio.\n" +"    Para obtener más información sobre este tema, consulte [este número][repos-in-repos]." + +# header +#: git-novice/_locale/es/_extras/guide.md:110 +msgid "## [Cambios de seguimiento]({{page.root}}/04-changes/)" +msgstr "## [Cambios de seguimiento]({{page.root}}/04-changes/)" + +# unordered list +#: git-novice/_locale/es/_extras/guide.md:112 +msgid "* Es importante que los alumnos realicen un ciclo completo de compromiso por sí mismos (hacer" +msgstr "* Es importante que los alumnos realicen un ciclo completo de compromiso por sí mismos (hacer" + +#: git-novice/_locale/es/_extras/guide.md:113 +msgid " cambios, `git diff`,` git add`, y `git commit`). El \"repositorio de `bio`\" desafío hace eso." +msgstr " cambios, `git diff`,` git add`, y `git commit`). El \"repositorio de `bio`\" desafío hace eso." + +# unordered list +#: git-novice/_locale/es/_extras/guide.md:115 +msgid "* Este es un buen momento para mostrar una diferencia con una herramienta gráfica de diferencia. Si tu " +msgstr "* Este es un buen momento para mostrar una diferencia con una herramienta gráfica de diferencia. Si tu " + +#: git-novice/_locale/es/_extras/guide.md:116 +msgid "omítalo porque tiene poco tiempo, muéstrelo una vez en GitHub." +msgstr "omítalo porque tiene poco tiempo, muéstrelo una vez en GitHub." + +# unordered list +#: git-novice/_locale/es/_extras/guide.md:118 +msgid "* Una cosa puede causar confusión es la recuperación de versiones antiguas. Si, en lugar de" +msgstr "* Una cosa puede causar confusión es la recuperación de versiones antiguas. Si, en lugar de" + +#: git-novice/_locale/es/_extras/guide.md:119 +msgid "haciendo `$ git checkout f22b25e mars.txt`, alguien hace `$ git checkout f22b25e`, terminan en el estado \"HEAD separado\" y la confusión abunda. Entonces es posible seguir cometiendo, pero cosas como `git push origen master` un poco más tarde no dará resultados fácilmente comprensibles. También hace que parezca que los commits se pueden perder. Para \"arreglar\" una \"CABEZA separada\", simplemente `git checkout master`." +msgstr "haciendo `$ git checkout f22b25e mars.txt`, alguien hace `$ git checkout f22b25e`, terminan en el estado \"HEAD separado\" y la confusión abunda. Entonces es posible seguir cometiendo, pero cosas como `git push origen master` un poco más tarde no dará resultados fácilmente comprensibles. También hace que parezca que los commits se pueden perder. Para \"arreglar\" una \"CABEZA separada\", simplemente `git checkout master`." + +# unordered list +#: git-novice/_locale/es/_extras/guide.md:121 +msgid "* Este es un buen momento para mostrar un registro dentro de una GUI de Git. Si te lo" +msgstr "* Este es un buen momento para mostrar un registro dentro de una GUI de Git. Si te lo" + +#: git-novice/_locale/es/_extras/guide.md:122 +msgid " saltas porque tienes poco tiempo, muéstralo una vez en GitHub." +msgstr " saltas porque tienes poco tiempo, muéstralo una vez en GitHub." + +# header +#: git-novice/_locale/es/_extras/guide.md:124 +msgid "## [Ignorando cosas]({{page.root}}/06-ignore/)" +msgstr "## [Ignorando cosas]({{page.root}}/06-ignore/)" + +#: git-novice/_locale/es/_extras/guide.md:126 +msgid "Solo recuerda que puedes usar comodines y expresiones regulares para ignorar un un conjunto particular de archivos en `.gitignore`." +msgstr "Solo recuerda que puedes usar comodines y expresiones regulares para ignorar un un conjunto particular de archivos en `.gitignore`." + +# header +#: git-novice/_locale/es/_extras/guide.md:128 +msgid "## [Controles remotos en GitHub]({{page.root}}/07-github/)" +msgstr "## [Controles remotos en GitHub]({{page.root}}/07-github/)" + +# unordered list +#: git-novice/_locale/es/_extras/guide.md:130 +msgid "* Deje en claro que Git y GitHub no son lo mismo: Git es una persona abierta" +msgstr "* Deje en claro que Git y GitHub no son lo mismo: Git es una persona abierta" + +#: git-novice/_locale/es/_extras/guide.md:131 +msgid " herramienta de control de versión fuente, GitHub es una compañía que aloja Git repositorios en la web y proporciona una interfaz web para interactuar con repositorios ellos hospedan" +msgstr " herramienta de control de versión fuente, GitHub es una compañía que aloja Git repositorios en la web y proporciona una interfaz web para interactuar con repositorios ellos hospedan" + +# unordered list +#: git-novice/_locale/es/_extras/guide.md:133 +msgid "* Si tus alumnos están lo suficientemente avanzados como para sentirse cómodos con SSH, cuéntales " +msgstr "* Si tus alumnos están lo suficientemente avanzados como para sentirse cómodos con SSH, cuéntales " + +#: git-novice/_locale/es/_extras/guide.md:134 +msgid " pueden usar claves para autenticarse en GitHub en lugar de contraseñas, pero no intente configurar esto durante la clase: lleva demasiado tiempo y es una distracción de las ideas centrales de la lección." +msgstr " pueden usar claves para autenticarse en GitHub en lugar de contraseñas, pero no intente configurar esto durante la clase: lleva demasiado tiempo y es una distracción de las ideas centrales de la lección." + +# unordered list +#: git-novice/_locale/es/_extras/guide.md:136 +msgid "* Es muy útil dibujar un diagrama que muestre los diferentes repositorios" +msgstr "* Es muy útil dibujar un diagrama que muestre los diferentes repositorios" + +#: git-novice/_locale/es/_extras/guide.md:137 +msgid " involucrado." +msgstr " involucrado." + +# header +#: git-novice/_locale/es/_extras/guide.md:139 +msgid "## [Collaborating]({{page.root}}/08-collab/)" +msgstr "## [Collaborating]({{page.root}}/08-collab/)" + +# unordered list +#: git-novice/_locale/es/_extras/guide.md:141 +msgid "* Decidir por adelantado si todos los alumnos trabajarán en una compartida repositorio," +msgstr "* Decidir por adelantado si todos los alumnos trabajarán en una compartida repositorio," + +#: git-novice/_locale/es/_extras/guide.md:142 +msgid " o si van a trabajar en parejas (u otros grupos pequeños) en repositorios separados. El primero es más fácil de configurar; el último corre más suave." +msgstr " o si van a trabajar en parejas (u otros grupos pequeños) en repositorios separados. El primero es más fácil de configurar; el último corre más suave." + +# unordered list +#: git-novice/_locale/es/_extras/guide.md:144 +msgid "* El juego de roles entre dos instructores puede ser efectivo cuando se enseña " +msgstr "* El juego de roles entre dos instructores puede ser efectivo cuando se enseña " + +#: git-novice/_locale/es/_extras/guide.md:145 +msgid "secciones de colaboración y conflicto de la lección. Un instructor puede jugar el papel del propietario del repositorio, mientras que el segundo instructor puede jugar el papel del colaborador. Si es posible, intente usar dos proyectores para que se pueden ver las pantallas de los dos instructores. Esto hace para una ilustración muy clara para los estudiantes sobre quién hace qué." +msgstr "secciones de colaboración y conflicto de la lección. Un instructor puede jugar el papel del propietario del repositorio, mientras que el segundo instructor puede jugar el papel del colaborador. Si es posible, intente usar dos proyectores para que se pueden ver las pantallas de los dos instructores. Esto hace para una ilustración muy clara para los estudiantes sobre quién hace qué." + +# unordered list +#: git-novice/_locale/es/_extras/guide.md:147 +msgid "* También es efectivo emparejar a los estudiantes durante esta lección y asignar " +msgstr "* También es efectivo emparejar a los estudiantes durante esta lección y asignar " + +#: git-novice/_locale/es/_extras/guide.md:148 +msgid "" +"uno miembro de la pareja para tomar el papel del propietario y el otro el papel de el colaborador En esta configuración, los desafíos pueden incluir preguntar al\n" +"    colaborador para hacer un cambio, comprometerlo y enviar el cambio al control remoto repositorio para que el propietario pueda recuperarlo y viceversa. los el juego de roles entre los instructores puede ser un poco \"dramático\" en el conflictos parte de la lección si los instructores quieren inyectar un poco de humor en la habitación." +msgstr "" +"uno miembro de la pareja para tomar el papel del propietario y el otro el papel de el colaborador En esta configuración, los desafíos pueden incluir preguntar al\n" +"    colaborador para hacer un cambio, comprometerlo y enviar el cambio al control remoto repositorio para que el propietario pueda recuperarlo y viceversa. los el juego de roles entre los instructores puede ser un poco \"dramático\" en el conflictos parte de la lección si los instructores quieren inyectar un poco de humor en la habitación." + +# unordered list +#: git-novice/_locale/es/_extras/guide.md:151 +msgid "* Si no tiene dos proyectores, tenga dos instructores al frente del" +msgstr "* Si no tiene dos proyectores, tenga dos instructores al frente del" + +#: git-novice/_locale/es/_extras/guide.md:152 +msgid "    habitación. Cada instructor hace su parte de la demostración de colaboración en su propia computadora y luego pasa el cable del proyector de un lado a otro con el otro instructor cuando es hora de que hagan la otra parte de el flujo de trabajo colaborativo. Toma menos de 10 segundos para cada cambio, por lo que no interrumpe el flujo de la lección. Y, por supuesto, ayuda a dar a cada uno de los instructores un color diferente sombrero, o poner notas adhesivas de diferentes colores en sus frentes." +msgstr "    habitación. Cada instructor hace su parte de la demostración de colaboración en su propia computadora y luego pasa el cable del proyector de un lado a otro con el otro instructor cuando es hora de que hagan la otra parte de el flujo de trabajo colaborativo. Toma menos de 10 segundos para cada cambio, por lo que no interrumpe el flujo de la lección. Y, por supuesto, ayuda a dar a cada uno de los instructores un color diferente sombrero, o poner notas adhesivas de diferentes colores en sus frentes." + +# unordered list +#: git-novice/_locale/es/_extras/guide.md:154 +msgid "* Si eres el único instructor, la mejor manera de crear es clonar los dos " +msgstr "* Si eres el único instructor, la mejor manera de crear es clonar los dos " + +#: git-novice/_locale/es/_extras/guide.md:155 +msgid "repositorios en su escritorio, pero con diferentes nombres, por ejemplo, pretender uno es su computadora en el trabajo:" +msgstr "repositorios en su escritorio, pero con diferentes nombres, por ejemplo, pretender uno es su computadora en el trabajo:" + +# unordered list +#: git-novice/_locale/es/_extras/guide.md:162 +msgid "* Es muy común que los alumnos escriban mal el alias remoto o la URL remota" +msgstr "* Es muy común que los alumnos escriban mal el alias remoto o la URL remota" + +#: git-novice/_locale/es/_extras/guide.md:163 +msgid "" +" cuando se agrega un control remoto, entonces no pueden 'presionar'. Puedes diagnosticar esto con `git remote -v` y comprobando cuidadosamente si hay errores tipográficos.\n" +" - Para arreglar un alias incorrecto, puedes hacer `git remote rename `.\n" +" - Para arreglar una URL incorrecta, puedes hacer `git remote set-url `." +msgstr "" +" cuando se agrega un control remoto, entonces no pueden 'presionar'. Puedes diagnosticar esto con `git remote -v` y comprobando cuidadosamente si hay errores tipográficos.\n" +" - Para arreglar un alias incorrecto, puedes hacer `git remote rename `.\n" +" - Para arreglar una URL incorrecta, puedes hacer `git remote set-url `." + +# unordered list +#: git-novice/_locale/es/_extras/guide.md:167 +msgid "* Antes de clonar el repositorio, asegúrese de que nadie esté dentro de otro repositorio. los La" +msgstr "* Antes de clonar el repositorio, asegúrese de que nadie esté dentro de otro repositorio. los La" + +#: git-novice/_locale/es/_extras/guide.md:168 +msgid " mejor forma de lograr esto es pasar al `Escritorio` antes de la clonación: `cd && cd Desktop`." +msgstr " mejor forma de lograr esto es pasar al `Escritorio` antes de la clonación: `cd && cd Desktop`." + +# unordered list +#: git-novice/_locale/es/_extras/guide.md:170 +msgid "* Si ambos repos están en `Desktop`, pídales que clonen a su colaborador" +msgstr "* Si ambos repos están en `Desktop`, pídales que clonen a su colaborador" + +#: git-novice/_locale/es/_extras/guide.md:171 +msgid " repo bajo un directorio dado usando un segundo argumento:" +msgstr " repo bajo un directorio dado usando un segundo argumento:" + +# unordered list +#: git-novice/_locale/es/_extras/guide.md:178 +msgid "* El error más común es que los estudiantes \"empujan\" antes de \"tirar\". Si ellos" +msgstr "* El error más común es que los estudiantes \"empujan\" antes de \"tirar\". Si ellos" + +#: git-novice/_locale/es/_extras/guide.md:179 +msgid "`pull` después, pueden tener un conflicto." +msgstr "`pull` después, pueden tener un conflicto." + +# unordered list +#: git-novice/_locale/es/_extras/guide.md:181 +msgid "* Conflictos, a veces extraños, comenzarán a surgir. Mantente apretado: los conflictos son " +msgstr "* Conflictos, a veces extraños, comenzarán a surgir. Mantente apretado: los conflictos son " + +#: git-novice/_locale/es/_extras/guide.md:182 +msgid "siguiente.\"" +msgstr "siguiente.\"" + +# header +#: git-novice/_locale/es/_extras/guide.md:184 +msgid "## [Conflicts]({{page.root}}/09-conflict/)" +msgstr "## [Conflicts]({{page.root}}/09-conflict/)" + +# unordered list +#: git-novice/_locale/es/_extras/guide.md:186 +msgid "* Espere que los alumnos cometan errores. Espere *usted mismo* para cometer errores. Esta " +msgstr "* Espere que los alumnos cometan errores. Espere *usted mismo* para cometer errores. Esta " + +#: git-novice/_locale/es/_extras/guide.md:187 +msgid "sucede porque es tarde en la lección y todos están cansados.\"" +msgstr "sucede porque es tarde en la lección y todos están cansados.\"" + +# unordered list +#: git-novice/_locale/es/_extras/guide.md:189 +msgid "* Si eres el único instructor, la mejor forma de crear un conflicto es:" +msgstr "* Si eres el único instructor, la mejor forma de crear un conflicto es:" + +# unordered list +#: git-novice/_locale/es/_extras/guide.md:191 +msgid " * Clona tu repositorio en un directorio diferente, pretendiendo que es tu computadora en" +msgstr " * Clona tu repositorio en un directorio diferente, pretendiendo que es tu computadora en" + +#: git-novice/_locale/es/_extras/guide.md:192 +msgid "" +"        trabajo: `git clone https://github.com/vlad/planets.git planets-at-work`.\n" +" * En la oficina, usted hace un cambio, se compromete y empuja.\n" +" * En su repositorio de la computadora portátil, usted (olvide tirar y) hacer un cambio, comprometerse y\n" +"        intenta empujar.\n" +" * `git pull` ahora y muestra el conflicto." +msgstr "" +"        trabajo: `git clone https://github.com/vlad/planets.git planets-at-work`.\n" +" * En la oficina, usted hace un cambio, se compromete y empuja.\n" +" * En su repositorio de la computadora portátil, usted (olvide tirar y) hacer un cambio, comprometerse y\n" +"        intenta empujar.\n" +" * `git pull` ahora y muestra el conflicto." + +# unordered list +#: git-novice/_locale/es/_extras/guide.md:198 +msgid "* Los estudiantes generalmente se olvidan de 'agregar' el archivo después de arreglar el conflicto y " +msgstr "* Los estudiantes generalmente se olvidan de 'agregar' el archivo después de arreglar el conflicto y " + +#: git-novice/_locale/es/_extras/guide.md:199 +msgid "solo (intenta) comprometer. Puedes diagnosticar esto con `git status`." +msgstr "solo (intenta) comprometer. Puedes diagnosticar esto con `git status`." + +# unordered list +#: git-novice/_locale/es/_extras/guide.md:201 +msgid "* Recuerde que puede descartar uno de los dos padres de la combinación:" +msgstr "* Recuerde que puede descartar uno de los dos padres de la combinación:" + +# unordered list +#: git-novice/_locale/es/_extras/guide.md:203 +msgid " * descartar el archivo remoto, `git checkout --ours conflicted_file.txt`" +msgstr " * descartar el archivo remoto, `git checkout --ours conflicted_file.txt`" + +# unordered list +#: git-novice/_locale/es/_extras/guide.md:204 +msgid " * descartar el archivo local, `git checkout --the conflictigned_file.txt`" +msgstr " * descartar el archivo local, `git checkout --the conflictigned_file.txt`" + +#: git-novice/_locale/es/_extras/guide.md:206 +msgid "Aún debe `git add` y` git commit` después de esto. Esto esparticularmente útil cuando se trabaja con archivos binarios." +msgstr "Aún debe `git add` y` git commit` después de esto. Esto esparticularmente útil cuando se trabaja con archivos binarios." + +# header +#: git-novice/_locale/es/_extras/guide.md:208 +msgid "## [Ciencia abierta]({{page.root}}/10-open/)" +msgstr "## [Ciencia abierta]({{page.root}}/10-open/)" + +# header +#: git-novice/_locale/es/_extras/guide.md:210 +msgid "## [Licencias]({{page.root}}/11-licensing/)" +msgstr "## [Licencias]({{page.root}}/11-licensing/)" + +#: git-novice/_locale/es/_extras/guide.md:212 +msgid "Enseñamos sobre licencias porque preguntas sobre quién posee qué o qué puede usar qué, surgen naturalmente una vez que comenzamos a hablar sobre el uso de servicios públicos como GitHub para almacenar archivos. Además, la discusión les da a los estudiantes la oportunidad de atrapar su aliento después de lo que a menudo es un par de horas frustrantes." +msgstr "Enseñamos sobre licencias porque preguntas sobre quién posee qué o qué puede usar qué, surgen naturalmente una vez que comenzamos a hablar sobre el uso de servicios públicos como GitHub para almacenar archivos. Además, la discusión les da a los estudiantes la oportunidad de atrapar su aliento después de lo que a menudo es un par de horas frustrantes." + +# header +#: git-novice/_locale/es/_extras/guide.md:216 +msgid "## [Alojamiento]({{page.root}}/13-hosting/)" +msgstr "## [Alojamiento]({{page.root}}/13-hosting/)" + +#: git-novice/_locale/es/_extras/guide.md:218 +msgid "Una preocupación común para los estudiantes es tener su trabajo a disposición del público en GitHub. Si bien fomentamos la ciencia abierta, a veces los repos privados son única opción. Siempre es interesante mencionar las opciones para tener repositorios privados alojados en la web." +msgstr "Una preocupación común para los estudiantes es tener su trabajo a disposición del público en GitHub. Si bien fomentamos la ciencia abierta, a veces los repos privados son única opción. Siempre es interesante mencionar las opciones para tener repositorios privados alojados en la web." + +#: git-novice/_locale/es/_extras/guide.md:220 +msgid "" +"[code-school]: https://www.codeschool.com/\n" +"[diffmerge]: https://sourcegear.com/diffmerge/\n" +"[dibujos]: https://marklodato.github.io/visual-git-guide/index-en.html\n" +"[git-it]: https://github.com/jlord/git-it\n" +"[git-it-electron]: https://github.com/jlord/git-it-electron\n" +"[git-parábola]: http://tom.preston-werner.com/2009/05/19/the-git-parable.html\n" +"[github]: https://github.com/\n" +"[github-gui]: http://git-scm.com/downloads/guis\n" +"[github-line-endings]: https://help.github.com/articles/dealing-with-line-endings/#platform-all\n" +"[github-privacy]: https://help.github.com/articles/ keeping-your-email-address-private/\n" +"[repos-in-repos]: https://github.com/swcarpentry/git-novice/issues/272\n" +"[try-git]: https://try.github.io" +msgstr "" +"[code-school]: https://www.codeschool.com/\n" +"[diffmerge]: https://sourcegear.com/diffmerge/\n" +"[dibujos]: https://marklodato.github.io/visual-git-guide/index-en.html\n" +"[git-it]: https://github.com/jlord/git-it\n" +"[git-it-electron]: https://github.com/jlord/git-it-electron\n" +"[git-parábola]: http://tom.preston-werner.com/2009/05/19/the-git-parable.html\n" +"[github]: https://github.com/\n" +"[github-gui]: http://git-scm.com/downloads/guis\n" +"[github-line-endings]: https://help.github.com/articles/dealing-with-line-endings/#platform-all\n" +"[github-privacy]: https://help.github.com/articles/ keeping-your-email-address-private/\n" +"[repos-in-repos]: https://github.com/swcarpentry/git-novice/issues/272\n" +"[try-git]: https://try.github.io" + +# Front Matter +#: git-novice/_locale/es/aio.md:1 git-novice/aio.md:1 +msgid "" +"---\n" +"layout: page \n" +"permalink: /aio/\n" +"---" +msgstr "" +"---\n" +"layout: page \n" +"permalink: /aio/\n" +"---" + +# inline html +#: git-novice/_locale/es/aio.md:5 git-novice/aio.md:5 +msgid "" +"" +msgstr "" +"" + +#: git-novice/_locale/es/aio.md:31 git-novice/aio.md:31 +msgid "" +"{% comment %}\n" +"Create anchor for each one of the episodes.\n" +"{% endcomment %}\n" +"{% for episode in site.episodes %}\n" +"
\n" +"{% endfor %}" +msgstr "" +"{% comment %}\n" +"Create anchor for each one of the episodes.\n" +"{% endcomment %}\n" +"{% for episode in site.episodes %}\n" +"
\n" +"{% endfor %}" + +# Front Matter +#: git-novice/_locale/es/index.md:1 git-novice/index.md:1 +msgid "" +"---\n" +"layout: lesson\n" +"root: .\n" +"---" +msgstr "" +"---\n" +"layout: lesson\n" +"root: .\n" +"---" + +#: git-novice/_locale/es/index.md:6 +msgid "" +"Para ilustrar el poder de Git y GitHub, usaremos la siguiente historia \n" +"como un ejemplo motivador a través de esta lección.\n" +"El Hombre Lobo y Drácula han sido contratados por Universal Missions para investigar si es\n" +"posible enviar su próximo explorador planetario a Marte. Ellos quieren\n" +"poder trabajar al mismo tiempo en los planes, pero ya han experimentado\n" +"ciertos problemas anteriormente al hacer algo similar. Si se rotan por\n" +"turnos entonces cada uno gastará mucho tiempo esperando a que el otro\n" +"termine, pero si trabajan en sus propias copias e intercambian los cambios\n" +"por email, las cosas se perderán, se sobreescribirán o se duplicarán." +msgstr "" +"Para ilustrar el poder de Git y GitHub, usaremos la siguiente historia \n" +"como un ejemplo motivador a través de esta lección.\n" +"El Hombre Lobo y Drácula han sido contratados por Universal Missions para investigar si es\n" +"posible enviar su próximo explorador planetario a Marte. Ellos quieren\n" +"poder trabajar al mismo tiempo en los planes, pero ya han experimentado\n" +"ciertos problemas anteriormente al hacer algo similar. Si se rotan por\n" +"turnos entonces cada uno gastará mucho tiempo esperando a que el otro\n" +"termine, pero si trabajan en sus propias copias e intercambian los cambios\n" +"por email, las cosas se perderán, se sobreescribirán o se duplicarán." + +#: git-novice/_locale/es/index.md:16 +msgid "" +"Un colega sugiere utilizar [control de versiones]({{ page.root }}/reference/#version-control)\n" +"para lidiar con el trabajo. El control de versiones es mejor que el intercambio de ficheros por email:" +msgstr "" +"Un colega sugiere utilizar [control de versiones]({{ page.root }}/reference/#version-control)\n" +"para lidiar con el trabajo. El control de versiones es mejor que el intercambio de ficheros por email:" + +# unordered list +#: git-novice/_locale/es/index.md:19 +msgid "* Nada se pierde una vez que se incluye bajo control de versiones," +msgstr "* Nada se pierde una vez que se incluye bajo control de versiones," + +#: git-novice/_locale/es/index.md:20 +msgid "" +" a no ser que se haga un esfuerzo sustancial. Como se van guardando\n" +" todas las versiones precedentes de los ficheros, siempre es posible\n" +" volver atrás en el tiempo y ver exactamente quién escribió qué en\n" +" un día en particular, o qué versión de un programa fue utilizada\n" +" para generar un conjunto de resultados en particular." +msgstr "" +" a no ser que se haga un esfuerzo sustancial. Como se van guardando\n" +" todas las versiones precedentes de los ficheros, siempre es posible\n" +" volver atrás en el tiempo y ver exactamente quién escribió qué en\n" +" un día en particular, o qué versión de un programa fue utilizada\n" +" para generar un conjunto de resultados en particular." + +# unordered list +#: git-novice/_locale/es/index.md:26 +msgid "* Como se tienen estos registros de quién hizo qué y en qué momento," +msgstr "* Como se tienen estos registros de quién hizo qué y en qué momento," + +#: git-novice/_locale/es/index.md:27 +msgid "" +" es posible saber a quién preguntar si se tiene una pregunta en un\n" +" momento posterior y, si es necesario, revertir el contenido a una\n" +" versión anterior, de forma similar a como funciona el comando \"deshacer\"\n" +" de los editores de texto." +msgstr "" +" es posible saber a quién preguntar si se tiene una pregunta en un\n" +" momento posterior y, si es necesario, revertir el contenido a una\n" +" versión anterior, de forma similar a como funciona el comando \"deshacer\"\n" +" de los editores de texto." + +# unordered list +#: git-novice/_locale/es/index.md:32 +msgid "* Cuando varias personas colaboran en el mismo proyecto, es posible" +msgstr "* Cuando varias personas colaboran en el mismo proyecto, es posible" + +#: git-novice/_locale/es/index.md:33 +msgid "" +" pasar por alto o sobreescribir de manera accidental los cambios\n" +" hechos por otra persona. El sistema de control de versiones\n" +" notifica automáticamente a los usuarios cada vez que hay un\n" +" conflicto entre el trabajo de una persona y la otra." +msgstr "" +" pasar por alto o sobreescribir de manera accidental los cambios\n" +" hechos por otra persona. El sistema de control de versiones\n" +" notifica automáticamente a los usuarios cada vez que hay un\n" +" conflicto entre el trabajo de una persona y la otra." + +#: git-novice/_locale/es/index.md:38 +msgid "" +"Los equipos no son los únicos que se benefician del control de\n" +"versiones: los investigadores independientes se pueden beneficiar\n" +"en gran medida. Mantener un registro de qué ha cambiado,\n" +"cuándo y por qué es extremadamente útil para todos los investigadores\n" +"si alguna vez necesitan retomar el proyecto en un momento\n" +"posterior (e.g. un año después, cuando se ha desvanecido el\n" +"recuerdo de los detalles)." +msgstr "" +"Los equipos no son los únicos que se benefician del control de\n" +"versiones: los investigadores independientes se pueden beneficiar\n" +"en gran medida. Mantener un registro de qué ha cambiado,\n" +"cuándo y por qué es extremadamente útil para todos los investigadores\n" +"si alguna vez necesitan retomar el proyecto en un momento\n" +"posterior (e.g. un año después, cuando se ha desvanecido el\n" +"recuerdo de los detalles)." + +#: git-novice/_locale/es/index.md:46 git-novice/index.md:39 +msgid "" +"Version control is the lab notebook of the digital world: it's what\n" +"professionals use to keep track of what they've done and to\n" +"collaborate with other people. Every large software development\n" +"project relies on it, and most programmers use it for their small jobs\n" +"as well. And it isn't just for software: books,\n" +"papers, small data sets, and anything that changes over time or needs\n" +"to be shared can and should be stored in a version control system." +msgstr "" +"Version control is the lab notebook of the digital world: it's what\n" +"professionals use to keep track of what they've done and to\n" +"collaborate with other people. Every large software development\n" +"project relies on it, and most programmers use it for their small jobs\n" +"as well. And it isn't just for software: books,\n" +"papers, small data sets, and anything that changes over time or needs\n" +"to be shared can and should be stored in a version control system." + +# blockquote, which can be cascaded +#: git-novice/_locale/es/index.md:54 +msgid "> ## Pre-requisitos" +msgstr "> ## Pre-requisitos" + +#: git-novice/_locale/es/index.md:55 +msgid "" +">\n" +"> En esta lección utilizamos Git desde el terminal de Unix. \n" +"> Se espera de los participantes alguna experiencia previa,\n" +"> *pero esto no es requisito indispensable*." +msgstr "" +">\n" +"> En esta lección utilizamos Git desde el terminal de Unix. \n" +"> Se espera de los participantes alguna experiencia previa,\n" +"> *pero esto no es requisito indispensable*." + +# SC/DC Template label +#: git-novice/_locale/es/index.md:59 git-novice/index.md:52 +msgid "{: .prereq}" +msgstr "{: .prereq}" + +# Front Matter +#: git-novice/_locale/es/lang.md:1 +msgid "" +"---\n" +"home: Inicio\n" +"CoC: Codigo de Conducta\n" +"setup: Configuración\n" +"episodes: Episodes\n" +"extras: Extras\n" +"license: Licencia\n" +"improve: Mejora esta página\n" +"reference: Referencias\n" +"aio: Todo en uno\n" +"schedule: Horario\n" +"search: Buscar\n" +"edit: Editar en GitHub\n" +"contribute: Contribuir\n" +"source: Fuente\n" +"cite: Citar\n" +"contact: Contacto\n" +"keypoins: Puntos Clave\n" +"overview: Resumen\n" +"break: Pausa\n" +"previous: anterior\n" +"next: siguiente\n" +"episode: episodio\n" +"lessonHome: Inicio de la lección\n" +"teaching: Enseñando\n" +"exercises: Ejercisios\n" +"min: min\n" +"questions: Preguntas\n" +"objectives: Objectivos\n" +"downloadLesson: \"Descarga los ficheros necesarios para la lección\"\n" +"finish: \"Fin\"\n" +"scheduleDisclaimer: El horario durante la lección puede variar a según los temas y preguntas que eliga el instructor.\n" +"---" +msgstr "" +"---\n" +"home: Inicio\n" +"CoC: Codigo de Conducta\n" +"setup: Configuración\n" +"episodes: Episodes\n" +"extras: Extras\n" +"license: Licencia\n" +"improve: Mejora esta página\n" +"reference: Referencias\n" +"aio: Todo en uno\n" +"schedule: Horario\n" +"search: Buscar\n" +"edit: Editar en GitHub\n" +"contribute: Contribuir\n" +"source: Fuente\n" +"cite: Citar\n" +"contact: Contacto\n" +"keypoins: Puntos Clave\n" +"overview: Resumen\n" +"break: Pausa\n" +"previous: anterior\n" +"next: siguiente\n" +"episode: episodio\n" +"lessonHome: Inicio de la lección\n" +"teaching: Enseñando\n" +"exercises: Ejercisios\n" +"min: min\n" +"questions: Preguntas\n" +"objectives: Objectivos\n" +"downloadLesson: \"Descarga los ficheros necesarios para la lección\"\n" +"finish: \"Fin\"\n" +"scheduleDisclaimer: El horario durante la lección puede variar a según los temas y preguntas que eliga el instructor.\n" +"---" + +# Front Matter +#: git-novice/_locale/es/reference.md:1 git-novice/reference.md:1 +msgid "" +"---\n" +"layout: reference\n" +"\n" +"---" +msgstr "" +"---\n" +"layout: reference\n" +"\n" +"---" + +# header +#: git-novice/_locale/es/reference.md:6 +msgid "## Cheatsheets de Git para Referencia Rápida" +msgstr "## Cheatsheets de Git para Referencia Rápida" + +# unordered list +#: git-novice/_locale/es/reference.md:8 +msgid "* Un excelente [cheatsheet de git listo para impresión](https://services.github.com/on-demand/downloads/github-git-cheat-sheet.pdf) está disponible en formato PDF desde" +msgstr "* Un excelente [cheatsheet de git listo para impresión](https://services.github.com/on-demand/downloads/github-git-cheat-sheet.pdf) está disponible en formato PDF desde" + +#: git-novice/_locale/es/reference.md:9 +msgid "" +"[el sitio de preparación de GitHub](https://services.github.com/resources/).\n" +"* Una [visualización interactiva](http://ndpsoftware.com/git-cheatsheet.html)\n" +" sobre las relaciones entre entorno de trabajo, área de staging, repositorio local y remoto, así los comandos asociados con cada caso (y sus explicaciones)\n" +"* Ambos recursos están disponibles en varios lenguajes e.g. español, francés, y muchos más." +msgstr "" +"[el sitio de preparación de GitHub](https://services.github.com/resources/).\n" +"* Una [visualización interactiva](http://ndpsoftware.com/git-cheatsheet.html)\n" +" sobre las relaciones entre entorno de trabajo, área de staging, repositorio local y remoto, así los comandos asociados con cada caso (y sus explicaciones)\n" +"* Ambos recursos están disponibles en varios lenguajes e.g. español, francés, y muchos más." + +# header +#: git-novice/_locale/es/reference.md:14 +msgid "## Glosario" +msgstr "## Glosario" + +#: git-novice/_locale/es/reference.md:16 +msgid "" +"{:auto_ids}\n" +"changeset\n" +": Un grupo de cambios a uno o más ficheros que son o serán añadidos\n" +" en un solo [commit](#commit) en un [repositorio](#repositorio)\n" +" de [control de versiones](#control-de-versiones)." +msgstr "" +"{:auto_ids}\n" +"changeset\n" +": Un grupo de cambios a uno o más ficheros que son o serán añadidos\n" +" en un solo [commit](#commit) en un [repositorio](#repositorio)\n" +" de [control de versiones](#control-de-versiones)." + +#: git-novice/_locale/es/reference.md:22 +msgid "" +"commit\n" +": Como verbo *hacer un commit* es la acción de registrar el estado\n" +" de un conjunto de ficheros en un momento determinado (un [changeset](#changeset))\n" +" en un [repositorio](#repositorio) de [control de versiones](#control-de-versiones). Como sustantivo,\n" +" *un commit* es el resultado de esta acción, i.e. un changeset almacenado en un repositorio.\n" +" Si un commit contiene cambios hechos a múltiples ficheros,\n" +" todos los cambios son almacenados juntos." +msgstr "" +"commit\n" +": Como verbo *hacer un commit* es la acción de registrar el estado\n" +" de un conjunto de ficheros en un momento determinado (un [changeset](#changeset))\n" +" en un [repositorio](#repositorio) de [control de versiones](#control-de-versiones). Como sustantivo,\n" +" *un commit* es el resultado de esta acción, i.e. un changeset almacenado en un repositorio.\n" +" Si un commit contiene cambios hechos a múltiples ficheros,\n" +" todos los cambios son almacenados juntos." + +#: git-novice/_locale/es/reference.md:30 +msgid "" +"conflicto\n" +": Un cambio hecho por un usuario de un [sistema de control de versiones](#control-de-versiones)\n" +" que es incompatible con cambios hechos por otros usuarios.\n" +" Asistir a los usuarios a [resolver](#resolver) conflictos\n" +" es una de las funciones más importantes del control de versiones." +msgstr "" +"conflicto\n" +": Un cambio hecho por un usuario de un [sistema de control de versiones](#control-de-versiones)\n" +" que es incompatible con cambios hechos por otros usuarios.\n" +" Asistir a los usuarios a [resolver](#resolver) conflictos\n" +" es una de las funciones más importantes del control de versiones." + +#: git-novice/_locale/es/reference.md:36 +msgid "" +"HTTP\n" +": Siglas de Hypertext Transfer Protocol, el [protocolo](#protocolo) utilizado para compartir páginas web y otros datos\n" +" en la World Wide Web." +msgstr "" +"HTTP\n" +": Siglas de Hypertext Transfer Protocol, el [protocolo](#protocolo) utilizado para compartir páginas web y otros datos\n" +" en la World Wide Web." + +#: git-novice/_locale/es/reference.md:40 +msgid "" +"mezclar\n" +": (un repositorio): Reconciliar dos conjuntos de cambios en un\n" +" [repositorio](#repositorio)." +msgstr "" +"mezclar\n" +": (un repositorio): Reconciliar dos conjuntos de cambios en un\n" +" [repositorio](#repositorio)." + +#: git-novice/_locale/es/reference.md:44 +msgid "" +"protocolo\n" +": Un conjunto de reglas que definen cómo una computadora se comunica con otra.\n" +" Entre los protocolos más utilizados en la Internet se encuentran [HTTP](#http) y [SSH](#ssh)." +msgstr "" +"protocolo\n" +": Un conjunto de reglas que definen cómo una computadora se comunica con otra.\n" +" Entre los protocolos más utilizados en la Internet se encuentran [HTTP](#http) y [SSH](#ssh)." + +#: git-novice/_locale/es/reference.md:48 +msgid "" +"remote\n" +": (de un repositorio) Un [repositorio](#repositorio) de [control de versiones](#control-de-versiones) conectado con otro\n" +" de forma tal que ambos pueden ser actualizados intercambiando [commits](#commit)." +msgstr "" +"remote\n" +": (de un repositorio) Un [repositorio](#repositorio) de [control de versiones](#control-de-versiones) conectado con otro\n" +" de forma tal que ambos pueden ser actualizados intercambiando [commits](#commit)." + +#: git-novice/_locale/es/reference.md:52 +msgid "" +"repositorio\n" +": Un área de almacenamiento donde un sistema de [control de versiones](#control-de-versiones)\n" +" almacena la historia completa de [commits](#commit) de un proyecto, así como información\n" +" sobre quién cambio qué, cuándo." +msgstr "" +"repositorio\n" +": Un área de almacenamiento donde un sistema de [control de versiones](#control-de-versiones)\n" +" almacena la historia completa de [commits](#commit) de un proyecto, así como información\n" +" sobre quién cambio qué, cuándo." + +#: git-novice/_locale/es/reference.md:57 +msgid "" +"resolver\n" +": Eliminar los [conflictos](#conflicto) entre dos o más cambios incompatibles sobre un fichero o un conjunto de ficheros\n" +" administrados por un sistema de [control de versiones](#control-de-versiones)." +msgstr "" +"resolver\n" +": Eliminar los [conflictos](#conflicto) entre dos o más cambios incompatibles sobre un fichero o un conjunto de ficheros\n" +" administrados por un sistema de [control de versiones](#control-de-versiones)." + +#: git-novice/_locale/es/reference.md:61 +msgid "" +"revisión\n" +": Un sinónimo de [commit](#commit)." +msgstr "" +"revisión\n" +": Un sinónimo de [commit](#commit)." + +#: git-novice/_locale/es/reference.md:64 +msgid "" +"SHA-1\n" +": [SHA-1 hashes](http://en.wikipedia.org/wiki/SHA-1) es lo que Git utiliza para generar identificadores, incluyendo los de los commits.\n" +" Para calcularlos, Git no solamente utiliza los cambios que forman parte de un commit, sino también sus metadatos (tales como fecha, autor,\n" +" mensaje), incluyendo los identificadores de todos los commits hechos para cambios anteriores. Esto hace que los ID de commits de Git san virtualmente únicos.\n" +" I.e., es ínfima la probabilidad de que un mismo ID se refiera a dos commits hechos de forma independiente, incluso si tuvieran los mismos cambios." +msgstr "" +"SHA-1\n" +": [SHA-1 hashes](http://en.wikipedia.org/wiki/SHA-1) es lo que Git utiliza para generar identificadores, incluyendo los de los commits.\n" +" Para calcularlos, Git no solamente utiliza los cambios que forman parte de un commit, sino también sus metadatos (tales como fecha, autor,\n" +" mensaje), incluyendo los identificadores de todos los commits hechos para cambios anteriores. Esto hace que los ID de commits de Git san virtualmente únicos.\n" +" I.e., es ínfima la probabilidad de que un mismo ID se refiera a dos commits hechos de forma independiente, incluso si tuvieran los mismos cambios." + +#: git-novice/_locale/es/reference.md:70 +msgid "" +"SSH\n" +": Abreviatura de Secure Shell, un [protocolo](#protocolo) utilizado para la comunicación de forma segura entre computadoras." +msgstr "" +"SSH\n" +": Abreviatura de Secure Shell, un [protocolo](#protocolo) utilizado para la comunicación de forma segura entre computadoras." + +#: git-novice/_locale/es/reference.md:73 +msgid "" +"timestamp\n" +": Un registro de cuando ocurrió un evento específico." +msgstr "" +"timestamp\n" +": Un registro de cuando ocurrió un evento específico." + +#: git-novice/_locale/es/reference.md:76 +msgid "" +"control de versiones\n" +": Una herramienta para administrar los cambios hechos a un conjunto de ficheros.\n" +" Cada conjunto de cambios crea un nuevo[commit](#commit) de los ficheros;\n" +" el sistema de control de versiones permite a los usuarios recibir de manera fiable los commits precedentes,\n" +" y ayuda a solventar cambios conflictivos hechos por diferentes usuarios." +msgstr "" +"control de versiones\n" +": Una herramienta para administrar los cambios hechos a un conjunto de ficheros.\n" +" Cada conjunto de cambios crea un nuevo[commit](#commit) de los ficheros;\n" +" el sistema de control de versiones permite a los usuarios recibir de manera fiable los commits precedentes,\n" +" y ayuda a solventar cambios conflictivos hechos por diferentes usuarios." + +# Front Matter +#: git-novice/_locale/es/setup.md:1 +msgid "" +"---\n" +"layout: page\n" +"title: Setup\n" +"permalink: /es/setup/\n" +"---" +msgstr "" +"---\n" +"layout: page\n" +"title: Setup\n" +"permalink: /es/setup/\n" +"---" + +#: git-novice/_locale/es/setup.md:7 +msgid "" +"Por favor consulte [esta sección de la plantilla de los talleres][workshop-setup]\n" +"para conocer más instrucciones de instalación de Git." +msgstr "" +"Por favor consulte [esta sección de la plantilla de los talleres][workshop-setup]\n" +"para conocer más instrucciones de instalación de Git." + +#: git-novice/_locale/es/setup.md:10 +msgid "Haremos nuestro trabajo en la carpeta `Desktop`. Por favor asegúrese de cambiar su directorio de trabajo con:" +msgstr "Haremos nuestro trabajo en la carpeta `Desktop`. Por favor asegúrese de cambiar su directorio de trabajo con:" + +# code block +#: git-novice/_locale/es/setup.md:12 git-novice/setup.md:11 +msgid "" +"~~~\n" +"$ cd\n" +"$ cd Desktop\n" +"~~~" +msgstr "" +"~~~\n" +"$ cd\n" +"$ cd Desktop\n" +"~~~" + +#: git-novice/_locale/es/setup.md:18 git-novice/setup.md:17 +msgid "[workshop-setup]: https://carpentries.github.io/workshop-template/#git" +msgstr "[workshop-setup]: https://carpentries.github.io/workshop-template/#git" + +#: git-novice/index.md:6 +msgid "" +"Wolfman and Dracula have been hired by Universal Missions (a space\n" +"services spinoff from Euphoric State University) to investigate if it\n" +"is possible to send their next planetary lander to Mars. They want to\n" +"be able to work on the plans at the same time, but they have run into\n" +"problems doing this in the past. If they take turns, each one will\n" +"spend a lot of time waiting for the other to finish, but if they work\n" +"on their own copies and email changes back and forth things will be\n" +"lost, overwritten, or duplicated." +msgstr "" +"どドラえもんとのび太はユニバーサル・ミッションズ(ユーフォーリック州立大学の\n" +"スピンオフ宇宙サービス)に雇われ、次の惑星着陸機を送って次の惑星着陸機を\n" +"火星に送ることができるかどうかを調査しました。 彼らは同時に計画でも働くことが\n" +"できるようにしたい、彼らが問題を抱えている場合、彼らは過去にあります。私たちは\n" +"終了するのに多くの時間を費やしましたが、らは自分のコピーと電子メールの変更を\n" +"元に戻します 上書きされたり、複製されたりすることがあります。" + +#: git-novice/index.md:15 +msgid "" +"A colleague suggests using [version control]({{ page.root }}/reference#version-control) to\n" +"manage their work. Version control is better than mailing files back and forth:" +msgstr "" +"同僚は、[バーションの管理は]({{page.root}} / reference#version-control)を使って作業を\n" +"管理することを提案しています。 バーションの管理を使うはファイルを前後にメールするよりも優れています:" + +# unordered list +#: git-novice/index.md:18 +msgid "* Nothing that is committed to version control is ever lost, unless" +msgstr "* Nothing that is committed to version control is ever lost, unless" + +#: git-novice/index.md:19 +msgid "" +" you work really, really hard at it. Since all old versions of\n" +" files are saved, it's always possible to go back in time to see\n" +" exactly who wrote what on a particular day, or what version of a\n" +" program was used to generate a particular set of results." +msgstr "" +" you work really, really hard at it. Since all old versions of\n" +" files are saved, it's always possible to go back in time to see\n" +" exactly who wrote what on a particular day, or what version of a\n" +" program was used to generate a particular set of results." + +# unordered list +#: git-novice/index.md:24 +msgid "* As we have this record of who made what changes when, we know who to ask" +msgstr "* As we have this record of who made what changes when, we know who to ask" + +#: git-novice/index.md:25 +msgid "" +" if we have questions later on, and, if needed, revert to a previous\n" +" version, much like the \"undo\" feature in an editor." +msgstr "" +" if we have questions later on, and, if needed, revert to a previous\n" +" version, much like the \"undo\" feature in an editor." + +# unordered list +#: git-novice/index.md:28 +msgid "* When several people collaborate in the same project, it's possible to" +msgstr "* When several people collaborate in the same project, it's possible to" + +#: git-novice/index.md:29 +msgid "" +" accidentally overlook or overwrite someone's changes. The version control\n" +" system automatically notifies users whenever there's a conflict between one\n" +" person's work and another's." +msgstr "" +" accidentally overlook or overwrite someone's changes. The version control\n" +" system automatically notifies users whenever there's a conflict between one\n" +" person's work and another's." + +#: git-novice/index.md:33 +msgid "" +"Teams are not the only ones to benefit from version control: lone\n" +"researchers can benefit immensely. Keeping a record of what was\n" +"changed, when, and why is extremely useful for all researchers if they\n" +"ever need to come back to the project later on (e.g., a year later,\n" +"when memory has faded)." +msgstr "" +"Teams are not the only ones to benefit from version control: lone\n" +"researchers can benefit immensely. Keeping a record of what was\n" +"changed, when, and why is extremely useful for all researchers if they\n" +"ever need to come back to the project later on (e.g., a year later,\n" +"when memory has faded)." + +# blockquote, which can be cascaded +#: git-novice/index.md:47 +msgid "> ## Prerequisites" +msgstr "> ## Prerequisites" + +#: git-novice/index.md:48 +msgid "" +">\n" +"> In this lesson we use Git from the Unix Shell.\n" +"> Some previous experience with the shell is expected,\n" +"> *but isn't mandatory*." +msgstr "" +">\n" +"> In this lesson we use Git from the Unix Shell.\n" +"> Some previous experience with the shell is expected,\n" +"> *but isn't mandatory*." + +# header +#: git-novice/reference.md:6 +msgid "## Git Cheatsheets for Quick Reference" +msgstr "## Git Cheatsheets for Quick Reference" + +# unordered list +#: git-novice/reference.md:8 +msgid "* A great [printable git cheatsheet](https://services.github.com/on-demand/downloads/github-git-cheat-sheet.pdf) is available in PDF from the" +msgstr "* A great [printable git cheatsheet](https://services.github.com/on-demand/downloads/github-git-cheat-sheet.pdf) is available in PDF from the" + +#: git-novice/reference.md:9 +msgid "" +"[GitHub training website](https://services.github.com/resources/).\n" +"* An [interactive one-page visualisation](http://ndpsoftware.com/git-cheatsheet.html)\n" +" about the relationships between workspace, staging area, local repository, upstream repository, and the commands associated with each (with explanations).\n" +"* Both resources are also available in other languages (e.g. Spanish, French, and more).\n" +"* \"[Happy Git and GitHub for the useR](http://happygitwithr.com)\" is an accessible, free online book by Jenny Bryan on how to setup and use git and GitHub with specific references on the integration of git with RStudio and working with git in R." +msgstr "" +"[GitHub training website](https://services.github.com/resources/).\n" +"* An [interactive one-page visualisation](http://ndpsoftware.com/git-cheatsheet.html)\n" +" about the relationships between workspace, staging area, local repository, upstream repository, and the commands associated with each (with explanations).\n" +"* Both resources are also available in other languages (e.g. Spanish, French, and more).\n" +"* \"[Happy Git and GitHub for the useR](http://happygitwithr.com)\" is an accessible, free online book by Jenny Bryan on how to setup and use git and GitHub with specific references on the integration of git with RStudio and working with git in R." + +# header +#: git-novice/reference.md:15 +msgid "## Glossary" +msgstr "## Glossary" + +#: git-novice/reference.md:17 +msgid "" +"{:auto_ids}\n" +"changeset\n" +": A group of changes to one or more files that are or will be added\n" +" to a single [commit](#commit) in a [version control](#version-control)\n" +" [repository](#repository)." +msgstr "" +"{:auto_ids}\n" +"changeset\n" +": A group of changes to one or more files that are or will be added\n" +" to a single [commit](#commit) in a [version control](#version-control)\n" +" [repository](#repository)." + +#: git-novice/reference.md:23 +msgid "" +"commit\n" +": To record the current state of a set of files (a [changeset](#changeset))\n" +" in a [version control](#version-control) [repository](#repository). As a noun,\n" +" the result of committing, i.e. a recorded changeset in a repository.\n" +" If a commit contains changes to multiple files,\n" +" all of the changes are recorded together." +msgstr "" +"commit\n" +": To record the current state of a set of files (a [changeset](#changeset))\n" +" in a [version control](#version-control) [repository](#repository). As a noun,\n" +" the result of committing, i.e. a recorded changeset in a repository.\n" +" If a commit contains changes to multiple files,\n" +" all of the changes are recorded together." + +#: git-novice/reference.md:30 +msgid "" +"conflict\n" +": A change made by one user of a [version control system](#version-control)\n" +" that is incompatible with changes made by other users.\n" +" Helping users [resolve](#resolve) conflicts\n" +" is one of version control's major tasks." +msgstr "" +"conflict\n" +": A change made by one user of a [version control system](#version-control)\n" +" that is incompatible with changes made by other users.\n" +" Helping users [resolve](#resolve) conflicts\n" +" is one of version control's major tasks." + +#: git-novice/reference.md:36 +msgid "" +"HTTP\n" +": The Hypertext Transfer [Protocol](#protocol) used for sharing web pages and other data\n" +" on the World Wide Web." +msgstr "" +"HTTP\n" +": The Hypertext Transfer [Protocol](#protocol) used for sharing web pages and other data\n" +" on the World Wide Web." + +#: git-novice/reference.md:40 +msgid "" +"merge\n" +": (a repository): To reconcile two sets of changes to a\n" +" [repository](#repository)." +msgstr "" +"merge\n" +": (a repository): To reconcile two sets of changes to a\n" +" [repository](#repository)." + +#: git-novice/reference.md:44 +msgid "" +"protocol\n" +": A set of rules that define how one computer communicates with another.\n" +" Common protocols on the Internet include [HTTP](#http) and [SSH](#ssh)." +msgstr "" +"protocol\n" +": A set of rules that define how one computer communicates with another.\n" +" Common protocols on the Internet include [HTTP](#http) and [SSH](#ssh)." + +#: git-novice/reference.md:48 +msgid "" +"remote\n" +": (of a repository) A version control [repository](#repository) connected to another,\n" +" in such way that both can be kept in sync exchanging [commits](#commit)." +msgstr "" +"remote\n" +": (of a repository) A version control [repository](#repository) connected to another,\n" +" in such way that both can be kept in sync exchanging [commits](#commit)." + +#: git-novice/reference.md:52 +msgid "" +"repository\n" +": A storage area where a [version control](#version-control) system\n" +" stores the full history of [commits](#commit) of a project and information\n" +" about who changed what, when." +msgstr "" +"repository\n" +": A storage area where a [version control](#version-control) system\n" +" stores the full history of [commits](#commit) of a project and information\n" +" about who changed what, when." + +#: git-novice/reference.md:57 +msgid "" +"resolve\n" +": To eliminate the [conflicts](#conflict) between two or more incompatible changes to a file or set of files\n" +" being managed by a [version control](#version-control) system." +msgstr "" +"resolve\n" +": To eliminate the [conflicts](#conflict) between two or more incompatible changes to a file or set of files\n" +" being managed by a [version control](#version-control) system." + +#: git-novice/reference.md:61 +msgid "" +"revision\n" +": A synonym for [commit](#commit)." +msgstr "" +"revision\n" +": A synonym for [commit](#commit)." + +#: git-novice/reference.md:64 +msgid "" +"SHA-1\n" +": [SHA-1 hashes](https://en.wikipedia.org/wiki/SHA-1) is what Git uses to compute identifiers, including for commits.\n" +" To compute these, Git uses not only the actual change of a commit, but also its metadata (such as date, author,\n" +" message), including the identifiers of all commits of preceding changes. This makes Git commit IDs virtually unique.\n" +" I.e., the likelihood that two commits made independently, even of the same change, receive the same ID is exceedingly\n" +" small." +msgstr "" +"SHA-1\n" +": [SHA-1 hashes](https://en.wikipedia.org/wiki/SHA-1) is what Git uses to compute identifiers, including for commits.\n" +" To compute these, Git uses not only the actual change of a commit, but also its metadata (such as date, author,\n" +" message), including the identifiers of all commits of preceding changes. This makes Git commit IDs virtually unique.\n" +" I.e., the likelihood that two commits made independently, even of the same change, receive the same ID is exceedingly\n" +" small." + +#: git-novice/reference.md:71 +msgid "" +"SSH\n" +": The Secure Shell [protocol](#protocol) used for secure communication between computers." +msgstr "" +"SSH\n" +": The Secure Shell [protocol](#protocol) used for secure communication between computers." + +#: git-novice/reference.md:74 +msgid "" +"timestamp\n" +": A record of when a particular event occurred." +msgstr "" +"timestamp\n" +": A record of when a particular event occurred." + +#: git-novice/reference.md:77 +msgid "" +"version control\n" +": A tool for managing changes to a set of files.\n" +" Each set of changes creates a new [commit](#commit) of the files;\n" +" the version control system allows users to recover old commits reliably,\n" +" and helps manage conflicting changes made by different users." +msgstr "" +"version control\n" +": A tool for managing changes to a set of files.\n" +" Each set of changes creates a new [commit](#commit) of the files;\n" +" the version control system allows users to recover old commits reliably,\n" +" and helps manage conflicting changes made by different users." + +# Front Matter +#: git-novice/setup.md:1 +msgid "" +"---\n" +"layout: page\n" +"title: Setup\n" +"---" +msgstr "" +"---\n" +"layout: page\n" +"title: Setup\n" +"---" + +#: git-novice/setup.md:6 +msgid "" +"Please see [this section of the workshop template][workshop-setup]\n" +"for instructions on installing Git." +msgstr "" +"Please see [this section of the workshop template][workshop-setup]\n" +"for instructions on installing Git." + +#: git-novice/setup.md:9 +msgid "We'll do our work in the `Desktop` folder so make sure you change your working directory to it with:" +msgstr "We'll do our work in the `Desktop` folder so make sure you change your working directory to it with:" diff --git a/po/.ancestors/.make-novice.ja.po.ancestor b/po/.ancestors/.make-novice.ja.po.ancestor new file mode 100644 index 00000000..9f9d1662 --- /dev/null +++ b/po/.ancestors/.make-novice.ja.po.ancestor @@ -0,0 +1,5667 @@ +# Japanese translation of the Software Carpentry ${repo} Lesson +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the git4pobook package. +# ${git_user} <${git_email}>, ${year}. +# +msgid "" +msgstr "" +"Project-Id-Version: i18n\n" +"Report-Msgid-Bugs-To: https://github.com/haiwen/seafile-docs/issues\n" +"POT-Creation-Date: 2020-01-22 00:16:46+0900\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: ja +" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: make-novice/CODE_OF_CONDUCT.md:1 +#: make-novice/bin/boilerplate/CODE_OF_CONDUCT.md:1 +# Front Matter +msgid "---\n" +"layout: page\n" +"title: \"Contributor Code of Conduct\"\n" +"---" +msgstr "" + +#: make-novice/CODE_OF_CONDUCT.md:5 +#: make-novice/bin/boilerplate/CODE_OF_CONDUCT.md:5 +msgid "As contributors and maintainers of this project,\n" +"we pledge to follow the [Carpentry Code of Conduct][coc]." +msgstr "" + +#: make-novice/CODE_OF_CONDUCT.md:8 +#: make-novice/bin/boilerplate/CODE_OF_CONDUCT.md:8 +msgid "Instances of abusive, harassing, or otherwise unacceptable behavior\n" +"may be reported by following our [reporting guidelines][coc-reporting]." +msgstr "" + +#: make-novice/CODE_OF_CONDUCT.md:11 +#: make-novice/bin/boilerplate/CODE_OF_CONDUCT.md:11 +#: make-novice/bin/boilerplate/_episodes/01-introduction.md:14 +#: make-novice/bin/boilerplate/_extras/discuss.md:6 +#: make-novice/bin/boilerplate/_extras/figures.md:40 +#: make-novice/bin/boilerplate/_extras/guide.md:6 +#: make-novice/bin/boilerplate/index.md:13 +#: make-novice/bin/boilerplate/reference.md:9 +#: make-novice/bin/boilerplate/setup.md:7 +msgid "{% include links.md %}" +msgstr "" + +#: make-novice/CONTRIBUTING.md:1 +#: make-novice/bin/boilerplate/CONTRIBUTING.md:1 +# header +msgid "# Contributing" +msgstr "" + +#: make-novice/CONTRIBUTING.md:3 +#: make-novice/bin/boilerplate/CONTRIBUTING.md:3 +msgid "[Software Carpentry][swc-site] and [Data Carpentry][dc-site] are open source projects,\n" +"and we welcome contributions of all kinds:\n" +"new lessons,\n" +"fixes to existing material,\n" +"bug reports,\n" +"and reviews of proposed changes are all welcome." +msgstr "" + +#: make-novice/CONTRIBUTING.md:10 +#: make-novice/bin/boilerplate/CONTRIBUTING.md:10 +# header +msgid "## Contributor Agreement" +msgstr "" + +#: make-novice/CONTRIBUTING.md:12 +msgid "By contributing,\n" +"you agree that we may redistribute your work under [our license](LICENSE.md).\n" +"In exchange,\n" +"we will address your issues and/or assess your change proposal as promptly as we can,\n" +"and help you become a member of our community.\n" +"Everyone involved in [Software Carpentry][swc-site] and [Data Carpentry][dc-site]\n" +"agrees to abide by our [code of conduct](CONDUCT.md)." +msgstr "" + +#: make-novice/CONTRIBUTING.md:20 +#: make-novice/bin/boilerplate/CONTRIBUTING.md:20 +# header +msgid "## How to Contribute" +msgstr "" + +#: make-novice/CONTRIBUTING.md:22 +#: make-novice/bin/boilerplate/CONTRIBUTING.md:22 +msgid "The easiest way to get started is to file an issue\n" +"to tell us about a spelling mistake,\n" +"some awkward wording,\n" +"or a factual error.\n" +"This is a good way to introduce yourself\n" +"and to meet some of our community members." +msgstr "" + +#: make-novice/CONTRIBUTING.md:29 +#: make-novice/bin/boilerplate/CONTRIBUTING.md:29 +# ordered list +msgid "1. If you do not have a [GitHub][github] account," +msgstr "" + +#: make-novice/CONTRIBUTING.md:30 +msgid " you can [send us comments by email][contact].\n" +" However,\n" +" we will be able to respond more quickly if you use one of the other methods described below." +msgstr "" + +#: make-novice/CONTRIBUTING.md:34 +#: make-novice/bin/boilerplate/CONTRIBUTING.md:34 +# ordered list +msgid "2. If you have a [GitHub][github] account," +msgstr "" + +#: make-novice/CONTRIBUTING.md:35 +#: make-novice/bin/boilerplate/CONTRIBUTING.md:35 +msgid " or are willing to [create one][github-join],\n" +" but do not know how to use Git,\n" +" you can report problems or suggest improvements by [creating an issue][issues].\n" +" This allows us to assign the item to someone\n" +" and to respond to it in a threaded discussion." +msgstr "" + +#: make-novice/CONTRIBUTING.md:41 +#: make-novice/bin/boilerplate/CONTRIBUTING.md:41 +# ordered list +msgid "3. If you are comfortable with Git," +msgstr "" + +#: make-novice/CONTRIBUTING.md:42 +#: make-novice/bin/boilerplate/CONTRIBUTING.md:42 +msgid " and would like to add or change material,\n" +" you can submit a pull request (PR).\n" +" Instructions for doing this are [included below](#using-github)." +msgstr "" + +#: make-novice/CONTRIBUTING.md:46 +#: make-novice/bin/boilerplate/CONTRIBUTING.md:46 +# header +msgid "## Where to Contribute" +msgstr "" + +#: make-novice/CONTRIBUTING.md:48 +#: make-novice/bin/boilerplate/CONTRIBUTING.md:48 +# ordered list +msgid "1. If you wish to change this lesson," +msgstr "" + +#: make-novice/CONTRIBUTING.md:49 +msgid " please work in ,\n" +" which can be viewed at ." +msgstr "" + +#: make-novice/CONTRIBUTING.md:52 +#: make-novice/bin/boilerplate/CONTRIBUTING.md:52 +# ordered list +msgid "2. If you wish to change the example lesson," +msgstr "" + +#: make-novice/CONTRIBUTING.md:53 +#: make-novice/bin/boilerplate/CONTRIBUTING.md:53 +msgid " please work in ,\n" +" which documents the format of our lessons\n" +" and can be viewed at ." +msgstr "" + +#: make-novice/CONTRIBUTING.md:57 +#: make-novice/bin/boilerplate/CONTRIBUTING.md:57 +# ordered list +msgid "3. If you wish to change the template used for workshop websites," +msgstr "" + +#: make-novice/CONTRIBUTING.md:58 +#: make-novice/bin/boilerplate/CONTRIBUTING.md:58 +msgid " please work in .\n" +" The home page of that repository explains how to set up workshop websites,\n" +" while the extra pages in \n" +" provide more background on our design choices." +msgstr "" + +#: make-novice/CONTRIBUTING.md:63 +#: make-novice/bin/boilerplate/CONTRIBUTING.md:63 +# ordered list +msgid "4. If you wish to change CSS style files, tools," +msgstr "" + +#: make-novice/CONTRIBUTING.md:64 +#: make-novice/bin/boilerplate/CONTRIBUTING.md:64 +msgid " or HTML boilerplate for lessons or workshops stored in `_includes` or `_layouts`,\n" +" please work in ." +msgstr "" + +#: make-novice/CONTRIBUTING.md:67 +#: make-novice/bin/boilerplate/CONTRIBUTING.md:67 +# header +msgid "## What to Contribute" +msgstr "" + +#: make-novice/CONTRIBUTING.md:69 +msgid "There are many ways to contribute,\n" +"from writing new exercises and improving existing ones\n" +"to updating or filling in the documentation\n" +"and submitting [bug reports][issues]\n" +"about things that don't work, aren't clear, or are missing.\n" +"If you are looking for ideas,\n" +"please see [the list of issues for this repository][issues],\n" +"or the issues for [Data Carpentry][dc-issues]\n" +"and [Software Carpentry][swc-issues] projects." +msgstr "" + +#: make-novice/CONTRIBUTING.md:79 +#: make-novice/bin/boilerplate/CONTRIBUTING.md:79 +msgid "Comments on issues and reviews of pull requests are just as welcome:\n" +"we are smarter together than we are on our own.\n" +"Reviews from novices and newcomers are particularly valuable:\n" +"it's easy for people who have been using these lessons for a while\n" +"to forget how impenetrable some of this material can be,\n" +"so fresh eyes are always welcome." +msgstr "" + +#: make-novice/CONTRIBUTING.md:86 +#: make-novice/bin/boilerplate/CONTRIBUTING.md:86 +# header +msgid "## What *Not* to Contribute" +msgstr "" + +#: make-novice/CONTRIBUTING.md:88 +#: make-novice/bin/boilerplate/CONTRIBUTING.md:88 +msgid "Our lessons already contain more material than we can cover in a typical workshop,\n" +"so we are usually *not* looking for more concepts or tools to add to them.\n" +"As a rule,\n" +"if you want to introduce a new idea,\n" +"you must (a) estimate how long it will take to teach\n" +"and (b) explain what you would take out to make room for it.\n" +"The first encourages contributors to be honest about requirements;\n" +"the second, to think hard about priorities." +msgstr "" + +#: make-novice/CONTRIBUTING.md:97 +#: make-novice/bin/boilerplate/CONTRIBUTING.md:97 +msgid "We are also not looking for exercises or other material that only run on one platform.\n" +"Our workshops typically contain a mixture of Windows, Mac OS X, and Linux users;\n" +"in order to be usable,\n" +"our lessons must run equally well on all three." +msgstr "" + +#: make-novice/CONTRIBUTING.md:102 +#: make-novice/bin/boilerplate/CONTRIBUTING.md:102 +# header +msgid "## Using GitHub" +msgstr "" + +#: make-novice/CONTRIBUTING.md:104 +msgid "If you choose to contribute via GitHub,\n" +"you may want to look at\n" +"[How to Contribute to an Open Source Project on GitHub][how-contribute].\n" +"In brief:" +msgstr "" + +#: make-novice/CONTRIBUTING.md:109 +# ordered list +msgid "1. The published copy of the lesson is in the `gh-pages` branch of the repository" +msgstr "" + +#: make-novice/CONTRIBUTING.md:110 +msgid " (so that GitHub will regenerate it automatically).\n" +" Please create all branches from that,\n" +" and merge the [master repository][repo]'s `gh-pages` branch into your `gh-pages` branch\n" +" before starting work.\n" +" Please do *not* work directly in your `gh-pages` branch,\n" +" since that will make it difficult for you to work on other contributions." +msgstr "" + +#: make-novice/CONTRIBUTING.md:117 +# ordered list +msgid "2. We use [GitHub flow][github-flow] to manage changes:" +msgstr "" + +#: make-novice/CONTRIBUTING.md:118 +msgid " 1. Create a new branch in your desktop copy of this repository for each significant change.\n" +" 2. Commit the change in that branch.\n" +" 3. Push that branch to your fork of this repository on GitHub.\n" +" 4. Submit a pull request from that branch to the [master repository][repo].\n" +" 5. If you receive feedback,\n" +" make changes on your desktop and push to your branch on GitHub:\n" +" the pull request will update automatically." +msgstr "" + +#: make-novice/CONTRIBUTING.md:126 +msgid "Each lesson has two maintainers who review issues and pull requests\n" +"or encourage others to do so.\n" +"The maintainers are community volunteers,\n" +"and have final say over what gets merged into the lesson." +msgstr "" + +#: make-novice/CONTRIBUTING.md:131 +#: make-novice/bin/boilerplate/CONTRIBUTING.md:129 +# header +msgid "## Other Resources" +msgstr "" + +#: make-novice/CONTRIBUTING.md:133 +msgid "General discussion of [Software Carpentry][swc-site] and [Data Carpentry][dc-site]\n" +"happens on the [discussion mailing list][discuss-list],\n" +"which everyone is welcome to join.\n" +"You can also [reach us by email][contact]." +msgstr "" + +#: make-novice/CONTRIBUTING.md:138 +msgid "[contact]: mailto:admin@software-carpentry.org\n" +"[dc-issues]: https://github.com/issues?q=user%3Adatacarpentry\n" +"[dc-lessons]: http://datacarpentry.org/lessons/\n" +"[dc-site]: http://datacarpentry.org/\n" +"[discuss-list]: http://lists.software-carpentry.org/listinfo/discuss\n" +"[github]: http://github.com\n" +"[github-flow]: https://guides.github.com/introduction/flow/\n" +"[github-join]: https://github.com/join\n" +"[how-contribute]: https://egghead.io/series/how-to-contribute-to-an-open-source-project-on-github\n" +"[issues]: https://github.com/swcarpentry/make-novice/issues/\n" +"[repo]: https://github.com/swcarpentry/make-novice/\n" +"[swc-issues]: https://github.com/issues?q=user%3Aswcarpentry\n" +"[swc-lessons]: http://software-carpentry.org/lessons/\n" +"[swc-site]: http://software-carpentry.org/" +msgstr "" + +#: make-novice/LICENSE.md:1 +# Front Matter +msgid "---\n" +"layout: page\n" +"title: \"Licenses\"\n" +"root: .\n" +"---" +msgstr "" + +#: make-novice/LICENSE.md:6 +# header +msgid "## Instructional Material" +msgstr "" + +#: make-novice/LICENSE.md:8 +msgid "All Software Carpentry and Data Carpentry instructional material is\n" +"made available under the [Creative Commons Attribution\n" +"license][cc-by-human]. The following is a human-readable summary of\n" +"(and not a substitute for) the [full legal text of the CC BY 4.0\n" +"license][cc-by-legal]." +msgstr "" + +#: make-novice/LICENSE.md:14 +msgid "You are free:" +msgstr "" + +#: make-novice/LICENSE.md:16 +# unordered list +msgid "* to **Share**---copy and redistribute the material in any medium or format" +msgstr "" + +#: make-novice/LICENSE.md:17 +# unordered list +msgid "* to **Adapt**---remix, transform, and build upon the material" +msgstr "" + +#: make-novice/LICENSE.md:19 +msgid "for any purpose, even commercially." +msgstr "" + +#: make-novice/LICENSE.md:21 +msgid "The licensor cannot revoke these freedoms as long as you follow the\n" +"license terms." +msgstr "" + +#: make-novice/LICENSE.md:24 +msgid "Under the following terms:" +msgstr "" + +#: make-novice/LICENSE.md:26 +# unordered list +msgid "* **Attribution**---You must give appropriate credit (mentioning that" +msgstr "" + +#: make-novice/LICENSE.md:27 +msgid " your work is derived from work that is Copyright © Software\n" +" Carpentry and, where practical, linking to\n" +" http://software-carpentry.org/), provide a [link to the\n" +" license][cc-by-human], and indicate if changes were made. You may do\n" +" so in any reasonable manner, but not in any way that suggests the\n" +" licensor endorses you or your use." +msgstr "" + +#: make-novice/LICENSE.md:34 +msgid "**No additional restrictions**---You may not apply legal terms or\n" +"technological measures that legally restrict others from doing\n" +"anything the license permits. With the understanding that:" +msgstr "" + +#: make-novice/LICENSE.md:38 +msgid "Notices:" +msgstr "" + +#: make-novice/LICENSE.md:40 +# unordered list +msgid "* You do not have to comply with the license for elements of the" +msgstr "" + +#: make-novice/LICENSE.md:41 +msgid " material in the public domain or where your use is permitted by an\n" +" applicable exception or limitation.\n" +"* No warranties are given. The license may not give you all of the\n" +" permissions necessary for your intended use. For example, other\n" +" rights such as publicity, privacy, or moral rights may limit how you\n" +" use the material." +msgstr "" + +#: make-novice/LICENSE.md:48 +#: make-novice/setup.md:33 +# header +msgid "## Software" +msgstr "" + +#: make-novice/LICENSE.md:50 +msgid "Except where otherwise noted, the example programs and other software\n" +"provided by Software Carpentry and Data Carpentry are made available under the\n" +"[OSI][osi]-approved\n" +"[MIT license][mit-license]." +msgstr "" + +#: make-novice/LICENSE.md:55 +msgid "Permission is hereby granted, free of charge, to any person obtaining\n" +"a copy of this software and associated documentation files (the\n" +"\"Software\"), to deal in the Software without restriction, including\n" +"without limitation the rights to use, copy, modify, merge, publish,\n" +"distribute, sublicense, and/or sell copies of the Software, and to\n" +"permit persons to whom the Software is furnished to do so, subject to\n" +"the following conditions:" +msgstr "" + +#: make-novice/LICENSE.md:63 +msgid "The above copyright notice and this permission notice shall be\n" +"included in all copies or substantial portions of the Software." +msgstr "" + +#: make-novice/LICENSE.md:66 +msgid "THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n" +"EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n" +"MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n" +"NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\n" +"LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\n" +"OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\n" +"WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." +msgstr "" + +#: make-novice/LICENSE.md:74 +# header +msgid "## Trademark" +msgstr "" + +#: make-novice/LICENSE.md:76 +msgid "\"Software Carpentry\" and \"Data Carpentry\" and their respective logos\n" +"are registered trademarks of [Community Initiatives][CI]." +msgstr "" + +#: make-novice/LICENSE.md:79 +msgid "[cc-by-human]: https://creativecommons.org/licenses/by/4.0/\n" +"[cc-by-legal]: https://creativecommons.org/licenses/by/4.0/legalcode\n" +"[mit-license]: https://opensource.org/licenses/mit-license.html\n" +"[ci]: http://communityin.org/\n" +"[osi]: https://opensource.org" +msgstr "" + +#: make-novice/README.md:1 +msgid "[![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.3265286.svg)](https://doi.org/10.5281/zenodo.3265286)\n" +"[![Create a Slack Account with us](https://img.shields.io/badge/Create_Slack_Account-The_Carpentries-071159.svg)](https://swc-slack-invite.herokuapp.com/) \n" +" [![Slack Status](https://img.shields.io/badge/Slack_Channel-swc--make-E01563.svg)](https://swcarpentry.slack.com/messages/C9X2YCPT5) " +msgstr "" + +#: make-novice/README.md:5 +msgid "make-novice\n" +"===========" +msgstr "" + +#: make-novice/README.md:8 +msgid "An introduction to Make using reproducible papers as a motivating example.\n" +"Please see for a rendered version of this material,\n" +"[the lesson template documentation][lesson-example]\n" +"for instructions on formatting, building, and submitting material,\n" +"or run `make` in this directory for a list of helpful commands." +msgstr "" + +#: make-novice/README.md:14 +msgid "Maintainer(s):" +msgstr "" + +#: make-novice/README.md:16 +# unordered list +msgid "* [Gerard Capes][capes-gerard]" +msgstr "" + +#: make-novice/README.md:18 +msgid "[capes-gerard]: http://software-carpentry.org/team/#capes_gerard\n" +"[lesson-example]: https://swcarpentry.github.com/lesson-example/" +msgstr "" + +#: make-novice/_episodes/01-intro.md:1 +# Front Matter +msgid "---\n" +"title: \"Introduction\"\n" +"teaching: 25\n" +"exercises: 0\n" +"questions:\n" +"- \"How can I make my results easier to reproduce?\"\n" +"objectives:\n" +"- \"Explain what Make is for.\"\n" +"- \"Explain why Make differs from shell scripts.\"\n" +"- \"Name other popular build tools.\"\n" +"keypoints:\n" +"- \"Make allows us to specify what depends on what and how to update things that are out of date.\"\n" +"---" +msgstr "" + +#: make-novice/_episodes/01-intro.md:15 +msgid "Let's imagine that we're interested in\n" +"testing Zipf's Law in some of our favorite books." +msgstr "" + +#: make-novice/_episodes/01-intro.md:18 +# blockquote, which can be cascaded +msgid "> ## Zipf's Law" +msgstr "" + +#: make-novice/_episodes/01-intro.md:19 +msgid ">\n" +"> The most frequently-occurring word occurs approximately twice as\n" +"> often as the second most frequent word. This is [Zipf's Law][zipfs-law]." +msgstr "" + +#: make-novice/_episodes/01-intro.md:22 +#: make-novice/_episodes/01-intro.md:302 +#: make-novice/_episodes/02-makefiles.md:120 +#: make-novice/_episodes/02-makefiles.md:183 +#: make-novice/_episodes/02-makefiles.md:255 +#: make-novice/_episodes/02-makefiles.md:361 +#: make-novice/_episodes/03-variables.md:59 +#: make-novice/_episodes/04-dependencies.md:104 +#: make-novice/_episodes/04-dependencies.md:119 +#: make-novice/_episodes/04-dependencies.md:237 +#: make-novice/_episodes/05-patterns.md:73 +#: make-novice/_episodes/05-patterns.md:100 +#: make-novice/_episodes/06-variables.md:117 +#: make-novice/_episodes/07-functions.md:65 +#: make-novice/_episodes/07-functions.md:263 +#: make-novice/_episodes/08-self-doc.md:130 +# SC/DC Template label +msgid "{: .callout}" +msgstr "" + +#: make-novice/_episodes/01-intro.md:24 +msgid "We've compiled our raw data i.e. the books we want to analyze\n" +"and have prepared several Python scripts that together make up our\n" +"analysis pipeline." +msgstr "" + +#: make-novice/_episodes/01-intro.md:28 +msgid "Let's take quick look at one of the books using the command `head books/isles.txt`." +msgstr "" + +#: make-novice/_episodes/01-intro.md:30 +msgid "Our directory has the Python scripts and data files we will be working with:" +msgstr "" + +#: make-novice/_episodes/01-intro.md:32 +# code block +msgid "~~~\n" +"|- books\n" +"| |- abyss.txt\n" +"| |- isles.txt\n" +"| |- last.txt\n" +"| |- LICENSE_TEXTS.md\n" +"| |- sierra.txt\n" +"|- plotcounts.py\n" +"|- countwords.py\n" +"|- testzipf.py\n" +"~~~" +msgstr "" + +#: make-novice/_episodes/01-intro.md:43 +#: make-novice/_episodes/01-intro.md:68 +#: make-novice/_episodes/01-intro.md:90 +#: make-novice/_episodes/01-intro.md:113 +#: make-novice/_episodes/01-intro.md:143 +#: make-novice/_episodes/02-makefiles.md:85 +#: make-novice/_episodes/02-makefiles.md:127 +#: make-novice/_episodes/02-makefiles.md:154 +#: make-novice/_episodes/02-makefiles.md:168 +#: make-novice/_episodes/02-makefiles.md:205 +#: make-novice/_episodes/02-makefiles.md:223 +#: make-novice/_episodes/02-makefiles.md:284 +#: make-novice/_episodes/02-makefiles.md:304 +#: make-novice/_episodes/02-makefiles.md:333 +#: make-novice/_episodes/02-makefiles.md:379 +#: make-novice/_episodes/02-makefiles.md:392 +#: make-novice/_episodes/03-variables.md:113 +#: make-novice/_episodes/04-dependencies.md:90 +#: make-novice/_episodes/04-dependencies.md:140 +#: make-novice/_episodes/05-patterns.md:50 +#: make-novice/_episodes/05-patterns.md:65 +#: make-novice/_episodes/07-functions.md:79 +#: make-novice/_episodes/07-functions.md:118 +#: make-novice/_episodes/07-functions.md:159 +#: make-novice/_episodes/07-functions.md:186 +#: make-novice/_episodes/07-functions.md:202 +#: make-novice/_episodes/08-self-doc.md:32 +#: make-novice/_episodes/08-self-doc.md:117 +#: make-novice/_extras/guide.md:100 +#: make-novice/_extras/guide.md:112 +#: make-novice/_extras/guide.md:129 +#: make-novice/_extras/guide.md:161 +#: make-novice/reference.md:37 +# SC/DC Template label +msgid "{: .output}" +msgstr "" + +#: make-novice/_episodes/01-intro.md:45 +msgid "The first step is to count the frequency of each word in a book." +msgstr "" + +#: make-novice/_episodes/01-intro.md:47 +# code block +msgid "~~~\n" +"$ python countwords.py books/isles.txt isles.dat\n" +"~~~" +msgstr "" + +#: make-novice/_episodes/01-intro.md:50 +#: make-novice/_episodes/01-intro.md:57 +#: make-novice/_episodes/01-intro.md:81 +#: make-novice/_episodes/01-intro.md:99 +#: make-novice/_episodes/01-intro.md:120 +#: make-novice/_episodes/01-intro.md:129 +#: make-novice/_episodes/01-intro.md:136 +#: make-novice/_episodes/01-intro.md:184 +#: make-novice/_episodes/01-intro.md:192 +#: make-novice/_episodes/01-intro.md:228 +#: make-novice/_episodes/01-intro.md:252 +#: make-novice/_episodes/02-makefiles.md:70 +#: make-novice/_episodes/02-makefiles.md:78 +#: make-novice/_episodes/02-makefiles.md:102 +#: make-novice/_episodes/02-makefiles.md:138 +#: make-novice/_episodes/02-makefiles.md:145 +#: make-novice/_episodes/02-makefiles.md:161 +#: make-novice/_episodes/02-makefiles.md:198 +#: make-novice/_episodes/02-makefiles.md:216 +#: make-novice/_episodes/02-makefiles.md:277 +#: make-novice/_episodes/02-makefiles.md:297 +#: make-novice/_episodes/02-makefiles.md:326 +#: make-novice/_episodes/02-makefiles.md:371 +#: make-novice/_episodes/03-variables.md:103 +#: make-novice/_episodes/04-dependencies.md:54 +#: make-novice/_episodes/04-dependencies.md:81 +#: make-novice/_episodes/04-dependencies.md:130 +#: make-novice/_episodes/05-patterns.md:41 +#: make-novice/_episodes/05-patterns.md:58 +#: make-novice/_episodes/06-variables.md:103 +#: make-novice/_episodes/07-functions.md:72 +#: make-novice/_episodes/07-functions.md:110 +#: make-novice/_episodes/07-functions.md:149 +#: make-novice/_episodes/07-functions.md:175 +#: make-novice/_episodes/07-functions.md:193 +#: make-novice/_episodes/08-self-doc.md:25 +#: make-novice/_episodes/08-self-doc.md:107 +msgid "{: .language-bash}" +msgstr "" + +#: make-novice/_episodes/01-intro.md:52 +msgid "Let's take a quick peek at the result." +msgstr "" + +#: make-novice/_episodes/01-intro.md:54 +# code block +msgid "~~~\n" +"$ head -5 isles.dat\n" +"~~~" +msgstr "" + +#: make-novice/_episodes/01-intro.md:59 +msgid "This shows us the top 5 lines in the output file:" +msgstr "" + +#: make-novice/_episodes/01-intro.md:61 +# code block +msgid "~~~\n" +"the 3822 6.7371760973\n" +"of 2460 4.33632998414\n" +"and 1723 3.03719372466\n" +"to 1479 2.60708619778\n" +"a 1308 2.30565838181\n" +"~~~" +msgstr "" + +#: make-novice/_episodes/01-intro.md:70 +msgid "We can see that the file consists of one row per word.\n" +"Each row shows the word itself, the number of occurrences of that\n" +"word, and the number of occurrences as a percentage of the total\n" +"number of words in the text file." +msgstr "" + +#: make-novice/_episodes/01-intro.md:75 +msgid "We can do the same thing for a different book:" +msgstr "" + +#: make-novice/_episodes/01-intro.md:77 +# code block +msgid "~~~\n" +"$ python countwords.py books/abyss.txt abyss.dat\n" +"$ head -5 abyss.dat\n" +"~~~" +msgstr "" + +#: make-novice/_episodes/01-intro.md:83 +# code block +msgid "~~~\n" +"the 4044 6.35449402891\n" +"and 2807 4.41074795726\n" +"of 1907 2.99654305468\n" +"a 1594 2.50471401634\n" +"to 1515 2.38057825267\n" +"~~~" +msgstr "" + +#: make-novice/_episodes/01-intro.md:92 +msgid "Let's visualize the results.\n" +"The script `plotcounts.py` reads in a data file and plots the 10 most\n" +"frequently occurring words as a text-based bar plot:" +msgstr "" + +#: make-novice/_episodes/01-intro.md:96 +# code block +msgid "~~~\n" +"$ python plotcounts.py isles.dat ascii\n" +"~~~" +msgstr "" + +#: make-novice/_episodes/01-intro.md:101 +# code block +msgid "~~~\n" +"the ########################################################################\n" +"of ##############################################\n" +"and ################################\n" +"to ############################\n" +"a #########################\n" +"in ###################\n" +"is #################\n" +"that ############\n" +"by ###########\n" +"it ###########\n" +"~~~" +msgstr "" + +#: make-novice/_episodes/01-intro.md:115 +msgid "`plotcounts.py` can also show the plot graphically:" +msgstr "" + +#: make-novice/_episodes/01-intro.md:117 +# code block +msgid "~~~\n" +"$ python plotcounts.py isles.dat show\n" +"~~~" +msgstr "" + +#: make-novice/_episodes/01-intro.md:122 +msgid "Close the window to exit the plot." +msgstr "" + +#: make-novice/_episodes/01-intro.md:124 +msgid "`plotcounts.py` can also create the plot as an image file (e.g. a PNG file):" +msgstr "" + +#: make-novice/_episodes/01-intro.md:126 +# code block +msgid "~~~\n" +"$ python plotcounts.py isles.dat isles.png\n" +"~~~" +msgstr "" + +#: make-novice/_episodes/01-intro.md:131 +msgid "Finally, let's test Zipf's law for these books:" +msgstr "" + +#: make-novice/_episodes/01-intro.md:133 +# code block +msgid "~~~\n" +"$ python testzipf.py abyss.dat isles.dat\n" +"~~~" +msgstr "" + +#: make-novice/_episodes/01-intro.md:138 +# code block +msgid "~~~\n" +"Book First Second Ratio\n" +"abyss 4044 2807 1.44\n" +"isles 3822 2460 1.55\n" +"~~~" +msgstr "" + +#: make-novice/_episodes/01-intro.md:145 +msgid "So we're not too far off from Zipf's law." +msgstr "" + +#: make-novice/_episodes/01-intro.md:147 +msgid "Together these scripts implement a common workflow:" +msgstr "" + +#: make-novice/_episodes/01-intro.md:149 +# ordered list +msgid "1. Read a data file." +msgstr "" + +#: make-novice/_episodes/01-intro.md:150 +# ordered list +msgid "2. Perform an analysis on this data file." +msgstr "" + +#: make-novice/_episodes/01-intro.md:151 +# ordered list +msgid "3. Write the analysis results to a new file." +msgstr "" + +#: make-novice/_episodes/01-intro.md:152 +# ordered list +msgid "4. Plot a graph of the analysis results." +msgstr "" + +#: make-novice/_episodes/01-intro.md:153 +# ordered list +msgid "5. Save the graph as an image, so we can put it in a paper." +msgstr "" + +#: make-novice/_episodes/01-intro.md:154 +# ordered list +msgid "6. Make a summary table of the analyses" +msgstr "" + +#: make-novice/_episodes/01-intro.md:156 +msgid "Running `countwords.py` and `plotcounts.py` at the shell prompt, as we\n" +"have been doing, is fine for one or two files. If, however, we had 5\n" +"or 10 or 20 text files,\n" +"or if the number of steps in the pipeline were to expand, this could turn into\n" +"a lot of work.\n" +"Plus, no one wants to sit and wait for a command to finish, even just for 30\n" +"seconds." +msgstr "" + +#: make-novice/_episodes/01-intro.md:164 +msgid "The most common solution to the tedium of data processing is to write\n" +"a shell script that runs the whole pipeline from start to finish." +msgstr "" + +#: make-novice/_episodes/01-intro.md:167 +msgid "Using your text editor of choice (e.g. nano), add the following to a new file named\n" +"`run_pipeline.sh`." +msgstr "" + +#: make-novice/_episodes/01-intro.md:170 +# code block +msgid "~~~\n" +"# USAGE: bash run_pipeline.sh\n" +"# to produce plots for isles and abyss\n" +"# and the summary table for the Zipf's law tests\n" +"\n" +"python countwords.py books/isles.txt isles.dat\n" +"python countwords.py books/abyss.txt abyss.dat\n" +"\n" +"python plotcounts.py isles.dat isles.png\n" +"python plotcounts.py abyss.dat abyss.png\n" +"\n" +"# Generate summary table\n" +"python testzipf.py abyss.dat isles.dat > results.txt\n" +"~~~" +msgstr "" + +#: make-novice/_episodes/01-intro.md:186 +msgid "Run the script and check that the output is the same as before:" +msgstr "" + +#: make-novice/_episodes/01-intro.md:188 +# code block +msgid "~~~\n" +"$ bash run_pipeline.sh\n" +"$ cat results.txt\n" +"~~~" +msgstr "" + +#: make-novice/_episodes/01-intro.md:194 +msgid "This shell script solves several problems in computational reproducibility:" +msgstr "" + +#: make-novice/_episodes/01-intro.md:196 +# ordered list +msgid "1. It explicitly documents our pipeline," +msgstr "" + +#: make-novice/_episodes/01-intro.md:197 +msgid " making communication with colleagues (and our future selves) more efficient.\n" +"2. It allows us to type a single command, `bash run_pipeline.sh`, to\n" +" reproduce the full analysis.\n" +"3. It prevents us from _repeating_ typos or mistakes.\n" +" You might not get it right the first time, but once you fix something\n" +" it'll stay fixed." +msgstr "" + +#: make-novice/_episodes/01-intro.md:204 +msgid "Despite these benefits it has a few shortcomings." +msgstr "" + +#: make-novice/_episodes/01-intro.md:206 +msgid "Let's adjust the width of the bars in our plot produced by `plotcounts.py`." +msgstr "" + +#: make-novice/_episodes/01-intro.md:208 +msgid "Edit `plotcounts.py` so that the bars are 0.8 units wide instead of 1 unit.\n" +"(Hint: replace `width = 1.0` with `width = 0.8` in the definition of\n" +"`plot_word_counts`.)" +msgstr "" + +#: make-novice/_episodes/01-intro.md:212 +msgid "Now we want to recreate our figures.\n" +"We _could_ just `bash run_pipeline.sh` again.\n" +"That would work, but it could also be a big pain if counting words takes\n" +"more than a few seconds.\n" +"The word counting routine hasn't changed; we shouldn't need to recreate\n" +"those files." +msgstr "" + +#: make-novice/_episodes/01-intro.md:219 +msgid "Alternatively, we could manually rerun the plotting for each word-count file.\n" +"(Experienced shell scripters can make this easier on themselves using a\n" +"for-loop.)" +msgstr "" + +#: make-novice/_episodes/01-intro.md:223 +# code block +msgid "~~~\n" +"for book in abyss isles; do\n" +" python plotcounts.py $book.dat $book.png\n" +"done\n" +"~~~" +msgstr "" + +#: make-novice/_episodes/01-intro.md:230 +msgid "With this approach, however,\n" +"we don't get many of the benefits of having a shell script in the first place." +msgstr "" + +#: make-novice/_episodes/01-intro.md:233 +msgid "Another popular option is to comment out a subset of the lines in\n" +"`run_pipeline.sh`:" +msgstr "" + +#: make-novice/_episodes/01-intro.md:236 +# code block +msgid "~~~\n" +"# USAGE: bash run_pipeline.sh\n" +"# to produce plots for isles and abyss\n" +"# and the summary table for the Zipf's law tests.\n" +"\n" +"# These lines are commented out because they don't need to be rerun.\n" +"#python countwords.py books/isles.txt isles.dat\n" +"#python countwords.py books/abyss.txt abyss.dat\n" +"\n" +"python plotcounts.py isles.dat isles.png\n" +"python plotcounts.py abyss.dat abyss.png\n" +"\n" +"# Generate summary table\n" +"# This line is also commented out because it doesn't need to be rerun.\n" +"#python testzipf.py abyss.dat isles.dat > results.txt\n" +"~~~" +msgstr "" + +#: make-novice/_episodes/01-intro.md:254 +msgid "Then, we would run our modified shell script using `bash run_pipeline.sh`." +msgstr "" + +#: make-novice/_episodes/01-intro.md:256 +msgid "But commenting out these lines, and subsequently uncommenting them,\n" +"can be a hassle and source of errors in complicated pipelines." +msgstr "" + +#: make-novice/_episodes/01-intro.md:259 +msgid "What we really want is an executable _description_ of our pipeline that\n" +"allows software to do the tricky part for us:\n" +"figuring out what steps need to be rerun." +msgstr "" + +#: make-novice/_episodes/01-intro.md:263 +msgid "Make was developed by\n" +"Stuart Feldman in 1977 as a Bell Labs summer intern, and remains in\n" +"widespread use today. Make can execute the commands needed to run our\n" +"analysis and plot our results. Like shell scripts it allows us to\n" +"execute complex sequences of commands via a single shell\n" +"command. Unlike shell scripts it explicitly records the dependencies\n" +"between files - what files are needed to create what other files -\n" +"and so can determine when to recreate our data files or\n" +"image files, if our text files change. Make can be used for any\n" +"commands that follow the general pattern of processing files to create\n" +"new files, for example:" +msgstr "" + +#: make-novice/_episodes/01-intro.md:275 +# unordered list +msgid "* Run analysis scripts on raw data files to get data files that" +msgstr "" + +#: make-novice/_episodes/01-intro.md:276 +msgid " summarize the raw data (e.g. creating files with word counts from book text).\n" +"* Run visualization scripts on data files to produce plots\n" +" (e.g. creating images of word counts).\n" +"* Parse and combine text files and plots to create papers.\n" +"* Compile source code into executable programs or libraries." +msgstr "" + +#: make-novice/_episodes/01-intro.md:282 +msgid "There are now many build tools available, for example [Apache\n" +"ANT][apache-ant], [doit][doit], and [nmake][nmake] for Windows. There\n" +"are also build tools that build scripts for use with these build tools\n" +"and others e.g. [GNU Autoconf][autoconf] and [CMake][cmake]. Which is\n" +"best for you depends on your requirements, intended usage, and\n" +"operating system. However, they all share the same fundamental\n" +"concepts as Make." +msgstr "" + +#: make-novice/_episodes/01-intro.md:290 +# blockquote, which can be cascaded +msgid "> ## Why Use Make if it is Almost 40 Years Old?" +msgstr "" + +#: make-novice/_episodes/01-intro.md:291 +msgid ">\n" +"> Today, researchers working with legacy codes in C or FORTRAN, which\n" +"> are very common in high-performance computing, will, very likely\n" +"> encounter Make.\n" +">\n" +"> Researchers are also finding Make of use in implementing\n" +"> reproducible research workflows, automating data analysis and\n" +"> visualisation (using Python or R) and combining tables and plots\n" +"> with text to produce reports and papers for publication.\n" +">\n" +"> Make's fundamental concepts are common across build tools." +msgstr "" + +#: make-novice/_episodes/01-intro.md:304 +msgid "[GNU Make][gnu-make] is a free, fast, well-documented, and very popular\n" +"Make implementation. From now on, we will focus on it, and when we say\n" +"Make, we mean GNU Make." +msgstr "" + +#: make-novice/_episodes/01-intro.md:308 +msgid "[autoconf]: http://www.gnu.org/software/autoconf/autoconf.html\n" +"[apache-ant]: http://ant.apache.org/\n" +"[cmake]: http://www.cmake.org/\n" +"[doit]: http://pydoit.org/\n" +"[gnu-make]: http://www.gnu.org/software/make/\n" +"[nmake]: https://msdn.microsoft.com/en-us/library/dd9y37ha.aspx\n" +"[zipfs-law]: http://en.wikipedia.org/wiki/Zipf%27s_law" +msgstr "" + +#: make-novice/_episodes/02-makefiles.md:1 +# Front Matter +msgid "---\n" +"title: \"Makefiles\"\n" +"teaching: 30\n" +"exercises: 10\n" +"questions:\n" +"- \"How do I write a simple Makefile?\"\n" +"objectives:\n" +"- \"Recognize the key parts of a Makefile, rules, targets, dependencies and actions.\"\n" +"- \"Write a simple Makefile.\"\n" +"- \"Run Make from the shell.\"\n" +"- \"Explain when and why to mark targets as `.PHONY`.\"\n" +"- \"Explain constraints on dependencies.\"\n" +"keypoints:\n" +"- \"Use `#` for comments in Makefiles.\"\n" +"- \"Write rules as `target: dependencies`.\"\n" +"- \"Specify update actions in a tab-indented block under the rule.\"\n" +"- \"Use `.PHONY` to mark targets that don't correspond to files.\"\n" +"---" +msgstr "" + +#: make-novice/_episodes/02-makefiles.md:20 +msgid "Create a file, called `Makefile`, with the following content:" +msgstr "" + +#: make-novice/_episodes/02-makefiles.md:22 +# code block +msgid "~~~\n" +"# Count words.\n" +"isles.dat : books/isles.txt\n" +" python countwords.py books/isles.txt isles.dat\n" +"~~~" +msgstr "" + +#: make-novice/_episodes/02-makefiles.md:27 +#: make-novice/_episodes/02-makefiles.md:191 +#: make-novice/_episodes/02-makefiles.md:267 +#: make-novice/_episodes/02-makefiles.md:319 +#: make-novice/_episodes/02-makefiles.md:344 +#: make-novice/_episodes/02-makefiles.md:412 +#: make-novice/_episodes/03-variables.md:41 +#: make-novice/_episodes/03-variables.md:70 +#: make-novice/_episodes/03-variables.md:79 +#: make-novice/_episodes/03-variables.md:91 +#: make-novice/_episodes/04-dependencies.md:40 +#: make-novice/_episodes/04-dependencies.md:73 +#: make-novice/_episodes/04-dependencies.md:231 +#: make-novice/_episodes/05-patterns.md:24 +#: make-novice/_episodes/05-patterns.md:94 +#: make-novice/_episodes/05-patterns.md:112 +#: make-novice/_episodes/06-variables.md:26 +#: make-novice/_episodes/06-variables.md:39 +#: make-novice/_episodes/06-variables.md:87 +#: make-novice/_episodes/06-variables.md:94 +#: make-novice/_episodes/07-functions.md:36 +#: make-novice/_episodes/07-functions.md:48 +#: make-novice/_episodes/07-functions.md:57 +#: make-novice/_episodes/07-functions.md:93 +#: make-novice/_episodes/07-functions.md:103 +#: make-novice/_episodes/07-functions.md:133 +#: make-novice/_episodes/07-functions.md:141 +#: make-novice/_episodes/07-functions.md:167 +#: make-novice/_episodes/07-functions.md:236 +#: make-novice/_episodes/07-functions.md:250 +#: make-novice/_episodes/08-self-doc.md:43 +#: make-novice/_episodes/08-self-doc.md:83 +#: make-novice/_episodes/08-self-doc.md:96 +msgid "{: .language-make}" +msgstr "" + +#: make-novice/_episodes/02-makefiles.md:29 +msgid "This is a [build file]({{ page.root }}/reference#build-file), which for\n" +"Make is called a [Makefile]({{ page.root }}/reference#makefile) - a file executed\n" +"by Make. Note how it resembles one of the lines from our shell script." +msgstr "" + +#: make-novice/_episodes/02-makefiles.md:33 +msgid "Let us go through each line in turn:" +msgstr "" + +#: make-novice/_episodes/02-makefiles.md:35 +# unordered list +msgid "* `#` denotes a *comment*. Any text from `#` to the end of the line is" +msgstr "" + +#: make-novice/_episodes/02-makefiles.md:36 +msgid " ignored by Make.\n" +"* `isles.dat` is a [target]({{ page.root }}/reference#target), a file to be\n" +" created, or built.\n" +"* `books/isles.txt` is a [dependency]({{ page.root }}/reference#dependency), a\n" +" file that is needed to build or update the target. Targets can have\n" +" zero or more dependencies.\n" +"* A colon, `:`, separates targets from dependencies.\n" +"* `python countwords.py books/isles.txt isles.dat` is an\n" +" [action]({{ page.root }}/reference#action), a command to run to build or update\n" +" the target using the dependencies. Targets can have zero or more\n" +" actions. These actions form a recipe to build the target\n" +" from its dependencies and can be considered to be\n" +" a shell script.\n" +"* Actions are indented using a single TAB character, *not* 8 spaces. This\n" +" is a legacy of Make's 1970's origins. If the difference between\n" +" spaces and a TAB character isn’t obvious in your editor, try moving\n" +" your cursor from one side of the TAB to the other. It should jump\n" +" four or more spaces.\n" +"* Together, the target, dependencies, and actions form a\n" +" [rule]({{ page.root }}/reference#rule)." +msgstr "" + +#: make-novice/_episodes/02-makefiles.md:57 +msgid "Our rule above describes how to build the target `isles.dat` using the\n" +"action `python countwords.py` and the dependency `books/isles.txt`." +msgstr "" + +#: make-novice/_episodes/02-makefiles.md:60 +msgid "Information that was implicit in our shell script - that we are\n" +"generating a file called `isles.dat` and that creating this file\n" +"requires `books/isles.txt` - is now made explicit by Make's syntax." +msgstr "" + +#: make-novice/_episodes/02-makefiles.md:64 +msgid "Let's first ensure we start from scratch and delete the `.dat` and `.png`\n" +"files we created earlier:" +msgstr "" + +#: make-novice/_episodes/02-makefiles.md:67 +# code block +msgid "~~~\n" +"$ rm *.dat *.png\n" +"~~~" +msgstr "" + +#: make-novice/_episodes/02-makefiles.md:72 +msgid "By default, Make looks for a Makefile, called `Makefile`, and we can\n" +"run Make as follows:" +msgstr "" + +#: make-novice/_episodes/02-makefiles.md:75 +#: make-novice/_episodes/02-makefiles.md:158 +#: make-novice/_episodes/02-makefiles.md:195 +#: make-novice/reference.md:10 +# code block +msgid "~~~\n" +"$ make\n" +"~~~" +msgstr "" + +#: make-novice/_episodes/02-makefiles.md:80 +msgid "By default, Make prints out the actions it executes:" +msgstr "" + +#: make-novice/_episodes/02-makefiles.md:82 +#: make-novice/_episodes/02-makefiles.md:165 +# code block +msgid "~~~\n" +"python countwords.py books/isles.txt isles.dat\n" +"~~~" +msgstr "" + +#: make-novice/_episodes/02-makefiles.md:87 +msgid "If we see," +msgstr "" + +#: make-novice/_episodes/02-makefiles.md:89 +#: make-novice/reference.md:58 +# code block +msgid "~~~\n" +"Makefile:3: *** missing separator. Stop.\n" +"~~~" +msgstr "" + +#: make-novice/_episodes/02-makefiles.md:92 +#: make-novice/reference.md:61 +#: make-novice/reference.md:72 +# SC/DC Template label +msgid "{: .error}" +msgstr "" + +#: make-novice/_episodes/02-makefiles.md:94 +msgid "then we have used a space instead of a TAB characters to indent one of\n" +"our actions." +msgstr "" + +#: make-novice/_episodes/02-makefiles.md:97 +msgid "Let's see if we got what we expected." +msgstr "" + +#: make-novice/_episodes/02-makefiles.md:99 +# code block +msgid "~~~\n" +"head -5 isles.dat\n" +"~~~" +msgstr "" + +#: make-novice/_episodes/02-makefiles.md:104 +msgid "The first 5 lines of `isles.dat` should look exactly like before." +msgstr "" + +#: make-novice/_episodes/02-makefiles.md:106 +# blockquote, which can be cascaded +msgid "> ## Makefiles Do Not Have to be Called `Makefile`" +msgstr "" + +#: make-novice/_episodes/02-makefiles.md:107 +msgid ">\n" +"> We don't have to call our Makefile `Makefile`. However, if we call it\n" +"> something else we need to tell Make where to find it. This we can do\n" +"> using `-f` flag. For example, if our Makefile is named `MyOtherMakefile`:\n" +">\n" +"> ~~~\n" +"> $ make -f MyOtherMakefile\n" +"> ~~~\n" +"> {: .language-bash}\n" +">\n" +">\n" +"> Sometimes, the suffix `.mk` will be used to identify Makefiles that\n" +"> are not called `Makefile` e.g. `install.mk`, `common.mk` etc." +msgstr "" + +#: make-novice/_episodes/02-makefiles.md:122 +msgid "When we re-run our Makefile, Make now informs us that:" +msgstr "" + +#: make-novice/_episodes/02-makefiles.md:124 +#: make-novice/_episodes/02-makefiles.md:202 +#: make-novice/reference.md:34 +# code block +msgid "~~~\n" +"make: `isles.dat' is up to date.\n" +"~~~" +msgstr "" + +#: make-novice/_episodes/02-makefiles.md:129 +msgid "This is because our target, `isles.dat`, has now been created, and\n" +"Make will not create it again. To see how this works, let's pretend to\n" +"update one of the text files. Rather than opening the file in an\n" +"editor, we can use the shell `touch` command to update its timestamp\n" +"(which would happen if we did edit the file):" +msgstr "" + +#: make-novice/_episodes/02-makefiles.md:135 +# code block +msgid "~~~\n" +"$ touch books/isles.txt\n" +"~~~" +msgstr "" + +#: make-novice/_episodes/02-makefiles.md:140 +msgid "If we compare the timestamps of `books/isles.txt` and `isles.dat`," +msgstr "" + +#: make-novice/_episodes/02-makefiles.md:142 +# code block +msgid "~~~\n" +"$ ls -l books/isles.txt isles.dat\n" +"~~~" +msgstr "" + +#: make-novice/_episodes/02-makefiles.md:147 +msgid "then we see that `isles.dat`, the target, is now older\n" +"than`books/isles.txt`, its dependency:" +msgstr "" + +#: make-novice/_episodes/02-makefiles.md:150 +# code block +msgid "~~~\n" +"-rw-r--r-- 1 mjj Administ 323972 Jun 12 10:35 books/isles.txt\n" +"-rw-r--r-- 1 mjj Administ 182273 Jun 12 09:58 isles.dat\n" +"~~~" +msgstr "" + +#: make-novice/_episodes/02-makefiles.md:156 +msgid "If we run Make again," +msgstr "" + +#: make-novice/_episodes/02-makefiles.md:163 +msgid "then it recreates `isles.dat`:" +msgstr "" + +#: make-novice/_episodes/02-makefiles.md:170 +msgid "When it is asked to build a target, Make checks the 'last modification\n" +"time' of both the target and its dependencies. If any dependency has\n" +"been updated since the target, then the actions are re-run to update\n" +"the target. Using this approach, Make knows to only rebuild the files\n" +"that, either directly or indirectly, depend on the file that\n" +"changed. This is called an [incremental\n" +"build]({{ page.root }}/reference#incremental-build)." +msgstr "" + +#: make-novice/_episodes/02-makefiles.md:178 +# blockquote, which can be cascaded +msgid "> ## Makefiles as Documentation" +msgstr "" + +#: make-novice/_episodes/02-makefiles.md:179 +msgid ">\n" +"> By explicitly recording the inputs to and outputs from steps in our\n" +"> analysis and the dependencies between files, Makefiles act as a type\n" +"> of documentation, reducing the number of things we have to remember." +msgstr "" + +#: make-novice/_episodes/02-makefiles.md:185 +msgid "Let's add another rule to the end of `Makefile`:" +msgstr "" + +#: make-novice/_episodes/02-makefiles.md:187 +# code block +msgid "~~~\n" +"abyss.dat : books/abyss.txt\n" +" python countwords.py books/abyss.txt abyss.dat\n" +"~~~" +msgstr "" + +#: make-novice/_episodes/02-makefiles.md:193 +#: make-novice/_episodes/02-makefiles.md:321 +#: make-novice/_episodes/07-functions.md:105 +msgid "If we run Make," +msgstr "" + +#: make-novice/_episodes/02-makefiles.md:200 +#: make-novice/_episodes/02-makefiles.md:279 +#: make-novice/_episodes/02-makefiles.md:328 +#: make-novice/_episodes/04-dependencies.md:83 +#: make-novice/_episodes/04-dependencies.md:132 +#: make-novice/_episodes/05-patterns.md:43 +#: make-novice/_episodes/07-functions.md:112 +msgid "then we get:" +msgstr "" + +#: make-novice/_episodes/02-makefiles.md:207 +msgid "Nothing happens because Make attempts to build the first target it\n" +"finds in the Makefile, the [default\n" +"target]({{ page.root }}/reference#default-target), which is `isles.dat` which is\n" +"already up-to-date. We need to explicitly tell Make we want to build\n" +"`abyss.dat`:" +msgstr "" + +#: make-novice/_episodes/02-makefiles.md:213 +# code block +msgid "~~~\n" +"$ make abyss.dat\n" +"~~~" +msgstr "" + +#: make-novice/_episodes/02-makefiles.md:218 +msgid "Now, we get:" +msgstr "" + +#: make-novice/_episodes/02-makefiles.md:220 +# code block +msgid "~~~\n" +"python countwords.py books/abyss.txt abyss.dat\n" +"~~~" +msgstr "" + +#: make-novice/_episodes/02-makefiles.md:225 +# blockquote, which can be cascaded +msgid "> ## \"Up to Date\" Versus \"Nothing to be Done\"" +msgstr "" + +#: make-novice/_episodes/02-makefiles.md:226 +msgid ">\n" +"> If we ask Make to build a file that already exists and is up to\n" +"> date, then Make informs us that:\n" +">\n" +"> ~~~\n" +"> make: `isles.dat' is up to date.\n" +"> ~~~" +msgstr "" + +#: make-novice/_episodes/02-makefiles.md:233 +#: make-novice/_episodes/02-makefiles.md:246 +# SC/DC Template label +msgid "> {: .output}" +msgstr "" + +#: make-novice/_episodes/02-makefiles.md:234 +msgid ">\n" +"> If we ask Make to build a file that exists but for which there is\n" +"> no rule in our Makefile, then we get message like:\n" +">\n" +"> ~~~\n" +"> $ make countwords.py\n" +"> ~~~\n" +"> {: .language-bash}\n" +">\n" +"> ~~~\n" +"> make: Nothing to be done for `countwords.py'.\n" +"> ~~~" +msgstr "" + +#: make-novice/_episodes/02-makefiles.md:247 +msgid ">\n" +"> `up to date` means that the Makefile has a rule with one or more actions\n" +"> whose target is the name of a file (or directory) and the file is up to date.\n" +">\n" +"> `Nothing to be done` means that\n" +"> the file exists but either :\n" +"> - the Makefile has no rule for it, or\n" +"> - the Makefile has a rule for it, but that rule has no actions" +msgstr "" + +#: make-novice/_episodes/02-makefiles.md:258 +msgid "We may want to remove all our data files so we can explicitly recreate\n" +"them all. We can introduce a new target, and associated rule, to do\n" +"this. We will call it `clean`, as this is a common name for rules that\n" +"delete auto-generated files, like our `.dat` files:" +msgstr "" + +#: make-novice/_episodes/02-makefiles.md:263 +# code block +msgid "~~~\n" +"clean :\n" +" rm -f *.dat\n" +"~~~" +msgstr "" + +#: make-novice/_episodes/02-makefiles.md:269 +msgid "This is an example of a rule that has no dependencies. `clean` has no\n" +"dependencies on any `.dat` file as it makes no sense to create these\n" +"just to remove them. We just want to remove the data files whether or\n" +"not they exist. If we run Make and specify this target," +msgstr "" + +#: make-novice/_episodes/02-makefiles.md:274 +#: make-novice/_episodes/02-makefiles.md:323 +# code block +msgid "~~~\n" +"$ make clean\n" +"~~~" +msgstr "" + +#: make-novice/_episodes/02-makefiles.md:281 +#: make-novice/_episodes/02-makefiles.md:330 +# code block +msgid "~~~\n" +"rm -f *.dat\n" +"~~~" +msgstr "" + +#: make-novice/_episodes/02-makefiles.md:286 +msgid "There is no actual thing built called `clean`. Rather, it is a\n" +"short-hand that we can use to execute a useful sequence of\n" +"actions. Such targets, though very useful, can lead to problems. For\n" +"example, let us recreate our data files, create a directory called\n" +"`clean`, then run Make:" +msgstr "" + +#: make-novice/_episodes/02-makefiles.md:292 +# code block +msgid "~~~\n" +"$ make isles.dat abyss.dat\n" +"$ mkdir clean\n" +"$ make clean\n" +"~~~" +msgstr "" + +#: make-novice/_episodes/02-makefiles.md:299 +#: make-novice/_episodes/03-variables.md:105 +#: make-novice/_episodes/07-functions.md:74 +#: make-novice/_episodes/07-functions.md:151 +#: make-novice/_episodes/07-functions.md:177 +msgid "We get:" +msgstr "" + +#: make-novice/_episodes/02-makefiles.md:301 +# code block +msgid "~~~\n" +"make: `clean' is up to date.\n" +"~~~" +msgstr "" + +#: make-novice/_episodes/02-makefiles.md:306 +msgid "Make finds a file (or directory) called `clean` and, as its `clean`\n" +"rule has no dependencies, assumes that `clean` has been built and is\n" +"up-to-date and so does not execute the rule's actions. As we are using\n" +"`clean` as a short-hand, we need to tell Make to always execute this\n" +"rule if we run `make clean`, by telling Make that this is a\n" +"[phony target]({{ page.root }}/reference#phony-target), that it does not build\n" +"anything. This we do by marking the target as `.PHONY`:" +msgstr "" + +#: make-novice/_episodes/02-makefiles.md:314 +# code block +msgid "~~~\n" +".PHONY : clean\n" +"clean :\n" +" rm -f *.dat\n" +"~~~" +msgstr "" + +#: make-novice/_episodes/02-makefiles.md:335 +msgid "We can add a similar command to create all the data files. We can put\n" +"this at the top of our Makefile so that it is the [default\n" +"target]({{ page.root }}/reference#default-target), which is executed by default\n" +"if no target is given to the `make` command:" +msgstr "" + +#: make-novice/_episodes/02-makefiles.md:340 +# code block +msgid "~~~\n" +".PHONY : dats\n" +"dats : isles.dat abyss.dat\n" +"~~~" +msgstr "" + +#: make-novice/_episodes/02-makefiles.md:346 +msgid "This is an example of a rule that has dependencies that are targets of\n" +"other rules. When Make runs, it will check to see if the dependencies\n" +"exist and, if not, will see if rules are available that will create\n" +"these. If such rules exist it will invoke these first, otherwise\n" +"Make will raise an error." +msgstr "" + +#: make-novice/_episodes/02-makefiles.md:352 +# blockquote, which can be cascaded +msgid "> ## Dependencies" +msgstr "" + +#: make-novice/_episodes/02-makefiles.md:353 +msgid ">\n" +"> The order of rebuilding dependencies is arbitrary. You should not\n" +"> assume that they will be built in the order in which they are\n" +"> listed.\n" +">\n" +"> Dependencies must form a directed acyclic graph. A target cannot\n" +"> depend on a dependency which itself, or one of its dependencies,\n" +"> depends on that target." +msgstr "" + +#: make-novice/_episodes/02-makefiles.md:363 +msgid "This rule is also an example of a rule that has no actions. It is used\n" +"purely to trigger the build of its dependencies, if needed." +msgstr "" + +#: make-novice/_episodes/02-makefiles.md:366 +msgid "If we run," +msgstr "" + +#: make-novice/_episodes/02-makefiles.md:368 +# code block +msgid "~~~\n" +"$ make dats\n" +"~~~" +msgstr "" + +#: make-novice/_episodes/02-makefiles.md:373 +msgid "then Make creates the data files:" +msgstr "" + +#: make-novice/_episodes/02-makefiles.md:375 +# code block +msgid "~~~\n" +"python countwords.py books/isles.txt isles.dat\n" +"python countwords.py books/abyss.txt abyss.dat\n" +"~~~" +msgstr "" + +#: make-novice/_episodes/02-makefiles.md:381 +msgid "If we run `dats` again, then Make will see that the dependencies (isles.dat\n" +"and abyss.dat) are already up to date. \n" +"Given the target `dats` has no actions, there is `nothing to be done`:\n" +"~~~\n" +"$ make dats\n" +"~~~\n" +"{: .language-bash}" +msgstr "" + +#: make-novice/_episodes/02-makefiles.md:389 +# code block +msgid "~~~\n" +"make: Nothing to be done for `dats'.\n" +"~~~" +msgstr "" + +#: make-novice/_episodes/02-makefiles.md:395 +#: make-novice/_episodes/04-dependencies.md:15 +msgid "Our Makefile now looks like this:" +msgstr "" + +#: make-novice/_episodes/02-makefiles.md:397 +# code block +msgid "~~~\n" +"# Count words.\n" +".PHONY : dats\n" +"dats : isles.dat abyss.dat\n" +"\n" +"isles.dat : books/isles.txt\n" +" python countwords.py books/isles.txt isles.dat\n" +"\n" +"abyss.dat : books/abyss.txt\n" +" python countwords.py books/abyss.txt abyss.dat\n" +"\n" +".PHONY : clean\n" +"clean :\n" +" rm -f *.dat\n" +"~~~" +msgstr "" + +#: make-novice/_episodes/02-makefiles.md:414 +msgid "The following figure shows a graph of the dependencies embodied within\n" +"our Makefile, involved in building the `dats` target:" +msgstr "" + +#: make-novice/_episodes/02-makefiles.md:417 +msgid "![Dependencies represented within the Makefile](../fig/02-makefile.png \"Dependencies represented within the Makefile\")" +msgstr "" + +#: make-novice/_episodes/02-makefiles.md:419 +# blockquote, which can be cascaded +msgid "> ## Write Two New Rules" +msgstr "" + +#: make-novice/_episodes/02-makefiles.md:420 +msgid ">\n" +"> 1. Write a new rule for `last.dat`, created from `books/last.txt`.\n" +"> 2. Update the `dats` rule with this target.\n" +"> 3. Write a new rule for `results.txt`, which creates the summary\n" +"> table. The rule needs to:\n" +"> * Depend upon each of the three `.dat` files.\n" +"> * Invoke the action `python testzipf.py abyss.dat isles.dat last.dat > results.txt`.\n" +"> 4. Put this rule at the top of the Makefile so that it is the default target.\n" +"> 5. Update `clean` so that it removes `results.txt`.\n" +">\n" +"> The starting Makefile is [here]({{ page.root }}/code/02-makefile/Makefile).\n" +">\n" +"> > ## Solution\n" +"> > See [this file]({{ page.root }}/code/02-makefile-challenge/Makefile) for a solution." +msgstr "" + +#: make-novice/_episodes/02-makefiles.md:434 +#: make-novice/_episodes/03-variables.md:146 +#: make-novice/_episodes/03-variables.md:174 +#: make-novice/_episodes/04-dependencies.md:171 +#: make-novice/_episodes/04-dependencies.md:216 +#: make-novice/_episodes/06-variables.md:69 +#: make-novice/_episodes/09-conclusion.md:51 +#: make-novice/_episodes/09-conclusion.md:99 +#: make-novice/_episodes/09-conclusion.md:115 +#: make-novice/_episodes/09-conclusion.md:130 +# SC/DC Template label +msgid "> {: .solution}" +msgstr "" + +#: make-novice/_episodes/02-makefiles.md:435 +#: make-novice/_episodes/03-variables.md:147 +#: make-novice/_episodes/03-variables.md:175 +#: make-novice/_episodes/04-dependencies.md:172 +#: make-novice/_episodes/04-dependencies.md:217 +#: make-novice/_episodes/06-variables.md:70 +#: make-novice/_episodes/07-functions.md:282 +#: make-novice/_episodes/09-conclusion.md:52 +#: make-novice/_episodes/09-conclusion.md:100 +#: make-novice/_episodes/09-conclusion.md:116 +#: make-novice/_episodes/09-conclusion.md:131 +# SC/DC Template label +msgid "{: .challenge}" +msgstr "" + +#: make-novice/_episodes/02-makefiles.md:437 +msgid "The following figure shows the dependencies embodied within our\n" +"Makefile, involved in building the `results.txt` target:" +msgstr "" + +#: make-novice/_episodes/02-makefiles.md:440 +msgid "![results.txt dependencies represented within the Makefile](../fig/02-makefile-challenge.png \"results.txt dependencies represented within the Makefile\")" +msgstr "" + +#: make-novice/_episodes/03-variables.md:1 +# Front Matter +msgid "---\n" +"title: \"Automatic Variables\"\n" +"teaching: 10\n" +"exercises: 5\n" +"questions:\n" +"- \"How can I abbreviate the rules in my Makefiles?\"\n" +"objectives:\n" +"- \"Use Make automatic variables to remove duplication in a Makefile.\"\n" +"- \"Explain why shell wildcards in dependencies can cause problems.\"\n" +"keypoints:\n" +"- \"Use `$@` to refer to the target of the current rule.\"\n" +"- \"Use `$^` to refer to the dependencies of the current rule.\"\n" +"- \"Use `$<` to refer to the first dependency of the current rule.\"\n" +"---" +msgstr "" + +#: make-novice/_episodes/03-variables.md:16 +msgid "After the exercise at the end of the previous episode, our Makefile looked like this:" +msgstr "" + +#: make-novice/_episodes/03-variables.md:18 +# code block +msgid "~~~\n" +"# Generate summary table.\n" +"results.txt : isles.dat abyss.dat last.dat\n" +" python testzipf.py abyss.dat isles.dat last.dat > results.txt\n" +"\n" +"# Count words.\n" +".PHONY : dats\n" +"dats : isles.dat abyss.dat last.dat\n" +"\n" +"isles.dat : books/isles.txt\n" +" python countwords.py books/isles.txt isles.dat\n" +"\n" +"abyss.dat : books/abyss.txt\n" +" python countwords.py books/abyss.txt abyss.dat\n" +"\n" +"last.dat : books/last.txt\n" +" python countwords.py books/last.txt last.dat\n" +"\n" +".PHONY : clean\n" +"clean :\n" +" rm -f *.dat\n" +" rm -f results.txt\n" +"~~~" +msgstr "" + +#: make-novice/_episodes/03-variables.md:43 +msgid "Our Makefile has a lot of duplication. For example, the names of text\n" +"files and data files are repeated in many places throughout the\n" +"Makefile. Makefiles are a form of code and, in any code, repeated code\n" +"can lead to problems e.g. we rename a data file in one part of the\n" +"Makefile but forget to rename it elsewhere." +msgstr "" + +#: make-novice/_episodes/03-variables.md:49 +# blockquote, which can be cascaded +msgid "> ## D.R.Y. (Don't Repeat Yourself)" +msgstr "" + +#: make-novice/_episodes/03-variables.md:50 +msgid ">\n" +"> In many programming languages, the bulk of the language features are\n" +"> there to allow the programmer to describe long-winded computational\n" +"> routines as short, expressive, beautiful code. Features in Python\n" +"> or R or Java, such as user-defined variables and functions are useful in\n" +"> part because they mean we don't have to write out (or think about)\n" +"> all of the details over and over again. This good habit of writing\n" +"> things out only once is known as the \"Don't Repeat Yourself\"\n" +"> principle or D.R.Y." +msgstr "" + +#: make-novice/_episodes/03-variables.md:61 +msgid "Let us set about removing some of the repetition from our Makefile." +msgstr "" + +#: make-novice/_episodes/03-variables.md:63 +msgid "In our `results.txt` rule we duplicate the data file names and the\n" +"name of the results file name:" +msgstr "" + +#: make-novice/_episodes/03-variables.md:66 +# code block +msgid "~~~\n" +"results.txt : isles.dat abyss.dat last.dat\n" +" python testzipf.py abyss.dat isles.dat last.dat > results.txt\n" +"~~~" +msgstr "" + +#: make-novice/_episodes/03-variables.md:72 +msgid "Looking at the results file name first, we can replace it in the action\n" +"with `$@`:" +msgstr "" + +#: make-novice/_episodes/03-variables.md:75 +# code block +msgid "~~~\n" +"results.txt : isles.dat abyss.dat last.dat\n" +" python testzipf.py abyss.dat isles.dat last.dat > $@\n" +"~~~" +msgstr "" + +#: make-novice/_episodes/03-variables.md:81 +msgid "`$@` is a Make [automatic variable]({{ page.root }}/reference#automatic-variable)\n" +"which means 'the target of the current rule'. When Make is run it will\n" +"replace this variable with the target name." +msgstr "" + +#: make-novice/_episodes/03-variables.md:85 +msgid "We can replace the dependencies in the action with `$^`:" +msgstr "" + +#: make-novice/_episodes/03-variables.md:87 +# code block +msgid "~~~\n" +"results.txt : isles.dat abyss.dat last.dat\n" +" python testzipf.py $^ > $@\n" +"~~~" +msgstr "" + +#: make-novice/_episodes/03-variables.md:93 +msgid "`$^` is another automatic variable which means 'all the dependencies\n" +"of the current rule'. Again, when Make is run it will replace this\n" +"variable with the dependencies." +msgstr "" + +#: make-novice/_episodes/03-variables.md:97 +msgid "Let's update our text files and re-run our rule:" +msgstr "" + +#: make-novice/_episodes/03-variables.md:99 +# code block +msgid "~~~\n" +"$ touch books/*.txt\n" +"$ make results.txt\n" +"~~~" +msgstr "" + +#: make-novice/_episodes/03-variables.md:107 +# code block +msgid "~~~\n" +"python countwords.py books/isles.txt isles.dat\n" +"python countwords.py books/abyss.txt abyss.dat\n" +"python countwords.py books/last.txt last.dat\n" +"python testzipf.py isles.dat abyss.dat last.dat > results.txt\n" +"~~~" +msgstr "" + +#: make-novice/_episodes/03-variables.md:116 +# blockquote, which can be cascaded +msgid "> ## Update Dependencies" +msgstr "" + +#: make-novice/_episodes/03-variables.md:117 +msgid ">\n" +"> What will happen if you now execute:\n" +">\n" +"> ~~~\n" +"> $ touch *.dat\n" +"> $ make results.txt\n" +"> ~~~\n" +"> {: .language-bash}\n" +">\n" +"> 1. nothing\n" +"> 2. all files recreated\n" +"> 3. only `.dat` files recreated\n" +"> 4. only `results.txt` recreated\n" +">\n" +"> > ## Solution\n" +"> > `4.` Only `results.txt` recreated.\n" +"> >\n" +"> > The rules for `*.dat` are not executed because their corresponding `.txt` files\n" +"> > haven't been modified.\n" +"> >\n" +"> > If you run:\n" +"> >\n" +"> > ~~~\n" +"> > $ touch books/*.txt\n" +"> > $ make results.txt\n" +"> > ~~~\n" +"> > {: .language-bash}\n" +"> >\n" +"> > you will find that the `.dat` files as well as `results.txt` are recreated." +msgstr "" + +#: make-novice/_episodes/03-variables.md:149 +msgid "As we saw, `$^` means 'all the dependencies of the current rule'. This\n" +"works well for `results.txt` as its action treats all the dependencies\n" +"the same - as the input for the `testzipf.py` script." +msgstr "" + +#: make-novice/_episodes/03-variables.md:153 +msgid "However, for some rules, we may want to treat the first dependency\n" +"differently. For example, our rules for `.dat` use their first (and\n" +"only) dependency specifically as the input file to `countwords.py`. If\n" +"we add additional dependencies (as we will soon do) then we don't want\n" +"these being passed as input files to `countwords.py` as it expects only\n" +"one input file to be named when it is invoked." +msgstr "" + +#: make-novice/_episodes/03-variables.md:160 +msgid "Make provides an automatic variable for this, `$<` which means 'the\n" +"first dependency of the current rule'." +msgstr "" + +#: make-novice/_episodes/03-variables.md:163 +# blockquote, which can be cascaded +msgid "> ## Rewrite `.dat` Rules to Use Automatic Variables" +msgstr "" + +#: make-novice/_episodes/03-variables.md:164 +msgid ">\n" +"> Rewrite each `.dat` rule to use the automatic variables `$@` ('the\n" +"> target of the current rule') and `$<` ('the first dependency of the\n" +"> current rule').\n" +"> [This file]({{ page.root }}/code/03-variables/Makefile) contains\n" +"> the Makefile immediately before the challenge.\n" +">\n" +"> > ## Solution\n" +"> > See [this file]({{ page.root }}/code/03-variables-challenge/Makefile)\n" +"> > for a solution to this challenge." +msgstr "" + +#: make-novice/_episodes/04-dependencies.md:1 +# Front Matter +msgid "---\n" +"title: \"Dependencies on Data and Code\"\n" +"teaching: 15\n" +"exercises: 5\n" +"questions:\n" +"- \"How can I write a Makefile to update things when my scripts have changed rather than my input files?\"\n" +"objectives:\n" +"- \"Output files are a product not only of input files but of the scripts or code that created the output files.\"\n" +"- \"Recognize and avoid false dependencies.\"\n" +"keypoints:\n" +"- \"Make results depend on processing scripts as well as data files.\"\n" +"- \"Dependencies are transitive: if A depends on B and B depends on C, a change to C will indirectly trigger an update to A.\"\n" +"---" +msgstr "" + +#: make-novice/_episodes/04-dependencies.md:17 +# code block +msgid "~~~\n" +"# Generate summary table.\n" +"results.txt : isles.dat abyss.dat last.dat\n" +" python testzipf.py $^ > $@\n" +"\n" +"# Count words.\n" +".PHONY : dats\n" +"dats : isles.dat abyss.dat last.dat\n" +"\n" +"isles.dat : books/isles.txt\n" +" python countwords.py $< $@\n" +"\n" +"abyss.dat : books/abyss.txt\n" +" python countwords.py $< $@\n" +"\n" +"last.dat : books/last.txt\n" +" python countwords.py $< $@\n" +"\n" +".PHONY : clean\n" +"clean :\n" +" rm -f *.dat\n" +" rm -f results.txt\n" +"~~~" +msgstr "" + +#: make-novice/_episodes/04-dependencies.md:42 +msgid "Our data files are a product not only of our text files but the\n" +"script, `countwords.py`, that processes the text files and creates the\n" +"data files. A change to `countwords.py` (e.g. to add a new column of\n" +"summary data or remove an existing one) results in changes to the\n" +"`.dat` files it outputs. So, let's pretend to edit `countwords.py`,\n" +"using `touch`, and re-run Make:" +msgstr "" + +#: make-novice/_episodes/04-dependencies.md:49 +# code block +msgid "~~~\n" +"$ make dats\n" +"$ touch countwords.py\n" +"$ make dats\n" +"~~~" +msgstr "" + +#: make-novice/_episodes/04-dependencies.md:56 +msgid "Nothing happens! Though we've updated `countwords.py` our data files\n" +"are not updated because our rules for creating `.dat` files don't\n" +"record any dependencies on `countwords.py`." +msgstr "" + +#: make-novice/_episodes/04-dependencies.md:60 +msgid "We need to add `countwords.py` as a dependency of each of our\n" +"data files also:" +msgstr "" + +#: make-novice/_episodes/04-dependencies.md:63 +# code block +msgid "~~~\n" +"isles.dat : books/isles.txt countwords.py\n" +" python countwords.py $< $@\n" +"\n" +"abyss.dat : books/abyss.txt countwords.py\n" +" python countwords.py $< $@\n" +"\n" +"last.dat : books/last.txt countwords.py\n" +" python countwords.py $< $@\n" +"~~~" +msgstr "" + +#: make-novice/_episodes/04-dependencies.md:75 +msgid "If we pretend to edit `countwords.py` and re-run Make," +msgstr "" + +#: make-novice/_episodes/04-dependencies.md:77 +# code block +msgid "~~~\n" +"$ touch countwords.py\n" +"$ make dats\n" +"~~~" +msgstr "" + +#: make-novice/_episodes/04-dependencies.md:85 +#: make-novice/_episodes/05-patterns.md:45 +# code block +msgid "~~~\n" +"python countwords.py books/isles.txt isles.dat\n" +"python countwords.py books/abyss.txt abyss.dat\n" +"python countwords.py books/last.txt last.dat\n" +"~~~" +msgstr "" + +#: make-novice/_episodes/04-dependencies.md:92 +# blockquote, which can be cascaded +msgid "> ## Dry run" +msgstr "" + +#: make-novice/_episodes/04-dependencies.md:93 +msgid ">\n" +"> `make` can show the commands it will execute without actually running them if we pass the `-n` flag:\n" +">\n" +"> ~~~\n" +"> $ touch countwords.py\n" +"> $ make -n dats\n" +"> ~~~\n" +"> {: .language-bash}\n" +">\n" +"> This gives the same output to the screen as without the `-n` flag, but the commands are not actually run. Using this 'dry-run' mode is a good way to check that you have set up your Makefile properly before actually running the commands in it.\n" +">" +msgstr "" + +#: make-novice/_episodes/04-dependencies.md:106 +msgid "The following figure shows the dependencies embodied within our\n" +"Makefile, involved in building the `results.txt` target, after adding\n" +"`countwords.py` and `testzipf.py` as dependencies to their respective target files\n" +"(i.e. how the Makefile should look after completing the rest of the exercises\n" +"in this episode)." +msgstr "" + +#: make-novice/_episodes/04-dependencies.md:112 +msgid "![results.txt dependencies after adding countwords.py and testzipf.py as dependencies](../fig/04-dependencies.png \"results.txt dependencies after adding countwords.py and testzipf.py as dependencies\")" +msgstr "" + +#: make-novice/_episodes/04-dependencies.md:114 +# blockquote, which can be cascaded +msgid "> ## Why Don't the `.txt` Files Depend on `countwords.py`?" +msgstr "" + +#: make-novice/_episodes/04-dependencies.md:115 +msgid ">\n" +"> `.txt` files are input files and have no dependencies. To make these\n" +"> depend on `countwords.py` would introduce a [false\n" +"> dependency]({{ page.root }}/reference#false-dependency)." +msgstr "" + +#: make-novice/_episodes/04-dependencies.md:121 +msgid "Intuitively, we should also add `countwords.py` as dependency for\n" +"`results.txt`, as the final table should be rebuilt as we remake the\n" +"`.dat` files. However, it turns out we don't have to! Let's see what\n" +"happens to `results.txt` when we update `countwords.py`:" +msgstr "" + +#: make-novice/_episodes/04-dependencies.md:126 +# code block +msgid "~~~\n" +"$ touch countwords.py\n" +"$ make results.txt\n" +"~~~" +msgstr "" + +#: make-novice/_episodes/04-dependencies.md:134 +# code block +msgid "~~~\n" +"python countwords.py books/abyss.txt abyss.dat\n" +"python countwords.py books/isles.txt isles.dat\n" +"python countwords.py books/last.txt last.dat\n" +"python testzipf.py abyss.dat isles.dat last.dat > results.txt\n" +"~~~" +msgstr "" + +#: make-novice/_episodes/04-dependencies.md:142 +msgid "The whole pipeline is triggered, even the creation of the\n" +"`results.txt` file! To understand this, note that according to the\n" +"dependency figure, `results.txt` depends on the `.dat` files. The\n" +"update of `countwords.py` triggers an update of the `*.dat`\n" +"files. Thus, `make` sees that the dependencies (the `.dat` files) are\n" +"newer than the target file (`results.txt`) and thus it recreates\n" +"`results.txt`. This is an example of the power of `make`: updating a\n" +"subset of the files in the pipeline triggers rerunning the appropriate\n" +"downstream steps." +msgstr "" + +#: make-novice/_episodes/04-dependencies.md:152 +# blockquote, which can be cascaded +msgid "> ## Updating One Input File" +msgstr "" + +#: make-novice/_episodes/04-dependencies.md:153 +msgid ">\n" +"> What will happen if you now execute:\n" +">\n" +"> ~~~\n" +"> $ touch books/last.txt\n" +"> $ make results.txt\n" +"> ~~~\n" +"> {: .language-bash}\n" +">\n" +"> 1. only `last.dat` is recreated\n" +"> 2. all `.dat` files are recreated\n" +"> 3. only `last.dat` and `results.txt` are recreated\n" +"> 4. all `.dat` and `results.txt` are recreated\n" +">\n" +"> > ## Solution\n" +"> > `3.` only `last.dat` and `results.txt` are recreated.\n" +"> >\n" +"> > Follow the dependency tree to understand the answer(s)." +msgstr "" + +#: make-novice/_episodes/04-dependencies.md:174 +# blockquote, which can be cascaded +msgid "> ## `testzipf.py` as a Dependency of `results.txt`." +msgstr "" + +#: make-novice/_episodes/04-dependencies.md:175 +msgid ">\n" +"> What would happen if you added `testzipf.py` as dependency of `results.txt`, and why?\n" +">\n" +"> > ## Solution\n" +"> >\n" +"> > If you change the rule for the `results.txt` file like this:\n" +"> >\n" +"> > ~~~\n" +"> > results.txt : isles.dat abyss.dat last.dat testzipf.py\n" +"> > python testzipf.py $^ > $@\n" +"> > ~~~\n" +"> > {: .language-make}\n" +"> >\n" +"> > `testzipf.py` becomes a part of `$^`, thus the command becomes\n" +"> >\n" +"> > ~~~\n" +"> > python testzipf.py abyss.dat isles.dat last.dat testzipf.py > results.txt\n" +"> > ~~~\n" +"> > {: .language-bash}\n" +"> >\n" +"> > This results in an error from `testzipf.py` as it tries to parse the\n" +"> > script as if it were a `.dat` file. Try this by running:\n" +"> >\n" +"> > ~~~\n" +"> > $ make results.txt\n" +"> > ~~~\n" +"> > {: .language-bash}\n" +"> >\n" +"> > You'll get\n" +"> >\n" +"> > ~~~\n" +"> > python testzipf.py abyss.dat isles.dat last.dat testzipf.py > results.txt\n" +"> > Traceback (most recent call last):\n" +"> > File \"testzipf.py\", line 19, in \n" +"> > counts = load_word_counts(input_file)\n" +"> > File \"path/to/testzipf.py\", line 39, in load_word_counts\n" +"> > counts.append((fields[0], int(fields[1]), float(fields[2])))\n" +"> > IndexError: list index out of range\n" +"> > make: *** [results.txt] Error 1\n" +"> > ~~~\n" +"> > {: .error}" +msgstr "" + +#: make-novice/_episodes/04-dependencies.md:219 +msgid "We still have to add the `testzipf.py` script as dependency to\n" +"`results.txt`. Given the answer to the challenge above, we cannot use\n" +"`$^` in the rule. \n" +"We can however move `testzipf.py` to be the\n" +"first dependency and then use `$<` to refer to it. \n" +"In order to refer to the `.dat` files, we can just use `*.dat` for now (we will\n" +"cover a better solution later on)." +msgstr "" + +#: make-novice/_episodes/04-dependencies.md:227 +# code block +msgid "~~~\n" +"results.txt : testzipf.py isles.dat abyss.dat last.dat\n" +" python $< *.dat > $@\n" +"~~~" +msgstr "" + +#: make-novice/_episodes/04-dependencies.md:233 +#: make-novice/_episodes/05-patterns.md:96 +#: make-novice/_episodes/06-variables.md:112 +#: make-novice/_episodes/07-functions.md:258 +#: make-novice/_episodes/08-self-doc.md:125 +# blockquote, which can be cascaded +msgid "> ## Where We Are" +msgstr "" + +#: make-novice/_episodes/04-dependencies.md:234 +msgid ">\n" +"> [This Makefile]({{ page.root }}/code/04-dependencies/Makefile)\n" +"> contains everything done so far in this topic." +msgstr "" + +#: make-novice/_episodes/05-patterns.md:1 +# Front Matter +msgid "---\n" +"title: \"Pattern Rules\"\n" +"teaching: 10\n" +"exercises: 0\n" +"questions:\n" +"- \"How can I define rules to operate on similar files?\"\n" +"objectives:\n" +"- \"Write Make pattern rules.\"\n" +"keypoints:\n" +"- \"Use the wildcard `%` as a placeholder in targets and dependencies.\"\n" +"- \"Use the special variable `$*` to refer to matching sets of files in actions.\"\n" +"---" +msgstr "" + +#: make-novice/_episodes/05-patterns.md:14 +msgid "Our Makefile still has repeated content. The rules for each `.dat`\n" +"file are identical apart from the text and data file names. We can\n" +"replace these rules with a single [pattern\n" +"rule]({{ page.root }}/reference#pattern-rule) which can be used to build any\n" +"`.dat` file from a `.txt` file in `books/`:" +msgstr "" + +#: make-novice/_episodes/05-patterns.md:20 +# code block +msgid "~~~\n" +"%.dat : books/%.txt countwords.py\n" +" python countwords.py $< $*.dat\n" +"~~~" +msgstr "" + +#: make-novice/_episodes/05-patterns.md:26 +msgid "`%` is a Make [wildcard]({{ page.root }}/reference#wildcard). `$*` is a special\n" +"variable which gets replaced by the [stem]({{ page.root }}/reference#stem) with\n" +"which the rule matched." +msgstr "" + +#: make-novice/_episodes/05-patterns.md:30 +msgid "This rule can be interpreted as:\n" +"\"In order to build a file named `[something].dat` (the target)\n" +"find a file named `books/[that same something].txt` (the dependency)\n" +"and run `countwords.py [the dependency] [the target]`.\"" +msgstr "" + +#: make-novice/_episodes/05-patterns.md:35 +msgid "If we re-run Make," +msgstr "" + +#: make-novice/_episodes/05-patterns.md:37 +#: make-novice/_episodes/07-functions.md:145 +# code block +msgid "~~~\n" +"$ make clean\n" +"$ make dats\n" +"~~~" +msgstr "" + +#: make-novice/_episodes/05-patterns.md:52 +msgid "Note that we can still use Make to build individual `.dat` targets as before,\n" +"and that our new rule will work no matter what stem is being matched." +msgstr "" + +#: make-novice/_episodes/05-patterns.md:55 +# code block +msgid "```\n" +"$ make sierra.dat\n" +"```" +msgstr "" + +#: make-novice/_episodes/05-patterns.md:60 +msgid "which gives the output below:" +msgstr "" + +#: make-novice/_episodes/05-patterns.md:62 +# code block +msgid "```\n" +"python countwords.py books/sierra.txt sierra.dat\n" +"```" +msgstr "" + +#: make-novice/_episodes/05-patterns.md:67 +# blockquote, which can be cascaded +msgid "> ## Using Make Wildcards" +msgstr "" + +#: make-novice/_episodes/05-patterns.md:68 +msgid ">\n" +"> The Make `%` wildcard can only be used in a target and in its\n" +"> dependencies. It cannot be used in actions. In actions, you may\n" +"> however use `$*`, which will be replaced by the stem with which\n" +"> the rule matched." +msgstr "" + +#: make-novice/_episodes/05-patterns.md:75 +msgid "Our Makefile is now much shorter and cleaner:" +msgstr "" + +#: make-novice/_episodes/05-patterns.md:77 +# code block +msgid "~~~\n" +"# Generate summary table.\n" +"results.txt : testzipf.py isles.dat abyss.dat last.dat\n" +" python $< *.dat > $@\n" +"\n" +"# Count words.\n" +".PHONY : dats\n" +"dats : isles.dat abyss.dat last.dat\n" +"\n" +"%.dat : books/%.txt countwords.py\n" +" python countwords.py $< $*.dat\n" +"\n" +".PHONY : clean\n" +"clean :\n" +" rm -f *.dat\n" +" rm -f results.txt\n" +"~~~" +msgstr "" + +#: make-novice/_episodes/05-patterns.md:97 +msgid ">\n" +"> [This Makefile]({{ page.root }}/code/05-patterns/Makefile)\n" +"> contains all of our work so far." +msgstr "" + +#: make-novice/_episodes/05-patterns.md:102 +msgid "This episode has introduced pattern rules, and used the `$*` variable\n" +"in the `dat` rule in order to explain how to use it.\n" +"Arguably, a neater solution would have been to use `$@` to refer to\n" +"the target of the current rule (see below),\n" +"but then we wouldn't have learned about `$*`." +msgstr "" + +#: make-novice/_episodes/05-patterns.md:108 +# code block +msgid "```\n" +"%.dat : books/%.txt countwords.py\n" +" python countwords.py $< $@\n" +"```" +msgstr "" + +#: make-novice/_episodes/06-variables.md:1 +# Front Matter +msgid "---\n" +"title: \"Variables\"\n" +"teaching: 15\n" +"exercises: 5\n" +"questions:\n" +"- \"How can I eliminate redundancy in my Makefiles?\"\n" +"objectives:\n" +"- \"Use variables in a Makefile.\"\n" +"- \"Explain the benefits of decoupling configuration from computation.\"\n" +"keypoints:\n" +"- \"Define variables by assigning values to names.\"\n" +"- \"Reference variables using `$(...)`.\"\n" +"---" +msgstr "" + +#: make-novice/_episodes/06-variables.md:15 +msgid "Despite our efforts, our Makefile still has repeated content, i.e.\n" +"the name of our script -- `countwords.py`, and the program we use to run it -- `python`.\n" +"If we renamed our script we'd have to update our Makefile in multiple places." +msgstr "" + +#: make-novice/_episodes/06-variables.md:19 +msgid "We can introduce a Make [variable]({{ page.root }}/reference#variable) (called a\n" +"[macro]({{ page.root }}/reference#macro) in some versions of Make) to hold our\n" +"script name:" +msgstr "" + +#: make-novice/_episodes/06-variables.md:23 +# code block +msgid "~~~\n" +"COUNT_SRC=countwords.py\n" +"~~~" +msgstr "" + +#: make-novice/_episodes/06-variables.md:28 +msgid "This is a variable [assignment]({{ page.root }}/reference#assignment) -\n" +"`COUNT_SRC` is assigned the value `countwords.py`." +msgstr "" + +#: make-novice/_episodes/06-variables.md:31 +msgid "`countwords.py` is our script and it is invoked by passing it to\n" +"`python`. We can introduce another couple of variables to represent this\n" +"execution:" +msgstr "" + +#: make-novice/_episodes/06-variables.md:35 +# code block +msgid "~~~\n" +"LANGUAGE=python\n" +"COUNT_EXE=$(LANGUAGE) $(COUNT_SRC)\n" +"~~~" +msgstr "" + +#: make-novice/_episodes/06-variables.md:41 +msgid "`$(...)` tells Make to replace a variable with its value when Make\n" +"is run. This is a variable [reference]({{ page.root }}/reference#reference). At\n" +"any place where we want to use the value of a variable we have to\n" +"write it, or reference it, in this way." +msgstr "" + +#: make-novice/_episodes/06-variables.md:46 +msgid "Here we reference the variables `LANGUAGE` and `COUNT_SRC`. This tells Make to\n" +"replace the variable `LANGUAGE` with its value `python`,\n" +"and to replace the variable `COUNT_SRC` with its value `countwords.py`. When\n" +"Make is run it will assign to `COUNT_EXE` the value `python\n" +"countwords.py`." +msgstr "" + +#: make-novice/_episodes/06-variables.md:52 +msgid "Defining the variable `COUNT_EXE` in this way avoids repeating `python` in our \n" +"Makefile, and allows us to easily\n" +"change how our script is run (e.g. we might want to use a different\n" +"version of Python and need to change `python` to `python2` -- or we might want to\n" +"rewrite the script using another language (e.g. switch from Python to R))." +msgstr "" + +#: make-novice/_episodes/06-variables.md:58 +# blockquote, which can be cascaded +msgid "> ## Use Variables" +msgstr "" + +#: make-novice/_episodes/06-variables.md:59 +msgid ">\n" +"> Update `Makefile` so that the `%.dat` rule\n" +"> references the variables `COUNT_SRC` and `COUNT_EXE`.\n" +"> Then do the same for the `testzipf.py` script\n" +"> and the `results.txt` rule,\n" +"> using `ZIPF_SRC` and `ZIPF_EXE` as variable names\n" +">\n" +"> > ## Solution\n" +"> > [This Makefile]({{ page.root }}/code/06-variables-challenge/Makefile)\n" +"> > contains a solution to this challenge." +msgstr "" + +#: make-novice/_episodes/06-variables.md:72 +msgid "We place variables at the top of a Makefile so they are easy to\n" +"find and modify. Alternatively, we can pull them out into a new\n" +"file that just holds variable definitions (i.e. delete them from\n" +"the original makefile). Let us create `config.mk`:" +msgstr "" + +#: make-novice/_episodes/06-variables.md:77 +#: make-novice/_episodes/07-functions.md:240 +# code block +msgid "~~~\n" +"# Count words script.\n" +"LANGUAGE=python\n" +"COUNT_SRC=countwords.py\n" +"COUNT_EXE=$(LANGUAGE) $(COUNT_SRC)\n" +"\n" +"# Test Zipf's rule\n" +"ZIPF_SRC=testzipf.py\n" +"ZIPF_EXE=$(LANGUAGE) $(ZIPF_SRC)\n" +"~~~" +msgstr "" + +#: make-novice/_episodes/06-variables.md:89 +msgid "We can then import `config.mk` into `Makefile` using:" +msgstr "" + +#: make-novice/_episodes/06-variables.md:91 +#: make-novice/reference.md:193 +# code block +msgid "~~~\n" +"include config.mk\n" +"~~~" +msgstr "" + +#: make-novice/_episodes/06-variables.md:96 +msgid "We can re-run Make to see that everything still works:" +msgstr "" + +#: make-novice/_episodes/06-variables.md:98 +# code block +msgid "~~~\n" +"$ make clean\n" +"$ make dats\n" +"$ make results.txt\n" +"~~~" +msgstr "" + +#: make-novice/_episodes/06-variables.md:105 +msgid "We have separated the configuration of our Makefile from its rules,\n" +"the parts that do all the work. If we want to change our script name\n" +"or how it is executed we just need to edit our configuration file, not\n" +"our source code in `Makefile`. Decoupling code from configuration in\n" +"this way is good programming practice, as it promotes more modular,\n" +"flexible and reusable code." +msgstr "" + +#: make-novice/_episodes/06-variables.md:113 +msgid ">\n" +"> [This Makefile]({{ page.root }}/code/06-variables/Makefile)\n" +"> and [its accompanying `config.mk`]({{ page.root }}/code/06-variables/config.mk)\n" +"> contain all of our work so far." +msgstr "" + +#: make-novice/_episodes/07-functions.md:1 +# Front Matter +msgid "---\n" +"title: \"Functions\"\n" +"teaching: 20\n" +"exercises: 5\n" +"questions:\n" +"- \"How *else* can I eliminate redundancy in my Makefiles?\"\n" +"objectives:\n" +"- \"Write Makefiles that use functions to match and transform sets of files.\"\n" +"keypoints:\n" +"- \"Make is actually a small programming language with many built-in functions.\"\n" +"- \"Use `wildcard` function to get lists of files matching a pattern.\"\n" +"- \"Use `patsubst` function to rewrite file names.\"\n" +"---" +msgstr "" + +#: make-novice/_episodes/07-functions.md:15 +msgid "At this point, we have the following Makefile:" +msgstr "" + +#: make-novice/_episodes/07-functions.md:17 +# code block +msgid "~~~\n" +"include config.mk\n" +"\n" +"# Generate summary table.\n" +"results.txt : $(ZIPF_SRC) isles.dat abyss.dat last.dat\n" +" $(ZIPF_EXE) *.dat > $@\n" +"\n" +"# Count words.\n" +".PHONY : dats\n" +"dats : isles.dat abyss.dat last.dat\n" +"\n" +"%.dat : books/%.txt $(COUNT_SRC)\n" +" $(COUNT_EXE) $< $*.dat\n" +"\n" +".PHONY : clean\n" +"clean :\n" +" rm -f *.dat\n" +" rm -f results.txt\n" +"~~~" +msgstr "" + +#: make-novice/_episodes/07-functions.md:38 +msgid "Make has many [functions]({{ page.root }}/reference#function) which can be used to\n" +"write more complex rules. One example is `wildcard`. `wildcard` gets a\n" +"list of files matching some pattern, which we can then save in a\n" +"variable. So, for example, we can get a list of all our text files\n" +"(files ending in `.txt`) and save these in a variable by adding this at\n" +"the beginning of our makefile:" +msgstr "" + +#: make-novice/_episodes/07-functions.md:45 +#: make-novice/reference.md:200 +# code block +msgid "~~~\n" +"TXT_FILES=$(wildcard books/*.txt)\n" +"~~~" +msgstr "" + +#: make-novice/_episodes/07-functions.md:50 +msgid "We can add a `.PHONY` target and rule to show the variable's value:" +msgstr "" + +#: make-novice/_episodes/07-functions.md:52 +# code block +msgid "~~~\n" +".PHONY : variables\n" +"variables:\n" +" @echo TXT_FILES: $(TXT_FILES)\n" +"~~~" +msgstr "" + +#: make-novice/_episodes/07-functions.md:59 +# blockquote, which can be cascaded +msgid "> ## @echo" +msgstr "" + +#: make-novice/_episodes/07-functions.md:60 +msgid ">\n" +"> Make prints actions as it executes them. Using `@` at the start of\n" +"> an action tells Make not to print this action. So, by using `@echo`\n" +"> instead of `echo`, we can see the result of `echo` (the variable's\n" +"> value being printed) but not the `echo` command itself." +msgstr "" + +#: make-novice/_episodes/07-functions.md:67 +msgid "If we run Make:" +msgstr "" + +#: make-novice/_episodes/07-functions.md:69 +#: make-novice/_episodes/07-functions.md:107 +# code block +msgid "~~~\n" +"$ make variables\n" +"~~~" +msgstr "" + +#: make-novice/_episodes/07-functions.md:76 +# code block +msgid "~~~\n" +"TXT_FILES: books/abyss.txt books/isles.txt books/last.txt books/sierra.txt\n" +"~~~" +msgstr "" + +#: make-novice/_episodes/07-functions.md:81 +msgid "Note how `sierra.txt` is now included too." +msgstr "" + +#: make-novice/_episodes/07-functions.md:83 +msgid "`patsubst` ('pattern substitution') takes a pattern, a replacement string and a\n" +"list of names in that order; each name in the list that matches the pattern is\n" +"replaced by the replacement string. Again, we can save the result in a\n" +"variable. So, for example, we can rewrite our list of text files into\n" +"a list of data files (files ending in `.dat`) and save these in a\n" +"variable:" +msgstr "" + +#: make-novice/_episodes/07-functions.md:90 +#: make-novice/reference.md:212 +# code block +msgid "~~~\n" +"DAT_FILES=$(patsubst books/%.txt, %.dat, $(TXT_FILES))\n" +"~~~" +msgstr "" + +#: make-novice/_episodes/07-functions.md:95 +msgid "We can extend `variables` to show the value of `DAT_FILES` too:" +msgstr "" + +#: make-novice/_episodes/07-functions.md:97 +# code block +msgid "~~~\n" +".PHONY : variables\n" +"variables:\n" +" @echo TXT_FILES: $(TXT_FILES)\n" +" @echo DAT_FILES: $(DAT_FILES)\n" +"~~~" +msgstr "" + +#: make-novice/_episodes/07-functions.md:114 +# code block +msgid "~~~\n" +"TXT_FILES: books/abyss.txt books/isles.txt books/last.txt books/sierra.txt\n" +"DAT_FILES: abyss.dat isles.dat last.dat sierra.dat\n" +"~~~" +msgstr "" + +#: make-novice/_episodes/07-functions.md:120 +msgid "Now, `sierra.txt` is processed too." +msgstr "" + +#: make-novice/_episodes/07-functions.md:122 +msgid "With these we can rewrite `clean` and `dats`:" +msgstr "" + +#: make-novice/_episodes/07-functions.md:124 +# code block +msgid "~~~\n" +".PHONY : dats\n" +"dats : $(DAT_FILES)\n" +"\n" +".PHONY : clean\n" +"clean :\n" +" rm -f $(DAT_FILES)\n" +" rm -f results.txt\n" +"~~~" +msgstr "" + +#: make-novice/_episodes/07-functions.md:135 +msgid "Let's also tidy up the `%.dat` rule by using the automatic variable `$@` instead of `$*.dat`:" +msgstr "" + +#: make-novice/_episodes/07-functions.md:137 +# code block +msgid "```\n" +"%.dat : books/%.txt $(COUNT_SRC)\n" +" $(COUNT_EXE) $< $@\n" +"```" +msgstr "" + +#: make-novice/_episodes/07-functions.md:143 +msgid "Let's check:" +msgstr "" + +#: make-novice/_episodes/07-functions.md:153 +# code block +msgid "~~~\n" +"python countwords.py books/abyss.txt abyss.dat\n" +"python countwords.py books/isles.txt isles.dat\n" +"python countwords.py books/last.txt last.dat\n" +"python countwords.py books/sierra.txt sierra.dat\n" +"~~~" +msgstr "" + +#: make-novice/_episodes/07-functions.md:161 +msgid "We can also rewrite `results.txt`:" +msgstr "" + +#: make-novice/_episodes/07-functions.md:163 +# code block +msgid "~~~\n" +"results.txt : $(ZIPF_SRC) $(DAT_FILES)\n" +" $(ZIPF_EXE) $(DAT_FILES) > $@\n" +"~~~" +msgstr "" + +#: make-novice/_episodes/07-functions.md:169 +msgid "If we re-run Make:" +msgstr "" + +#: make-novice/_episodes/07-functions.md:171 +# code block +msgid "~~~\n" +"$ make clean\n" +"$ make results.txt\n" +"~~~" +msgstr "" + +#: make-novice/_episodes/07-functions.md:179 +# code block +msgid "~~~\n" +"python countwords.py books/abyss.txt abyss.dat\n" +"python countwords.py books/isles.txt isles.dat\n" +"python countwords.py books/last.txt last.dat\n" +"python countwords.py books/sierra.txt sierra.dat\n" +"python testzipf.py last.dat isles.dat abyss.dat sierra.dat > results.txt\n" +"~~~" +msgstr "" + +#: make-novice/_episodes/07-functions.md:188 +msgid "Let's check the `results.txt` file:" +msgstr "" + +#: make-novice/_episodes/07-functions.md:190 +# code block +msgid "~~~\n" +"$ cat results.txt\n" +"~~~" +msgstr "" + +#: make-novice/_episodes/07-functions.md:195 +# code block +msgid "~~~\n" +"Book First Second Ratio\n" +"abyss 4044 2807 1.44\n" +"isles 3822 2460 1.55\n" +"last 12244 5566 2.20\n" +"sierra 4242 2469 1.72\n" +"~~~" +msgstr "" + +#: make-novice/_episodes/07-functions.md:204 +msgid "So the range of the ratios of occurrences of the two most frequent\n" +"words in our books is indeed around 2, as predicted by Zipf's Law,\n" +"i.e., the most frequently-occurring word occurs approximately twice as\n" +"often as the second most frequent word. Here is our final Makefile:" +msgstr "" + +#: make-novice/_episodes/07-functions.md:209 +# code block +msgid "~~~\n" +"include config.mk\n" +"\n" +"TXT_FILES=$(wildcard books/*.txt)\n" +"DAT_FILES=$(patsubst books/%.txt, %.dat, $(TXT_FILES))\n" +"\n" +"# Generate summary table.\n" +"results.txt : $(ZIPF_SRC) $(DAT_FILES)\n" +" $(ZIPF_EXE) $(DAT_FILES) > $@\n" +"\n" +"# Count words.\n" +".PHONY : dats\n" +"dats : $(DAT_FILES)\n" +"\n" +"%.dat : books/%.txt $(COUNT_SRC)\n" +" $(COUNT_EXE) $< $@\n" +"\n" +".PHONY : clean\n" +"clean :\n" +" rm -f $(DAT_FILES)\n" +" rm -f results.txt\n" +"\n" +".PHONY : variables\n" +"variables:\n" +" @echo TXT_FILES: $(TXT_FILES)\n" +" @echo DAT_FILES: $(DAT_FILES)\n" +"~~~" +msgstr "" + +#: make-novice/_episodes/07-functions.md:238 +msgid "Remember, the `config.mk` file contains:" +msgstr "" + +#: make-novice/_episodes/07-functions.md:252 +msgid "The following figure shows the dependencies embodied within our Makefile,\n" +"involved in building the `results.txt` target,\n" +"now we have introduced our function:" +msgstr "" + +#: make-novice/_episodes/07-functions.md:256 +msgid "![results.txt dependencies after introducing a function](../fig/07-functions.png \"results.txt dependencies after introducing a function\")" +msgstr "" + +#: make-novice/_episodes/07-functions.md:259 +msgid ">\n" +"> [This Makefile]({{ page.root }}/code/07-functions/Makefile)\n" +"> and [its accompanying `config.mk`]({{ page.root }}/code/07-functions/config.mk)\n" +"> contain all of our work so far." +msgstr "" + +#: make-novice/_episodes/07-functions.md:265 +# blockquote, which can be cascaded +msgid "> ## Adding more books" +msgstr "" + +#: make-novice/_episodes/07-functions.md:266 +msgid ">\n" +"> We can now do a better job at testing Zipf's rule by adding more books.\n" +"> The books we have used come from the [Project Gutenberg](http://www.gutenberg.org/) website.\n" +"> Project Gutenberg offers thousands of free ebooks to download.\n" +">\n" +"> **Exercise instructions:**\n" +">\n" +"> * go to [Project Gutenberg](http://www.gutenberg.org/) and use the search box to find another book,\n" +"> for example ['The Picture of Dorian Gray'](https://www.gutenberg.org/ebooks/174) from Oscar Wilde.\n" +"> * download the 'Plain Text UTF-8' version and save it to the `books` folder;\n" +"> choose a short name for the file (**that doesn't include spaces**) e.g. \"dorian_gray.txt\"\n" +"> because the filename is going to be used in the `results.txt` file\n" +"> * optionally, open the file in a text editor and remove extraneous text at the beginning and end\n" +"> (look for the phrase `End of Project Gutenberg's [title], by [author]`)\n" +"> * run `make` and check that the correct commands are run, given the dependency tree\n" +"> * check the results.txt file to see how this book compares to the others" +msgstr "" + +#: make-novice/_episodes/08-self-doc.md:1 +# Front Matter +msgid "---\n" +"title: \"Self-Documenting Makefiles\"\n" +"teaching: 10\n" +"exercises: 0\n" +"questions:\n" +"- \"How should I document a Makefile?\"\n" +"objectives:\n" +"- \"Write self-documenting Makefiles with built-in help.\"\n" +"keypoints:\n" +"- \"Document Makefiles by adding specially-formatted comments and a target to extract and format them.\"\n" +"---" +msgstr "" + +#: make-novice/_episodes/08-self-doc.md:13 +msgid "Many bash commands, and programs that people have written that can be\n" +"run from within bash, support a `--help` flag to display more\n" +"information on how to use the commands or programs. In this spirit, it\n" +"can be useful, both for ourselves and for others, to provide a `help`\n" +"target in our Makefiles. This can provide a summary of the names of\n" +"the key targets and what they do, so we don't need to look at the\n" +"Makefile itself unless we want to. For our Makefile, running a `help`\n" +"target might print:" +msgstr "" + +#: make-novice/_episodes/08-self-doc.md:22 +#: make-novice/_episodes/08-self-doc.md:104 +# code block +msgid "~~~\n" +"$ make help\n" +"~~~" +msgstr "" + +#: make-novice/_episodes/08-self-doc.md:27 +# code block +msgid "~~~\n" +"results.txt : Generate Zipf summary table.\n" +"dats : Count words in text files.\n" +"clean : Remove auto-generated files.\n" +"~~~" +msgstr "" + +#: make-novice/_episodes/08-self-doc.md:34 +msgid "So, how would we implement this? We could write a rule like:" +msgstr "" + +#: make-novice/_episodes/08-self-doc.md:36 +# code block +msgid "~~~\n" +".PHONY : help\n" +"help :\n" +" @echo \"results.txt : Generate Zipf summary table.\"\n" +" @echo \"dats : Count words in text files.\"\n" +" @echo \"clean : Remove auto-generated files.\"\n" +"~~~" +msgstr "" + +#: make-novice/_episodes/08-self-doc.md:45 +msgid "But every time we add or remove a rule, or change the description of a\n" +"rule, we would have to update this rule too. It would be better if we\n" +"could keep the descriptions of the rules by the rules themselves and\n" +"extract these descriptions automatically." +msgstr "" + +#: make-novice/_episodes/08-self-doc.md:50 +msgid "The bash shell can help us here. It provides a command called\n" +"[sed][sed-docs] which stands for 'stream editor'. `sed` reads in some\n" +"text, does some filtering, and writes out the filtered text." +msgstr "" + +#: make-novice/_episodes/08-self-doc.md:54 +msgid "So, we could write comments for our rules, and mark them up in a way\n" +"which `sed` can detect. Since Make uses `#` for comments, we can use\n" +"`##` for comments that describe what a rule does and that we want\n" +"`sed` to detect. For example:" +msgstr "" + +#: make-novice/_episodes/08-self-doc.md:59 +# code block +msgid "~~~\n" +"## results.txt : Generate Zipf summary table.\n" +"results.txt : $(ZIPF_SRC) $(DAT_FILES)\n" +" $(ZIPF_EXE) $(DAT_FILES) > $@\n" +"\n" +"## dats : Count words in text files.\n" +".PHONY : dats\n" +"dats : $(DAT_FILES)\n" +"\n" +"%.dat : books/%.txt $(COUNT_SRC)\n" +" $(COUNT_EXE) $< $@\n" +"\n" +"## clean : Remove auto-generated files.\n" +".PHONY : clean\n" +"clean :\n" +" rm -f $(DAT_FILES)\n" +" rm -f results.txt\n" +"\n" +"## variables : Print variables.\n" +".PHONY : variables\n" +"variables:\n" +" @echo TXT_FILES: $(TXT_FILES)\n" +" @echo DAT_FILES: $(DAT_FILES)\n" +"~~~" +msgstr "" + +#: make-novice/_episodes/08-self-doc.md:85 +msgid "We use `##` so we can distinguish between comments that we want `sed`\n" +"to automatically filter, and other comments that may describe what\n" +"other rules do, or that describe variables." +msgstr "" + +#: make-novice/_episodes/08-self-doc.md:89 +msgid "We can then write a `help` target that applies `sed` to our `Makefile`:" +msgstr "" + +#: make-novice/_episodes/08-self-doc.md:91 +# code block +msgid "~~~\n" +".PHONY : help\n" +"help : Makefile\n" +" @sed -n 's/^##//p' $<\n" +"~~~" +msgstr "" + +#: make-novice/_episodes/08-self-doc.md:98 +msgid "This rule depends upon the Makefile itself. It runs `sed` on the first\n" +"dependency of the rule, which is our Makefile, and tells `sed` to get\n" +"all the lines that begin with `##`, which `sed` then prints for us." +msgstr "" + +#: make-novice/_episodes/08-self-doc.md:102 +msgid "If we now run" +msgstr "" + +#: make-novice/_episodes/08-self-doc.md:109 +msgid "we get:" +msgstr "" + +#: make-novice/_episodes/08-self-doc.md:111 +# code block +msgid "~~~\n" +" results.txt : Generate Zipf summary table.\n" +" dats : Count words in text files.\n" +" clean : Remove auto-generated files.\n" +" variables : Print variables.\n" +"~~~" +msgstr "" + +#: make-novice/_episodes/08-self-doc.md:119 +msgid "If we add, change or remove a target or rule, we now only need to\n" +"remember to add, update or remove a comment next to the rule. So long\n" +"as we respect our convention of using `##` for such comments, then our\n" +"`help` rule will take care of detecting these comments and printing\n" +"them for us." +msgstr "" + +#: make-novice/_episodes/08-self-doc.md:126 +msgid ">\n" +"> [This Makefile]({{ page.root }}/code/08-self-doc/Makefile)\n" +"> and [its accompanying `config.mk`]({{ page.root }}/code/08-self-doc/config.mk)\n" +"> contain all of our work so far." +msgstr "" + +#: make-novice/_episodes/08-self-doc.md:132 +msgid "[sed-docs]: https://www.gnu.org/software/sed/" +msgstr "" + +#: make-novice/_episodes/09-conclusion.md:1 +# Front Matter +msgid "---\n" +"title: \"Conclusion\"\n" +"teaching: 5\n" +"exercises: 30\n" +"questions:\n" +"- \"What are the advantages and disadvantages of using tools like Make?\"\n" +"objectives:\n" +"- \"Understand advantages of automated build tools such as Make.\"\n" +"keypoints:\n" +"- \"Makefiles save time by automating repetitive work, and save thinking by documenting how to reproduce results.\"\n" +"---" +msgstr "" + +#: make-novice/_episodes/09-conclusion.md:13 +msgid "Automated build tools such as Make can help us in a number of\n" +"ways. They help us to automate repetitive commands, hence saving us\n" +"time and reducing the likelihood of errors compared with running\n" +"these commands manually." +msgstr "" + +#: make-novice/_episodes/09-conclusion.md:18 +msgid "They can also save time by ensuring that automatically-generated\n" +"artifacts (such as data files or plots) are only recreated when the\n" +"files that were used to create these have changed in some way." +msgstr "" + +#: make-novice/_episodes/09-conclusion.md:22 +msgid "Through their notion of targets, dependencies, and actions, they serve\n" +"as a form of documentation, recording dependencies between code,\n" +"scripts, tools, configurations, raw data, derived data, plots, and\n" +"papers." +msgstr "" + +#: make-novice/_episodes/09-conclusion.md:27 +# blockquote, which can be cascaded +msgid "> ## Creating PNGs" +msgstr "" + +#: make-novice/_episodes/09-conclusion.md:28 +msgid ">\n" +"> Add new rules, update existing rules, and add new variables to:\n" +">\n" +"> * Create `.png` files from `.dat` files using `plotcounts.py`.\n" +"> * Remove all auto-generated files (`.dat`, `.png`,\n" +"> `results.txt`).\n" +">\n" +"> Finally, many Makefiles define a default [phony\n" +"> target]({{ page.root }}/reference#phony-target) called `all` as first target,\n" +"> that will build what the Makefile has been written to build (e.g. in\n" +"> our case, the `.png` files and the `results.txt` file). As others\n" +"> may assume your Makefile conforms to convention and supports an\n" +"> `all` target, add an `all` target to your Makefile (Hint: this rule\n" +"> has the `results.txt` file and the `.png` files as dependencies, but\n" +"> no actions). With that in place, instead of running `make\n" +"> results.txt`, you should now run `make all`, or just simply\n" +"> `make`. By default, `make` runs the first target it finds in the\n" +"> Makefile, in this case your new `all` target.\n" +">\n" +"> > ## Solution\n" +"> > [This Makefile]({{ page.root }}/code/09-conclusion-challenge-1/Makefile)\n" +"> > and [this `config.mk`]({{ page.root }}/code/09-conclusion-challenge-1/config.mk)\n" +"> > contain a solution to this challenge." +msgstr "" + +#: make-novice/_episodes/09-conclusion.md:54 +msgid "The following figure shows the dependencies involved in building the `all` target, once we've added support for images:" +msgstr "" + +#: make-novice/_episodes/09-conclusion.md:56 +msgid "![results.txt dependencies once images have been added](../fig/09-conclusion-challenge-1.png \"results.txt dependencies once images have been added\")" +msgstr "" + +#: make-novice/_episodes/09-conclusion.md:58 +# blockquote, which can be cascaded +msgid "> ## Creating an Archive" +msgstr "" + +#: make-novice/_episodes/09-conclusion.md:59 +msgid ">\n" +"> Often it is useful to create an archive file of your project that includes all data, code\n" +"> and results. An archive file can package many files into a single file that can easily be\n" +"> downloaded and shared with collaborators. We can add steps to create the archive file inside\n" +"> the Makefile itself so it's easy to update our archive file as the project changes.\n" +">\n" +">\n" +"> Edit the Makefile to create an archive file of your project. Add new rules, update existing\n" +"> rules and add new variables to:\n" +">\n" +"> * Create a new directory called `zipf_analysis` in the project directory.\n" +"> * Copy all our code, data, plots, the Zipf summary table, the Makefile and config.mk\n" +"> to this directory.\n" +"> The `cp -r` command can be used to copy files and directories\n" +"> into the new `zipf_analysis` directory:\n" +">\n" +"> ~~~\n" +"> $ cp -r [files and directories to copy] zipf_analysis/\n" +"> ~~~\n" +"> {: .language-bash}\n" +">\n" +"> * Hint: create a new variable for the `books` directory so that it can be\n" +"> copied to the new `zipf_analysis` directory\n" +"> * Create an archive, `zipf_analysis.tar.gz`, of this directory. The\n" +"> bash command `tar` can be used, as follows:\n" +">\n" +"> ~~~\n" +"> $ tar -czf zipf_analysis.tar.gz zipf_analysis\n" +"> ~~~\n" +"> {: .language-bash}\n" +">\n" +"> * Update the target `all` so that it creates `zipf_analysis.tar.gz`.\n" +"> * Remove `zipf_analysis.tar.gz` when `make clean` is called.\n" +"> * Print the values of any additional variables you have defined when\n" +"> `make variables` is called.\n" +">\n" +"> > ## Solution\n" +"> > [This Makefile]({{ page.root }}/code/09-conclusion-challenge-2/Makefile)\n" +"> > and [this `config.mk`]({{ page.root }}/code/09-conclusion-challenge-2/config.mk)\n" +"> > contain a solution to this challenge." +msgstr "" + +#: make-novice/_episodes/09-conclusion.md:102 +# blockquote, which can be cascaded +msgid "> ## Archiving the Makefile" +msgstr "" + +#: make-novice/_episodes/09-conclusion.md:103 +msgid ">\n" +"> Why does the Makefile rule for the archive directory add the Makefile to our archive of code,\n" +"> data, plots and Zipf summary table?\n" +">\n" +"> > ## Solution\n" +"> > Our code files (`countwords.py`, `plotcounts.py`, `testzipf.py`) implement\n" +"> > the individual parts of our workflow. They allow us to create `.dat`\n" +"> > files from `.txt` files, and `results.txt` and `.png` files from `.dat` files.\n" +"> > Our Makefile, however, documents dependencies between\n" +"> > our code, raw data, derived data, and plots, as well as implementing\n" +"> > our workflow as a whole. `config.mk` contains configuration information\n" +"> > for our Makefile, so it must be archived too." +msgstr "" + +#: make-novice/_episodes/09-conclusion.md:118 +# blockquote, which can be cascaded +msgid "> ## `touch` the Archive Directory" +msgstr "" + +#: make-novice/_episodes/09-conclusion.md:119 +msgid ">\n" +"> Why does the Makefile rule for the archive directory `touch` the archive directory after moving our code, data, plots and summary table into it?\n" +">\n" +"> > ## Solution\n" +"> > A directory's timestamp is not automatically updated when files are copied into it.\n" +"> > If the code, data, plots, and summary table are updated and copied into the\n" +"> > archive directory, the archive directory's timestamp must be updated with `touch`\n" +"> > so that the rule that makes `zipf_analysis.tar.gz` knows to run again;\n" +"> > without this `touch`, `zipf_analysis.tar.gz` will only be created the first time\n" +"> > the rule is run and will not be updated on subsequent runs even if the contents\n" +"> > of the archive directory have changed." +msgstr "" + +#: make-novice/_extras/about.md:1 +# Front Matter +msgid "---\n" +"layout: page\n" +"title: About\n" +"permalink: /about/\n" +"---" +msgstr "" + +#: make-novice/_extras/about.md:6 +msgid "{% include carpentries.html %}" +msgstr "" + +#: make-novice/_extras/discuss.md:1 +# Front Matter +msgid "---\n" +"layout: page\n" +"title: Discussion\n" +"---" +msgstr "" + +#: make-novice/_extras/discuss.md:6 +# header +msgid "## Parallel Execution" +msgstr "" + +#: make-novice/_extras/discuss.md:8 +msgid "Make can build dependencies in _parallel_ sub-processes, via its `--jobs`\n" +"flag (or its `-j` abbreviation) which specifies the number of sub-processes to use e.g." +msgstr "" + +#: make-novice/_extras/discuss.md:11 +# code block +msgid "~~~\n" +"$ make --jobs 4 results.txt\n" +"~~~" +msgstr "" + +#: make-novice/_extras/discuss.md:14 +#: make-novice/_extras/guide.md:75 +#: make-novice/_extras/guide.md:96 +#: make-novice/_extras/guide.md:108 +#: make-novice/_extras/guide.md:125 +#: make-novice/_extras/guide.md:136 +#: make-novice/_extras/guide.md:148 +#: make-novice/_extras/guide.md:171 +#: make-novice/reference.md:13 +#: make-novice/reference.md:23 +#: make-novice/reference.md:30 +#: make-novice/reference.md:45 +#: make-novice/reference.md:52 +# SC/DC Template label +msgid "{: .bash}" +msgstr "" + +#: make-novice/_extras/discuss.md:16 +msgid "If we have independent dependencies then these can be built at the\n" +"same time. For example, `abyss.dat` and `isles.dat` are mutually\n" +"independent and can both be built at the same time. Likewise for\n" +"`abyss.png` and `isles.png`. If you've got a bunch of independent\n" +"branches in your analysis, this can greatly speed up your build\n" +"process." +msgstr "" + +#: make-novice/_extras/discuss.md:23 +msgid "For more information see the GNU Make manual chapter on [Parallel\n" +"Execution][gnu-make-parallel]." +msgstr "" + +#: make-novice/_extras/discuss.md:26 +# header +msgid "## Different Types of Assignment" +msgstr "" + +#: make-novice/_extras/discuss.md:28 +msgid "Some Makefiles may contain `:=` instead of `=`. Your Makefile may\n" +"behave differently depending upon which you use and how you use it:" +msgstr "" + +#: make-novice/_extras/discuss.md:31 +# unordered list +msgid "* A variable defined using `=` is a _recursively expanded" +msgstr "" + +#: make-novice/_extras/discuss.md:32 +msgid " variable_. Its value is calculated only when its value is\n" +" requested. If the value assigned to the variable itself contains\n" +" variables (e.g. `A = $(B)`) then these variables' values are only\n" +" calculated when the variable's value is requested (e.g. the value of\n" +" `B` is only calculated when the value of `A` is requested via\n" +" `$(A)`. This can be termed _lazy setting_." +msgstr "" + +#: make-novice/_extras/discuss.md:39 +# unordered list +msgid "* A variable defined using `:=` is a _simply expanded variable_. Its" +msgstr "" + +#: make-novice/_extras/discuss.md:40 +msgid " value is calculated when it is declared. If the value assigned to\n" +" the variable contains variables (e.g. `A = $(B)`) then these\n" +" variables' values are also calculated when the variable is declared\n" +" (e.g. the value of `B` is calculated when `A` is assigned\n" +" above). This can be termed _immediate setting_." +msgstr "" + +#: make-novice/_extras/discuss.md:46 +msgid "For a detailed explanation, see:" +msgstr "" + +#: make-novice/_extras/discuss.md:48 +# unordered list +msgid "* StackOverflow [Makefile variable assignment][makefile-variable]" +msgstr "" + +#: make-novice/_extras/discuss.md:49 +# unordered list +msgid "* GNU Make [The Two Flavors of Variables][gnu-make-variables]" +msgstr "" + +#: make-novice/_extras/discuss.md:51 +# header +msgid "## Make and Version Control" +msgstr "" + +#: make-novice/_extras/discuss.md:53 +msgid "Imagine that we manage our Makefiles using a version control \n" +"system such as Git." +msgstr "" + +#: make-novice/_extras/discuss.md:56 +msgid "Let's say we'd like to run the workflow developed in this lesson\n" +"for three different word counting scripts, in order to compare their\n" +"speed (e.g. `wordcount.py`, `wordcount2.py`, `wordcount3.py`)." +msgstr "" + +#: make-novice/_extras/discuss.md:60 +msgid "To do this we could edit `config.mk` each time by replacing\n" +"`COUNT_SRC=wordcount.py` with `COUNT_SRC=wordcount2.py` or\n" +"`COUNT_SRC=wordcount3.py`,\n" +"but this would be detected as a change by the version control system.\n" +"This is a minor configuration change, rather than a change to the \n" +"workflow, and so we probably would rather avoid committing this change\n" +"to our repository each time we decide to test a different counting script." +msgstr "" + +#: make-novice/_extras/discuss.md:68 +msgid "An alternative is to leave `config.mk` untouched, by overwriting the value \n" +"of `COUNT_SRC` at the command line instead:" +msgstr "" + +#: make-novice/_extras/discuss.md:71 +# code block +msgid "```\n" +"$ make variables COUNT_SRC=wordcount2.py\n" +"```" +msgstr "" + +#: make-novice/_extras/discuss.md:75 +msgid "The configuration file then simply contains the default values for the \n" +"workflow, and by overwriting the defaults at the command line you can\n" +"maintain a neater and more meaningful version control history." +msgstr "" + +#: make-novice/_extras/discuss.md:79 +# header +msgid "## Make Variables and Shell Variables" +msgstr "" + +#: make-novice/_extras/discuss.md:81 +msgid "Makefiles embed shell scripts within them, as the actions that are\n" +"executed to update an object. More complex actions could well include\n" +"shell variables. There are several ways in which make variables and\n" +"shell variables can be confused and can be in conflict." +msgstr "" + +#: make-novice/_extras/discuss.md:86 +# unordered list +msgid "* Make actually accepts three different syntaxes for variables: `$N`," +msgstr "" + +#: make-novice/_extras/discuss.md:87 +msgid " `$(NAME)`, or `${NAME}`." +msgstr "" + +#: make-novice/_extras/discuss.md:89 +msgid " The single character variable names are most commonly used for\n" +" automatic variables, and there are many of them. But if you happen\n" +" upon a character that isn't pre-defined as an automatic variable,\n" +" make will treat it as a user variable." +msgstr "" + +#: make-novice/_extras/discuss.md:94 +msgid " The `${NAME}` syntax is also used by the unix shell in cases where\n" +" there might be ambiguity in interpreting variable names, or for\n" +" certain pattern substitution operations. Since there are only\n" +" certain situations in which the unix shell requires this syntax,\n" +" instead of the more common `$NAME`, it is not familiar to many users." +msgstr "" + +#: make-novice/_extras/discuss.md:100 +# unordered list +msgid "* Make does variable substitution on actions before they are passed to" +msgstr "" + +#: make-novice/_extras/discuss.md:101 +msgid " the shell for execution. That means that anything that looks like a\n" +" variable to make will get replaced with the appropriate value. (In\n" +" make, an uninitialized variable has a null value.) To protect a\n" +" variable you intend to be interpreted by the shell rather than make,\n" +" you need to \"quote\" the dollar sign by doubling it (`$$`). (This the\n" +" same principle as escaping special characters in the unix shell\n" +" using the backslash (`\\`) character.) In\n" +" short: make variables have a single dollar sign, shell variables\n" +" have a double dollar sign. This applies to anything that looks like\n" +" a variable and needs to be interpreted by the shell rather than\n" +" make, including awk positional parameters (e.g., `awk '{print $$1}'`\n" +" instead of `awk '{print $1}'`) or accessing environment variables\n" +" (e.g., `$$HOME`)." +msgstr "" + +#: make-novice/_extras/discuss.md:115 +# blockquote, which can be cascaded +msgid "> ## Detailed Example of Shell Variable Quoting" +msgstr "" + +#: make-novice/_extras/discuss.md:116 +#: make-novice/_extras/discuss.md:119 +#: make-novice/_extras/discuss.md:122 +#: make-novice/_extras/discuss.md:128 +#: make-novice/_extras/discuss.md:130 +#: make-novice/_extras/discuss.md:135 +#: make-novice/_extras/discuss.md:141 +#: make-novice/_extras/discuss.md:144 +#: make-novice/_extras/discuss.md:147 +#: make-novice/_extras/discuss.md:153 +#: make-novice/_extras/discuss.md:155 +# blockquote, which can be cascaded +msgid "> " +msgstr "" + +#: make-novice/_extras/discuss.md:117 +# blockquote, which can be cascaded +msgid "> Say we had the following `Makefile` (and the .dat files had already" +msgstr "" + +#: make-novice/_extras/discuss.md:118 +# blockquote, which can be cascaded +msgid "> been created):" +msgstr "" + +#: make-novice/_extras/discuss.md:120 +#: make-novice/_extras/discuss.md:131 +#: make-novice/_extras/discuss.md:133 +#: make-novice/_extras/discuss.md:145 +#: make-novice/_extras/discuss.md:156 +#: make-novice/_extras/discuss.md:158 +# blockquote, which can be cascaded +msgid "> ~~~" +msgstr "" + +#: make-novice/_extras/discuss.md:121 +#: make-novice/_extras/discuss.md:146 +# blockquote, which can be cascaded +msgid "> BOOKS = abyss isles" +msgstr "" + +#: make-novice/_extras/discuss.md:123 +#: make-novice/_extras/discuss.md:148 +# blockquote, which can be cascaded +msgid "> .PHONY: plots" +msgstr "" + +#: make-novice/_extras/discuss.md:124 +#: make-novice/_extras/discuss.md:149 +# blockquote, which can be cascaded +msgid "> plots:" +msgstr "" + +#: make-novice/_extras/discuss.md:125 +# blockquote, which can be cascaded +msgid "> for book in $(BOOKS); do python plotcount.py $book.dat $book.png; done" +msgstr "" + +#: make-novice/_extras/discuss.md:126 +#: make-novice/_extras/discuss.md:151 +# blockquote, which can be cascaded +msgid "> ~~~ " +msgstr "" + +#: make-novice/_extras/discuss.md:127 +#: make-novice/_extras/discuss.md:152 +# SC/DC Template label +msgid "> {: .make}" +msgstr "" + +#: make-novice/_extras/discuss.md:129 +# blockquote, which can be cascaded +msgid "> the action that would be passed to the shell to execute would be:" +msgstr "" + +#: make-novice/_extras/discuss.md:132 +# blockquote, which can be cascaded +msgid "> for book in abyss isles; do python plotcount.py ook.dat ook.png; done" +msgstr "" + +#: make-novice/_extras/discuss.md:134 +#: make-novice/_extras/discuss.md:159 +# SC/DC Template label +msgid "> {: .bash}" +msgstr "" + +#: make-novice/_extras/discuss.md:136 +# blockquote, which can be cascaded +msgid "> Notice that make substituted `$(BOOKS)`, as expected, but it also" +msgstr "" + +#: make-novice/_extras/discuss.md:137 +# blockquote, which can be cascaded +msgid "> substituted `$book`, even though we intended it to be a shell variable." +msgstr "" + +#: make-novice/_extras/discuss.md:138 +# blockquote, which can be cascaded +msgid "> Moreover, because we didn't use `$(NAME)` (or `${NAME}`) syntax, make" +msgstr "" + +#: make-novice/_extras/discuss.md:139 +# blockquote, which can be cascaded +msgid "> interpreted it as the single character variable `$b` (which we haven't" +msgstr "" + +#: make-novice/_extras/discuss.md:140 +# blockquote, which can be cascaded +msgid "> defined, so it has a null value) followed by the text \"ook\"." +msgstr "" + +#: make-novice/_extras/discuss.md:142 +# blockquote, which can be cascaded +msgid "> In order to get the desired behavior, we have to write `$$book` instead" +msgstr "" + +#: make-novice/_extras/discuss.md:143 +# blockquote, which can be cascaded +msgid "> of `$book`: " +msgstr "" + +#: make-novice/_extras/discuss.md:150 +# blockquote, which can be cascaded +msgid "> for book in $(BOOKS); do python plotcount.py $$book.dat $$book.png; done" +msgstr "" + +#: make-novice/_extras/discuss.md:154 +# blockquote, which can be cascaded +msgid "> which produces the correct shell command:" +msgstr "" + +#: make-novice/_extras/discuss.md:157 +# blockquote, which can be cascaded +msgid "> for book in abyss isles; do python plotcount.py $book.dat $book.png; done" +msgstr "" + +#: make-novice/_extras/discuss.md:160 +# SC/DC Template label +msgid "{: .discussion}" +msgstr "" + +#: make-novice/_extras/discuss.md:162 +# header +msgid "## Make and Reproducible Research" +msgstr "" + +#: make-novice/_extras/discuss.md:164 +msgid "Blog articles, papers, and tutorials on automating commonly\n" +"occurring research activities using Make:" +msgstr "" + +#: make-novice/_extras/discuss.md:167 +# unordered list +msgid "* [minimal make][minimal-make] by Karl Broman. A minimal tutorial on" +msgstr "" + +#: make-novice/_extras/discuss.md:168 +msgid " using Make with R and LaTeX to automate data analysis, visualization\n" +" and paper preparation. This page has links to Makefiles for many of\n" +" his papers." +msgstr "" + +#: make-novice/_extras/discuss.md:172 +# unordered list +msgid "* [Why Use Make][why-use-make] by Mike Bostock. An example of using" +msgstr "" + +#: make-novice/_extras/discuss.md:173 +msgid " Make to download and convert data." +msgstr "" + +#: make-novice/_extras/discuss.md:175 +# unordered list +msgid "* [Makefiles for R/LaTeX projects][makefiles-for-r-latex] by Rob" +msgstr "" + +#: make-novice/_extras/discuss.md:176 +msgid " Hyndman. Another example of using Make with R and LaTeX." +msgstr "" + +#: make-novice/_extras/discuss.md:178 +# unordered list +msgid "* [GNU Make for Reproducible Data Analysis][make-reproducible-research]" +msgstr "" + +#: make-novice/_extras/discuss.md:179 +msgid " by Zachary Jones. Using Make with Python and LaTeX." +msgstr "" + +#: make-novice/_extras/discuss.md:181 +# unordered list +msgid "* Shaun Jackman's [Using Make to Increase Automation &" +msgstr "" + +#: make-novice/_extras/discuss.md:182 +msgid " Reproducibility][increase-automation] video lesson, and accompanying\n" +" [example][increase-automation-example]." +msgstr "" + +#: make-novice/_extras/discuss.md:185 +# unordered list +msgid "* Lars Yencken's [Driving experiments with" +msgstr "" + +#: make-novice/_extras/discuss.md:186 +msgid " make][driving-experiments]. Using Make to sandbox Python\n" +" dependencies and pull down data sets from Amazon S3." +msgstr "" + +#: make-novice/_extras/discuss.md:189 +# unordered list +msgid "* Askren MK, McAllister-Day TK, Koh N, Mestre Z, Dines JN, Korman BA," +msgstr "" + +#: make-novice/_extras/discuss.md:190 +msgid " Melhorn SJ, Peterson DJ, Peverill M, Qin X, Rane SD, Reilly MA,\n" +" Reiter MA, Sambrook KA, Woelfer KA, Grabowski TJ and Madhyastha TM\n" +" (2016) [Using Make for Reproducible and Parallel Neuroimaging\n" +" Workflow and\n" +" Quality-Assurance][make-neuroscience]. Front. Neuroinform. 10:2. doi:\n" +" 10.3389/fninf.2016.00002" +msgstr "" + +#: make-novice/_extras/discuss.md:197 +# unordered list +msgid "* Li Haoyi's [What's in a Build Tool?][whats-a-build-tool] A review of" +msgstr "" + +#: make-novice/_extras/discuss.md:198 +msgid " popular build tools (including Make) in terms of their strengths and\n" +" weaknesses for common build-related use cases in software\n" +" development." +msgstr "" + +#: make-novice/_extras/discuss.md:202 +msgid "[driving-experiments]: http://lifesum.github.io/posts/2016/01/14/make-experiments/\n" +"[gnu-make-parallel]: https://www.gnu.org/software/make/manual/html_node/Parallel.html\n" +"[gnu-make-variables]: https://www.gnu.org/software/make/manual/html_node/Flavors.html#Flavors\n" +"[increase-automation]: https://www.youtube.com/watch?v=_F5f0qi-aEc\n" +"[increase-automation-example]: https://github.com/sjackman/makefile-example\n" +"[make-neuroscience]: http://journal.frontiersin.org/article/10.3389/fninf.2016.00002/full\n" +"[make-reproducible-research]: http://zmjones.com/make/\n" +"[makefile-variable]: http://stackoverflow.com/questions/448910/makefile-variable-assignment\n" +"[makefiles-for-r-latex]: http://robjhyndman.com/hyndsight/makefiles/\n" +"[minimal-make]: http://kbroman.org/minimal_make/\n" +"[whats-a-build-tool]: http://www.lihaoyi.com/post/WhatsinaBuildTool.html\n" +"[why-use-make]: http://bost.ocks.org/mike/make/" +msgstr "" + +#: make-novice/_extras/discuss.md:215 +# header +msgid "## Return messages and `.PHONY` target behaviour" +msgstr "" + +#: make-novice/_extras/discuss.md:216 +msgid "`Up to date` vs `Nothing to be done` is discussed in [episode 2]({{page.root}}/02-makefiles/)." +msgstr "" + +#: make-novice/_extras/discuss.md:218 +msgid "A more detailed discussion can be read on [issue 98](https://github.com/swcarpentry/make-novice/issues/98#issuecomment-307361751)." +msgstr "" + +#: make-novice/_extras/guide.md:1 +# Front Matter +msgid "---\n" +"layout: page\n" +"title: \"Instructor Notes\"\n" +"permalink: /guide/\n" +"---" +msgstr "" + +#: make-novice/_extras/guide.md:7 +msgid "Make is a popular tool for automating the building of software -\n" +"compiling source code into executable programs." +msgstr "" + +#: make-novice/_extras/guide.md:10 +msgid "Though Make is nearly 40 years old, and there are many other build\n" +"tools available, its fundamental concepts are common across build\n" +"tools." +msgstr "" + +#: make-novice/_extras/guide.md:14 +msgid "Today, researchers working with legacy codes in C or FORTRAN, which\n" +"are very common in high-performance computing, will, very likely\n" +"encounter Make." +msgstr "" + +#: make-novice/_extras/guide.md:18 +msgid "Researchers are also finding Make of use in implementing reproducible\n" +"research workflows, automating data analysis and visualization (using\n" +"Python or R) and combining tables and plots with text to produce\n" +"reports and papers for publication." +msgstr "" + +#: make-novice/_extras/guide.md:23 +# header +msgid "## Overall" +msgstr "" + +#: make-novice/_extras/guide.md:25 +msgid "The overall lesson can be done in 3.5 hours." +msgstr "" + +#: make-novice/_extras/guide.md:27 +msgid "Solutions for challenges are used in subsequent topics." +msgstr "" + +#: make-novice/_extras/guide.md:29 +msgid "A number of example Makefiles, including sample solutions to challenges,\n" +"are in subdirectories of `code` for the corresponding episodes." +msgstr "" + +#: make-novice/_extras/guide.md:32 +msgid "It can be useful to use two windows during the lesson, one with the terminal where you run the `make` commands, the other with the Makefile opened in a text editor all the time. This makes it possible to refer to the Makefile while explaining the output from the commandline, for example. Make sure, though, that the text in both windows is readable from the back of the room." +msgstr "" + +#: make-novice/_extras/guide.md:34 +# header +msgid "## Setting up Make" +msgstr "" + +#: make-novice/_extras/guide.md:36 +msgid "Recommend instructors and students use `nano` as the text editor for\n" +"this lesson because" +msgstr "" + +#: make-novice/_extras/guide.md:39 +# unordered list +msgid "* it runs in all three major operating systems," +msgstr "" + +#: make-novice/_extras/guide.md:40 +# unordered list +msgid "* it runs inside the shell (switching windows can be confusing to" +msgstr "" + +#: make-novice/_extras/guide.md:41 +msgid " students), and\n" +"* it has shortcut help at the bottom of the window." +msgstr "" + +#: make-novice/_extras/guide.md:44 +msgid "Please point out to students during setup that they can and should use\n" +"another text editor if they're already familiar with it." +msgstr "" + +#: make-novice/_extras/guide.md:47 +msgid "Instructors and students should use two shell windows: one for running\n" +"nano, and one for running Make." +msgstr "" + +#: make-novice/_extras/guide.md:50 +msgid "Check that all attendees have Make installed and that it runs\n" +"correctly, before beginning the session." +msgstr "" + +#: make-novice/_extras/guide.md:53 +# header +msgid "## Code and Data Files" +msgstr "" + +#: make-novice/_extras/guide.md:55 +msgid "Python scripts to be invoked by Make are in `code/`." +msgstr "" + +#: make-novice/_extras/guide.md:57 +msgid "Data files are in `data/books`." +msgstr "" + +#: make-novice/_extras/guide.md:59 +msgid "You can either create a simple Git repository for students to clone\n" +"which contains:" +msgstr "" + +#: make-novice/_extras/guide.md:62 +# unordered list +msgid "* `countwords.py`" +msgstr "" + +#: make-novice/_extras/guide.md:63 +# unordered list +msgid "* `plotcounts.py`" +msgstr "" + +#: make-novice/_extras/guide.md:64 +# unordered list +msgid "* `testzipf.py`" +msgstr "" + +#: make-novice/_extras/guide.md:65 +# unordered list +msgid "* `books/`" +msgstr "" + +#: make-novice/_extras/guide.md:67 +msgid "Or, ask students to download\n" +"[make-lesson.zip][zipfile] from this repository." +msgstr "" + +#: make-novice/_extras/guide.md:70 +msgid "To recreate `make-lesson.zip`, run:" +msgstr "" + +#: make-novice/_extras/guide.md:72 +# code block +msgid "~~~\n" +"$ make make-lesson.zip\n" +"~~~" +msgstr "" + +#: make-novice/_extras/guide.md:77 +# header +msgid "## Beware of Spaces!" +msgstr "" + +#: make-novice/_extras/guide.md:79 +msgid "The single most commonly occurring problem will be students using\n" +"spaces instead of TABs when indenting actions." +msgstr "" + +#: make-novice/_extras/guide.md:82 +# header +msgid "## Makefile Dependency Images" +msgstr "" + +#: make-novice/_extras/guide.md:84 +msgid "Some of these pages use images of Makefile dependencies, in the `fig` directory." +msgstr "" + +#: make-novice/_extras/guide.md:86 +msgid "These are created using [makefile2graph][makefile2graph],\n" +"which is assumed to be in the `PATH`.\n" +"This tool, in turn, needs the `dot` tool, part of [GraphViz][graphviz]." +msgstr "" + +#: make-novice/_extras/guide.md:90 +msgid "To install GraphViz on Scientific Linux 6:" +msgstr "" + +#: make-novice/_extras/guide.md:92 +# code block +msgid "~~~\n" +"$ sudo yum install graphviz\n" +"$ dot -V\n" +"~~~" +msgstr "" + +#: make-novice/_extras/guide.md:97 +# code block +msgid "~~~\n" +"dot - graphviz version 2.26.0 (20091210.2329)\n" +"~~~" +msgstr "" + +#: make-novice/_extras/guide.md:102 +msgid "To install GraphViz on Ubuntu 14.04.3 and 15.10:" +msgstr "" + +#: make-novice/_extras/guide.md:104 +# code block +msgid "~~~\n" +"$ sudo apt-get install graphviz\n" +"$ dot -V\n" +"~~~" +msgstr "" + +#: make-novice/_extras/guide.md:109 +# code block +msgid "~~~\n" +"dot - graphviz version 2.38.0 (20140413.2041)\n" +"~~~" +msgstr "" + +#: make-novice/_extras/guide.md:114 +msgid "To download and build makefile2graph on Linux:" +msgstr "" + +#: make-novice/_extras/guide.md:116 +# code block +msgid "~~~\n" +"$ cd\n" +"$ git clone https://github.com/lindenb/makefile2graph\n" +"$ cd makefile2graph/\n" +"$ make\n" +"$ export PATH=~/makefile2graph/:$PATH\n" +"$ cd\n" +"$ which makefile2graph\n" +"~~~" +msgstr "" + +#: make-novice/_extras/guide.md:126 +# code block +msgid "~~~\n" +"/home/ubuntu/makefile2graph/makefile2graph\n" +"~~~" +msgstr "" + +#: make-novice/_extras/guide.md:131 +msgid "To create the image files for the lesson:" +msgstr "" + +#: make-novice/_extras/guide.md:133 +# code block +msgid "~~~\n" +"$ make diagrams\n" +"~~~" +msgstr "" + +#: make-novice/_extras/guide.md:138 +msgid "See `commands.mk`'s `diagrams` target." +msgstr "" + +#: make-novice/_extras/guide.md:140 +# header +msgid "## UnicodeDecodeError troubleshooting" +msgstr "" + +#: make-novice/_extras/guide.md:142 +msgid "When processing `books/last.txt` with Python 3 and vanilla shell environment on Arch Linux\n" +"the following error has appeared:" +msgstr "" + +#: make-novice/_extras/guide.md:145 +# code block +msgid "~~~\n" +"$ python wordcount.py books/last.txt last.dat\n" +"~~~" +msgstr "" + +#: make-novice/_extras/guide.md:149 +# code block +msgid "~~~\n" +"Traceback (most recent call last):\n" +" File \"wordcount.py\", line 131, in \n" +" word_count(input_file, output_file, min_length)\n" +" File \"wordcount.py\", line 118, in word_count\n" +" lines = load_text(input_file)\n" +" File \"wordcount.py\", line 14, in load_text\n" +" lines = input_fd.read().splitlines()\n" +" File \"/usr/lib/python3.6/encodings/ascii.py\", line 26, in decode\n" +" return codecs.ascii_decode(input, self.errors)[0]\n" +"UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 6862: ordinal not in range(128)\n" +"~~~" +msgstr "" + +#: make-novice/_extras/guide.md:163 +msgid "The workaround was to define encoding for the terminal session (this can be either done at the command line\n" +"or placed in the `.bashrc` or equivalent):" +msgstr "" + +#: make-novice/_extras/guide.md:166 +# code block +msgid "~~~\n" +"$ export LC_ALL=en_US.UTF-8\n" +"$ export LANG=en_US.UTF-8\n" +"$ export LANGUAGE=en_US.UTF-8\n" +"~~~" +msgstr "" + +#: make-novice/_extras/guide.md:173 +# header +msgid "## Beware of different Make implementations!" +msgstr "" + +#: make-novice/_extras/guide.md:175 +msgid "The lesson is based on GNU Make. Although it is very rare, on some systems (e.g. AIX) \n" +"you might find `make` not pointing to GNU Make and `gmake` needs to be used instead. " +msgstr "" + +#: make-novice/_extras/guide.md:178 +msgid "[graphviz]: http://www.graphviz.org/\n" +"[lesson-example]: https://github.com/carpentries/lesson-example/\n" +"[makefile2graph]: https://github.com/lindenb/makefile2graph\n" +"[zipfile]: {{ page.root }}/files/make-lesson.zip" +msgstr "" + +#: make-novice/_includes/links.md:1 +msgid "[cc-by-human]: https://creativecommons.org/licenses/by/4.0/\n" +"[cc-by-legal]: https://creativecommons.org/licenses/by/4.0/legalcode\n" +"[ci]: http://communityin.org/\n" +"[coc-reporting]: https://docs.carpentries.org/topic_folders/policies/code-of-conduct.html#reporting-guidelines\n" +"[coc]: https://docs.carpentries.org/topic_folders/policies/code-of-conduct.html\n" +"[concept-maps]: https://carpentries.github.io/instructor-training/05-memory/\n" +"[contrib-covenant]: https://contributor-covenant.org/\n" +"[contributing]: {{ site.github.repository_url }}/blob/gh-pages/CONTRIBUTING.md\n" +"[cran-checkpoint]: https://cran.r-project.org/package=checkpoint\n" +"[cran-knitr]: https://cran.r-project.org/package=knitr\n" +"[cran-stringr]: https://cran.r-project.org/package=stringr\n" +"[email]: mailto:team@carpentries.org\n" +"[github-importer]: https://import.github.com/\n" +"[importer]: https://github.com/new/import\n" +"[jekyll-collection]: https://jekyllrb.com/docs/collections/\n" +"[jekyll-install]: https://jekyllrb.com/docs/installation/\n" +"[jekyll-windows]: http://jekyll-windows.juthilo.com/\n" +"[jekyll]: https://jekyllrb.com/\n" +"[jupyter]: https://jupyter.org/\n" +"[lesson-example]: https://carpentries.github.io/lesson-example/\n" +"[mit-license]: https://opensource.org/licenses/mit-license.html\n" +"[morea]: https://morea-framework.github.io/\n" +"[numfocus]: https://numfocus.org/\n" +"[osi]: https://opensource.org\n" +"[pandoc]: https://pandoc.org/\n" +"[paper-now]: https://github.com/PeerJ/paper-now\n" +"[python-gapminder]: https://swcarpentry.github.io/python-novice-gapminder/\n" +"[pyyaml]: https://pypi.python.org/pypi/PyYAML\n" +"[r-markdown]: https://rmarkdown.rstudio.com/\n" +"[rstudio]: https://www.rstudio.com/\n" +"[ruby-install-guide]: https://www.ruby-lang.org/en/downloads/\n" +"[ruby-installer]: https://rubyinstaller.org/\n" +"[rubygems]: https://rubygems.org/pages/download/\n" +"[styles]: https://github.com/carpentries/styles/\n" +"[swc-releases]: https://github.com/swcarpentry/swc-releases\n" +"[workshop-repo]: {{ site.workshop_repo }}\n" +"[yaml]: http://yaml.org/" +msgstr "" + +#: make-novice/aio.md:1 +# Front Matter +msgid "---\n" +"layout: page \n" +"root: .\n" +"---" +msgstr "" + +#: make-novice/aio.md:5 +#: make-novice/bin/boilerplate/aio.md:3 +# inline html +msgid "" +msgstr "" + +#: make-novice/aio.md:31 +#: make-novice/bin/boilerplate/_extras/figures.md:33 +#: make-novice/bin/boilerplate/aio.md:29 +msgid "{% comment %}\n" +"Create anchor for each one of the episodes.\n" +"{% endcomment %}\n" +"{% for episode in site.episodes %}\n" +"
\n" +"{% endfor %}" +msgstr "" + +#: make-novice/bin/boilerplate/CONTRIBUTING.md:12 +msgid "By contributing,\n" +"you agree that we may redistribute your work under [our license](LICENSE.md).\n" +"In exchange,\n" +"we will address your issues and/or assess your change proposal as promptly as we can,\n" +"and help you become a member of our community.\n" +"Everyone involved in [Software Carpentry][swc-site] and [Data Carpentry][dc-site]\n" +"agrees to abide by our [code of conduct](CODE_OF_CONDUCT.md)." +msgstr "" + +#: make-novice/bin/boilerplate/CONTRIBUTING.md:30 +msgid " you can [send us comments by email][email].\n" +" However,\n" +" we will be able to respond more quickly if you use one of the other methods described below." +msgstr "" + +#: make-novice/bin/boilerplate/CONTRIBUTING.md:49 +msgid " please work in ,\n" +" which can be viewed at ." +msgstr "" + +#: make-novice/bin/boilerplate/CONTRIBUTING.md:69 +msgid "There are many ways to contribute,\n" +"from writing new exercises and improving existing ones\n" +"to updating or filling in the documentation\n" +"and submitting [bug reports][issues]\n" +"about things that don't work, aren't clear, or are missing.\n" +"If you are looking for ideas, please see the 'Issues' tab for\n" +"a list of issues associated with this repository,\n" +"or you may also look at the issues for [Data Carpentry][dc-issues]\n" +"and [Software Carpentry][swc-issues] projects." +msgstr "" + +#: make-novice/bin/boilerplate/CONTRIBUTING.md:104 +msgid "If you choose to contribute via GitHub, you may want to look at\n" +"[How to Contribute to an Open Source Project on GitHub][how-contribute].\n" +"To manage changes, we follow [GitHub flow][github-flow].\n" +"Each lesson has two maintainers who review issues and pull requests or encourage others to do so.\n" +"The maintainers are community volunteers and have final say over what gets merged into the lesson.\n" +"To use the web interface for contributing to a lesson:" +msgstr "" + +#: make-novice/bin/boilerplate/CONTRIBUTING.md:111 +# ordered list +msgid "1. Fork the originating repository to your GitHub profile." +msgstr "" + +#: make-novice/bin/boilerplate/CONTRIBUTING.md:112 +# ordered list +msgid "2. Within your version of the forked repository, move to the `gh-pages` branch and" +msgstr "" + +#: make-novice/bin/boilerplate/CONTRIBUTING.md:113 +msgid "create a new branch for each significant change being made.\n" +"3. Navigate to the file(s) you wish to change within the new branches and make revisions as required.\n" +"4. Commit all changed files within the appropriate branches.\n" +"5. Create individual pull requests from each of your changed branches\n" +"to the `gh-pages` branch within the originating repository.\n" +"6. If you receive feedback, make changes using your issue-specific branches of the forked\n" +"repository and the pull requests will update automatically.\n" +"7. Repeat as needed until all feedback has been addressed." +msgstr "" + +#: make-novice/bin/boilerplate/CONTRIBUTING.md:122 +msgid "When starting work, please make sure your clone of the originating `gh-pages` branch is up-to-date\n" +"before creating your own revision-specific branch(es) from there.\n" +"Additionally, please only work from your newly-created branch(es) and *not*\n" +"your clone of the originating `gh-pages` branch.\n" +"Lastly, published copies of all the lessons are available in the `gh-pages` branch of the originating\n" +"repository for reference while revising." +msgstr "" + +#: make-novice/bin/boilerplate/CONTRIBUTING.md:131 +msgid "General discussion of [Software Carpentry][swc-site] and [Data Carpentry][dc-site]\n" +"happens on the [discussion mailing list][discuss-list],\n" +"which everyone is welcome to join.\n" +"You can also [reach us by email][email]." +msgstr "" + +#: make-novice/bin/boilerplate/CONTRIBUTING.md:136 +msgid "[email]: mailto:admin@software-carpentry.org\n" +"[dc-issues]: https://github.com/issues?q=user%3Adatacarpentry\n" +"[dc-lessons]: http://datacarpentry.org/lessons/\n" +"[dc-site]: http://datacarpentry.org/\n" +"[discuss-list]: http://lists.software-carpentry.org/listinfo/discuss\n" +"[github]: https://github.com\n" +"[github-flow]: https://guides.github.com/introduction/flow/\n" +"[github-join]: https://github.com/join\n" +"[how-contribute]: https://egghead.io/series/how-to-contribute-to-an-open-source-project-on-github\n" +"[issues]: https://guides.github.com/features/issues/\n" +"[swc-issues]: https://github.com/issues?q=user%3Aswcarpentry\n" +"[swc-lessons]: https://software-carpentry.org/lessons/\n" +"[swc-site]: https://software-carpentry.org/" +msgstr "" + +#: make-novice/bin/boilerplate/README.md:1 +# header +msgid "# FIXME Lesson title" +msgstr "" + +#: make-novice/bin/boilerplate/README.md:3 +msgid "[![Create a Slack Account with us](https://img.shields.io/badge/Create_Slack_Account-The_Carpentries-071159.svg)](https://swc-slack-invite.herokuapp.com/)" +msgstr "" + +#: make-novice/bin/boilerplate/README.md:5 +#: make-novice/bin/boilerplate/_episodes/01-introduction.md:12 +#: make-novice/bin/boilerplate/_extras/discuss.md:4 +#: make-novice/bin/boilerplate/_extras/guide.md:4 +#: make-novice/bin/boilerplate/reference.md:7 +#: make-novice/bin/boilerplate/setup.md:4 +msgid "FIXME" +msgstr "" + +#: make-novice/bin/boilerplate/README.md:7 +# header +msgid "## Contributing" +msgstr "" + +#: make-novice/bin/boilerplate/README.md:9 +msgid "We welcome all contributions to improve the lesson! Maintainers will do their best to help you if you have any\n" +"questions, concerns, or experience any difficulties along the way." +msgstr "" + +#: make-novice/bin/boilerplate/README.md:12 +msgid "We'd like to ask you to familiarize yourself with our [Contribution Guide](CONTRIBUTING.md) and have a look at\n" +"the [more detailed guidelines][lesson-example] on proper formatting, ways to render the lesson locally, and even\n" +"how to write new episodes." +msgstr "" + +#: make-novice/bin/boilerplate/README.md:16 +# header +msgid "## Maintainer(s)" +msgstr "" + +#: make-novice/bin/boilerplate/README.md:18 +# unordered list +msgid "* FIXME" +msgstr "" + +#: make-novice/bin/boilerplate/README.md:20 +# header +msgid "## Authors" +msgstr "" + +#: make-novice/bin/boilerplate/README.md:22 +msgid "A list of contributors to the lesson can be found in [AUTHORS](AUTHORS)" +msgstr "" + +#: make-novice/bin/boilerplate/README.md:24 +# header +msgid "## Citation" +msgstr "" + +#: make-novice/bin/boilerplate/README.md:26 +msgid "To cite this lesson, please consult with [CITATION](CITATION)" +msgstr "" + +#: make-novice/bin/boilerplate/README.md:28 +msgid "[lesson-example]: https://carpentries.github.io/lesson-example" +msgstr "" + +#: make-novice/bin/boilerplate/_episodes/01-introduction.md:1 +# Front Matter +msgid "---\n" +"title: \"Introduction\"\n" +"teaching: 0\n" +"exercises: 0\n" +"questions:\n" +"- \"Key question (FIXME)\"\n" +"objectives:\n" +"- \"First objective. (FIXME)\"\n" +"keypoints:\n" +"- \"First key point. (FIXME)\"\n" +"---" +msgstr "" + +#: make-novice/bin/boilerplate/_extras/about.md:1 +# Front Matter +msgid "---\n" +"title: About\n" +"---" +msgstr "" + +#: make-novice/bin/boilerplate/_extras/about.md:4 +msgid "{% include carpentries.html %}\n" +"{% include links.md %}" +msgstr "" + +#: make-novice/bin/boilerplate/_extras/discuss.md:1 +# Front Matter +msgid "---\n" +"title: Discussion\n" +"---" +msgstr "" + +#: make-novice/bin/boilerplate/_extras/figures.md:1 +# Front Matter +msgid "---\n" +"title: Figures\n" +"---" +msgstr "" + +#: make-novice/bin/boilerplate/_extras/figures.md:4 +# inline html +msgid "" +msgstr "" + +#: make-novice/bin/boilerplate/_extras/guide.md:1 +# Front Matter +msgid "---\n" +"title: \"Instructor Notes\"\n" +"---" +msgstr "" + +#: make-novice/bin/boilerplate/aio.md:1 +# Front Matter +msgid "---\n" +"---" +msgstr "" + +#: make-novice/bin/boilerplate/index.md:1 +# Front Matter +msgid "---\n" +"layout: lesson\n" +"root: . # Is the only page that don't follow the partner /:path/index.html\n" +"permalink: index.html # Is the only page that don't follow the partner /:path/index.html\n" +"---" +msgstr "" + +#: make-novice/bin/boilerplate/index.md:6 +msgid "FIXME: home page introduction" +msgstr "" + +#: make-novice/bin/boilerplate/index.md:8 +#: make-novice/index.md:29 +# blockquote, which can be cascaded +msgid "> ## Prerequisites" +msgstr "" + +#: make-novice/bin/boilerplate/index.md:9 +msgid ">\n" +"> FIXME" +msgstr "" + +#: make-novice/bin/boilerplate/index.md:11 +#: make-novice/index.md:35 +#: make-novice/index.md:40 +# SC/DC Template label +msgid "{: .prereq}" +msgstr "" + +#: make-novice/bin/boilerplate/reference.md:1 +# Front Matter +msgid "---\n" +"layout: reference\n" +"---" +msgstr "" + +#: make-novice/bin/boilerplate/reference.md:5 +#: make-novice/reference.md:244 +# header +msgid "## Glossary" +msgstr "" + +#: make-novice/bin/boilerplate/setup.md:1 +# Front Matter +msgid "---\n" +"title: Setup\n" +"---" +msgstr "" + +#: make-novice/data/books/LICENSE_TEXTS.md:1 +msgid "A Note on the Texts' Licensing\n" +"==============================" +msgstr "" + +#: make-novice/data/books/LICENSE_TEXTS.md:4 +msgid "Each text is from [Project Gutenberg](http://www.gutenberg.org/)." +msgstr "" + +#: make-novice/data/books/LICENSE_TEXTS.md:6 +msgid "Headers and footers have been removed for the purposes of this\n" +"exercise. All the texts are governed by The Full Project Gutenberg\n" +"License reproduced below." +msgstr "" + +#: make-novice/data/books/LICENSE_TEXTS.md:10 +msgid "The texts and originating URLs are:" +msgstr "" + +#: make-novice/data/books/LICENSE_TEXTS.md:12 +# unordered list +msgid "* [A Journey to the Western Islands of Scotland by Samuel Johnson](http://www.gutenberg.org/cache/epub/2064/pg2064.txt)" +msgstr "" + +#: make-novice/data/books/LICENSE_TEXTS.md:13 +# unordered list +msgid "* [The People of the Abyss by Jack London](http://www.gutenberg.org/ebooks/1688)" +msgstr "" + +#: make-novice/data/books/LICENSE_TEXTS.md:14 +# unordered list +msgid "* [My First Summer in the Sierra by John Muir](http://www.gutenberg.org/cache/epub/32540/pg32540.txt)" +msgstr "" + +#: make-novice/data/books/LICENSE_TEXTS.md:15 +# unordered list +msgid "* [Scott's Last Expedition Volume I by Robert Falcon Scott](http://www.gutenberg.org/ebooks/11579)" +msgstr "" + +#: make-novice/data/books/LICENSE_TEXTS.md:17 +msgid "*** START: FULL LICENSE ***" +msgstr "" + +#: make-novice/data/books/LICENSE_TEXTS.md:19 +msgid "THE FULL PROJECT GUTENBERG LICENSE\n" +"PLEASE READ THIS BEFORE YOU DISTRIBUTE OR USE THIS WORK" +msgstr "" + +#: make-novice/data/books/LICENSE_TEXTS.md:22 +msgid "To protect the Project Gutenberg-tm mission of promoting the free\n" +"distribution of electronic works, by using or distributing this work\n" +"(or any other work associated in any way with the phrase \"Project\n" +"Gutenberg\"), you agree to comply with all the terms of the Full Project\n" +"Gutenberg-tm License (available with this file or online at\n" +"http://gutenberg.net/license)." +msgstr "" + +#: make-novice/data/books/LICENSE_TEXTS.md:29 +msgid "Section 1. General Terms of Use and Redistributing Project Gutenberg-tm\n" +"electronic works" +msgstr "" + +#: make-novice/data/books/LICENSE_TEXTS.md:32 +msgid "1.A. By reading or using any part of this Project Gutenberg-tm\n" +"electronic work, you indicate that you have read, understand, agree to\n" +"and accept all the terms of this license and intellectual property\n" +"(trademark/copyright) agreement. If you do not agree to abide by all\n" +"the terms of this agreement, you must cease using and return or destroy\n" +"all copies of Project Gutenberg-tm electronic works in your possession.\n" +"If you paid a fee for obtaining a copy of or access to a Project\n" +"Gutenberg-tm electronic work and you do not agree to be bound by the\n" +"terms of this agreement, you may obtain a refund from the person or\n" +"entity to whom you paid the fee as set forth in paragraph 1.E.8." +msgstr "" + +#: make-novice/data/books/LICENSE_TEXTS.md:43 +msgid "1.B. \"Project Gutenberg\" is a registered trademark. It may only be\n" +"used on or associated in any way with an electronic work by people who\n" +"agree to be bound by the terms of this agreement. There are a few\n" +"things that you can do with most Project Gutenberg-tm electronic works\n" +"even without complying with the full terms of this agreement. See\n" +"paragraph 1.C below. There are a lot of things you can do with Project\n" +"Gutenberg-tm electronic works if you follow the terms of this agreement\n" +"and help preserve free future access to Project Gutenberg-tm electronic\n" +"works. See paragraph 1.E below." +msgstr "" + +#: make-novice/data/books/LICENSE_TEXTS.md:53 +msgid "1.C. The Project Gutenberg Literary Archive Foundation (\"the Foundation\"\n" +"or PGLAF), owns a compilation copyright in the collection of Project\n" +"Gutenberg-tm electronic works. Nearly all the individual works in the\n" +"collection are in the public domain in the United States. If an\n" +"individual work is in the public domain in the United States and you are\n" +"located in the United States, we do not claim a right to prevent you from\n" +"copying, distributing, performing, displaying or creating derivative\n" +"works based on the work as long as all references to Project Gutenberg\n" +"are removed. Of course, we hope that you will support the Project\n" +"Gutenberg-tm mission of promoting free access to electronic works by\n" +"freely sharing Project Gutenberg-tm works in compliance with the terms of\n" +"this agreement for keeping the Project Gutenberg-tm name associated with\n" +"the work. You can easily comply with the terms of this agreement by\n" +"keeping this work in the same format with its attached full Project\n" +"Gutenberg-tm License when you share it without charge with others." +msgstr "" + +#: make-novice/data/books/LICENSE_TEXTS.md:69 +msgid "1.D. The copyright laws of the place where you are located also govern\n" +"what you can do with this work. Copyright laws in most countries are in\n" +"a constant state of change. If you are outside the United States, check\n" +"the laws of your country in addition to the terms of this agreement\n" +"before downloading, copying, displaying, performing, distributing or\n" +"creating derivative works based on this work or any other Project\n" +"Gutenberg-tm work. The Foundation makes no representations concerning\n" +"the copyright status of any work in any country outside the United\n" +"States." +msgstr "" + +#: make-novice/data/books/LICENSE_TEXTS.md:79 +msgid "1.E. Unless you have removed all references to Project Gutenberg:" +msgstr "" + +#: make-novice/data/books/LICENSE_TEXTS.md:81 +msgid "1.E.1. The following sentence, with active links to, or other immediate\n" +"access to, the full Project Gutenberg-tm License must appear prominently\n" +"whenever any copy of a Project Gutenberg-tm work (any work on which the\n" +"phrase \"Project Gutenberg\" appears, or with which the phrase \"Project\n" +"Gutenberg\" is associated) is accessed, displayed, performed, viewed,\n" +"copied or distributed:" +msgstr "" + +#: make-novice/data/books/LICENSE_TEXTS.md:88 +msgid "This eBook is for the use of anyone anywhere at no cost and with\n" +"almost no restrictions whatsoever. You may copy it, give it away or\n" +"re-use it under the terms of the Project Gutenberg License included\n" +"with this eBook or online at www.gutenberg.net" +msgstr "" + +#: make-novice/data/books/LICENSE_TEXTS.md:93 +msgid "1.E.2. If an individual Project Gutenberg-tm electronic work is derived\n" +"from the public domain (does not contain a notice indicating that it is\n" +"posted with permission of the copyright holder), the work can be copied\n" +"and distributed to anyone in the United States without paying any fees\n" +"or charges. If you are redistributing or providing access to a work\n" +"with the phrase \"Project Gutenberg\" associated with or appearing on the\n" +"work, you must comply either with the requirements of paragraphs 1.E.1\n" +"through 1.E.7 or obtain permission for the use of the work and the\n" +"Project Gutenberg-tm trademark as set forth in paragraphs 1.E.8 or\n" +"1.E.9." +msgstr "" + +#: make-novice/data/books/LICENSE_TEXTS.md:104 +msgid "1.E.3. If an individual Project Gutenberg-tm electronic work is posted\n" +"with the permission of the copyright holder, your use and distribution\n" +"must comply with both paragraphs 1.E.1 through 1.E.7 and any additional\n" +"terms imposed by the copyright holder. Additional terms will be linked\n" +"to the Project Gutenberg-tm License for all works posted with the\n" +"permission of the copyright holder found at the beginning of this work." +msgstr "" + +#: make-novice/data/books/LICENSE_TEXTS.md:111 +msgid "1.E.4. Do not unlink or detach or remove the full Project Gutenberg-tm\n" +"License terms from this work, or any files containing a part of this\n" +"work or any other work associated with Project Gutenberg-tm." +msgstr "" + +#: make-novice/data/books/LICENSE_TEXTS.md:115 +msgid "1.E.5. Do not copy, display, perform, distribute or redistribute this\n" +"electronic work, or any part of this electronic work, without\n" +"prominently displaying the sentence set forth in paragraph 1.E.1 with\n" +"active links or immediate access to the full terms of the Project\n" +"Gutenberg-tm License." +msgstr "" + +#: make-novice/data/books/LICENSE_TEXTS.md:121 +msgid "1.E.6. You may convert to and distribute this work in any binary,\n" +"compressed, marked up, nonproprietary or proprietary form, including any\n" +"word processing or hypertext form. However, if you provide access to or\n" +"distribute copies of a Project Gutenberg-tm work in a format other than\n" +"\"Plain Vanilla ASCII\" or other format used in the official version\n" +"posted on the official Project Gutenberg-tm web site (www.gutenberg.net),\n" +"you must, at no additional cost, fee or expense to the user, provide a\n" +"copy, a means of exporting a copy, or a means of obtaining a copy upon\n" +"request, of the work in its original \"Plain Vanilla ASCII\" or other\n" +"form. Any alternate format must include the full Project Gutenberg-tm\n" +"License as specified in paragraph 1.E.1." +msgstr "" + +#: make-novice/data/books/LICENSE_TEXTS.md:133 +msgid "1.E.7. Do not charge a fee for access to, viewing, displaying,\n" +"performing, copying or distributing any Project Gutenberg-tm works\n" +"unless you comply with paragraph 1.E.8 or 1.E.9." +msgstr "" + +#: make-novice/data/books/LICENSE_TEXTS.md:137 +msgid "1.E.8. You may charge a reasonable fee for copies of or providing\n" +"access to or distributing Project Gutenberg-tm electronic works provided\n" +"that" +msgstr "" + +#: make-novice/data/books/LICENSE_TEXTS.md:141 +# unordered list +msgid "- You pay a royalty fee of 20% of the gross profits you derive from" +msgstr "" + +#: make-novice/data/books/LICENSE_TEXTS.md:142 +msgid " the use of Project Gutenberg-tm works calculated using the method\n" +" you already use to calculate your applicable taxes. The fee is\n" +" owed to the owner of the Project Gutenberg-tm trademark, but he\n" +" has agreed to donate royalties under this paragraph to the\n" +" Project Gutenberg Literary Archive Foundation. Royalty payments\n" +" must be paid within 60 days following each date on which you\n" +" prepare (or are legally required to prepare) your periodic tax\n" +" returns. Royalty payments should be clearly marked as such and\n" +" sent to the Project Gutenberg Literary Archive Foundation at the\n" +" address specified in Section 4, \"Information about donations to\n" +" the Project Gutenberg Literary Archive Foundation.\"" +msgstr "" + +#: make-novice/data/books/LICENSE_TEXTS.md:154 +# unordered list +msgid "- You provide a full refund of any money paid by a user who notifies" +msgstr "" + +#: make-novice/data/books/LICENSE_TEXTS.md:155 +msgid " you in writing (or by e-mail) within 30 days of receipt that s/he\n" +" does not agree to the terms of the full Project Gutenberg-tm\n" +" License. You must require such a user to return or\n" +" destroy all copies of the works possessed in a physical medium\n" +" and discontinue all use of and all access to other copies of\n" +" Project Gutenberg-tm works." +msgstr "" + +#: make-novice/data/books/LICENSE_TEXTS.md:162 +# unordered list +msgid "- You provide, in accordance with paragraph 1.F.3, a full refund of any" +msgstr "" + +#: make-novice/data/books/LICENSE_TEXTS.md:163 +msgid " money paid for a work or a replacement copy, if a defect in the\n" +" electronic work is discovered and reported to you within 90 days\n" +" of receipt of the work." +msgstr "" + +#: make-novice/data/books/LICENSE_TEXTS.md:167 +# unordered list +msgid "- You comply with all other terms of this agreement for free" +msgstr "" + +#: make-novice/data/books/LICENSE_TEXTS.md:168 +msgid " distribution of Project Gutenberg-tm works." +msgstr "" + +#: make-novice/data/books/LICENSE_TEXTS.md:170 +msgid "1.E.9. If you wish to charge a fee or distribute a Project Gutenberg-tm\n" +"electronic work or group of works on different terms than are set\n" +"forth in this agreement, you must obtain permission in writing from\n" +"both the Project Gutenberg Literary Archive Foundation and Michael\n" +"Hart, the owner of the Project Gutenberg-tm trademark. Contact the\n" +"Foundation as set forth in Section 3 below." +msgstr "" + +#: make-novice/data/books/LICENSE_TEXTS.md:177 +msgid "1.F." +msgstr "" + +#: make-novice/data/books/LICENSE_TEXTS.md:179 +msgid "1.F.1. Project Gutenberg volunteers and employees expend considerable\n" +"effort to identify, do copyright research on, transcribe and proofread\n" +"public domain works in creating the Project Gutenberg-tm\n" +"collection. Despite these efforts, Project Gutenberg-tm electronic\n" +"works, and the medium on which they may be stored, may contain\n" +"\"Defects,\" such as, but not limited to, incomplete, inaccurate or\n" +"corrupt data, transcription errors, a copyright or other intellectual\n" +"property infringement, a defective or damaged disk or other medium, a\n" +"computer virus, or computer codes that damage or cannot be read by\n" +"your equipment." +msgstr "" + +#: make-novice/data/books/LICENSE_TEXTS.md:190 +msgid "1.F.2. LIMITED WARRANTY, DISCLAIMER OF DAMAGES - Except for the \"Right\n" +"of Replacement or Refund\" described in paragraph 1.F.3, the Project\n" +"Gutenberg Literary Archive Foundation, the owner of the Project\n" +"Gutenberg-tm trademark, and any other party distributing a Project\n" +"Gutenberg-tm electronic work under this agreement, disclaim all\n" +"liability to you for damages, costs and expenses, including legal\n" +"fees. YOU AGREE THAT YOU HAVE NO REMEDIES FOR NEGLIGENCE, STRICT\n" +"LIABILITY, BREACH OF WARRANTY OR BREACH OF CONTRACT EXCEPT THOSE\n" +"PROVIDED IN PARAGRAPH F3. YOU AGREE THAT THE FOUNDATION, THE\n" +"TRADEMARK OWNER, AND ANY DISTRIBUTOR UNDER THIS AGREEMENT WILL NOT BE\n" +"LIABLE TO YOU FOR ACTUAL, DIRECT, INDIRECT, CONSEQUENTIAL, PUNITIVE OR\n" +"INCIDENTAL DAMAGES EVEN IF YOU GIVE NOTICE OF THE POSSIBILITY OF SUCH\n" +"DAMAGE." +msgstr "" + +#: make-novice/data/books/LICENSE_TEXTS.md:204 +msgid "1.F.3. LIMITED RIGHT OF REPLACEMENT OR REFUND - If you discover a\n" +"defect in this electronic work within 90 days of receiving it, you can\n" +"receive a refund of the money (if any) you paid for it by sending a\n" +"written explanation to the person you received the work from. If you\n" +"received the work on a physical medium, you must return the medium with\n" +"your written explanation. The person or entity that provided you with\n" +"the defective work may elect to provide a replacement copy in lieu of a\n" +"refund. If you received the work electronically, the person or entity\n" +"providing it to you may choose to give you a second opportunity to\n" +"receive the work electronically in lieu of a refund. If the second copy\n" +"is also defective, you may demand a refund in writing without further\n" +"opportunities to fix the problem." +msgstr "" + +#: make-novice/data/books/LICENSE_TEXTS.md:217 +msgid "1.F.4. Except for the limited right of replacement or refund set forth\n" +"in paragraph 1.F.3, this work is provided to you 'AS-IS' WITH NO OTHER\n" +"WARRANTIES OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO\n" +"WARRANTIES OF MERCHANTIBILITY OR FITNESS FOR ANY PURPOSE." +msgstr "" + +#: make-novice/data/books/LICENSE_TEXTS.md:222 +msgid "1.F.5. Some states do not allow disclaimers of certain implied\n" +"warranties or the exclusion or limitation of certain types of damages.\n" +"If any disclaimer or limitation set forth in this agreement violates the\n" +"law of the state applicable to this agreement, the agreement shall be\n" +"interpreted to make the maximum disclaimer or limitation permitted by\n" +"the applicable state law. The invalidity or unenforceability of any\n" +"provision of this agreement shall not void the remaining provisions." +msgstr "" + +#: make-novice/data/books/LICENSE_TEXTS.md:230 +msgid "1.F.6. INDEMNITY - You agree to indemnify and hold the Foundation, the\n" +"trademark owner, any agent or employee of the Foundation, anyone\n" +"providing copies of Project Gutenberg-tm electronic works in accordance\n" +"with this agreement, and any volunteers associated with the production,\n" +"promotion and distribution of Project Gutenberg-tm electronic works,\n" +"harmless from all liability, costs and expenses, including legal fees,\n" +"that arise directly or indirectly from any of the following which you do\n" +"or cause to occur: (a) distribution of this or any Project Gutenberg-tm\n" +"work, (b) alteration, modification, or additions or deletions to any\n" +"Project Gutenberg-tm work, and (c) any Defect you cause." +msgstr "" + +#: make-novice/data/books/LICENSE_TEXTS.md:241 +msgid "Section 2. Information about the Mission of Project Gutenberg-tm" +msgstr "" + +#: make-novice/data/books/LICENSE_TEXTS.md:243 +msgid "Project Gutenberg-tm is synonymous with the free distribution of\n" +"electronic works in formats readable by the widest variety of computers\n" +"including obsolete, old, middle-aged and new computers. It exists\n" +"because of the efforts of hundreds of volunteers and donations from\n" +"people in all walks of life." +msgstr "" + +#: make-novice/data/books/LICENSE_TEXTS.md:249 +msgid "Volunteers and financial support to provide volunteers with the\n" +"assistance they need, is critical to reaching Project Gutenberg-tm's\n" +"goals and ensuring that the Project Gutenberg-tm collection will\n" +"remain freely available for generations to come. In 2001, the Project\n" +"Gutenberg Literary Archive Foundation was created to provide a secure\n" +"and permanent future for Project Gutenberg-tm and future generations.\n" +"To learn more about the Project Gutenberg Literary Archive Foundation\n" +"and how your efforts and donations can help, see Sections 3 and 4\n" +"and the Foundation web page at http://www.pglaf.org." +msgstr "" + +#: make-novice/data/books/LICENSE_TEXTS.md:259 +msgid "Section 3. Information about the Project Gutenberg Literary Archive\n" +"Foundation" +msgstr "" + +#: make-novice/data/books/LICENSE_TEXTS.md:262 +msgid "The Project Gutenberg Literary Archive Foundation is a non profit\n" +"501(c)(3) educational corporation organized under the laws of the\n" +"state of Mississippi and granted tax exempt status by the Internal\n" +"Revenue Service. The Foundation's EIN or federal tax identification\n" +"number is 64-6221541. Its 501(c)(3) letter is posted at\n" +"http://pglaf.org/fundraising. Contributions to the Project Gutenberg\n" +"Literary Archive Foundation are tax deductible to the full extent\n" +"permitted by U.S. federal laws and your state's laws." +msgstr "" + +#: make-novice/data/books/LICENSE_TEXTS.md:271 +msgid "The Foundation's principal office is located at 4557 Melan Dr. S.\n" +"Fairbanks, AK, 99712., but its volunteers and employees are scattered\n" +"throughout numerous locations. Its business office is located at\n" +"809 North 1500 West, Salt Lake City, UT 84116, (801) 596-1887, email\n" +"business@pglaf.org. Email contact links and up to date contact\n" +"information can be found at the Foundation's web site and official\n" +"page at http://pglaf.org" +msgstr "" + +#: make-novice/data/books/LICENSE_TEXTS.md:279 +msgid "For additional contact information:\n" +" Dr. Gregory B. Newby\n" +" Chief Executive and Director\n" +" gbnewby@pglaf.org" +msgstr "" + +#: make-novice/data/books/LICENSE_TEXTS.md:284 +msgid "Section 4. Information about Donations to the Project Gutenberg\n" +"Literary Archive Foundation" +msgstr "" + +#: make-novice/data/books/LICENSE_TEXTS.md:287 +msgid "Project Gutenberg-tm depends upon and cannot survive without wide\n" +"spread public support and donations to carry out its mission of\n" +"increasing the number of public domain and licensed works that can be\n" +"freely distributed in machine readable form accessible by the widest\n" +"array of equipment including outdated equipment. Many small donations\n" +"($1 to $5,000) are particularly important to maintaining tax exempt\n" +"status with the IRS." +msgstr "" + +#: make-novice/data/books/LICENSE_TEXTS.md:295 +msgid "The Foundation is committed to complying with the laws regulating\n" +"charities and charitable donations in all 50 states of the United\n" +"States. Compliance requirements are not uniform and it takes a\n" +"considerable effort, much paperwork and many fees to meet and keep up\n" +"with these requirements. We do not solicit donations in locations\n" +"where we have not received written confirmation of compliance. To\n" +"SEND DONATIONS or determine the status of compliance for any\n" +"particular state visit http://pglaf.org" +msgstr "" + +#: make-novice/data/books/LICENSE_TEXTS.md:304 +msgid "While we cannot and do not solicit contributions from states where we\n" +"have not met the solicitation requirements, we know of no prohibition\n" +"against accepting unsolicited donations from donors in such states who\n" +"approach us with offers to donate." +msgstr "" + +#: make-novice/data/books/LICENSE_TEXTS.md:309 +msgid "International donations are gratefully accepted, but we cannot make\n" +"any statements concerning tax treatment of donations received from\n" +"outside the United States. U.S. laws alone swamp our small staff." +msgstr "" + +#: make-novice/data/books/LICENSE_TEXTS.md:313 +msgid "Please check the Project Gutenberg Web pages for current donation\n" +"methods and addresses. Donations are accepted in a number of other\n" +"ways including including checks, online payments and credit card\n" +"donations. To donate, please visit: http://pglaf.org/donate" +msgstr "" + +#: make-novice/data/books/LICENSE_TEXTS.md:318 +msgid "Section 5. General Information About Project Gutenberg-tm electronic\n" +"works." +msgstr "" + +#: make-novice/data/books/LICENSE_TEXTS.md:321 +msgid "Professor Michael S. Hart is the originator of the Project Gutenberg-tm\n" +"concept of a library of electronic works that could be freely shared\n" +"with anyone. For thirty years, he produced and distributed Project\n" +"Gutenberg-tm eBooks with only a loose network of volunteer support." +msgstr "" + +#: make-novice/data/books/LICENSE_TEXTS.md:326 +msgid "Project Gutenberg-tm eBooks are often created from several printed\n" +"editions, all of which are confirmed as Public Domain in the U.S.\n" +"unless a copyright notice is included. Thus, we do not necessarily\n" +"keep eBooks in compliance with any particular paper edition." +msgstr "" + +#: make-novice/data/books/LICENSE_TEXTS.md:331 +msgid "Most people start at our Web site which has the main PG search facility:" +msgstr "" + +#: make-novice/data/books/LICENSE_TEXTS.md:333 +msgid " http://www.gutenberg.net" +msgstr "" + +#: make-novice/data/books/LICENSE_TEXTS.md:335 +msgid "This Web site includes information about Project Gutenberg-tm,\n" +"including how to make donations to the Project Gutenberg Literary\n" +"Archive Foundation, how to help produce our new eBooks, and how to\n" +"subscribe to our email newsletter to hear about new eBooks" +msgstr "" + +#: make-novice/index.md:1 +# Front Matter +msgid "---\n" +"layout: lesson\n" +"root: .\n" +"---" +msgstr "" + +#: make-novice/index.md:6 +msgid "Make is a tool which can run commands to read files, process these\n" +"files in some way, and write out the processed files. For example,\n" +"in software development, Make is used to compile source code\n" +"into executable programs or libraries, but Make can also be used\n" +"to:" +msgstr "" + +#: make-novice/index.md:12 +# unordered list +msgid "* run analysis scripts on raw data files to get data files that" +msgstr "" + +#: make-novice/index.md:13 +msgid " summarize the raw data;\n" +"* run visualization scripts on data files to produce plots; and to\n" +"* parse and combine text files and plots to create papers." +msgstr "" + +#: make-novice/index.md:17 +msgid "Make is called a build tool - it builds data files, plots, papers,\n" +"programs or libraries. It can also update existing files if\n" +"desired." +msgstr "" + +#: make-novice/index.md:21 +msgid "Make tracks the dependencies between the files it creates and the\n" +"files used to create these. If one of the original files (e.g. a data\n" +"file) is changed, then Make knows to recreate, or update, the files\n" +"that depend upon this file (e.g. a plot)." +msgstr "" + +#: make-novice/index.md:26 +msgid "There are now many build tools available, all of which are based on\n" +"the same concepts as Make." +msgstr "" + +#: make-novice/index.md:30 +msgid ">\n" +"> In this lesson we use `make` from the Unix Shell. Some previous\n" +"> experience with using the shell to list directories, create, copy,\n" +"> remove and list files and directories, and run simple scripts is\n" +"> necessary." +msgstr "" + +#: make-novice/index.md:37 +# blockquote, which can be cascaded +msgid "> ## Setup" +msgstr "" + +#: make-novice/index.md:38 +# blockquote, which can be cascaded +msgid "> In order to follow this lesson, you will need to download some files." +msgstr "" + +#: make-novice/index.md:39 +# blockquote, which can be cascaded +msgid "> Please follow instructions on the [setup]({{ page.root }}/setup) page." +msgstr "" + +#: make-novice/reference.md:1 +# Front Matter +msgid "---\n" +"layout: reference\n" +"root: .\n" +"---" +msgstr "" + +#: make-novice/reference.md:6 +# header +msgid "## Running Make" +msgstr "" + +#: make-novice/reference.md:8 +msgid "To run Make:" +msgstr "" + +#: make-novice/reference.md:15 +msgid "Make will look for a Makefile called `Makefile` and will build the\n" +"default target, the first target in the Makefile." +msgstr "" + +#: make-novice/reference.md:18 +msgid "To use a Makefile with a different name, use the `-f` flag e.g." +msgstr "" + +#: make-novice/reference.md:20 +# code block +msgid "~~~\n" +"$ make -f build-files/analyze.mk\n" +"~~~" +msgstr "" + +#: make-novice/reference.md:25 +msgid "To build a specific target, provide it as an argument e.g." +msgstr "" + +#: make-novice/reference.md:27 +# code block +msgid "~~~\n" +"$ make isles.dat\n" +"~~~" +msgstr "" + +#: make-novice/reference.md:32 +msgid "If the target is up-to-date, Make will print a message like:" +msgstr "" + +#: make-novice/reference.md:39 +msgid "To see the actions Make will run when building a target, without\n" +"running the actions, use the `--dry-run` flag e.g." +msgstr "" + +#: make-novice/reference.md:42 +# code block +msgid "~~~\n" +"$ make --dry-run isles.dat\n" +"~~~" +msgstr "" + +#: make-novice/reference.md:47 +msgid "Alternatively, use the abbreviation `-n`." +msgstr "" + +#: make-novice/reference.md:49 +# code block +msgid "~~~\n" +"$ make -n isles.dat\n" +"~~~" +msgstr "" + +#: make-novice/reference.md:54 +# header +msgid "## Trouble Shooting" +msgstr "" + +#: make-novice/reference.md:56 +#: make-novice/reference.md:66 +msgid "If Make prints a message like," +msgstr "" + +#: make-novice/reference.md:63 +msgid "then check that all the actions are indented by TAB characters and not\n" +"spaces." +msgstr "" + +#: make-novice/reference.md:68 +# code block +msgid "~~~\n" +"No such file or directory: 'books/%.txt'\n" +"make: *** [isles.dat] Error 1\n" +"~~~" +msgstr "" + +#: make-novice/reference.md:74 +msgid "then you may have used the Make wildcard, `%`, in an action in a\n" +"pattern rule. Make wildcards cannot be used in actions." +msgstr "" + +#: make-novice/reference.md:77 +# header +msgid "## Makefiles" +msgstr "" + +#: make-novice/reference.md:79 +msgid "Rules:" +msgstr "" + +#: make-novice/reference.md:81 +# code block +msgid "~~~\n" +"target : dependency1 dependency2 ...\n" +" action1\n" +" action2\n" +" ...\n" +"~~~" +msgstr "" + +#: make-novice/reference.md:87 +#: make-novice/reference.md:113 +#: make-novice/reference.md:122 +#: make-novice/reference.md:139 +#: make-novice/reference.md:158 +#: make-novice/reference.md:173 +#: make-novice/reference.md:187 +#: make-novice/reference.md:196 +#: make-novice/reference.md:203 +#: make-novice/reference.md:215 +#: make-novice/reference.md:233 +# SC/DC Template label +msgid "{: .make}" +msgstr "" + +#: make-novice/reference.md:89 +# unordered list +msgid "* Each rule has a target, a file to be created, or built." +msgstr "" + +#: make-novice/reference.md:90 +# unordered list +msgid "* Each rule has zero or more dependencies, files that are needed to" +msgstr "" + +#: make-novice/reference.md:91 +msgid " build the target.\n" +"* `:` separates the target and the dependencies.\n" +"* Dependencies are separated by spaces.\n" +"* Each rule has zero or more actions, commands to run to build the\n" +" target using the dependencies.\n" +"* Actions are indented using the TAB character, not 8 spaces." +msgstr "" + +#: make-novice/reference.md:98 +msgid "Dependencies:" +msgstr "" + +#: make-novice/reference.md:100 +# unordered list +msgid "* If any dependency does not exist then Make will look for a rule to" +msgstr "" + +#: make-novice/reference.md:101 +msgid " build it.\n" +"* The order of rebuilding dependencies is arbitrary. You should not\n" +" assume that they will be built in the order in which they are listed.\n" +"* Dependencies must form a directed acyclic graph. A target cannot\n" +" depend on a dependency which, in turn depends upon, or has a\n" +" dependency which depends upon, that target." +msgstr "" + +#: make-novice/reference.md:108 +msgid "Comments:" +msgstr "" + +#: make-novice/reference.md:110 +# code block +msgid "~~~\n" +"# This is a Make comment.\n" +"~~~" +msgstr "" + +#: make-novice/reference.md:115 +msgid "Line continuation character:" +msgstr "" + +#: make-novice/reference.md:117 +# code block +msgid "~~~\n" +"ARCHIVE = isles.dat isles.png \\\n" +" abyss.dat abyss.png \\\n" +" sierra.dat sierra.png\n" +"~~~" +msgstr "" + +#: make-novice/reference.md:124 +# unordered list +msgid "* If a list of dependencies or an action is too long, a Makefile can" +msgstr "" + +#: make-novice/reference.md:125 +msgid " become more difficult to read.\n" +"* Backslash,`\\`, the line continuation character, allows you to split\n" +" up a list of dependencies or an action over multiple lines, to make\n" +" them easier to read.\n" +"* Make will combine the multiple lines into a single list of dependencies\n" +" or action." +msgstr "" + +#: make-novice/reference.md:132 +msgid "Phony targets:" +msgstr "" + +#: make-novice/reference.md:134 +# code block +msgid "~~~\n" +".PHONY : clean\n" +"clean :\n" +" rm -f *.dat\n" +"~~~" +msgstr "" + +#: make-novice/reference.md:141 +# unordered list +msgid "* Phony targets are a short-hand for sequences of actions." +msgstr "" + +#: make-novice/reference.md:142 +# unordered list +msgid "* No file with the target name is built when a rule with a phony" +msgstr "" + +#: make-novice/reference.md:143 +msgid " target is run." +msgstr "" + +#: make-novice/reference.md:145 +msgid "Automatic variables:" +msgstr "" + +#: make-novice/reference.md:147 +# unordered list +msgid "* `$<` denotes 'the first dependency of the current rule'." +msgstr "" + +#: make-novice/reference.md:148 +# unordered list +msgid "* `$@` denotes 'the target of the current rule'." +msgstr "" + +#: make-novice/reference.md:149 +# unordered list +msgid "* `$^` denotes 'the dependencies of the current rule'." +msgstr "" + +#: make-novice/reference.md:150 +# unordered list +msgid "* `$*` denotes 'the stem with which the pattern of the current rule matched'." +msgstr "" + +#: make-novice/reference.md:152 +msgid "Pattern rules:" +msgstr "" + +#: make-novice/reference.md:154 +# code block +msgid "~~~\n" +"%.dat : books/%.txt $(COUNT_SRC)\n" +" $(COUNT_EXE) $< $@\n" +"~~~" +msgstr "" + +#: make-novice/reference.md:160 +# unordered list +msgid "* The Make wildcard, `%`, specifies a pattern." +msgstr "" + +#: make-novice/reference.md:161 +# unordered list +msgid "* If Make finds a dependency matching the pattern, then the pattern is" +msgstr "" + +#: make-novice/reference.md:162 +msgid " substituted into the target.\n" +"* The Make wildcard can only be used in targets and dependencies.\n" +"* e.g. if Make found a file called `books/abyss.txt`, it would set the\n" +" target to be `abyss.dat`." +msgstr "" + +#: make-novice/reference.md:167 +msgid "Defining and using variables:" +msgstr "" + +#: make-novice/reference.md:169 +# code block +msgid "~~~\n" +"COUNT_SRC=wordcount.py\n" +"COUNT_EXE=python $(COUNT_SRC)\n" +"~~~" +msgstr "" + +#: make-novice/reference.md:175 +# unordered list +msgid "* A variable is assigned a value. For example, `COUNT_SRC`" +msgstr "" + +#: make-novice/reference.md:176 +msgid " is assigned the value `wordcount.py`.\n" +"* `$(...)` is a reference to a variable. It requests that\n" +" Make substitutes the name of a variable for its value." +msgstr "" + +#: make-novice/reference.md:180 +msgid "Suppress printing of actions:" +msgstr "" + +#: make-novice/reference.md:182 +# code block +msgid "~~~\n" +".PHONY : variables\n" +"variables:\n" +" @echo TXT_FILES: $(TXT_FILES)\n" +"~~~" +msgstr "" + +#: make-novice/reference.md:189 +# unordered list +msgid "* Prefix an action by `@` to instruct Make not to print that action." +msgstr "" + +#: make-novice/reference.md:191 +msgid "Include the contents of a Makefile in another Makefile:" +msgstr "" + +#: make-novice/reference.md:198 +msgid "wildcard function:" +msgstr "" + +#: make-novice/reference.md:205 +# unordered list +msgid "* Looks for all files matching a pattern e.g. `books/*.txt`, and" +msgstr "" + +#: make-novice/reference.md:206 +msgid " return these in a list.\n" +"* e.g. `TXT_FILES` is set to `books/abyss.txt books/isles.txt\n" +" books/last.txt books/sierra.txt`." +msgstr "" + +#: make-novice/reference.md:210 +msgid "patsubst ('path substitution') function:" +msgstr "" + +#: make-novice/reference.md:217 +# unordered list +msgid "* Every string that matches `books/%.txt` in `$(TXT_FILES)` is" +msgstr "" + +#: make-novice/reference.md:218 +msgid " replaced by `%.dat` and the strings are returned in a list.\n" +"* e.g. if `TXT_FILES` is `books/abyss.txt books/isles.txt\n" +" books/last.txt books/sierra.txt` this sets `DAT_FILES` to `abyss.dat\n" +" isles.dat last.dat sierra.dat`." +msgstr "" + +#: make-novice/reference.md:223 +msgid "Default targets:" +msgstr "" + +#: make-novice/reference.md:225 +# unordered list +msgid "* In Make version 3.79 the default target is the first target in the" +msgstr "" + +#: make-novice/reference.md:226 +msgid " Makefile.\n" +"* In Make 3.81, the default target can be explicitly set using the\n" +" special variable `.DEFAULT_GOAL` e.g." +msgstr "" + +#: make-novice/reference.md:230 +# code block +msgid "~~~\n" +".DEFAULT_GOAL := all\n" +"~~~" +msgstr "" + +#: make-novice/reference.md:235 +# header +msgid "## Manuals" +msgstr "" + +#: make-novice/reference.md:237 +msgid "[GNU Make Manual][gnu-make-manual]. Reference sections include:" +msgstr "" + +#: make-novice/reference.md:239 +# unordered list +msgid "* [Summary of Options][options-summary] for the `make` command." +msgstr "" + +#: make-novice/reference.md:240 +# unordered list +msgid "* [Quick Reference][quick-reference] of Make directives, text manipulation functions, and special variables." +msgstr "" + +#: make-novice/reference.md:241 +# unordered list +msgid "* [Automatic Variables][automatic-variables]." +msgstr "" + +#: make-novice/reference.md:242 +# unordered list +msgid "* [Special Built-in Target Names][special-targets]" +msgstr "" + +#: make-novice/reference.md:246 +msgid "{:auto_ids}\n" +"action\n" +": The steps a [build manager](#build-manager) must take to create or\n" +" update a file or other object." +msgstr "" + +#: make-novice/reference.md:251 +msgid "assignment\n" +": A request that [Make](#make) stores something in a\n" +" [variable](#variable)." +msgstr "" + +#: make-novice/reference.md:255 +msgid "automatic variable\n" +": A variable whose value is automatically redefined for each\n" +" [rule](#rule). [Make](#make)'s automatic variables include `$@`,\n" +" which holds the rule's [target](#target), `$^`, which holds its\n" +" [dependencies](#dependency), and, `$<`, which holds the first of\n" +" its dependencies, and `$*`, which holds the [stem](#stem) with which\n" +" the pattern was matched. Automatic variables are typically used in\n" +" [pattern rules](#pattern-rule)." +msgstr "" + +#: make-novice/reference.md:264 +msgid "build file\n" +": A description of [dependencies](#dependency) and [rules](#rule)\n" +" for a [build manager](#build-manager)." +msgstr "" + +#: make-novice/reference.md:268 +msgid "build manager\n" +": A program, such as [Make](#make), whose main purpose is to build or\n" +" update software, documentation, web sites, data files, images, and\n" +" other things." +msgstr "" + +#: make-novice/reference.md:273 +msgid "default rule\n" +": The [rule](#rule) that is executed if no [target](#target) is\n" +" specified when a [build manager](#build-manager) is run." +msgstr "" + +#: make-novice/reference.md:277 +msgid "default target\n" +": The [target](#target) of the [default rule](#default-rule)." +msgstr "" + +#: make-novice/reference.md:280 +msgid "dependency\n" +": A file that a [target](#target) depends on. If any of a target's\n" +" [dependencies](#dependency) are newer than the target itself, the\n" +" target needs to be updated. A target's dependencies are also\n" +" called its prerequisites. If a target's dependencies do not exist,\n" +" then they need to be built first." +msgstr "" + +#: make-novice/reference.md:287 +msgid "false dependency\n" +": This can refer to a [dependency](#dependency) that is artificial.\n" +" e.g. a false dependency is introduced if a data analysis script\n" +" is added as a dependency to the data files that the script\n" +" analyses." +msgstr "" + +#: make-novice/reference.md:293 +msgid "function\n" +": A built-in [Make](#make) utility that performs some operation, for\n" +" example gets a list of files matching a pattern." +msgstr "" + +#: make-novice/reference.md:297 +msgid "incremental build\n" +": The feature of a [build manager](#build-manager) by\n" +" which it only rebuilds files that, either directory\n" +" or indirectly, depend on a file that was changed." +msgstr "" + +#: make-novice/reference.md:302 +msgid "macro\n" +": Used as a synonym for [variable](#variable) in certain versions of\n" +" [Make](#make)." +msgstr "" + +#: make-novice/reference.md:306 +msgid "Make\n" +": A popular [build manager](#build-manager), from GNU, created in 1977." +msgstr "" + +#: make-novice/reference.md:309 +msgid "Makefile\n" +": A [build file](#build-file) used by [Make](#make), which, by\n" +" default, are named `Makefile`." +msgstr "" + +#: make-novice/reference.md:313 +msgid "pattern rule\n" +": A [rule](#rule) that specifies a general way to build or update an\n" +" entire class of files that can be managed the same way. For\n" +" example, a pattern rule can specify how to compile any C file\n" +" rather than a single, specific C file, or, to analyze any data\n" +" file rather than a single, specific data file. Pattern rules\n" +" typically make use of [automatic variables](#automatic-variable)\n" +" and [wildcards](#wildcard)." +msgstr "" + +#: make-novice/reference.md:322 +msgid "phony target\n" +": A [target](#target) that does not correspond to a file or other\n" +" object. Phony targets are usually symbolic names for sequences of\n" +" [actions](#action)." +msgstr "" + +#: make-novice/reference.md:327 +msgid "prerequisite\n" +": A synonym for [dependency](#dependency)." +msgstr "" + +#: make-novice/reference.md:330 +msgid "reference\n" +": A request that [Make](#make) substitutes the name of a\n" +" [variable](#variable) for its value." +msgstr "" + +#: make-novice/reference.md:334 +msgid "rule\n" +": A specification of a [target](#target)'s\n" +" [dependencies](#dependency) and what [actions](#action) need to be\n" +" executed to build or update the target." +msgstr "" + +#: make-novice/reference.md:339 +msgid "stem\n" +": The part of the target that was matched by the pattern rule. If\n" +" the target is `file.dat` and the target pattern was `%.dat`, then\n" +" the stem `$*` is `file`." +msgstr "" + +#: make-novice/reference.md:344 +msgid "target\n" +": A thing to be created or updated, for example a file. Targets can\n" +" have [dependencies](#dependency) that must exist, and be\n" +" up-to-date, before the target itself can be built or updated." +msgstr "" + +#: make-novice/reference.md:349 +msgid "variable\n" +": A symbolic name for something in a [Makefile](#makefile)." +msgstr "" + +#: make-novice/reference.md:352 +msgid "wildcard\n" +": A pattern that can be specified in [dependencies](#dependency) and\n" +" [targets](#target). If [Make](#make) finds a dependency matching\n" +" the pattern, then the pattern is substituted into the\n" +" target. wildcards are often used in [pattern\n" +" rules](#pattern-rule). The Make wildcard is `%`." +msgstr "" + +#: make-novice/reference.md:359 +msgid "[automatic-variables]: https://www.gnu.org/software/make/manual/html_node/Automatic-Variables.html\n" +"[gnu-make-manual]: https://www.gnu.org/software/make/manual/\n" +"[options-summary]: https://www.gnu.org/software/make/manual/html_node/Options-Summary.html\n" +"[quick-reference]: https://www.gnu.org/software/make/manual/html_node/Quick-Reference.html\n" +"[special-targets]: https://www.gnu.org/software/make/manual/html_node/Special-Targets.html" +msgstr "" + +#: make-novice/setup.md:1 +# Front Matter +msgid "---\n" +"layout: page\n" +"title: \"Setup\"\n" +"root: .\n" +"---" +msgstr "" + +#: make-novice/setup.md:7 +# header +msgid "## Files" +msgstr "" + +#: make-novice/setup.md:9 +msgid "You need to download some files to follow this lesson:" +msgstr "" + +#: make-novice/setup.md:11 +# ordered list +msgid "1. Download [make-lesson.zip][zip-file]." +msgstr "" + +#: make-novice/setup.md:13 +# ordered list +msgid "2. Move `make-lesson.zip` into a directory which you can access via your bash shell." +msgstr "" + +#: make-novice/setup.md:15 +# ordered list +msgid "3. Open a Bash shell window." +msgstr "" + +#: make-novice/setup.md:17 +# ordered list +msgid "4. Navigate to the directory where you downloaded the file." +msgstr "" + +#: make-novice/setup.md:19 +# ordered list +msgid "5. Unpack `make-lesson.zip`:" +msgstr "" + +#: make-novice/setup.md:21 +msgid " ~~~\n" +" $ unzip make-lesson.zip\n" +" ~~~" +msgstr "" + +#: make-novice/setup.md:24 +#: make-novice/setup.md:31 +# SC/DC Template label +msgid " {: .source}" +msgstr "" + +#: make-novice/setup.md:26 +# ordered list +msgid "6. Change into the `make-lesson` directory:" +msgstr "" + +#: make-novice/setup.md:28 +msgid " ~~~\n" +" $ cd make-lesson\n" +" ~~~" +msgstr "" + +#: make-novice/setup.md:35 +msgid "You also need to have the following software installed on your computer to\n" +"follow this lesson:" +msgstr "" + +#: make-novice/setup.md:38 +# header +msgid "### GNU Make" +msgstr "" + +#: make-novice/setup.md:40 +# header +msgid "#### Linux" +msgstr "" + +#: make-novice/setup.md:42 +msgid "Make is a standard tool on most Linux systems and should already be available.\n" +"Check if you already have Make installed by typing `make -v` into a terminal." +msgstr "" + +#: make-novice/setup.md:45 +msgid "One exception is Debian, and you should install Make from the terminal using\n" +"`sudo apt-get install make`." +msgstr "" + +#: make-novice/setup.md:48 +# header +msgid "#### OSX" +msgstr "" + +#: make-novice/setup.md:50 +msgid "You will need to have Xcode installed (download from the\n" +"[Apple website](https://developer.apple.com/xcode/)).\n" +"Check if you already have Make installed by typing `make -v` into a terminal. " +msgstr "" + +#: make-novice/setup.md:54 +# header +msgid "#### Windows" +msgstr "" + +#: make-novice/setup.md:55 +msgid "Use the Software Carpentry [Windows installer](https://github.com/swcarpentry/windows-installer)." +msgstr "" + +#: make-novice/setup.md:57 +# header +msgid "### Python" +msgstr "" + +#: make-novice/setup.md:59 +msgid "Python2 or Python3, Numpy and Matplotlib are required.\n" +"They can be installed separately, but the easiest approach is to install \n" +"[Anaconda](https://www.anaconda.com/distribution/) which includes all of the\n" +"necessary python software." +msgstr "" + +#: make-novice/setup.md:64 +msgid "[zip-file]: {{ page.root }}/files/make-lesson.zip" +msgstr "" + diff --git a/po/.ancestors/.python-novice-gapminder.ja.po.ancestor b/po/.ancestors/.python-novice-gapminder.ja.po.ancestor new file mode 100644 index 00000000..f5e79031 --- /dev/null +++ b/po/.ancestors/.python-novice-gapminder.ja.po.ancestor @@ -0,0 +1,11499 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: i18n\n" +"Report-Msgid-Bugs-To: https://github.com/haiwen/seafile-docs/issues\n" +"POT-Creation-Date: 2018-09-16 01:25:35+0900\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: python-novice-gapminder/CODE_OF_CONDUCT.md:1 +#: python-novice-gapminder/bin/boilerplate/CODE_OF_CONDUCT.md:1 +# Front Matter +msgid "---\n" +"layout: page\n" +"title: \"Contributor Code of Conduct\"\n" +"---" +msgstr "" + +#: python-novice-gapminder/CODE_OF_CONDUCT.md:5 +#: python-novice-gapminder/bin/boilerplate/CODE_OF_CONDUCT.md:5 +msgid "As contributors and maintainers of this project,\n" +"we pledge to follow the [Carpentry Code of Conduct][coc]." +msgstr "" + +#: python-novice-gapminder/CODE_OF_CONDUCT.md:8 +#: python-novice-gapminder/bin/boilerplate/CODE_OF_CONDUCT.md:8 +msgid "Instances of abusive, harassing, or otherwise unacceptable behavior\n" +"may be reported by following our [reporting guidelines][coc-reporting]." +msgstr "" + +#: python-novice-gapminder/CODE_OF_CONDUCT.md:11 +#: python-novice-gapminder/bin/boilerplate/CODE_OF_CONDUCT.md:11 +#: python-novice-gapminder/bin/boilerplate/_episodes/01-introduction.md:14 +#: python-novice-gapminder/bin/boilerplate/_extras/discuss.md:6 +#: python-novice-gapminder/bin/boilerplate/_extras/figures.md:40 +#: python-novice-gapminder/bin/boilerplate/_extras/guide.md:6 +#: python-novice-gapminder/bin/boilerplate/index.md:13 +#: python-novice-gapminder/bin/boilerplate/reference.md:9 +#: python-novice-gapminder/bin/boilerplate/setup.md:7 +msgid "{% include links.md %}" +msgstr "" + +#: python-novice-gapminder/CONTRIBUTING.md:1 +#: python-novice-gapminder/bin/boilerplate/CONTRIBUTING.md:1 +# header +msgid "# Contributing" +msgstr "" + +#: python-novice-gapminder/CONTRIBUTING.md:3 +#: python-novice-gapminder/bin/boilerplate/CONTRIBUTING.md:3 +msgid "[Software Carpentry][swc-site] and [Data Carpentry][dc-site] are open source projects,\n" +"and we welcome contributions of all kinds:\n" +"new lessons,\n" +"fixes to existing material,\n" +"bug reports,\n" +"and reviews of proposed changes are all welcome." +msgstr "" + +#: python-novice-gapminder/CONTRIBUTING.md:10 +#: python-novice-gapminder/bin/boilerplate/CONTRIBUTING.md:10 +# header +msgid "## Contributor Agreement" +msgstr "" + +#: python-novice-gapminder/CONTRIBUTING.md:12 +msgid "By contributing,\n" +"you agree that we may redistribute your work under [our license](LICENSE.md).\n" +"In exchange,\n" +"we will address your issues and/or assess your change proposal as promptly as we can,\n" +"and help you become a member of our community.\n" +"Everyone involved in [Software Carpentry][swc-site] and [Data Carpentry][dc-site]\n" +"agrees to abide by our [code of conduct](CONDUCT.md)." +msgstr "" + +#: python-novice-gapminder/CONTRIBUTING.md:20 +#: python-novice-gapminder/bin/boilerplate/CONTRIBUTING.md:20 +# header +msgid "## How to Contribute" +msgstr "" + +#: python-novice-gapminder/CONTRIBUTING.md:22 +#: python-novice-gapminder/bin/boilerplate/CONTRIBUTING.md:22 +msgid "The easiest way to get started is to file an issue\n" +"to tell us about a spelling mistake,\n" +"some awkward wording,\n" +"or a factual error.\n" +"This is a good way to introduce yourself\n" +"and to meet some of our community members." +msgstr "" + +#: python-novice-gapminder/CONTRIBUTING.md:29 +#: python-novice-gapminder/bin/boilerplate/CONTRIBUTING.md:29 +# ordered list +msgid "1. If you do not have a [GitHub][github] account," +msgstr "" + +#: python-novice-gapminder/CONTRIBUTING.md:30 +msgid " you can [send us comments by email][contact].\n" +" However,\n" +" we will be able to respond more quickly if you use one of the other methods described below." +msgstr "" + +#: python-novice-gapminder/CONTRIBUTING.md:34 +#: python-novice-gapminder/bin/boilerplate/CONTRIBUTING.md:34 +# ordered list +msgid "2. If you have a [GitHub][github] account," +msgstr "" + +#: python-novice-gapminder/CONTRIBUTING.md:35 +#: python-novice-gapminder/bin/boilerplate/CONTRIBUTING.md:35 +msgid " or are willing to [create one][github-join],\n" +" but do not know how to use Git,\n" +" you can report problems or suggest improvements by [creating an issue][issues].\n" +" This allows us to assign the item to someone\n" +" and to respond to it in a threaded discussion." +msgstr "" + +#: python-novice-gapminder/CONTRIBUTING.md:41 +#: python-novice-gapminder/bin/boilerplate/CONTRIBUTING.md:41 +# ordered list +msgid "3. If you are comfortable with Git," +msgstr "" + +#: python-novice-gapminder/CONTRIBUTING.md:42 +#: python-novice-gapminder/bin/boilerplate/CONTRIBUTING.md:42 +msgid " and would like to add or change material,\n" +" you can submit a pull request (PR).\n" +" Instructions for doing this are [included below](#using-github)." +msgstr "" + +#: python-novice-gapminder/CONTRIBUTING.md:46 +#: python-novice-gapminder/bin/boilerplate/CONTRIBUTING.md:46 +# header +msgid "## Where to Contribute" +msgstr "" + +#: python-novice-gapminder/CONTRIBUTING.md:48 +#: python-novice-gapminder/bin/boilerplate/CONTRIBUTING.md:48 +# ordered list +msgid "1. If you wish to change this lesson," +msgstr "" + +#: python-novice-gapminder/CONTRIBUTING.md:49 +msgid " please work in ,\n" +" which can be viewed at ." +msgstr "" + +#: python-novice-gapminder/CONTRIBUTING.md:52 +#: python-novice-gapminder/bin/boilerplate/CONTRIBUTING.md:52 +# ordered list +msgid "2. If you wish to change the example lesson," +msgstr "" + +#: python-novice-gapminder/CONTRIBUTING.md:53 +#: python-novice-gapminder/bin/boilerplate/CONTRIBUTING.md:53 +msgid " please work in ,\n" +" which documents the format of our lessons\n" +" and can be viewed at ." +msgstr "" + +#: python-novice-gapminder/CONTRIBUTING.md:57 +#: python-novice-gapminder/bin/boilerplate/CONTRIBUTING.md:57 +# ordered list +msgid "3. If you wish to change the template used for workshop websites," +msgstr "" + +#: python-novice-gapminder/CONTRIBUTING.md:58 +#: python-novice-gapminder/bin/boilerplate/CONTRIBUTING.md:58 +msgid " please work in .\n" +" The home page of that repository explains how to set up workshop websites,\n" +" while the extra pages in \n" +" provide more background on our design choices." +msgstr "" + +#: python-novice-gapminder/CONTRIBUTING.md:63 +#: python-novice-gapminder/bin/boilerplate/CONTRIBUTING.md:63 +# ordered list +msgid "4. If you wish to change CSS style files, tools," +msgstr "" + +#: python-novice-gapminder/CONTRIBUTING.md:64 +#: python-novice-gapminder/bin/boilerplate/CONTRIBUTING.md:64 +msgid " or HTML boilerplate for lessons or workshops stored in `_includes` or `_layouts`,\n" +" please work in ." +msgstr "" + +#: python-novice-gapminder/CONTRIBUTING.md:67 +#: python-novice-gapminder/bin/boilerplate/CONTRIBUTING.md:67 +# header +msgid "## What to Contribute" +msgstr "" + +#: python-novice-gapminder/CONTRIBUTING.md:69 +msgid "There are many ways to contribute,\n" +"from writing new exercises and improving existing ones\n" +"to updating or filling in the documentation\n" +"and submitting [bug reports][issues]\n" +"about things that don't work, aren't clear, or are missing.\n" +"If you are looking for ideas,\n" +"please see [the list of issues for this repository][issues],\n" +"or the issues for [Data Carpentry][dc-issues]\n" +"and [Software Carpentry][swc-issues] projects." +msgstr "" + +#: python-novice-gapminder/CONTRIBUTING.md:79 +#: python-novice-gapminder/bin/boilerplate/CONTRIBUTING.md:79 +msgid "Comments on issues and reviews of pull requests are just as welcome:\n" +"we are smarter together than we are on our own.\n" +"Reviews from novices and newcomers are particularly valuable:\n" +"it's easy for people who have been using these lessons for a while\n" +"to forget how impenetrable some of this material can be,\n" +"so fresh eyes are always welcome." +msgstr "" + +#: python-novice-gapminder/CONTRIBUTING.md:86 +#: python-novice-gapminder/bin/boilerplate/CONTRIBUTING.md:86 +# header +msgid "## What *Not* to Contribute" +msgstr "" + +#: python-novice-gapminder/CONTRIBUTING.md:88 +#: python-novice-gapminder/bin/boilerplate/CONTRIBUTING.md:88 +msgid "Our lessons already contain more material than we can cover in a typical workshop,\n" +"so we are usually *not* looking for more concepts or tools to add to them.\n" +"As a rule,\n" +"if you want to introduce a new idea,\n" +"you must (a) estimate how long it will take to teach\n" +"and (b) explain what you would take out to make room for it.\n" +"The first encourages contributors to be honest about requirements;\n" +"the second, to think hard about priorities." +msgstr "" + +#: python-novice-gapminder/CONTRIBUTING.md:97 +#: python-novice-gapminder/bin/boilerplate/CONTRIBUTING.md:97 +msgid "We are also not looking for exercises or other material that only run on one platform.\n" +"Our workshops typically contain a mixture of Windows, Mac OS X, and Linux users;\n" +"in order to be usable,\n" +"our lessons must run equally well on all three." +msgstr "" + +#: python-novice-gapminder/CONTRIBUTING.md:102 +#: python-novice-gapminder/bin/boilerplate/CONTRIBUTING.md:102 +# header +msgid "## Using GitHub" +msgstr "" + +#: python-novice-gapminder/CONTRIBUTING.md:104 +msgid "If you choose to contribute via GitHub,\n" +"you may want to look at\n" +"[How to Contribute to an Open Source Project on GitHub][how-contribute].\n" +"In brief:" +msgstr "" + +#: python-novice-gapminder/CONTRIBUTING.md:109 +# ordered list +msgid "1. The published copy of the lesson is in the `gh-pages` branch of the repository" +msgstr "" + +#: python-novice-gapminder/CONTRIBUTING.md:110 +msgid " (so that GitHub will regenerate it automatically).\n" +" Please create all branches from that,\n" +" and merge the [master repository][repo]'s `gh-pages` branch into your `gh-pages` branch\n" +" before starting work.\n" +" Please do *not* work directly in your `gh-pages` branch,\n" +" since that will make it difficult for you to work on other contributions." +msgstr "" + +#: python-novice-gapminder/CONTRIBUTING.md:117 +# ordered list +msgid "2. We use [GitHub flow][github-flow] to manage changes:" +msgstr "" + +#: python-novice-gapminder/CONTRIBUTING.md:118 +msgid " 1. Create a new branch in your desktop copy of this repository for each significant change.\n" +" 2. Commit the change in that branch.\n" +" 3. Push that branch to your fork of this repository on GitHub.\n" +" 4. Submit a pull request from that branch to the [master repository][repo].\n" +" 5. If you receive feedback,\n" +" make changes on your desktop and push to your branch on GitHub:\n" +" the pull request will update automatically." +msgstr "" + +#: python-novice-gapminder/CONTRIBUTING.md:126 +msgid "Each lesson has two maintainers who review issues and pull requests\n" +"or encourage others to do so.\n" +"The maintainers are community volunteers,\n" +"and have final say over what gets merged into the lesson." +msgstr "" + +#: python-novice-gapminder/CONTRIBUTING.md:131 +#: python-novice-gapminder/bin/boilerplate/CONTRIBUTING.md:129 +# header +msgid "## Other Resources" +msgstr "" + +#: python-novice-gapminder/CONTRIBUTING.md:133 +msgid "General discussion of [Software Carpentry][swc-site] and [Data Carpentry][dc-site]\n" +"happens on the [discussion mailing list][discuss-list],\n" +"which everyone is welcome to join.\n" +"You can also [reach us by email][contact]." +msgstr "" + +#: python-novice-gapminder/CONTRIBUTING.md:138 +msgid "[contact]: mailto:admin@software-carpentry.org\n" +"[dc-issues]: https://github.com/issues?q=user%3Adatacarpentry\n" +"[dc-lessons]: http://datacarpentry.org/lessons/\n" +"[dc-site]: http://datacarpentry.org/\n" +"[discuss-list]: http://lists.software-carpentry.org/listinfo/discuss\n" +"[github]: http://github.com\n" +"[github-flow]: https://guides.github.com/introduction/flow/\n" +"[github-join]: https://github.com/join\n" +"[how-contribute]: https://egghead.io/series/how-to-contribute-to-an-open-source-project-on-github\n" +"[issues]: https://github.com/swcarpentry/python-novice-gapminder/issues/\n" +"[repo]: https://github.com/swcarpentry/python-novice-gapminder/\n" +"[swc-issues]: https://github.com/issues?q=user%3Aswcarpentry\n" +"[swc-lessons]: http://software-carpentry.org/lessons/\n" +"[swc-site]: http://software-carpentry.org/" +msgstr "" + +#: python-novice-gapminder/LICENSE.md:1 +# Front Matter +msgid "---\n" +"layout: page\n" +"title: \"Licenses\"\n" +"root: .\n" +"---" +msgstr "" + +#: python-novice-gapminder/LICENSE.md:6 +# header +msgid "## Instructional Material" +msgstr "" + +#: python-novice-gapminder/LICENSE.md:8 +msgid "All Software Carpentry and Data Carpentry instructional material is\n" +"made available under the [Creative Commons Attribution\n" +"license][cc-by-human]. The following is a human-readable summary of\n" +"(and not a substitute for) the [full legal text of the CC BY 4.0\n" +"license][cc-by-legal]." +msgstr "" + +#: python-novice-gapminder/LICENSE.md:14 +msgid "You are free:" +msgstr "" + +#: python-novice-gapminder/LICENSE.md:16 +# unordered list +msgid "* to **Share**---copy and redistribute the material in any medium or format" +msgstr "" + +#: python-novice-gapminder/LICENSE.md:17 +# unordered list +msgid "* to **Adapt**---remix, transform, and build upon the material" +msgstr "" + +#: python-novice-gapminder/LICENSE.md:19 +msgid "for any purpose, even commercially." +msgstr "" + +#: python-novice-gapminder/LICENSE.md:21 +msgid "The licensor cannot revoke these freedoms as long as you follow the\n" +"license terms." +msgstr "" + +#: python-novice-gapminder/LICENSE.md:24 +msgid "Under the following terms:" +msgstr "" + +#: python-novice-gapminder/LICENSE.md:26 +# unordered list +msgid "* **Attribution**---You must give appropriate credit (mentioning that" +msgstr "" + +#: python-novice-gapminder/LICENSE.md:27 +msgid " your work is derived from work that is Copyright © Software\n" +" Carpentry and, where practical, linking to\n" +" http://software-carpentry.org/), provide a [link to the\n" +" license][cc-by-human], and indicate if changes were made. You may do\n" +" so in any reasonable manner, but not in any way that suggests the\n" +" licensor endorses you or your use." +msgstr "" + +#: python-novice-gapminder/LICENSE.md:34 +msgid "**No additional restrictions**---You may not apply legal terms or\n" +"technological measures that legally restrict others from doing\n" +"anything the license permits. With the understanding that:" +msgstr "" + +#: python-novice-gapminder/LICENSE.md:38 +msgid "Notices:" +msgstr "" + +#: python-novice-gapminder/LICENSE.md:40 +# unordered list +msgid "* You do not have to comply with the license for elements of the" +msgstr "" + +#: python-novice-gapminder/LICENSE.md:41 +msgid " material in the public domain or where your use is permitted by an\n" +" applicable exception or limitation.\n" +"* No warranties are given. The license may not give you all of the\n" +" permissions necessary for your intended use. For example, other\n" +" rights such as publicity, privacy, or moral rights may limit how you\n" +" use the material." +msgstr "" + +#: python-novice-gapminder/LICENSE.md:48 +# header +msgid "## Software" +msgstr "" + +#: python-novice-gapminder/LICENSE.md:50 +msgid "Except where otherwise noted, the example programs and other software\n" +"provided by Software Carpentry and Data Carpentry are made available under the\n" +"[OSI][osi]-approved\n" +"[MIT license][mit-license]." +msgstr "" + +#: python-novice-gapminder/LICENSE.md:55 +msgid "Permission is hereby granted, free of charge, to any person obtaining\n" +"a copy of this software and associated documentation files (the\n" +"\"Software\"), to deal in the Software without restriction, including\n" +"without limitation the rights to use, copy, modify, merge, publish,\n" +"distribute, sublicense, and/or sell copies of the Software, and to\n" +"permit persons to whom the Software is furnished to do so, subject to\n" +"the following conditions:" +msgstr "" + +#: python-novice-gapminder/LICENSE.md:63 +msgid "The above copyright notice and this permission notice shall be\n" +"included in all copies or substantial portions of the Software." +msgstr "" + +#: python-novice-gapminder/LICENSE.md:66 +msgid "THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n" +"EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n" +"MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n" +"NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\n" +"LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\n" +"OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\n" +"WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." +msgstr "" + +#: python-novice-gapminder/LICENSE.md:74 +# header +msgid "## Trademark" +msgstr "" + +#: python-novice-gapminder/LICENSE.md:76 +msgid "\"Software Carpentry\" and \"Data Carpentry\" and their respective logos\n" +"are registered trademarks of [Community Initiatives][CI]." +msgstr "" + +#: python-novice-gapminder/LICENSE.md:79 +msgid "[cc-by-human]: https://creativecommons.org/licenses/by/4.0/\n" +"[cc-by-legal]: https://creativecommons.org/licenses/by/4.0/legalcode\n" +"[mit-license]: https://opensource.org/licenses/mit-license.html\n" +"[ci]: http://communityin.org/\n" +"[osi]: https://opensource.org" +msgstr "" + +#: python-novice-gapminder/README.md:1 +msgid "[![Create a Slack Account with us](https://img.shields.io/badge/Create_Slack_Account-The_Carpentries-071159.svg)](https://swc-slack-invite.herokuapp.com/) \n" +" [![Slack Status](https://img.shields.io/badge/Slack_Channel-swc--py--gapminder-E01563.svg)](https://swcarpentry.slack.com/messages/C9X4W03KL) " +msgstr "" + +#: python-novice-gapminder/README.md:4 +msgid "python-novice-gapminder\n" +"=======================" +msgstr "" + +#: python-novice-gapminder/README.md:7 +msgid "Introduction to Python for non-programmers with a focus on plotting and data analysis.\n" +"Please see \n" +"for a rendered version of this material,\n" +"[the lesson template documentation][lesson-example]\n" +"for instructions on formatting, building, and submitting material,\n" +"or run `make` in this directory for a list of helpful commands." +msgstr "" + +#: python-novice-gapminder/README.md:14 +msgid "Maintainer(s):" +msgstr "" + +#: python-novice-gapminder/README.md:16 +# unordered list +msgid "* [Allen Lee][lee-allen]" +msgstr "" + +#: python-novice-gapminder/README.md:17 +# unordered list +msgid "* [Nathan Moore][moore-nathan]" +msgstr "" + +#: python-novice-gapminder/README.md:18 +# unordered list +msgid "* [Sourav Singh][singh-sourav]" +msgstr "" + +#: python-novice-gapminder/README.md:19 +# unordered list +msgid "* [Olav Vahtras][olav-vahtras]" +msgstr "" + +#: python-novice-gapminder/README.md:21 +msgid "[lee-allen]: https://software-carpentry.org/team/#lee-allen\n" +"[lesson-example]: https://carpentries.github.io/lesson-example/\n" +"[moore-nathan]: https://software-carpentry.org/team/#moore_nathan\n" +"[singh-sourav]: https://software-carpentry.org/team/#singh-sourav\n" +"[olav-vahtras]: https://software-carpentry.org/team/#vahtras_olav" +msgstr "" + +#: python-novice-gapminder/_episodes/01-run-quit.md:1 +# Front Matter +msgid "---\n" +"title: \"Running and Quitting\"\n" +"teaching: 15\n" +"exercises: 0\n" +"questions:\n" +"- \"How can I run Python programs?\"\n" +"objectives:\n" +"- \"Launch the Jupyter Notebook, create new notebooks, and exit the Notebook.\"\n" +"- \"Create Markdown cells in a notebook.\"\n" +"- \"Create and run Python cells in a notebook.\"\n" +"keypoints:\n" +"- \"Python programs are plain text files.\"\n" +"- \"Use the Jupyter Notebook for editing and running Python.\"\n" +"- \"The Notebook has Command and Edit modes.\"\n" +"- \"Use the keyboard and mouse to select and edit cells.\"\n" +"- \"The Notebook will turn Markdown into pretty-printed documentation.\"\n" +"- \"Markdown does most of what HTML does.\"\n" +"---" +msgstr "" + +#: python-novice-gapminder/_episodes/01-run-quit.md:19 +# header +msgid "## Python programs are plain text files." +msgstr "" + +#: python-novice-gapminder/_episodes/01-run-quit.md:21 +# unordered list +msgid "* They have the `.py` extension to let everyone (including the operating system) " +msgstr "" + +#: python-novice-gapminder/_episodes/01-run-quit.md:22 +msgid " know it is a Python program.\n" +" * This is convention, not a requirement.\n" +"* It's common to write them using a text editor but we are going to use\n" +" the [Jupyter Notebook][jupyter].\n" +"* The bit of extra setup is well worth it because the Notebook provides code completion \n" +" and other helpful features.\n" +"* Notebook files have the extension `.ipynb` to distinguish them from plain-text Python programs.\n" +" * Can export as \"pure Python\" to run from the command line." +msgstr "" + +#: python-novice-gapminder/_episodes/01-run-quit.md:31 +# header +msgid "## Use the Jupyter Notebook for editing and running Python." +msgstr "" + +#: python-novice-gapminder/_episodes/01-run-quit.md:33 +# unordered list +msgid "* The [Anaconda package manager][anaconda] is an automated way to install the Jupyter notebook." +msgstr "" + +#: python-novice-gapminder/_episodes/01-run-quit.md:34 +# unordered list +msgid " * See [the setup instructions]({{ page.root }}/setup/) for Anaconda installation instructions." +msgstr "" + +#: python-novice-gapminder/_episodes/01-run-quit.md:35 +# unordered list +msgid "* It also installs all the extra libraries it needs to run." +msgstr "" + +#: python-novice-gapminder/_episodes/01-run-quit.md:36 +# unordered list +msgid "* Once you have installed Python and the Jupyter Notebook requirements, open a shell and type:" +msgstr "" + +#: python-novice-gapminder/_episodes/01-run-quit.md:38 +msgid " ~~~\n" +" $ jupyter notebook\n" +" ~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/01-run-quit.md:42 +# unordered list +msgid "* This will start a Jupyter Notebook server and open your default web browser. " +msgstr "" + +#: python-novice-gapminder/_episodes/01-run-quit.md:43 +# unordered list +msgid "* The server runs locally on your machine only and does not use an internet connection." +msgstr "" + +#: python-novice-gapminder/_episodes/01-run-quit.md:44 +# unordered list +msgid "* The server sends messages to your browser." +msgstr "" + +#: python-novice-gapminder/_episodes/01-run-quit.md:45 +# unordered list +msgid "* The server does the work and the web browser renders the notebook." +msgstr "" + +#: python-novice-gapminder/_episodes/01-run-quit.md:46 +# unordered list +msgid "* You can type code into the browser and see the result when the web page talks to the server." +msgstr "" + +#: python-novice-gapminder/_episodes/01-run-quit.md:47 +# unordered list +msgid "* This has several advantages:" +msgstr "" + +#: python-novice-gapminder/_episodes/01-run-quit.md:48 +# unordered list +msgid " * You can easily type, edit, and copy and paste blocks of code." +msgstr "" + +#: python-novice-gapminder/_episodes/01-run-quit.md:49 +# unordered list +msgid " * Tab complete allows you to easily access the names of things you are using" +msgstr "" + +#: python-novice-gapminder/_episodes/01-run-quit.md:50 +msgid " and learn more about them.\n" +" * It allows you to annotate your code with links, different sized text, bullets, etc.\n" +" to make it more accessible to you and your collaborators.\n" +" * It allows you to display figures next to the code that produces them\n" +" to tell a complete story of the analysis." +msgstr "" + +#: python-novice-gapminder/_episodes/01-run-quit.md:56 +msgid "![Example Jupyter Notebook](../fig/0_jupyter_notebook_example.jpg) \n" +"*Screenshot of a [Jupyter Notebook on quantum mechanics](https://github.com/jrjohansson/qutip-lectures) by Robert Johansson*" +msgstr "" + +#: python-novice-gapminder/_episodes/01-run-quit.md:59 +# blockquote, which can be cascaded +msgid "> ## How It's Stored" +msgstr "" + +#: python-novice-gapminder/_episodes/01-run-quit.md:60 +msgid ">\n" +"> * The notebook file is stored in a format called JSON.\n" +"> * Just like a webpage, what's saved looks different from what you see in your browser.\n" +"> * But this format allows Jupyter to mix source code, text, and images, all in one file." +msgstr "" + +#: python-novice-gapminder/_episodes/01-run-quit.md:64 +#: python-novice-gapminder/_episodes/01-run-quit.md:77 +#: python-novice-gapminder/_episodes/02-variables.md:106 +#: python-novice-gapminder/_episodes/06-libraries.md:35 +#: python-novice-gapminder/_episodes/07-reading-tabular.md:72 +#: python-novice-gapminder/_episodes/09-plotting.md:280 +#: python-novice-gapminder/_episodes/17-conditionals.md:251 +#: python-novice-gapminder/_episodes/17-conditionals.md:427 +#: python-novice-gapminder/_episodes/18-style.md:98 +#: python-novice-gapminder/_extras/design.md:14 +#: python-novice-gapminder/index.md:23 +# SC/DC Template label +msgid "{: .callout}" +msgstr "" + +#: python-novice-gapminder/_episodes/01-run-quit.md:66 +# header +msgid "## The Notebook has Command and Edit modes." +msgstr "" + +#: python-novice-gapminder/_episodes/01-run-quit.md:68 +# unordered list +msgid "* Open a new notebook from the dropdown menu (that says 'New') in the top right corner of the file browser page." +msgstr "" + +#: python-novice-gapminder/_episodes/01-run-quit.md:69 +# unordered list +msgid "* Each notebook contains one or more cells that contain code, text, or images." +msgstr "" + +#: python-novice-gapminder/_episodes/01-run-quit.md:71 +# blockquote, which can be cascaded +msgid "> ## Code vs. Text" +msgstr "" + +#: python-novice-gapminder/_episodes/01-run-quit.md:72 +msgid ">\n" +"> We often use the term \"code\" to mean\n" +"> \"the source code of software written in a language such as Python\". \n" +"> A \"code cell\" in a Notebook is a cell that contains software;\n" +"> a \"text cell\" is one that contains ordinary prose written for human beings." +msgstr "" + +#: python-novice-gapminder/_episodes/01-run-quit.md:79 +# unordered list +msgid "* If you press \"esc\" and \"return\" alternately," +msgstr "" + +#: python-novice-gapminder/_episodes/01-run-quit.md:80 +msgid " the outer border of your code cell will change from gray/blue to green.\n" +" * The difference in color is subtle.\n" +"* These are the command (gray) and edit (green) modes of your notebook.\n" +"* In command mode, pressing the \"H\" key will provide \n" +" a list of all the shortcut keys.\n" +"* Command mode alows you to edit notebook-level features, and edit mode changes the content of cells.\n" +"* When in command mode (esc/gray),\n" +" * The \"B\" key will make a new cell below the currently selected cell.\n" +" * The \"A\" key will make one above.\n" +" * The \"X\" key will delete the current cell.\n" +" * The \"Z\" key will undo your last cell deletion.\n" +"* All actions can be done using the menus,\n" +" but there are lots of keyboard shortcuts to speed things up.\n" +"* If you remember the \"esc\" and \"H\" shortcut, you will be able to find out all the rest." +msgstr "" + +#: python-novice-gapminder/_episodes/01-run-quit.md:95 +# blockquote, which can be cascaded +msgid "> ## Command Vs. Edit" +msgstr "" + +#: python-novice-gapminder/_episodes/01-run-quit.md:96 +msgid ">\n" +"> In the Jupyter notebook page are you currently in command or edit mode? \n" +"> Switch between the modes. \n" +"> Use the shortcuts to generate a new cell. \n" +"> Use the shortcuts to delete a cell\n" +">\n" +"> > ## Solution\n" +"> >\n" +"> > Command mode has a grey boarder and Edit mode has a green border. \n" +"> > Use \"esc\" and \"Enter\" to switch between modes. \n" +"> > You need to be in command mode (Hit \"esc\" if your cell is green). Type \"B\" or \"A\".\n" +"> > You need to be in command mode (Hit \"esc\" if your cell is green). Type \"X\".\n" +"> >" +msgstr "" + +#: python-novice-gapminder/_episodes/01-run-quit.md:109 +#: python-novice-gapminder/_episodes/01-run-quit.md:272 +#: python-novice-gapminder/_episodes/01-run-quit.md:294 +#: python-novice-gapminder/_episodes/01-run-quit.md:324 +#: python-novice-gapminder/_episodes/01-run-quit.md:350 +#: python-novice-gapminder/_episodes/02-variables.md:280 +#: python-novice-gapminder/_episodes/02-variables.md:298 +#: python-novice-gapminder/_episodes/03-types-conversion.md:227 +#: python-novice-gapminder/_episodes/03-types-conversion.md:248 +#: python-novice-gapminder/_episodes/03-types-conversion.md:274 +#: python-novice-gapminder/_episodes/03-types-conversion.md:328 +#: python-novice-gapminder/_episodes/03-types-conversion.md:399 +#: python-novice-gapminder/_episodes/03-types-conversion.md:424 +#: python-novice-gapminder/_episodes/03-types-conversion.md:447 +#: python-novice-gapminder/_episodes/04-built-in.md:243 +#: python-novice-gapminder/_episodes/04-built-in.md:290 +#: python-novice-gapminder/_episodes/04-built-in.md:302 +#: python-novice-gapminder/_episodes/04-built-in.md:315 +#: python-novice-gapminder/_episodes/06-libraries.md:152 +#: python-novice-gapminder/_episodes/06-libraries.md:209 +#: python-novice-gapminder/_episodes/06-libraries.md:241 +#: python-novice-gapminder/_episodes/06-libraries.md:259 +#: python-novice-gapminder/_episodes/06-libraries.md:298 +#: python-novice-gapminder/_episodes/06-libraries.md:330 +#: python-novice-gapminder/_episodes/06-libraries.md:360 +#: python-novice-gapminder/_episodes/06-libraries.md:381 +#: python-novice-gapminder/_episodes/07-reading-tabular.md:240 +#: python-novice-gapminder/_episodes/07-reading-tabular.md:335 +#: python-novice-gapminder/_episodes/07-reading-tabular.md:364 +#: python-novice-gapminder/_episodes/07-reading-tabular.md:388 +#: python-novice-gapminder/_episodes/08-data-frames.md:355 +#: python-novice-gapminder/_episodes/08-data-frames.md:394 +#: python-novice-gapminder/_episodes/08-data-frames.md:450 +#: python-novice-gapminder/_episodes/08-data-frames.md:471 +#: python-novice-gapminder/_episodes/08-data-frames.md:511 +#: python-novice-gapminder/_episodes/09-plotting.md:164 +#: python-novice-gapminder/_episodes/09-plotting.md:187 +#: python-novice-gapminder/_episodes/09-plotting.md:208 +#: python-novice-gapminder/_episodes/09-plotting.md:242 +#: python-novice-gapminder/_episodes/11-lists.md:233 +#: python-novice-gapminder/_episodes/11-lists.md:246 +#: python-novice-gapminder/_episodes/11-lists.md:270 +#: python-novice-gapminder/_episodes/11-lists.md:299 +#: python-novice-gapminder/_episodes/11-lists.md:328 +#: python-novice-gapminder/_episodes/11-lists.md:348 +#: python-novice-gapminder/_episodes/11-lists.md:386 +#: python-novice-gapminder/_episodes/11-lists.md:427 +#: python-novice-gapminder/_episodes/12-for-loops.md:186 +#: python-novice-gapminder/_episodes/12-for-loops.md:211 +#: python-novice-gapminder/_episodes/12-for-loops.md:236 +#: python-novice-gapminder/_episodes/12-for-loops.md:260 +#: python-novice-gapminder/_episodes/12-for-loops.md:278 +#: python-novice-gapminder/_episodes/12-for-loops.md:298 +#: python-novice-gapminder/_episodes/12-for-loops.md:313 +#: python-novice-gapminder/_episodes/12-for-loops.md:343 +#: python-novice-gapminder/_episodes/12-for-loops.md:379 +#: python-novice-gapminder/_episodes/12-for-loops.md:400 +#: python-novice-gapminder/_episodes/13-looping-data-sets.md:122 +#: python-novice-gapminder/_episodes/13-looping-data-sets.md:154 +#: python-novice-gapminder/_episodes/13-looping-data-sets.md:177 +#: python-novice-gapminder/_episodes/14-writing-functions.md:172 +#: python-novice-gapminder/_episodes/14-writing-functions.md:198 +#: python-novice-gapminder/_episodes/14-writing-functions.md:238 +#: python-novice-gapminder/_episodes/14-writing-functions.md:265 +#: python-novice-gapminder/_episodes/14-writing-functions.md:300 +#: python-novice-gapminder/_episodes/14-writing-functions.md:331 +#: python-novice-gapminder/_episodes/14-writing-functions.md:402 +#: python-novice-gapminder/_episodes/14-writing-functions.md:497 +#: python-novice-gapminder/_episodes/14-writing-functions.md:542 +#: python-novice-gapminder/_episodes/17-conditionals.md:273 +#: python-novice-gapminder/_episodes/17-conditionals.md:311 +#: python-novice-gapminder/_episodes/17-conditionals.md:338 +#: python-novice-gapminder/_episodes/17-conditionals.md:375 +#: python-novice-gapminder/_episodes/18-style.md:152 +#: python-novice-gapminder/_episodes/18-style.md:230 +# SC/DC Template label +msgid "> {: .solution}" +msgstr "" + +#: python-novice-gapminder/_episodes/01-run-quit.md:110 +#: python-novice-gapminder/_episodes/01-run-quit.md:273 +#: python-novice-gapminder/_episodes/01-run-quit.md:295 +#: python-novice-gapminder/_episodes/01-run-quit.md:325 +#: python-novice-gapminder/_episodes/01-run-quit.md:351 +#: python-novice-gapminder/_episodes/02-variables.md:233 +#: python-novice-gapminder/_episodes/02-variables.md:260 +#: python-novice-gapminder/_episodes/02-variables.md:281 +#: python-novice-gapminder/_episodes/02-variables.md:299 +#: python-novice-gapminder/_episodes/02-variables.md:321 +#: python-novice-gapminder/_episodes/03-types-conversion.md:228 +#: python-novice-gapminder/_episodes/03-types-conversion.md:249 +#: python-novice-gapminder/_episodes/03-types-conversion.md:275 +#: python-novice-gapminder/_episodes/03-types-conversion.md:329 +#: python-novice-gapminder/_episodes/03-types-conversion.md:400 +#: python-novice-gapminder/_episodes/03-types-conversion.md:425 +#: python-novice-gapminder/_episodes/03-types-conversion.md:448 +#: python-novice-gapminder/_episodes/04-built-in.md:244 +#: python-novice-gapminder/_episodes/04-built-in.md:291 +#: python-novice-gapminder/_episodes/04-built-in.md:303 +#: python-novice-gapminder/_episodes/04-built-in.md:316 +#: python-novice-gapminder/_episodes/06-libraries.md:153 +#: python-novice-gapminder/_episodes/06-libraries.md:210 +#: python-novice-gapminder/_episodes/06-libraries.md:242 +#: python-novice-gapminder/_episodes/06-libraries.md:260 +#: python-novice-gapminder/_episodes/06-libraries.md:299 +#: python-novice-gapminder/_episodes/06-libraries.md:331 +#: python-novice-gapminder/_episodes/06-libraries.md:361 +#: python-novice-gapminder/_episodes/06-libraries.md:382 +#: python-novice-gapminder/_episodes/07-reading-tabular.md:241 +#: python-novice-gapminder/_episodes/07-reading-tabular.md:336 +#: python-novice-gapminder/_episodes/07-reading-tabular.md:365 +#: python-novice-gapminder/_episodes/07-reading-tabular.md:389 +#: python-novice-gapminder/_episodes/08-data-frames.md:342 +#: python-novice-gapminder/_episodes/08-data-frames.md:356 +#: python-novice-gapminder/_episodes/08-data-frames.md:370 +#: python-novice-gapminder/_episodes/08-data-frames.md:395 +#: python-novice-gapminder/_episodes/08-data-frames.md:410 +#: python-novice-gapminder/_episodes/08-data-frames.md:451 +#: python-novice-gapminder/_episodes/08-data-frames.md:464 +#: python-novice-gapminder/_episodes/08-data-frames.md:472 +#: python-novice-gapminder/_episodes/08-data-frames.md:484 +#: python-novice-gapminder/_episodes/08-data-frames.md:512 +#: python-novice-gapminder/_episodes/08-data-frames.md:520 +#: python-novice-gapminder/_episodes/09-plotting.md:165 +#: python-novice-gapminder/_episodes/09-plotting.md:209 +#: python-novice-gapminder/_episodes/09-plotting.md:243 +#: python-novice-gapminder/_episodes/11-lists.md:234 +#: python-novice-gapminder/_episodes/11-lists.md:247 +#: python-novice-gapminder/_episodes/11-lists.md:271 +#: python-novice-gapminder/_episodes/11-lists.md:300 +#: python-novice-gapminder/_episodes/11-lists.md:329 +#: python-novice-gapminder/_episodes/11-lists.md:349 +#: python-novice-gapminder/_episodes/11-lists.md:387 +#: python-novice-gapminder/_episodes/11-lists.md:428 +#: python-novice-gapminder/_episodes/12-for-loops.md:187 +#: python-novice-gapminder/_episodes/12-for-loops.md:212 +#: python-novice-gapminder/_episodes/12-for-loops.md:237 +#: python-novice-gapminder/_episodes/12-for-loops.md:314 +#: python-novice-gapminder/_episodes/12-for-loops.md:344 +#: python-novice-gapminder/_episodes/12-for-loops.md:380 +#: python-novice-gapminder/_episodes/12-for-loops.md:401 +#: python-novice-gapminder/_episodes/13-looping-data-sets.md:123 +#: python-novice-gapminder/_episodes/13-looping-data-sets.md:155 +#: python-novice-gapminder/_episodes/13-looping-data-sets.md:178 +#: python-novice-gapminder/_episodes/14-writing-functions.md:173 +#: python-novice-gapminder/_episodes/14-writing-functions.md:199 +#: python-novice-gapminder/_episodes/14-writing-functions.md:239 +#: python-novice-gapminder/_episodes/14-writing-functions.md:266 +#: python-novice-gapminder/_episodes/14-writing-functions.md:301 +#: python-novice-gapminder/_episodes/14-writing-functions.md:332 +#: python-novice-gapminder/_episodes/14-writing-functions.md:403 +#: python-novice-gapminder/_episodes/14-writing-functions.md:543 +#: python-novice-gapminder/_episodes/15-scope.md:74 +#: python-novice-gapminder/_episodes/15-scope.md:109 +#: python-novice-gapminder/_episodes/17-conditionals.md:274 +#: python-novice-gapminder/_episodes/17-conditionals.md:312 +#: python-novice-gapminder/_episodes/17-conditionals.md:339 +#: python-novice-gapminder/_episodes/17-conditionals.md:376 +#: python-novice-gapminder/_episodes/18-style.md:125 +#: python-novice-gapminder/_episodes/18-style.md:153 +#: python-novice-gapminder/_episodes/18-style.md:231 +# SC/DC Template label +msgid "{: .challenge}" +msgstr "" + +#: python-novice-gapminder/_episodes/01-run-quit.md:112 +# header +msgid "## Use the keyboard and mouse to select and edit cells." +msgstr "" + +#: python-novice-gapminder/_episodes/01-run-quit.md:114 +# unordered list +msgid "* Pressing the \"return\" key turns the border green and engages edit mode," +msgstr "" + +#: python-novice-gapminder/_episodes/01-run-quit.md:115 +msgid " which allows you to type within the cell.\n" +"* Because we want to be able to write many lines of code in a single cell,\n" +" pressing the \"return\" key when in edit mode (green) moves the cursor to the next line in the cell just like in a text editor.\n" +"* We need some other way to tell the Notebook we want to run what's in the cell.\n" +"* Pressing the \"shift\" and the \"enter\" key together will execute the contents of the cell.\n" +"* Notice that the \"return\" and \"shift\" keys on the \n" +" right of the keyboard are right next to each other." +msgstr "" + +#: python-novice-gapminder/_episodes/01-run-quit.md:123 +# header +msgid "## The Notebook will turn Markdown into pretty-printed documentation." +msgstr "" + +#: python-novice-gapminder/_episodes/01-run-quit.md:125 +# unordered list +msgid "* Notebooks can also render [Markdown][markdown]." +msgstr "" + +#: python-novice-gapminder/_episodes/01-run-quit.md:126 +# unordered list +msgid " * A simple plain-text format for writing lists, links, " +msgstr "" + +#: python-novice-gapminder/_episodes/01-run-quit.md:127 +msgid " and other things that might go into a web page.\n" +" * Equivalently, a subset of HTML that looks like what you'd send in an old-fashioned email.\n" +"* Turn the current cell into a Markdown cell by entering \n" +" the command mode (esc/gray) and press the \"M\" key.\n" +"* `In [ ]:` will disappear to show it is no longer a code cell\n" +" and you will be able to write in Markdown.\n" +"* Turn the current cell into a Code cell\n" +" by entering the command mode (esc/gray) and press the \"Y\" key." +msgstr "" + +#: python-novice-gapminder/_episodes/01-run-quit.md:136 +# header +msgid "## Markdown does most of what HTML does." +msgstr "" + +#: python-novice-gapminder/_episodes/01-run-quit.md:138 +msgid "
\n" +"
\n" +"~~~\n" +"* Use asterisks\n" +"* to create\n" +"* bullet lists.\n" +"~~~\n" +"
\n" +"
\n" +"* Use asterisks\n" +"* to create\n" +"* bullet lists.\n" +"
\n" +"
" +msgstr "" + +#: python-novice-gapminder/_episodes/01-run-quit.md:153 +msgid "
\n" +"
\n" +"~~~\n" +"1. Use numbers\n" +"1. to create\n" +"1. numbered lists.\n" +"~~~\n" +"
\n" +"
\n" +"1. Use numbers\n" +"1. to create\n" +"1. numbered lists.\n" +"
\n" +"
" +msgstr "" + +#: python-novice-gapminder/_episodes/01-run-quit.md:168 +msgid "
\n" +"
\n" +"~~~\n" +"* You can use indents\n" +" * To create sublists \n" +" * of the same type\n" +"* Or sublists\n" +" 1. Of different\n" +" 1. types\n" +"~~~\n" +"
\n" +"
\n" +"* You can use indents\n" +" * To create sublists\n" +" * of the same type\n" +"* Or sublists\n" +" 1. Of different\n" +" 1. types\n" +"
\n" +"
" +msgstr "" + +#: python-novice-gapminder/_episodes/01-run-quit.md:189 +msgid "
\n" +"
\n" +"~~~\n" +"# A Level-1 Heading\n" +"~~~\n" +"
\n" +"
\n" +"# A Level-1 Heading\n" +"
\n" +"
" +msgstr "" + +#: python-novice-gapminder/_episodes/01-run-quit.md:200 +msgid "
\n" +"
\n" +"~~~\n" +"## A Level-2 Heading (etc.)\n" +"~~~\n" +"
\n" +"
\n" +"## A Level-2 Heading (etc.)\n" +"
\n" +"
" +msgstr "" + +#: python-novice-gapminder/_episodes/01-run-quit.md:211 +msgid "
\n" +"
\n" +"~~~\n" +"Line breaks\n" +"don't matter." +msgstr "" + +#: python-novice-gapminder/_episodes/01-run-quit.md:217 +msgid "But blank lines\n" +"create new paragraphs.\n" +"~~~\n" +"
\n" +"
\n" +"Line breaks\n" +"don't matter." +msgstr "" + +#: python-novice-gapminder/_episodes/01-run-quit.md:225 +msgid "But blank lines\n" +"create new paragraphs.\n" +"
\n" +"
" +msgstr "" + +#: python-novice-gapminder/_episodes/01-run-quit.md:230 +msgid "
\n" +"
\n" +"~~~\n" +"[Create links](http://software-carpentry.org) with `[...](...)`.\n" +"Or use [named links][data_carpentry]." +msgstr "" + +#: python-novice-gapminder/_episodes/01-run-quit.md:236 +msgid "[data_carpentry]: http://datacarpentry.org\n" +"~~~\n" +"
\n" +"
\n" +"[Create links](http://software-carpentry.org) with `[...](...)`.\n" +"Or use [named links][data_carpentry]." +msgstr "" + +#: python-novice-gapminder/_episodes/01-run-quit.md:243 +msgid "[data_carpentry]: http://datacarpentry.org\n" +"
\n" +"
" +msgstr "" + +#: python-novice-gapminder/_episodes/01-run-quit.md:247 +# blockquote, which can be cascaded +msgid "> ## Creating Lists in Markdown" +msgstr "" + +#: python-novice-gapminder/_episodes/01-run-quit.md:248 +msgid ">\n" +"> Create a nested list in a Markdown cell in a notebook that looks like this:\n" +">\n" +"> 1. Get funding.\n" +"> 2. Do work.\n" +"> * Design experiment.\n" +"> * Collect data.\n" +"> * Analyze.\n" +"> 3. Write up.\n" +"> 4. Publish.\n" +"> \n" +"> > ## Solution\n" +"> >\n" +"> > This challenge integrates both the numbered list and bullet list. \n" +"> > Note that the bullet list is indented 2 spaces so that it is inline with the items of the numbered list.\n" +"> > ~~~\n" +"> > 1. Get funding.\n" +"> > 2. Do work.\n" +"> > * Design experiment.\n" +"> > * Collect data.\n" +"> > * Analyze.\n" +"> > 3. Write up.\n" +"> > 4. Publish.\n" +"> > ~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/01-run-quit.md:275 +# blockquote, which can be cascaded +msgid "> ## More Math" +msgstr "" + +#: python-novice-gapminder/_episodes/01-run-quit.md:276 +msgid ">\n" +"> What is displayed when a Python cell in a notebook\n" +"> that contains several calculations is executed?\n" +"> For example, what happens when this cell is executed?\n" +">\n" +"> ~~~\n" +"> 7 * 3\n" +"> 2 + 1\n" +"> ~~~\n" +"> {: .language-python}\n" +"> \n" +"> > ## Solution\n" +"> >\n" +"> > Python returns the output of the last calculation.\n" +"> > ~~~\n" +"> > 3\n" +"> > ~~~\n" +"> > {: .language-python}" +msgstr "" + +#: python-novice-gapminder/_episodes/01-run-quit.md:297 +# blockquote, which can be cascaded +msgid "> ## Change an Existing Cell from Code to Markdown" +msgstr "" + +#: python-novice-gapminder/_episodes/01-run-quit.md:298 +msgid ">\n" +"> What happens if you write some Python in a code cell\n" +"> and then you switch it to a Markdown cell?\n" +"> For example,\n" +"> put the following in a code cell:\n" +">\n" +"> ~~~\n" +"> x = 6 * 7 + 12\n" +"> print(x)\n" +"> ~~~\n" +"> {: .language-python}\n" +">\n" +"> And then run it with shift+return to be sure that it works as a code cell.\n" +"> Now go back to the cell and use escape+M to switch the cell to Markdown\n" +"> and \"run\" it with shift+return.\n" +"> What happened and how might this be useful?\n" +"> \n" +"> > ## Solution\n" +"> >\n" +"> > The Python code gets treated like markdown text.\n" +"> > The lines appear as if they are part of one contiguous paragraph.\n" +"> > This could be useful to temporarily turn on and off cells in notebooks that get used for multiple purposes. \n" +"> > ~~~\n" +"> > x = 6 * 7 + 12 print(x)\n" +"> > ~~~\n" +"> > {: .language-python}" +msgstr "" + +#: python-novice-gapminder/_episodes/01-run-quit.md:327 +# blockquote, which can be cascaded +msgid "> ## Equations" +msgstr "" + +#: python-novice-gapminder/_episodes/01-run-quit.md:328 +msgid ">\n" +"> Standard Markdown (such as we're using for these notes) won't render equations,\n" +"> but the Notebook will.\n" +"> Create a new Markdown cell\n" +"> and enter the following:\n" +">\n" +"> ~~~\n" +"> $\\sum_{i=1}^{N} 2^{-i} \\approx 1$\n" +"> ~~~\n" +">\n" +"> (It's probably easier to copy and paste.)\n" +"> What does it display?\n" +"> What do you think the underscore, `_`, circumflex, `^`, and dollar sign, `$`, do?\n" +"> \n" +"> > ## Solution\n" +"> >\n" +"> > The notebook shows the equation as it would be rendered from latex equation syntax.\n" +"> > The dollar sign, `$`, is used to tell markdown that the text in between is a latex equation.\n" +"> > If you're not familiar with latex, underscore, `_`, is used for subscripts and circumflex, `^`, is used for superscripts.\n" +"> > A pair of curly braces, `{` and `}`, is used to group text together so that the statement `i=1` becomes the the subscript and `N` becomes the superscript.\n" +"> > Similarly, `-i` is in curly braces to make the whole statement the superscript for `2`.\n" +"> > `\\sum` and `\\approx` are latex commands for \"sum over\" and \"approximate\" symbols. " +msgstr "" + +#: python-novice-gapminder/_episodes/01-run-quit.md:353 +msgid "[anaconda]: https://docs.continuum.io/anaconda/install\n" +"[jupyter]: http://jupyter.org/\n" +"[markdown]: https://en.wikipedia.org/wiki/Markdown" +msgstr "" + +#: python-novice-gapminder/_episodes/02-variables.md:1 +# Front Matter +msgid "---\n" +"title: \"Variables and Assignment\"\n" +"teaching: 10\n" +"exercises: 10\n" +"questions:\n" +"- \"How can I store data in programs?\"\n" +"objectives:\n" +"- \"Write programs that assign scalar values to variables and perform calculations with those values.\"\n" +"- \"Correctly trace value changes in programs that use scalar assignment.\"\n" +"keypoints:\n" +"- \"Use variables to store values.\"\n" +"- \"Use `print` to display values.\"\n" +"- \"Variables persist between cells.\"\n" +"- \"Variables must be created before they are used.\"\n" +"- \"Variables can be used in calculations.\"\n" +"- \"Use an index to get a single character from a string.\"\n" +"- \"Use a slice to get a substring.\"\n" +"- \"Use the built-in function `len` to find the length of a string.\"\n" +"- \"Python is case-sensitive.\"\n" +"- \"Use meaningful variable names.\"\n" +"---" +msgstr "" + +#: python-novice-gapminder/_episodes/02-variables.md:22 +# header +msgid "## Use variables to store values." +msgstr "" + +#: python-novice-gapminder/_episodes/02-variables.md:24 +# unordered list +msgid "* Variables are names for values." +msgstr "" + +#: python-novice-gapminder/_episodes/02-variables.md:25 +# unordered list +msgid "* In Python the `=` symbol assigns the value on the right to the name on the left." +msgstr "" + +#: python-novice-gapminder/_episodes/02-variables.md:26 +# unordered list +msgid "* The variable is created when a value is assigned to it." +msgstr "" + +#: python-novice-gapminder/_episodes/02-variables.md:27 +# unordered list +msgid "* Here, Python assigns an age to a variable `age`" +msgstr "" + +#: python-novice-gapminder/_episodes/02-variables.md:28 +msgid " and a name in quotes to a variable `first_name`." +msgstr "" + +#: python-novice-gapminder/_episodes/02-variables.md:30 +# code block +msgid "~~~\n" +"age = 42\n" +"first_name = 'Ahmed'\n" +"~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/02-variables.md:34 +#: python-novice-gapminder/_episodes/02-variables.md:53 +#: python-novice-gapminder/_episodes/02-variables.md:71 +#: python-novice-gapminder/_episodes/02-variables.md:117 +#: python-novice-gapminder/_episodes/02-variables.md:138 +#: python-novice-gapminder/_episodes/02-variables.md:163 +#: python-novice-gapminder/_episodes/02-variables.md:174 +#: python-novice-gapminder/_episodes/02-variables.md:199 +#: python-novice-gapminder/_episodes/03-types-conversion.md:40 +#: python-novice-gapminder/_episodes/03-types-conversion.md:50 +#: python-novice-gapminder/_episodes/03-types-conversion.md:63 +#: python-novice-gapminder/_episodes/03-types-conversion.md:72 +#: python-novice-gapminder/_episodes/03-types-conversion.md:91 +#: python-novice-gapminder/_episodes/03-types-conversion.md:104 +#: python-novice-gapminder/_episodes/03-types-conversion.md:117 +#: python-novice-gapminder/_episodes/03-types-conversion.md:128 +#: python-novice-gapminder/_episodes/03-types-conversion.md:146 +#: python-novice-gapminder/_episodes/03-types-conversion.md:164 +#: python-novice-gapminder/_episodes/03-types-conversion.md:180 +#: python-novice-gapminder/_episodes/03-types-conversion.md:200 +#: python-novice-gapminder/_episodes/04-built-in.md:34 +#: python-novice-gapminder/_episodes/04-built-in.md:52 +#: python-novice-gapminder/_episodes/04-built-in.md:71 +#: python-novice-gapminder/_episodes/04-built-in.md:87 +#: python-novice-gapminder/_episodes/04-built-in.md:101 +#: python-novice-gapminder/_episodes/04-built-in.md:112 +#: python-novice-gapminder/_episodes/04-built-in.md:125 +#: python-novice-gapminder/_episodes/04-built-in.md:146 +#: python-novice-gapminder/_episodes/04-built-in.md:156 +#: python-novice-gapminder/_episodes/04-built-in.md:167 +#: python-novice-gapminder/_episodes/04-built-in.md:191 +#: python-novice-gapminder/_episodes/04-built-in.md:216 +#: python-novice-gapminder/_episodes/06-libraries.md:51 +#: python-novice-gapminder/_episodes/06-libraries.md:69 +#: python-novice-gapminder/_episodes/06-libraries.md:108 +#: python-novice-gapminder/_episodes/06-libraries.md:124 +#: python-novice-gapminder/_episodes/07-reading-tabular.md:36 +#: python-novice-gapminder/_episodes/07-reading-tabular.md:84 +#: python-novice-gapminder/_episodes/07-reading-tabular.md:108 +#: python-novice-gapminder/_episodes/07-reading-tabular.md:146 +#: python-novice-gapminder/_episodes/07-reading-tabular.md:164 +#: python-novice-gapminder/_episodes/07-reading-tabular.md:189 +#: python-novice-gapminder/_episodes/08-data-frames.md:51 +#: python-novice-gapminder/_episodes/08-data-frames.md:65 +#: python-novice-gapminder/_episodes/08-data-frames.md:77 +#: python-novice-gapminder/_episodes/08-data-frames.md:100 +#: python-novice-gapminder/_episodes/08-data-frames.md:122 +#: python-novice-gapminder/_episodes/08-data-frames.md:149 +#: python-novice-gapminder/_episodes/08-data-frames.md:161 +#: python-novice-gapminder/_episodes/08-data-frames.md:183 +#: python-novice-gapminder/_episodes/08-data-frames.md:213 +#: python-novice-gapminder/_episodes/08-data-frames.md:231 +#: python-novice-gapminder/_episodes/08-data-frames.md:263 +#: python-novice-gapminder/_episodes/08-data-frames.md:306 +#: python-novice-gapminder/_episodes/11-lists.md:36 +#: python-novice-gapminder/_episodes/11-lists.md:51 +#: python-novice-gapminder/_episodes/11-lists.md:66 +#: python-novice-gapminder/_episodes/11-lists.md:83 +#: python-novice-gapminder/_episodes/11-lists.md:107 +#: python-novice-gapminder/_episodes/11-lists.md:127 +#: python-novice-gapminder/_episodes/11-lists.md:148 +#: python-novice-gapminder/_episodes/11-lists.md:159 +#: python-novice-gapminder/_episodes/11-lists.md:177 +#: python-novice-gapminder/_episodes/11-lists.md:195 +#: python-novice-gapminder/_episodes/12-for-loops.md:34 +#: python-novice-gapminder/_episodes/12-for-loops.md:43 +#: python-novice-gapminder/_episodes/12-for-loops.md:64 +#: python-novice-gapminder/_episodes/12-for-loops.md:76 +#: python-novice-gapminder/_episodes/12-for-loops.md:94 +#: python-novice-gapminder/_episodes/12-for-loops.md:111 +#: python-novice-gapminder/_episodes/12-for-loops.md:125 +#: python-novice-gapminder/_episodes/12-for-loops.md:146 +#: python-novice-gapminder/_episodes/12-for-loops.md:168 +#: python-novice-gapminder/_episodes/13-looping-data-sets.md:28 +#: python-novice-gapminder/_episodes/13-looping-data-sets.md:67 +#: python-novice-gapminder/_episodes/13-looping-data-sets.md:78 +#: python-novice-gapminder/_episodes/13-looping-data-sets.md:94 +#: python-novice-gapminder/_episodes/14-writing-functions.md:43 +#: python-novice-gapminder/_episodes/14-writing-functions.md:54 +#: python-novice-gapminder/_episodes/14-writing-functions.md:76 +#: python-novice-gapminder/_episodes/14-writing-functions.md:87 +#: python-novice-gapminder/_episodes/14-writing-functions.md:111 +#: python-novice-gapminder/_episodes/14-writing-functions.md:117 +#: python-novice-gapminder/_episodes/14-writing-functions.md:126 +#: python-novice-gapminder/_episodes/14-writing-functions.md:139 +#: python-novice-gapminder/_episodes/15-scope.md:31 +#: python-novice-gapminder/_episodes/15-scope.md:46 +#: python-novice-gapminder/_episodes/17-conditionals.md:35 +#: python-novice-gapminder/_episodes/17-conditionals.md:52 +#: python-novice-gapminder/_episodes/17-conditionals.md:72 +#: python-novice-gapminder/_episodes/17-conditionals.md:99 +#: python-novice-gapminder/_episodes/17-conditionals.md:123 +#: python-novice-gapminder/_episodes/17-conditionals.md:139 +#: python-novice-gapminder/_episodes/17-conditionals.md:159 +#: python-novice-gapminder/_episodes/18-style.md:55 +#: python-novice-gapminder/_episodes/18-style.md:76 +# SC/DC Template label +msgid "{: .python}" +msgstr "" + +#: python-novice-gapminder/_episodes/02-variables.md:36 +# unordered list +msgid "* Variable names" +msgstr "" + +#: python-novice-gapminder/_episodes/02-variables.md:37 +# unordered list +msgid " * can **only** contain letters, digits, and underscore `_` (typically used to separate words in long variable names)" +msgstr "" + +#: python-novice-gapminder/_episodes/02-variables.md:38 +# unordered list +msgid " * cannot start with a digit" +msgstr "" + +#: python-novice-gapminder/_episodes/02-variables.md:39 +# unordered list +msgid "* Variable names that start with underscores like `__alistairs_real_age` have a special meaning" +msgstr "" + +#: python-novice-gapminder/_episodes/02-variables.md:40 +msgid " so we won't do that until we understand the convention." +msgstr "" + +#: python-novice-gapminder/_episodes/02-variables.md:42 +# header +msgid "## Use `print` to display values." +msgstr "" + +#: python-novice-gapminder/_episodes/02-variables.md:44 +# unordered list +msgid "* Python has a built-in function called `print` that prints things as text." +msgstr "" + +#: python-novice-gapminder/_episodes/02-variables.md:45 +# unordered list +msgid "* Call the function (i.e., tell Python to run it) by using its name." +msgstr "" + +#: python-novice-gapminder/_episodes/02-variables.md:46 +# unordered list +msgid "* Provide values to the function (i.e., the things to print) in parentheses." +msgstr "" + +#: python-novice-gapminder/_episodes/02-variables.md:47 +# unordered list +msgid "* To add a string to the printout, wrap the string in single or double quotes." +msgstr "" + +#: python-novice-gapminder/_episodes/02-variables.md:48 +# unordered list +msgid "* The values passed to the function are called 'arguments'" +msgstr "" + +#: python-novice-gapminder/_episodes/02-variables.md:50 +# code block +msgid "~~~\n" +"print(first_name, 'is', age, 'years old')\n" +"~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/02-variables.md:54 +# code block +msgid "~~~\n" +"Ahmed is 42 years old\n" +"~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/02-variables.md:57 +#: python-novice-gapminder/_episodes/02-variables.md:121 +#: python-novice-gapminder/_episodes/02-variables.md:142 +#: python-novice-gapminder/_episodes/02-variables.md:167 +#: python-novice-gapminder/_episodes/02-variables.md:178 +#: python-novice-gapminder/_episodes/03-types-conversion.md:44 +#: python-novice-gapminder/_episodes/03-types-conversion.md:54 +#: python-novice-gapminder/_episodes/03-types-conversion.md:67 +#: python-novice-gapminder/_episodes/03-types-conversion.md:95 +#: python-novice-gapminder/_episodes/03-types-conversion.md:108 +#: python-novice-gapminder/_episodes/03-types-conversion.md:121 +#: python-novice-gapminder/_episodes/03-types-conversion.md:169 +#: python-novice-gapminder/_episodes/03-types-conversion.md:185 +#: python-novice-gapminder/_episodes/03-types-conversion.md:204 +#: python-novice-gapminder/_episodes/04-built-in.md:58 +#: python-novice-gapminder/_episodes/04-built-in.md:76 +#: python-novice-gapminder/_episodes/04-built-in.md:105 +#: python-novice-gapminder/_episodes/04-built-in.md:116 +#: python-novice-gapminder/_episodes/04-built-in.md:136 +#: python-novice-gapminder/_episodes/04-built-in.md:221 +#: python-novice-gapminder/_episodes/06-libraries.md:56 +#: python-novice-gapminder/_episodes/06-libraries.md:96 +#: python-novice-gapminder/_episodes/06-libraries.md:112 +#: python-novice-gapminder/_episodes/06-libraries.md:128 +#: python-novice-gapminder/_episodes/07-reading-tabular.md:54 +#: python-novice-gapminder/_episodes/07-reading-tabular.md:101 +#: python-novice-gapminder/_episodes/07-reading-tabular.md:128 +#: python-novice-gapminder/_episodes/07-reading-tabular.md:153 +#: python-novice-gapminder/_episodes/07-reading-tabular.md:180 +#: python-novice-gapminder/_episodes/07-reading-tabular.md:221 +#: python-novice-gapminder/_episodes/08-data-frames.md:55 +#: python-novice-gapminder/_episodes/08-data-frames.md:69 +#: python-novice-gapminder/_episodes/08-data-frames.md:93 +#: python-novice-gapminder/_episodes/08-data-frames.md:112 +#: python-novice-gapminder/_episodes/08-data-frames.md:132 +#: python-novice-gapminder/_episodes/08-data-frames.md:156 +#: python-novice-gapminder/_episodes/08-data-frames.md:168 +#: python-novice-gapminder/_episodes/08-data-frames.md:203 +#: python-novice-gapminder/_episodes/08-data-frames.md:223 +#: python-novice-gapminder/_episodes/08-data-frames.md:243 +#: python-novice-gapminder/_episodes/08-data-frames.md:298 +#: python-novice-gapminder/_episodes/08-data-frames.md:326 +#: python-novice-gapminder/_episodes/11-lists.md:41 +#: python-novice-gapminder/_episodes/11-lists.md:56 +#: python-novice-gapminder/_episodes/11-lists.md:70 +#: python-novice-gapminder/_episodes/11-lists.md:88 +#: python-novice-gapminder/_episodes/11-lists.md:113 +#: python-novice-gapminder/_episodes/11-lists.md:132 +#: python-novice-gapminder/_episodes/11-lists.md:164 +#: python-novice-gapminder/_episodes/11-lists.md:199 +#: python-novice-gapminder/_episodes/12-for-loops.md:52 +#: python-novice-gapminder/_episodes/12-for-loops.md:131 +#: python-novice-gapminder/_episodes/12-for-loops.md:153 +#: python-novice-gapminder/_episodes/12-for-loops.md:172 +#: python-novice-gapminder/_episodes/13-looping-data-sets.md:49 +#: python-novice-gapminder/_episodes/13-looping-data-sets.md:73 +#: python-novice-gapminder/_episodes/13-looping-data-sets.md:82 +#: python-novice-gapminder/_episodes/13-looping-data-sets.md:103 +#: python-novice-gapminder/_episodes/14-writing-functions.md:58 +#: python-novice-gapminder/_episodes/14-writing-functions.md:80 +#: python-novice-gapminder/_episodes/14-writing-functions.md:91 +#: python-novice-gapminder/_episodes/14-writing-functions.md:121 +#: python-novice-gapminder/_episodes/14-writing-functions.md:130 +#: python-novice-gapminder/_episodes/14-writing-functions.md:144 +#: python-novice-gapminder/_episodes/15-scope.md:50 +#: python-novice-gapminder/_episodes/17-conditionals.md:39 +#: python-novice-gapminder/_episodes/17-conditionals.md:57 +#: python-novice-gapminder/_episodes/17-conditionals.md:80 +#: python-novice-gapminder/_episodes/17-conditionals.md:107 +#: python-novice-gapminder/_episodes/17-conditionals.md:127 +#: python-novice-gapminder/_episodes/17-conditionals.md:143 +#: python-novice-gapminder/_episodes/17-conditionals.md:173 +#: python-novice-gapminder/_episodes/18-style.md:83 +# SC/DC Template label +msgid "{: .output}" +msgstr "" + +#: python-novice-gapminder/_episodes/02-variables.md:59 +# unordered list +msgid "* `print` automatically puts a single space between items to separate them." +msgstr "" + +#: python-novice-gapminder/_episodes/02-variables.md:60 +# unordered list +msgid "* And wraps around to a new line at the end." +msgstr "" + +#: python-novice-gapminder/_episodes/02-variables.md:62 +# header +msgid "## Variables must be created before they are used." +msgstr "" + +#: python-novice-gapminder/_episodes/02-variables.md:64 +# unordered list +msgid "* If a variable doesn't exist yet, or if the name has been mis-spelled," +msgstr "" + +#: python-novice-gapminder/_episodes/02-variables.md:65 +msgid " Python reports an error.\n" +" * Unlike some languages, which \"guess\" a default value." +msgstr "" + +#: python-novice-gapminder/_episodes/02-variables.md:68 +# code block +msgid "~~~\n" +"print(last_name)\n" +"~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/02-variables.md:72 +# code block +msgid "~~~\n" +"---------------------------------------------------------------------------\n" +"NameError Traceback (most recent call last)\n" +" in ()\n" +"----> 1 print(last_name)\n" +"\n" +"NameError: name 'last_name' is not defined\n" +"~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/02-variables.md:80 +#: python-novice-gapminder/_episodes/03-types-conversion.md:81 +#: python-novice-gapminder/_episodes/03-types-conversion.md:137 +#: python-novice-gapminder/_episodes/03-types-conversion.md:155 +#: python-novice-gapminder/_episodes/04-built-in.md:91 +#: python-novice-gapminder/_episodes/04-built-in.md:150 +#: python-novice-gapminder/_episodes/04-built-in.md:160 +#: python-novice-gapminder/_episodes/04-built-in.md:174 +#: python-novice-gapminder/_episodes/04-built-in.md:195 +#: python-novice-gapminder/_episodes/11-lists.md:181 +#: python-novice-gapminder/_episodes/12-for-loops.md:68 +#: python-novice-gapminder/_episodes/12-for-loops.md:83 +#: python-novice-gapminder/_episodes/15-scope.md:57 +# SC/DC Template label +msgid "{: .error}" +msgstr "" + +#: python-novice-gapminder/_episodes/02-variables.md:82 +# unordered list +msgid "* The last line of an error message is usually the most informative." +msgstr "" + +#: python-novice-gapminder/_episodes/02-variables.md:83 +# unordered list +msgid "* We will look at error messages in detail [later]({{ page.root }}/15-scope/#reading-error-messages)." +msgstr "" + +#: python-novice-gapminder/_episodes/02-variables.md:85 +# blockquote, which can be cascaded +msgid "> ## Variables Persist Between Cells" +msgstr "" + +#: python-novice-gapminder/_episodes/02-variables.md:86 +msgid ">\n" +"> Be aware that it is the order of **execution** of cells that is important in a Jupyter notebook, not the order\n" +"> in which they appear. Python will remember **all** the code that was run previously, including any variables you have\n" +"> defined, irrespective of the order in the notebook. Therefore if you define variables lower down the notebook and then\n" +"> (re)run cells further up, those defined further down will still be present. As an example, create 2 cells with the\n" +"> following content, in this order:\n" +">\n" +"> ~~~\n" +"> print(myval)\n" +"> ~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/02-variables.md:96 +#: python-novice-gapminder/_episodes/02-variables.md:101 +#: python-novice-gapminder/_episodes/02-variables.md:217 +#: python-novice-gapminder/_episodes/02-variables.md:246 +#: python-novice-gapminder/_episodes/02-variables.md:309 +#: python-novice-gapminder/_episodes/03-types-conversion.md:287 +#: python-novice-gapminder/_episodes/03-types-conversion.md:340 +#: python-novice-gapminder/_episodes/03-types-conversion.md:353 +#: python-novice-gapminder/_episodes/03-types-conversion.md:374 +#: python-novice-gapminder/_episodes/03-types-conversion.md:412 +#: python-novice-gapminder/_episodes/04-built-in.md:234 +#: python-novice-gapminder/_episodes/04-built-in.md:260 +#: python-novice-gapminder/_episodes/06-libraries.md:162 +#: python-novice-gapminder/_episodes/06-libraries.md:227 +#: python-novice-gapminder/_episodes/06-libraries.md:273 +#: python-novice-gapminder/_episodes/06-libraries.md:344 +#: python-novice-gapminder/_episodes/06-libraries.md:372 +#: python-novice-gapminder/_episodes/08-data-frames.md:339 +#: python-novice-gapminder/_episodes/08-data-frames.md:368 +#: python-novice-gapminder/_episodes/08-data-frames.md:409 +#: python-novice-gapminder/_episodes/08-data-frames.md:463 +#: python-novice-gapminder/_episodes/11-lists.md:214 +#: python-novice-gapminder/_episodes/11-lists.md:257 +#: python-novice-gapminder/_episodes/11-lists.md:281 +#: python-novice-gapminder/_episodes/11-lists.md:311 +#: python-novice-gapminder/_episodes/11-lists.md:340 +#: python-novice-gapminder/_episodes/11-lists.md:362 +#: python-novice-gapminder/_episodes/11-lists.md:370 +#: python-novice-gapminder/_episodes/11-lists.md:401 +#: python-novice-gapminder/_episodes/11-lists.md:410 +#: python-novice-gapminder/_episodes/12-for-loops.md:199 +#: python-novice-gapminder/_episodes/12-for-loops.md:226 +#: python-novice-gapminder/_episodes/12-for-loops.md:251 +#: python-novice-gapminder/_episodes/12-for-loops.md:269 +#: python-novice-gapminder/_episodes/12-for-loops.md:288 +#: python-novice-gapminder/_episodes/12-for-loops.md:304 +#: python-novice-gapminder/_episodes/12-for-loops.md:331 +#: python-novice-gapminder/_episodes/12-for-loops.md:366 +#: python-novice-gapminder/_episodes/12-for-loops.md:393 +#: python-novice-gapminder/_episodes/13-looping-data-sets.md:139 +#: python-novice-gapminder/_episodes/14-writing-functions.md:161 +#: python-novice-gapminder/_episodes/14-writing-functions.md:185 +#: python-novice-gapminder/_episodes/14-writing-functions.md:210 +#: python-novice-gapminder/_episodes/14-writing-functions.md:229 +#: python-novice-gapminder/_episodes/14-writing-functions.md:254 +#: python-novice-gapminder/_episodes/14-writing-functions.md:264 +#: python-novice-gapminder/_episodes/14-writing-functions.md:280 +#: python-novice-gapminder/_episodes/14-writing-functions.md:316 +#: python-novice-gapminder/_episodes/14-writing-functions.md:321 +#: python-novice-gapminder/_episodes/14-writing-functions.md:360 +#: python-novice-gapminder/_episodes/14-writing-functions.md:377 +#: python-novice-gapminder/_episodes/14-writing-functions.md:415 +#: python-novice-gapminder/_episodes/14-writing-functions.md:425 +#: python-novice-gapminder/_episodes/14-writing-functions.md:437 +#: python-novice-gapminder/_episodes/15-scope.md:73 +#: python-novice-gapminder/_episodes/17-conditionals.md:231 +#: python-novice-gapminder/_episodes/17-conditionals.md:240 +#: python-novice-gapminder/_episodes/17-conditionals.md:248 +#: python-novice-gapminder/_episodes/17-conditionals.md:265 +#: python-novice-gapminder/_episodes/17-conditionals.md:292 +#: python-novice-gapminder/_episodes/17-conditionals.md:326 +#: python-novice-gapminder/_episodes/17-conditionals.md:357 +#: python-novice-gapminder/_episodes/17-conditionals.md:404 +#: python-novice-gapminder/_episodes/17-conditionals.md:420 +#: python-novice-gapminder/_episodes/18-style.md:97 +#: python-novice-gapminder/_episodes/18-style.md:124 +#: python-novice-gapminder/_episodes/18-style.md:140 +#: python-novice-gapminder/_episodes/18-style.md:182 +# SC/DC Template label +msgid "> {: .python}" +msgstr "" + +#: python-novice-gapminder/_episodes/02-variables.md:97 +msgid ">\n" +"> ~~~\n" +"> myval = 1\n" +"> ~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/02-variables.md:102 +msgid ">\n" +"> If you execute this in order, the first cell will give an error. However, if you run the first cell **after** the second\n" +"> cell it will print out ‘1’. To prevent confusion, it can be helpful to use the `Kernel` -> `Restart & Run All` option which\n" +"> clears the interpreter and runs everything from a clean slate going top to bottom." +msgstr "" + +#: python-novice-gapminder/_episodes/02-variables.md:108 +# header +msgid "## Variables can be used in calculations." +msgstr "" + +#: python-novice-gapminder/_episodes/02-variables.md:110 +# unordered list +msgid "* We can use variables in calculations just as if they were values." +msgstr "" + +#: python-novice-gapminder/_episodes/02-variables.md:111 +# unordered list +msgid " * Remember, we assigned 42 to `age` a few lines ago." +msgstr "" + +#: python-novice-gapminder/_episodes/02-variables.md:113 +# code block +msgid "~~~\n" +"age = age + 3\n" +"print('Age in three years:', age)\n" +"~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/02-variables.md:118 +# code block +msgid "~~~\n" +"Age in three years: 45\n" +"~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/02-variables.md:123 +# header +msgid "## Use an index to get a single character from a string." +msgstr "" + +#: python-novice-gapminder/_episodes/02-variables.md:125 +# unordered list +msgid "* The characters (individual letters, numbers, and so on) in a string are" +msgstr "" + +#: python-novice-gapminder/_episodes/02-variables.md:126 +msgid " ordered. For example, the string 'AB' is not the same as 'BA'. Because of\n" +" this ordering, we can treat the string as a list of characters.\n" +"* Each position in the string (first, second, etc.) is given a number. This\n" +" number is called an index or sometimes a subscript.\n" +"* Indices are numbered from 0.\n" +"* Use the position's index in square brackets to get the character at that\n" +" position." +msgstr "" + +#: python-novice-gapminder/_episodes/02-variables.md:134 +# code block +msgid "~~~\n" +"atom_name = 'helium'\n" +"print(atom_name[0])\n" +"~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/02-variables.md:139 +# code block +msgid "~~~\n" +"h\n" +"~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/02-variables.md:144 +# header +msgid "## Use a slice to get a substring." +msgstr "" + +#: python-novice-gapminder/_episodes/02-variables.md:146 +# unordered list +msgid "* A part of a string is called a substring. A substring can be as short as a" +msgstr "" + +#: python-novice-gapminder/_episodes/02-variables.md:147 +msgid " single character.\n" +"* An item in a list is called an element. Whenever we treat a string as if it\n" +" were a list, the string's elements are its individual characters.\n" +"* A slice is a part of a string (or, more generally, any list-like thing).\n" +"* We take a slice by using `[start:stop]`, where `start` is replaced with the\n" +" index of the first element we want and `stop` is replaced with the index of\n" +" the element just after the last element we want.\n" +"* Mathematically, you might say that a slice selects `[start:stop)`.\n" +"* The difference between stop and start is the slice's length.\n" +"* Taking a slice does not change the contents of the original string. Instead,\n" +" the slice is a copy of part of the original string." +msgstr "" + +#: python-novice-gapminder/_episodes/02-variables.md:159 +# code block +msgid "~~~\n" +"atom_name = 'sodium'\n" +"print(atom_name[0:3])\n" +"~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/02-variables.md:164 +# code block +msgid "~~~\n" +"sod\n" +"~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/02-variables.md:169 +# header +msgid "## Use the built-in function `len` to find the length of a string." +msgstr "" + +#: python-novice-gapminder/_episodes/02-variables.md:171 +# code block +msgid "~~~\n" +"print(len('helium'))\n" +"~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/02-variables.md:175 +# code block +msgid "~~~\n" +"6\n" +"~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/02-variables.md:180 +# unordered list +msgid "* Nested functions are evaluated from the inside out," +msgstr "" + +#: python-novice-gapminder/_episodes/02-variables.md:181 +msgid " just like in mathematics." +msgstr "" + +#: python-novice-gapminder/_episodes/02-variables.md:183 +# header +msgid "## Python is case-sensitive." +msgstr "" + +#: python-novice-gapminder/_episodes/02-variables.md:185 +# unordered list +msgid "* Python thinks that upper- and lower-case letters are different," +msgstr "" + +#: python-novice-gapminder/_episodes/02-variables.md:186 +msgid " so `Name` and `name` are different variables.\n" +"* There are conventions for using upper-case letters at the start of variable names so we will use lower-case letters for now." +msgstr "" + +#: python-novice-gapminder/_episodes/02-variables.md:189 +# header +msgid "## Use meaningful variable names." +msgstr "" + +#: python-novice-gapminder/_episodes/02-variables.md:191 +# unordered list +msgid "* Python doesn't care what you call variables as long as they obey the rules" +msgstr "" + +#: python-novice-gapminder/_episodes/02-variables.md:192 +msgid " (alphanumeric characters and the underscore)." +msgstr "" + +#: python-novice-gapminder/_episodes/02-variables.md:194 +# code block +msgid "~~~\n" +"flabadab = 42\n" +"ewr_422_yY = 'Ahmed'\n" +"print(ewr_422_yY, 'is', flabadab, 'years old')\n" +"~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/02-variables.md:201 +# unordered list +msgid "* Use meaningful variable names to help other people understand what the program does." +msgstr "" + +#: python-novice-gapminder/_episodes/02-variables.md:202 +# unordered list +msgid "* The most important \"other person\" is your future self." +msgstr "" + +#: python-novice-gapminder/_episodes/02-variables.md:204 +# blockquote, which can be cascaded +msgid "> ## Swapping Values" +msgstr "" + +#: python-novice-gapminder/_episodes/02-variables.md:205 +msgid ">\n" +"> Fill the table showing the values of the variables in this program\n" +"> **after** each statement is executed.\n" +">\n" +"> ~~~\n" +"> # Command # Value of x # Value of y # Value of swap #\n" +"> x = 1.0 # # # #\n" +"> y = 3.0 # # # #\n" +"> swap = x # # # #\n" +"> x = y # # # #\n" +"> y = swap # # # #\n" +"> ~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/02-variables.md:218 +#: python-novice-gapminder/_episodes/02-variables.md:247 +#: python-novice-gapminder/_episodes/03-types-conversion.md:376 +#: python-novice-gapminder/_episodes/04-built-in.md:235 +#: python-novice-gapminder/_episodes/04-built-in.md:261 +#: python-novice-gapminder/_episodes/07-reading-tabular.md:374 +#: python-novice-gapminder/_episodes/08-data-frames.md:372 +#: python-novice-gapminder/_episodes/12-for-loops.md:200 +#: python-novice-gapminder/_episodes/12-for-loops.md:227 +#: python-novice-gapminder/_episodes/12-for-loops.md:252 +#: python-novice-gapminder/_episodes/12-for-loops.md:270 +#: python-novice-gapminder/_episodes/12-for-loops.md:289 +#: python-novice-gapminder/_episodes/12-for-loops.md:305 +#: python-novice-gapminder/_episodes/12-for-loops.md:332 +#: python-novice-gapminder/_episodes/12-for-loops.md:367 +#: python-novice-gapminder/_episodes/12-for-loops.md:394 +#: python-novice-gapminder/_episodes/14-writing-functions.md:186 +#: python-novice-gapminder/_episodes/14-writing-functions.md:231 +#: python-novice-gapminder/_episodes/14-writing-functions.md:255 +#: python-novice-gapminder/_episodes/14-writing-functions.md:281 +#: python-novice-gapminder/_episodes/14-writing-functions.md:322 +#: python-novice-gapminder/_episodes/17-conditionals.md:298 +#: python-novice-gapminder/_episodes/17-conditionals.md:327 +#: python-novice-gapminder/_episodes/18-style.md:141 +# blockquote, which can be cascaded +msgid "> > ## Solution" +msgstr "" + +#: python-novice-gapminder/_episodes/02-variables.md:219 +#: python-novice-gapminder/_episodes/02-variables.md:248 +#: python-novice-gapminder/_episodes/02-variables.md:253 +#: python-novice-gapminder/_episodes/03-types-conversion.md:383 +#: python-novice-gapminder/_episodes/14-writing-functions.md:187 +#: python-novice-gapminder/_episodes/14-writing-functions.md:192 +#: python-novice-gapminder/_episodes/14-writing-functions.md:256 +#: python-novice-gapminder/_episodes/14-writing-functions.md:282 +#: python-novice-gapminder/_episodes/17-conditionals.md:299 +#: python-novice-gapminder/_episodes/17-conditionals.md:328 +#: python-novice-gapminder/_episodes/18-style.md:142 +# blockquote, which can be cascaded +msgid "> >" +msgstr "" + +#: python-novice-gapminder/_episodes/02-variables.md:220 +#: python-novice-gapminder/_episodes/02-variables.md:227 +#: python-novice-gapminder/_episodes/02-variables.md:249 +#: python-novice-gapminder/_episodes/02-variables.md:251 +#: python-novice-gapminder/_episodes/03-types-conversion.md:384 +#: python-novice-gapminder/_episodes/03-types-conversion.md:387 +#: python-novice-gapminder/_episodes/03-types-conversion.md:389 +#: python-novice-gapminder/_episodes/03-types-conversion.md:397 +#: python-novice-gapminder/_episodes/04-built-in.md:263 +#: python-novice-gapminder/_episodes/04-built-in.md:265 +#: python-novice-gapminder/_episodes/04-built-in.md:267 +#: python-novice-gapminder/_episodes/04-built-in.md:269 +#: python-novice-gapminder/_episodes/04-built-in.md:271 +#: python-novice-gapminder/_episodes/04-built-in.md:273 +#: python-novice-gapminder/_episodes/04-built-in.md:275 +#: python-novice-gapminder/_episodes/04-built-in.md:277 +#: python-novice-gapminder/_episodes/04-built-in.md:279 +#: python-novice-gapminder/_episodes/04-built-in.md:281 +#: python-novice-gapminder/_episodes/04-built-in.md:283 +#: python-novice-gapminder/_episodes/04-built-in.md:285 +#: python-novice-gapminder/_episodes/07-reading-tabular.md:376 +#: python-novice-gapminder/_episodes/07-reading-tabular.md:378 +#: python-novice-gapminder/_episodes/07-reading-tabular.md:381 +#: python-novice-gapminder/_episodes/07-reading-tabular.md:383 +#: python-novice-gapminder/_episodes/08-data-frames.md:374 +#: python-novice-gapminder/_episodes/08-data-frames.md:379 +#: python-novice-gapminder/_episodes/08-data-frames.md:382 +#: python-novice-gapminder/_episodes/08-data-frames.md:388 +#: python-novice-gapminder/_episodes/12-for-loops.md:228 +#: python-novice-gapminder/_episodes/12-for-loops.md:234 +#: python-novice-gapminder/_episodes/12-for-loops.md:253 +#: python-novice-gapminder/_episodes/12-for-loops.md:258 +#: python-novice-gapminder/_episodes/12-for-loops.md:271 +#: python-novice-gapminder/_episodes/12-for-loops.md:276 +#: python-novice-gapminder/_episodes/12-for-loops.md:290 +#: python-novice-gapminder/_episodes/12-for-loops.md:296 +#: python-novice-gapminder/_episodes/12-for-loops.md:306 +#: python-novice-gapminder/_episodes/12-for-loops.md:311 +#: python-novice-gapminder/_episodes/12-for-loops.md:333 +#: python-novice-gapminder/_episodes/12-for-loops.md:341 +#: python-novice-gapminder/_episodes/12-for-loops.md:368 +#: python-novice-gapminder/_episodes/12-for-loops.md:377 +#: python-novice-gapminder/_episodes/12-for-loops.md:395 +#: python-novice-gapminder/_episodes/12-for-loops.md:398 +#: python-novice-gapminder/_episodes/14-writing-functions.md:188 +#: python-novice-gapminder/_episodes/14-writing-functions.md:194 +#: python-novice-gapminder/_episodes/14-writing-functions.md:197 +#: python-novice-gapminder/_episodes/14-writing-functions.md:257 +#: python-novice-gapminder/_episodes/14-writing-functions.md:263 +#: python-novice-gapminder/_episodes/14-writing-functions.md:283 +#: python-novice-gapminder/_episodes/14-writing-functions.md:288 +#: python-novice-gapminder/_episodes/14-writing-functions.md:291 +#: python-novice-gapminder/_episodes/14-writing-functions.md:294 +#: python-novice-gapminder/_episodes/14-writing-functions.md:296 +#: python-novice-gapminder/_episodes/14-writing-functions.md:298 +#: python-novice-gapminder/_episodes/17-conditionals.md:300 +#: python-novice-gapminder/_episodes/17-conditionals.md:309 +#: python-novice-gapminder/_episodes/17-conditionals.md:329 +#: python-novice-gapminder/_episodes/17-conditionals.md:336 +#: python-novice-gapminder/_episodes/18-style.md:143 +#: python-novice-gapminder/_episodes/18-style.md:150 +# blockquote, which can be cascaded +msgid "> > ~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/02-variables.md:221 +# blockquote, which can be cascaded +msgid "> > # Command # Value of x # Value of y # Value of swap #" +msgstr "" + +#: python-novice-gapminder/_episodes/02-variables.md:222 +# blockquote, which can be cascaded +msgid "> > x = 1.0 # 1.0 # not defined # not defined #" +msgstr "" + +#: python-novice-gapminder/_episodes/02-variables.md:223 +# blockquote, which can be cascaded +msgid "> > y = 3.0 # 1.0 # 3.0 # not defined #" +msgstr "" + +#: python-novice-gapminder/_episodes/02-variables.md:224 +# blockquote, which can be cascaded +msgid "> > swap = x # 1.0 # 3.0 # 1.0 #" +msgstr "" + +#: python-novice-gapminder/_episodes/02-variables.md:225 +# blockquote, which can be cascaded +msgid "> > x = y # 3.0 # 3.0 # 1.0 #" +msgstr "" + +#: python-novice-gapminder/_episodes/02-variables.md:226 +# blockquote, which can be cascaded +msgid "> > y = swap # 3.0 # 1.0 # 1.0 #" +msgstr "" + +#: python-novice-gapminder/_episodes/02-variables.md:228 +#: python-novice-gapminder/_episodes/02-variables.md:252 +#: python-novice-gapminder/_episodes/03-types-conversion.md:398 +#: python-novice-gapminder/_episodes/04-built-in.md:270 +#: python-novice-gapminder/_episodes/04-built-in.md:278 +#: python-novice-gapminder/_episodes/04-built-in.md:286 +#: python-novice-gapminder/_episodes/14-writing-functions.md:191 +#: python-novice-gapminder/_episodes/14-writing-functions.md:299 +# blockquote, which can be cascaded +msgid "> > {: .output}" +msgstr "" + +#: python-novice-gapminder/_episodes/02-variables.md:229 +#: python-novice-gapminder/_episodes/03-types-conversion.md:380 +#: python-novice-gapminder/_episodes/04-built-in.md:287 +#: python-novice-gapminder/_episodes/07-reading-tabular.md:387 +#: python-novice-gapminder/_episodes/12-for-loops.md:201 +#: python-novice-gapminder/_episodes/14-writing-functions.md:232 +#: python-novice-gapminder/_episodes/14-writing-functions.md:259 +#: python-novice-gapminder/_episodes/14-writing-functions.md:323 +# blockquote, which can be cascaded +msgid "> > " +msgstr "" + +#: python-novice-gapminder/_episodes/02-variables.md:230 +# blockquote, which can be cascaded +msgid "> > These three lines exchange the values in `x` and `y` using the `swap`" +msgstr "" + +#: python-novice-gapminder/_episodes/02-variables.md:231 +# blockquote, which can be cascaded +msgid "> > variable for temporary storage. This is a fairly common programming idiom." +msgstr "" + +#: python-novice-gapminder/_episodes/02-variables.md:232 +#: python-novice-gapminder/_episodes/02-variables.md:259 +# SC/DC Template label +msgid ">{: .solution}" +msgstr "" + +#: python-novice-gapminder/_episodes/02-variables.md:235 +# blockquote, which can be cascaded +msgid "> ## Predicting Values" +msgstr "" + +#: python-novice-gapminder/_episodes/02-variables.md:236 +msgid ">\n" +"> What is the final value of `position` in the program below?\n" +"> (Try to predict the value without running the program,\n" +"> then check your prediction.)\n" +">\n" +"> ~~~\n" +"> initial = 'left'\n" +"> position = initial\n" +"> initial = 'right'\n" +"> ~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/02-variables.md:250 +# blockquote, which can be cascaded +msgid "> > 'left'" +msgstr "" + +#: python-novice-gapminder/_episodes/02-variables.md:254 +msgid ">> The `initial` variable is assigned the value 'left'.\n" +"> > In the second line, the `position` variable also receives\n" +">> the string value 'left'. In third line, the `initial` variable is given the\n" +">> value 'right', but the `position` variable retains its string value\n" +">> of 'left'." +msgstr "" + +#: python-novice-gapminder/_episodes/02-variables.md:262 +# blockquote, which can be cascaded +msgid "> ## Challenge" +msgstr "" + +#: python-novice-gapminder/_episodes/02-variables.md:263 +msgid ">\n" +"> If you assign `a = 123`,\n" +"> what happens if you try to get the second digit of `a` via `a[1]`?\n" +">\n" +"> > ## Solution\n" +"> > Numbers are not stored in the written representation,\n" +"> > so they can't be treated like strings.\n" +"> >\n" +"> > ~~~\n" +"> > a = 123\n" +"> > print(a[1])\n" +"> > ~~~\n" +"> > {: .python}\n" +"> > ~~~\n" +"> > TypeError: 'int' object is not subscriptable\n" +"> > ~~~\n" +"> > {: .error}" +msgstr "" + +#: python-novice-gapminder/_episodes/02-variables.md:283 +# blockquote, which can be cascaded +msgid "> ## Choosing a Name" +msgstr "" + +#: python-novice-gapminder/_episodes/02-variables.md:284 +msgid ">\n" +"> Which is a better variable name, `m`, `min`, or `minutes`?\n" +"> Why?\n" +"> Hint: think about which code you would rather inherit\n" +"> from someone who is leaving the lab:\n" +">\n" +"> 1. `ts = m * 60 + s`\n" +"> 2. `tot_sec = min * 60 + sec`\n" +"> 3. `total_seconds = minutes * 60 + seconds`\n" +">\n" +"> > ## Solution\n" +"> >\n" +"> > `minutes` is better because `min` might mean something like \"minimum\"\n" +"> > (and actually does in Python, but we haven't seen that yet)." +msgstr "" + +#: python-novice-gapminder/_episodes/02-variables.md:301 +# blockquote, which can be cascaded +msgid "> ## Slicing" +msgstr "" + +#: python-novice-gapminder/_episodes/02-variables.md:302 +msgid ">\n" +"> What does the following program print?\n" +">\n" +"> ~~~\n" +"> atom_name = 'carbon'\n" +"> print('atom_name[1:3] is:', atom_name[1:3])\n" +"> ~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/02-variables.md:310 +#: python-novice-gapminder/_episodes/02-variables.md:312 +#: python-novice-gapminder/_episodes/09-plotting.md:252 +#: python-novice-gapminder/_episodes/09-plotting.md:254 +#: python-novice-gapminder/_episodes/11-lists.md:258 +#: python-novice-gapminder/_episodes/11-lists.md:261 +# blockquote, which can be cascaded +msgid "> ~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/02-variables.md:311 +# blockquote, which can be cascaded +msgid "> atom_name[1:3] is: ar" +msgstr "" + +#: python-novice-gapminder/_episodes/02-variables.md:313 +#: python-novice-gapminder/_episodes/03-types-conversion.md:294 +#: python-novice-gapminder/_episodes/03-types-conversion.md:346 +#: python-novice-gapminder/_episodes/07-reading-tabular.md:352 +#: python-novice-gapminder/_episodes/11-lists.md:220 +#: python-novice-gapminder/_episodes/11-lists.md:262 +#: python-novice-gapminder/_episodes/14-writing-functions.md:217 +#: python-novice-gapminder/_episodes/17-conditionals.md:297 +#: python-novice-gapminder/_episodes/17-conditionals.md:409 +# SC/DC Template label +msgid "> {: .output}" +msgstr "" + +#: python-novice-gapminder/_episodes/02-variables.md:314 +msgid ">\n" +"> 1. What does `thing[low:high]` do?\n" +"> 2. What does `thing[low:]` (without a value after the colon) do?\n" +"> 3. What does `thing[:high]` (without a value before the colon) do?\n" +"> 4. What does `thing[:]` (just a colon) do?\n" +"> 5. What does `thing[number:negative-number]` do?\n" +"> 6. What happens when you choose a `high` value which is out of range? (i.e., try `atom_name[0:15]`) " +msgstr "" + +#: python-novice-gapminder/_episodes/03-types-conversion.md:1 +# Front Matter +msgid "---\n" +"title: \"Data Types and Type Conversion\"\n" +"teaching: 10\n" +"exercises: 10\n" +"questions:\n" +"- \"What kinds of data do programs store?\"\n" +"- \"How can I convert one type to another?\"\n" +"objectives:\n" +"- \"Explain key differences between integers and floating point numbers.\"\n" +"- \"Explain key differences between numbers and character strings.\"\n" +"- \"Use built-in functions to convert between integers, floating point numbers, and strings.\"\n" +"keypoints:\n" +"- \"Every value has a type.\"\n" +"- \"Use the built-in function `type` to find the type of a value.\"\n" +"- \"Types control what operations can be done on values.\"\n" +"- \"Strings can be added and multiplied.\"\n" +"- \"Strings have a length (but numbers don't).\"\n" +"- \"Must convert numbers to strings or vice versa when operating on them.\"\n" +"- \"Can mix integers and floats freely in operations.\"\n" +"- \"Variables only change value when something is assigned to them.\"\n" +"---" +msgstr "" + +#: python-novice-gapminder/_episodes/03-types-conversion.md:22 +# header +msgid "## Every value has a type." +msgstr "" + +#: python-novice-gapminder/_episodes/03-types-conversion.md:24 +# unordered list +msgid "* Every value in a program has a specific type." +msgstr "" + +#: python-novice-gapminder/_episodes/03-types-conversion.md:25 +# unordered list +msgid "* Integer (`int`): represents positive or negative whole numbers like 3 or -512." +msgstr "" + +#: python-novice-gapminder/_episodes/03-types-conversion.md:26 +# unordered list +msgid "* Floating point number (`float`): represents real numbers like 3.14159 or -2.5." +msgstr "" + +#: python-novice-gapminder/_episodes/03-types-conversion.md:27 +# unordered list +msgid "* Character string (usually called \"string\", `str`): text." +msgstr "" + +#: python-novice-gapminder/_episodes/03-types-conversion.md:28 +# unordered list +msgid " * Written in either single quotes or double quotes (as long as they match)." +msgstr "" + +#: python-novice-gapminder/_episodes/03-types-conversion.md:29 +# unordered list +msgid " * The quote marks aren't printed when the string is displayed." +msgstr "" + +#: python-novice-gapminder/_episodes/03-types-conversion.md:31 +# header +msgid "## Use the built-in function `type` to find the type of a value." +msgstr "" + +#: python-novice-gapminder/_episodes/03-types-conversion.md:33 +# unordered list +msgid "* Use the built-in function `type` to find out what type a value has." +msgstr "" + +#: python-novice-gapminder/_episodes/03-types-conversion.md:34 +# unordered list +msgid "* Works on variables as well." +msgstr "" + +#: python-novice-gapminder/_episodes/03-types-conversion.md:35 +# unordered list +msgid " * But remember: the *value* has the type --- the *variable* is just a label." +msgstr "" + +#: python-novice-gapminder/_episodes/03-types-conversion.md:37 +# code block +msgid "~~~\n" +"print(type(52))\n" +"~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/03-types-conversion.md:41 +# code block +msgid "~~~\n" +"\n" +"~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/03-types-conversion.md:46 +# code block +msgid "~~~\n" +"fitness = 'average'\n" +"print(type(fitness))\n" +"~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/03-types-conversion.md:51 +# code block +msgid "~~~\n" +"\n" +"~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/03-types-conversion.md:56 +# header +msgid "## Types control what operations (or methods) can be performed on a given value." +msgstr "" + +#: python-novice-gapminder/_episodes/03-types-conversion.md:58 +# unordered list +msgid "* A value's type determines what the program can do to it." +msgstr "" + +#: python-novice-gapminder/_episodes/03-types-conversion.md:60 +# code block +msgid "~~~\n" +"print(5 - 3)\n" +"~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/03-types-conversion.md:64 +# code block +msgid "~~~\n" +"2\n" +"~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/03-types-conversion.md:69 +# code block +msgid "~~~\n" +"print('hello' - 'h')\n" +"~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/03-types-conversion.md:73 +# code block +msgid "~~~\n" +"---------------------------------------------------------------------------\n" +"TypeError Traceback (most recent call last)\n" +" in ()\n" +"----> 1 print('hello' - 'h')\n" +"\n" +"TypeError: unsupported operand type(s) for -: 'str' and 'str'\n" +"~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/03-types-conversion.md:83 +# header +msgid "## You can use the \"+\" and \"*\" operators on strings." +msgstr "" + +#: python-novice-gapminder/_episodes/03-types-conversion.md:85 +# unordered list +msgid "* \"Adding\" character strings concatenates them." +msgstr "" + +#: python-novice-gapminder/_episodes/03-types-conversion.md:87 +# code block +msgid "~~~\n" +"full_name = 'Ahmed' + ' ' + 'Walsh'\n" +"print(full_name)\n" +"~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/03-types-conversion.md:92 +# code block +msgid "~~~\n" +"Ahmed Walsh\n" +"~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/03-types-conversion.md:97 +# unordered list +msgid "* Multiplying a character string by an integer _N_ creates a new string that consists of that character string repeated _N_ times." +msgstr "" + +#: python-novice-gapminder/_episodes/03-types-conversion.md:98 +# unordered list +msgid " * Since multiplication is repeated addition." +msgstr "" + +#: python-novice-gapminder/_episodes/03-types-conversion.md:100 +# code block +msgid "~~~\n" +"separator = '=' * 10\n" +"print(separator)\n" +"~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/03-types-conversion.md:105 +# code block +msgid "~~~\n" +"==========\n" +"~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/03-types-conversion.md:110 +# header +msgid "## Strings have a length (but numbers don't)." +msgstr "" + +#: python-novice-gapminder/_episodes/03-types-conversion.md:112 +# unordered list +msgid "* The built-in function `len` counts the number of characters in a string." +msgstr "" + +#: python-novice-gapminder/_episodes/03-types-conversion.md:114 +# code block +msgid "~~~\n" +"print(len(full_name))\n" +"~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/03-types-conversion.md:118 +# code block +msgid "~~~\n" +"11\n" +"~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/03-types-conversion.md:123 +# unordered list +msgid "* But numbers don't have a length (not even zero)." +msgstr "" + +#: python-novice-gapminder/_episodes/03-types-conversion.md:125 +# code block +msgid "~~~\n" +"print(len(52))\n" +"~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/03-types-conversion.md:129 +# code block +msgid "~~~\n" +"---------------------------------------------------------------------------\n" +"TypeError Traceback (most recent call last)\n" +" in ()\n" +"----> 1 print(len(52))\n" +"\n" +"TypeError: object of type 'int' has no len()\n" +"~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/03-types-conversion.md:139 +# header +msgid "## Must convert numbers to strings or vice versa when operating on them." +msgstr "" + +#: python-novice-gapminder/_episodes/03-types-conversion.md:141 +# unordered list +msgid "* Cannot add numbers and strings." +msgstr "" + +#: python-novice-gapminder/_episodes/03-types-conversion.md:143 +# code block +msgid "~~~\n" +"print(1 + '2')\n" +"~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/03-types-conversion.md:147 +# code block +msgid "~~~\n" +"---------------------------------------------------------------------------\n" +"TypeError Traceback (most recent call last)\n" +" in ()\n" +"----> 1 print(1 + '2')\n" +"\n" +"TypeError: unsupported operand type(s) for +: 'int' and 'str'\n" +"~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/03-types-conversion.md:157 +# unordered list +msgid "* Not allowed because it's ambiguous: should `1 + '2'` be `3` or `'12'`?" +msgstr "" + +#: python-novice-gapminder/_episodes/03-types-conversion.md:158 +# unordered list +msgid "* Some types can be converted to other types by using the type name as a function." +msgstr "" + +#: python-novice-gapminder/_episodes/03-types-conversion.md:160 +# code block +msgid "~~~\n" +"print(1 + int('2'))\n" +"print(str(1) + '2')\n" +"~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/03-types-conversion.md:165 +# code block +msgid "~~~\n" +"3\n" +"12\n" +"~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/03-types-conversion.md:171 +# header +msgid "## Can mix integers and floats freely in operations." +msgstr "" + +#: python-novice-gapminder/_episodes/03-types-conversion.md:173 +# unordered list +msgid "* Integers and floating-point numbers can be mixed in arithmetic." +msgstr "" + +#: python-novice-gapminder/_episodes/03-types-conversion.md:174 +# unordered list +msgid " * Python 3 automatically converts integers to floats as needed. (Integer division in Python 2 will return an integer, the *floor* of the division.)" +msgstr "" + +#: python-novice-gapminder/_episodes/03-types-conversion.md:176 +# code block +msgid "~~~\n" +"print('half is', 1 / 2.0)\n" +"print('three squared is', 3.0 ** 2)\n" +"~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/03-types-conversion.md:181 +# code block +msgid "~~~\n" +"half is 0.5\n" +"three squared is 9.0\n" +"~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/03-types-conversion.md:187 +# header +msgid "## Variables only change value when something is assigned to them." +msgstr "" + +#: python-novice-gapminder/_episodes/03-types-conversion.md:189 +# unordered list +msgid "* If we make one cell in a spreadsheet depend on another," +msgstr "" + +#: python-novice-gapminder/_episodes/03-types-conversion.md:190 +msgid " and update the latter,\n" +" the former updates automatically.\n" +"* This does **not** happen in programming languages." +msgstr "" + +#: python-novice-gapminder/_episodes/03-types-conversion.md:194 +# code block +msgid "~~~\n" +"first = 1\n" +"second = 5 * first\n" +"first = 2\n" +"print('first is', first, 'and second is', second)\n" +"~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/03-types-conversion.md:201 +# code block +msgid "~~~\n" +"first is 2 and second is 5\n" +"~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/03-types-conversion.md:206 +# unordered list +msgid "* The computer reads the value of `first` when doing the multiplication," +msgstr "" + +#: python-novice-gapminder/_episodes/03-types-conversion.md:207 +msgid " creates a new value, and assigns it to `second`.\n" +"* After that, `second` does not remember where it came from." +msgstr "" + +#: python-novice-gapminder/_episodes/03-types-conversion.md:210 +# blockquote, which can be cascaded +msgid "> ## Fractions" +msgstr "" + +#: python-novice-gapminder/_episodes/03-types-conversion.md:211 +msgid ">\n" +"> What type of value is 3.4?\n" +"> How can you find out?\n" +">\n" +"> > ## Solution\n" +"> >\n" +"> > It is a floating-point number (often abbreviated \"float\").\n" +"> >\n" +"> > ~~~\n" +"> > print(type(3.4))\n" +"> > ~~~\n" +"> > {: .python}\n" +"> > ~~~\n" +"> > \n" +"> > ~~~\n" +"> > {: .output}" +msgstr "" + +#: python-novice-gapminder/_episodes/03-types-conversion.md:230 +# blockquote, which can be cascaded +msgid "> ## Automatic Type Conversion" +msgstr "" + +#: python-novice-gapminder/_episodes/03-types-conversion.md:231 +msgid ">\n" +"> What type of value is 3.25 + 4?\n" +">\n" +"> > ## Solution\n" +"> >\n" +"> > It is a float:\n" +"> > integers are automatically converted to floats as necessary.\n" +"> >\n" +"> > ~~~\n" +"> > result = 3.25 + 4\n" +"> > print(result, 'is', type(result))\n" +"> > ~~~\n" +"> > {: .python}\n" +"> > ~~~\n" +"> > 7.25 is \n" +"> > ~~~\n" +"> > {: .output}" +msgstr "" + +#: python-novice-gapminder/_episodes/03-types-conversion.md:251 +# blockquote, which can be cascaded +msgid "> ## Choose a Type" +msgstr "" + +#: python-novice-gapminder/_episodes/03-types-conversion.md:252 +msgid ">\n" +"> What type of value (integer, floating point number, or character string)\n" +"> would you use to represent each of the following? Try to come up with more than one good answer for each problem. For example, in # 1, when would counting days with a floating point variable make more sense than using an integer? \n" +">\n" +"> 1. Number of days since the start of the year.\n" +"> 2. Time elapsed from the start of the year until now in days.\n" +"> 3. Serial number of a piece of lab equipment.\n" +"> 4. A lab specimen's age\n" +"> 5. Current population of a city.\n" +"> 6. Average population of a city over time.\n" +">\n" +"> > ## Solution\n" +"> >\n" +"> > The answers to the questions are:\n" +"> > 1. Integer, since the number of days would lie between 1 and 365. \n" +"> > 2. Floating point, since fractional days are required\n" +"> > 3. Character string if serial number contains letters and numbers, otherwise integer if the serial number consists only of numerals\n" +"> > 4. This will vary! How do you define a specimen's age? whole days since collection (integer)? date and time (string)?\n" +"> > 5. Choose floating point to represent population as large aggreates (eg millions), or integer to represent population in units of individuals.\n" +"> > 6. Floating point number, since an average is likely to have a fractional part.\n" +"> >\n" +"> > {: .output}" +msgstr "" + +#: python-novice-gapminder/_episodes/03-types-conversion.md:277 +# blockquote, which can be cascaded +msgid "> ## Division Types" +msgstr "" + +#: python-novice-gapminder/_episodes/03-types-conversion.md:278 +msgid ">\n" +"> In Python 3, the `//` operator performs integer (whole-number) floor division, the `/` operator performs floating-point\n" +"> division, and the '%' (or *modulo*) operator calculates and returns the remainder from integer division:\n" +">\n" +"> ~~~\n" +"> print('5 // 3:', 5//3)\n" +"> print('5 / 3:', 5/3)\n" +"> print('5 % 3:', 5%3)\n" +"> ~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/03-types-conversion.md:288 +msgid ">\n" +"> ~~~\n" +"> 5 // 3: 1\n" +"> 5 / 3: 1.6666666666666667\n" +"> 5 % 3: 2\n" +"> ~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/03-types-conversion.md:295 +msgid ">\n" +"> However in Python2 (and other languages), the `/` operator between two integer types perform a floor (`//`) division. To perform a float division, we have to convert one of the integers to float.\n" +">\n" +"> ~~~\n" +"> print('5 // 3:', 1)\n" +"> print('5 / 3:', 1 )\n" +"> print('5 / float(3):', 1.6666667 )\n" +"> print('float(5) / 3:', 1.6666667 )\n" +"> print('float(5 / 3):', 1.0 )\n" +"> print('5 % 3:', 2)\n" +"> ~~~\n" +">\n" +"> If `num_subjects` is the number of subjects taking part in a study,\n" +"> and `num_per_survey` is the number that can take part in a single survey,\n" +"> write an expression that calculates the number of surveys needed\n" +"> to reach everyone once.\n" +">\n" +"> > ## Solution\n" +"> > We want the minimum number of surveys that reaches everyone once, which is\n" +"> > the rounded up value of `num_subjects / num_per_survey`. This is \n" +"> > equivalent to performing an integer division with `//` and adding 1.\n" +"> > ~~~\n" +"> > num_subjects = 600\n" +"> > num_per_survey = 42\n" +"> > num_surveys = num_subjects // num_per_survey + 1\n" +"> >\n" +"> > print(num_subjects, 'subjects,', num_per_survey, 'per survey:', num_surveys)\n" +"> > ~~~\n" +"> > {: .python}\n" +"> > ~~~\n" +"> > 600 subjects, 42 per survey: 15\n" +"> > ~~~\n" +"> > {: .output}" +msgstr "" + +#: python-novice-gapminder/_episodes/03-types-conversion.md:331 +# blockquote, which can be cascaded +msgid "> ## Strings to Numbers" +msgstr "" + +#: python-novice-gapminder/_episodes/03-types-conversion.md:332 +msgid ">\n" +"> Where reasonable, `float()` will convert a string to a floating point number,\n" +"> and `int()` will convert a floating point number to an integer:\n" +">\n" +"> ~~~\n" +"> print(\"string to float:\", float(\"3.4\"))\n" +"> print(\"float to int:\", int(3.4))\n" +"> ~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/03-types-conversion.md:341 +msgid ">\n" +"> ~~~\n" +"> string to float: 3.4\n" +"> float to int: 3\n" +"> ~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/03-types-conversion.md:347 +msgid ">\n" +"> If the conversion doesn't make sense, however, an error message will occur\n" +">\n" +"> ~~~\n" +"> print(\"string to float:\", float(\"Hello world!\"))\n" +"> ~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/03-types-conversion.md:354 +msgid ">\n" +"> ~~~\n" +"> ---------------------------------------------------------------------------\n" +"> ValueError Traceback (most recent call last)\n" +"> in ()\n" +"> ----> 1 print(\"string to float:\", float(\"Hello world!\"))\n" +">\n" +"> ValueError: could not convert string to float: 'Hello world!'\n" +"> ~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/03-types-conversion.md:363 +#: python-novice-gapminder/_episodes/06-libraries.md:252 +#: python-novice-gapminder/_episodes/07-reading-tabular.md:71 +#: python-novice-gapminder/_episodes/15-scope.md:108 +# SC/DC Template label +msgid "> {: .error}" +msgstr "" + +#: python-novice-gapminder/_episodes/03-types-conversion.md:364 +msgid ">\n" +"> Given this information, what do you expect the following program to do?\n" +">\n" +"> What does it actually do?\n" +">\n" +"> Why do you think it does that?\n" +">\n" +"> ~~~\n" +"> print(\"fractional string to int:\", int(\"3.4\"))\n" +"> ~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/03-types-conversion.md:375 +#: python-novice-gapminder/_episodes/07-reading-tabular.md:368 +#: python-novice-gapminder/_episodes/08-data-frames.md:369 +#: python-novice-gapminder/_episodes/08-data-frames.md:371 +#: python-novice-gapminder/_episodes/09-plotting.md:246 +#: python-novice-gapminder/_episodes/09-plotting.md:256 +#: python-novice-gapminder/_episodes/14-writing-functions.md:230 +# blockquote, which can be cascaded +msgid "> " +msgstr "" + +#: python-novice-gapminder/_episodes/03-types-conversion.md:377 +# blockquote, which can be cascaded +msgid "> > What do you expect this program to do? It would not be so unreasonable to expect the Python 3 `int` command to" +msgstr "" + +#: python-novice-gapminder/_episodes/03-types-conversion.md:378 +# blockquote, which can be cascaded +msgid "> > convert the string \"3.4\" to 3.4 and an additional type conversion to 3. After all, Python 3 performs a lot of other" +msgstr "" + +#: python-novice-gapminder/_episodes/03-types-conversion.md:379 +# blockquote, which can be cascaded +msgid "> > magic - isn't that part of its charm?" +msgstr "" + +#: python-novice-gapminder/_episodes/03-types-conversion.md:381 +# blockquote, which can be cascaded +msgid "> > However, Python 3 throws an error. Why? To be consistent, possibly. If you ask Python to perform two consecutive" +msgstr "" + +#: python-novice-gapminder/_episodes/03-types-conversion.md:382 +# blockquote, which can be cascaded +msgid "> > typecasts, you must convert it explicitly in code." +msgstr "" + +#: python-novice-gapminder/_episodes/03-types-conversion.md:385 +# blockquote, which can be cascaded +msgid "> > int(\"3.4\")" +msgstr "" + +#: python-novice-gapminder/_episodes/03-types-conversion.md:386 +# blockquote, which can be cascaded +msgid "> > int(float(\"3.4\"))" +msgstr "" + +#: python-novice-gapminder/_episodes/03-types-conversion.md:388 +#: python-novice-gapminder/_episodes/04-built-in.md:266 +#: python-novice-gapminder/_episodes/04-built-in.md:274 +#: python-novice-gapminder/_episodes/04-built-in.md:282 +#: python-novice-gapminder/_episodes/12-for-loops.md:235 +#: python-novice-gapminder/_episodes/12-for-loops.md:259 +#: python-novice-gapminder/_episodes/12-for-loops.md:277 +#: python-novice-gapminder/_episodes/12-for-loops.md:297 +#: python-novice-gapminder/_episodes/12-for-loops.md:312 +#: python-novice-gapminder/_episodes/12-for-loops.md:342 +#: python-novice-gapminder/_episodes/12-for-loops.md:378 +#: python-novice-gapminder/_episodes/12-for-loops.md:399 +#: python-novice-gapminder/_episodes/14-writing-functions.md:289 +#: python-novice-gapminder/_episodes/14-writing-functions.md:295 +#: python-novice-gapminder/_episodes/17-conditionals.md:310 +#: python-novice-gapminder/_episodes/17-conditionals.md:337 +#: python-novice-gapminder/_episodes/18-style.md:151 +# blockquote, which can be cascaded +msgid "> > {: .python}" +msgstr "" + +#: python-novice-gapminder/_episodes/03-types-conversion.md:390 +# blockquote, which can be cascaded +msgid "> > In [2]: int(\"3.4\")" +msgstr "" + +#: python-novice-gapminder/_episodes/03-types-conversion.md:391 +# blockquote, which can be cascaded +msgid "> > ---------------------------------------------------------------------------" +msgstr "" + +#: python-novice-gapminder/_episodes/03-types-conversion.md:392 +# blockquote, which can be cascaded +msgid "> > ValueError Traceback (most recent call last)" +msgstr "" + +#: python-novice-gapminder/_episodes/03-types-conversion.md:393 +# blockquote, which can be cascaded +msgid "> > in ()" +msgstr "" + +#: python-novice-gapminder/_episodes/03-types-conversion.md:394 +# blockquote, which can be cascaded +msgid "> > ----> 1 int(\"3.4\")" +msgstr "" + +#: python-novice-gapminder/_episodes/03-types-conversion.md:395 +# blockquote, which can be cascaded +msgid "> > ValueError: invalid literal for int() with base 10: '3.4'" +msgstr "" + +#: python-novice-gapminder/_episodes/03-types-conversion.md:396 +# blockquote, which can be cascaded +msgid "> > 3" +msgstr "" + +#: python-novice-gapminder/_episodes/03-types-conversion.md:402 +# blockquote, which can be cascaded +msgid "> ## Arithmetic with Different Types" +msgstr "" + +#: python-novice-gapminder/_episodes/03-types-conversion.md:403 +msgid ">\n" +"> Which of the following will print 2.0?\n" +"> Note: there may be more than one right answer.\n" +">\n" +"> ~~~\n" +"> first = 1.0\n" +"> second = \"1\"\n" +"> third = \"1.1\"\n" +"> ~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/03-types-conversion.md:413 +msgid ">\n" +"> 1. `first + float(second)`\n" +"> 2. `float(second) + float(third)`\n" +"> 3. `first + int(third)`\n" +"> 4. `first + int(float(third))`\n" +"> 5. `int(first) + int(float(third))`\n" +"> 6. `2.0 * second`\n" +">\n" +"> > ## Solution\n" +"> >\n" +"> > Answer: 1 and 4" +msgstr "" + +#: python-novice-gapminder/_episodes/03-types-conversion.md:427 +# blockquote, which can be cascaded +msgid "> ## Complex Numbers" +msgstr "" + +#: python-novice-gapminder/_episodes/03-types-conversion.md:428 +msgid ">\n" +"> Python provides complex numbers,\n" +"> which are written as `1.0+2.0j`.\n" +"> If `val` is an imaginary number,\n" +"> its real and imaginary parts can be accessed using *dot notation*\n" +"> as `val.real` and `val.imag`.\n" +">\n" +"> 1. Why do you think Python uses `j` instead of `i` for the imaginary part?\n" +"> 2. What do you expect `1+2j + 3` to produce?\n" +"> 3. What do you expect '4j' to be? What about `4 j` or `4 + j'? > \n" +"> \n" +"> > ## Solution\n" +"> >\n" +"> > 1. Standard mathematics treatments typically use `i` to denote an imaginary number. However, from media reports it\n" +"> > was an early convention established from electrical engineering that now presents a technically expensive area to\n" +"> > change. [Stack Overflow provides additional explanation and\n" +"> > discussion](http://stackoverflow.com/questions/24812444/why-are-complex-numbers-in-python-denoted-with-j-instead-of-i)\n" +"> > 2. _4+2j_\n" +"> > 3. _4j, syntax error, depends on the value of j_" +msgstr "" + +#: python-novice-gapminder/_episodes/04-built-in.md:1 +# Front Matter +msgid "---\n" +"title: \"Built-in Functions and Help\"\n" +"teaching: 15\n" +"exercises: 10\n" +"questions:\n" +"- \"How can I use built-in functions?\"\n" +"- \"How can I find out what they do?\"\n" +"- \"What kind of errors can occur in programs?\"\n" +"objectives:\n" +"- \"Explain the purpose of functions.\"\n" +"- \"Correctly call built-in Python functions.\"\n" +"- \"Correctly nest calls to built-in functions.\"\n" +"- \"Use help to display documentation for built-in functions.\"\n" +"- \"Correctly describe situations in which SyntaxError and NameError occur.\"\n" +"keypoints:\n" +"- \"Use comments to add documentation to programs.\"\n" +"- \"A function may take zero or more arguments.\"\n" +"- \"Commonly-used built-in functions include `max`, `min`, and `round`.\"\n" +"- \"Functions may only work for certain (combinations of) arguments.\"\n" +"- \"Functions may have default values for some arguments.\"\n" +"- \"Use the built-in function `help` to get help for a function.\"\n" +"- \"The Jupyter Notebook has two ways to get help.\"\n" +"- \"Every function returns something.\"\n" +"- \"Python reports a syntax error when it can't understand the source of a program.\"\n" +"- \"Python reports a runtime error when something goes wrong while a program is executing.\"\n" +"- \"Fix syntax errors by reading the source code, and runtime errors by tracing the program's execution.\"\n" +"---" +msgstr "" + +#: python-novice-gapminder/_episodes/04-built-in.md:28 +# header +msgid "## Use comments to add documentation to programs." +msgstr "" + +#: python-novice-gapminder/_episodes/04-built-in.md:30 +# code block +msgid "~~~\n" +"# This sentence isn't executed by Python.\n" +"adjustment = 0.5 # Neither is this - anything after '#' is ignored.\n" +"~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/04-built-in.md:36 +# header +msgid "## A function may take zero or more arguments." +msgstr "" + +#: python-novice-gapminder/_episodes/04-built-in.md:38 +# unordered list +msgid "* We have seen some functions already --- now let's take a closer look." +msgstr "" + +#: python-novice-gapminder/_episodes/04-built-in.md:39 +# unordered list +msgid "* An *argument* is a value passed into a function." +msgstr "" + +#: python-novice-gapminder/_episodes/04-built-in.md:40 +# unordered list +msgid "* `len` takes exactly one." +msgstr "" + +#: python-novice-gapminder/_episodes/04-built-in.md:41 +# unordered list +msgid "* `int`, `str`, and `float` create a new value from an existing one." +msgstr "" + +#: python-novice-gapminder/_episodes/04-built-in.md:42 +# unordered list +msgid "* `print` takes zero or more." +msgstr "" + +#: python-novice-gapminder/_episodes/04-built-in.md:43 +# unordered list +msgid "* `print` with no arguments prints a blank line." +msgstr "" + +#: python-novice-gapminder/_episodes/04-built-in.md:44 +# unordered list +msgid " * Must always use parentheses, even if they're empty," +msgstr "" + +#: python-novice-gapminder/_episodes/04-built-in.md:45 +msgid " so that Python knows a function is being called." +msgstr "" + +#: python-novice-gapminder/_episodes/04-built-in.md:47 +# code block +msgid "~~~\n" +"print('before')\n" +"print()\n" +"print('after')\n" +"~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/04-built-in.md:53 +# code block +msgid "~~~\n" +"before\n" +"\n" +"after\n" +"~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/04-built-in.md:60 +# header +msgid "## Commonly-used built-in functions include `max`, `min`, and `round`." +msgstr "" + +#: python-novice-gapminder/_episodes/04-built-in.md:62 +# unordered list +msgid "* Use `max` to find the largest value of one or more values." +msgstr "" + +#: python-novice-gapminder/_episodes/04-built-in.md:63 +# unordered list +msgid "* Use `min` to find the smallest." +msgstr "" + +#: python-novice-gapminder/_episodes/04-built-in.md:64 +# unordered list +msgid "* Both work on character strings as well as numbers." +msgstr "" + +#: python-novice-gapminder/_episodes/04-built-in.md:65 +# unordered list +msgid " * \"Larger\" and \"smaller\" use (0-9, A-Z, a-z) to compare letters." +msgstr "" + +#: python-novice-gapminder/_episodes/04-built-in.md:67 +# code block +msgid "~~~\n" +"print(max(1, 2, 3))\n" +"print(min('a', 'A', '0'))\n" +"~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/04-built-in.md:72 +# code block +msgid "~~~\n" +"3\n" +"0\n" +"~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/04-built-in.md:78 +# header +msgid "## Functions may only work for certain (combinations of) arguments." +msgstr "" + +#: python-novice-gapminder/_episodes/04-built-in.md:80 +# unordered list +msgid "* `max` and `min` must be given at least one argument." +msgstr "" + +#: python-novice-gapminder/_episodes/04-built-in.md:81 +# unordered list +msgid " * \"Largest of the empty set\" is a meaningless question." +msgstr "" + +#: python-novice-gapminder/_episodes/04-built-in.md:82 +# unordered list +msgid "* And they must be given things that can meaningfully be compared." +msgstr "" + +#: python-novice-gapminder/_episodes/04-built-in.md:84 +# code block +msgid "~~~\n" +"print(max(1, 'a'))\n" +"~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/04-built-in.md:88 +# code block +msgid "~~~\n" +"TypeError: unorderable types: str() > int()\n" +"~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/04-built-in.md:93 +# header +msgid "## Functions may have default values for some arguments." +msgstr "" + +#: python-novice-gapminder/_episodes/04-built-in.md:95 +# unordered list +msgid "* `round` will round off a floating-point number." +msgstr "" + +#: python-novice-gapminder/_episodes/04-built-in.md:96 +# unordered list +msgid "* By default, rounds to zero decimal places." +msgstr "" + +#: python-novice-gapminder/_episodes/04-built-in.md:98 +# code block +msgid "~~~\n" +"round(3.712)\n" +"~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/04-built-in.md:102 +# code block +msgid "~~~\n" +"4\n" +"~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/04-built-in.md:107 +# unordered list +msgid "* We can specify the number of decimal places we want." +msgstr "" + +#: python-novice-gapminder/_episodes/04-built-in.md:109 +# code block +msgid "~~~\n" +"round(3.712, 1)\n" +"~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/04-built-in.md:113 +# code block +msgid "~~~\n" +"3.7\n" +"~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/04-built-in.md:118 +# header +msgid "## Use the built-in function `help` to get help for a function." +msgstr "" + +#: python-novice-gapminder/_episodes/04-built-in.md:120 +# unordered list +msgid "* Every built-in function has online documentation." +msgstr "" + +#: python-novice-gapminder/_episodes/04-built-in.md:122 +# code block +msgid "~~~\n" +"help(round)\n" +"~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/04-built-in.md:126 +# code block +msgid "~~~\n" +"Help on built-in function round in module builtins:\n" +"\n" +"round(...)\n" +" round(number[, ndigits]) -> number\n" +"\n" +" Round a number to a given precision in decimal digits (default 0 digits).\n" +" This returns an int when called with one argument, otherwise the\n" +" same type as the number. ndigits may be negative.\n" +"~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/04-built-in.md:138 +# header +msgid "## Python reports a syntax error when it can't understand the source of a program." +msgstr "" + +#: python-novice-gapminder/_episodes/04-built-in.md:140 +# unordered list +msgid "* Won't even try to run the program if it can't be parsed." +msgstr "" + +#: python-novice-gapminder/_episodes/04-built-in.md:142 +# code block +msgid "~~~\n" +"# Forgot to close the quote marks around the string.\n" +"name = 'Feng\n" +"~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/04-built-in.md:147 +# code block +msgid "~~~\n" +"SyntaxError: EOL while scanning string literal\n" +"~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/04-built-in.md:152 +# code block +msgid "~~~\n" +"# An extra '=' in the assignment.\n" +"age = = 52\n" +"~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/04-built-in.md:157 +# code block +msgid "~~~\n" +"SyntaxError: invalid syntax\n" +"~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/04-built-in.md:162 +# unordered list +msgid "* Look more closely at the error message:" +msgstr "" + +#: python-novice-gapminder/_episodes/04-built-in.md:164 +# code block +msgid "~~~\n" +"print(\"hello world\"\n" +"~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/04-built-in.md:168 +# code block +msgid "~~~\n" +" File \"\", line 1\n" +" print (\"hello world\"\n" +" ^\n" +"SyntaxError: unexpected EOF while parsing\n" +"~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/04-built-in.md:176 +# unordered list +msgid "* The message indicates a problem on first line of the input (\"line 1\")." +msgstr "" + +#: python-novice-gapminder/_episodes/04-built-in.md:177 +# unordered list +msgid " * In this case the \"ipython-input\" section of the file name tells us that" +msgstr "" + +#: python-novice-gapminder/_episodes/04-built-in.md:178 +msgid " we are working with input into IPython,\n" +" the Python interpreter used by the Jupyter Notebook.\n" +"* The `-6-` part of the filename indicates that\n" +" the error occurred in cell 6 of our Notebook.\n" +"* Next is the problematic line of code,\n" +" indicating the problem with a `^` pointer." +msgstr "" + +#: python-novice-gapminder/_episodes/04-built-in.md:185 +# header +msgid "## Python reports a runtime error when something goes wrong while a program is executing." +msgstr "" + +#: python-novice-gapminder/_episodes/04-built-in.md:187 +# code block +msgid "~~~\n" +"age = 53\n" +"remaining = 100 - aege # mis-spelled 'age'\n" +"~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/04-built-in.md:192 +# code block +msgid "~~~\n" +"NameError: name 'aege' is not defined\n" +"~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/04-built-in.md:197 +# unordered list +msgid "* Fix syntax errors by reading the source and runtime errors by tracing execution." +msgstr "" + +#: python-novice-gapminder/_episodes/04-built-in.md:199 +# header +msgid "## The Jupyter Notebook has two ways to get help." +msgstr "" + +#: python-novice-gapminder/_episodes/04-built-in.md:201 +# unordered list +msgid "* Place the cursor inside the parenthesis of the function," +msgstr "" + +#: python-novice-gapminder/_episodes/04-built-in.md:202 +msgid " hold down `shift`,\n" +" and press `tab`.\n" +"* Or type a function name with a question mark after it." +msgstr "" + +#: python-novice-gapminder/_episodes/04-built-in.md:206 +# header +msgid "## Every function returns something." +msgstr "" + +#: python-novice-gapminder/_episodes/04-built-in.md:208 +# unordered list +msgid "* Every function call produces some result." +msgstr "" + +#: python-novice-gapminder/_episodes/04-built-in.md:209 +# unordered list +msgid "* If the function doesn't have a useful result to return," +msgstr "" + +#: python-novice-gapminder/_episodes/04-built-in.md:210 +msgid " it usually returns the special value `None`." +msgstr "" + +#: python-novice-gapminder/_episodes/04-built-in.md:212 +# code block +msgid "~~~\n" +"result = print('example')\n" +"print('result of print is', result)\n" +"~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/04-built-in.md:217 +# code block +msgid "~~~\n" +"example\n" +"result of print is None\n" +"~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/04-built-in.md:223 +# blockquote, which can be cascaded +msgid "> ## What Happens When" +msgstr "" + +#: python-novice-gapminder/_episodes/04-built-in.md:224 +msgid ">\n" +"> 1. Explain in simple terms the order of operations in the following program:\n" +"> when does the addition happen, when does the subtraction happen,\n" +"> when is each function called, etc.\n" +"> 2. What is the final value of `radiance`?\n" +">\n" +"> ~~~\n" +"> radiance = 1.0\n" +"> radiance = max(2.1, 2.0 + min(radiance, 1.1 * radiance - 0.5))\n" +"> ~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/04-built-in.md:236 +# blockquote, which can be cascaded +msgid "> > 1." +msgstr "" + +#: python-novice-gapminder/_episodes/04-built-in.md:237 +# blockquote, which can be cascaded +msgid "> > 1. `1.1 * radiance = 1.1`" +msgstr "" + +#: python-novice-gapminder/_episodes/04-built-in.md:238 +# blockquote, which can be cascaded +msgid "> > 2. `1.1 - 0.5 = 0.6`" +msgstr "" + +#: python-novice-gapminder/_episodes/04-built-in.md:239 +# blockquote, which can be cascaded +msgid "> > 3. `min(randiance, 0.6) = 0.6`" +msgstr "" + +#: python-novice-gapminder/_episodes/04-built-in.md:240 +# blockquote, which can be cascaded +msgid "> > 4. `2.0 + 0.6 = 2.6`" +msgstr "" + +#: python-novice-gapminder/_episodes/04-built-in.md:241 +# blockquote, which can be cascaded +msgid "> > 5. `max(2.1, 2.6) = 2.6`" +msgstr "" + +#: python-novice-gapminder/_episodes/04-built-in.md:242 +# blockquote, which can be cascaded +msgid "> > 2. At the end, `radiance = 2.6`" +msgstr "" + +#: python-novice-gapminder/_episodes/04-built-in.md:246 +# blockquote, which can be cascaded +msgid "> ## Spot the Difference" +msgstr "" + +#: python-novice-gapminder/_episodes/04-built-in.md:247 +msgid ">\n" +"> 1. Predict what each of the `print` statements in the program below will print.\n" +"> 2. Does `max(len(rich), poor)` run or produce an error message?\n" +"> If it runs, does its result make any sense?\n" +">\n" +"> ~~~\n" +"> easy_string = \"abc\"\n" +"> print(max(easy_string))\n" +"> rich = \"gold\"\n" +"> poor = \"tin\"\n" +"> print(max(rich, poor))\n" +"> print(max(len(rich), len(poor)))\n" +"> ~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/04-built-in.md:262 +# blockquote, which can be cascaded +msgid "> > 1. " +msgstr "" + +#: python-novice-gapminder/_episodes/04-built-in.md:264 +# blockquote, which can be cascaded +msgid "> > print(max(easy_string))" +msgstr "" + +#: python-novice-gapminder/_episodes/04-built-in.md:268 +# blockquote, which can be cascaded +msgid "> > c" +msgstr "" + +#: python-novice-gapminder/_episodes/04-built-in.md:272 +# blockquote, which can be cascaded +msgid "> > print(max(rich, poor))" +msgstr "" + +#: python-novice-gapminder/_episodes/04-built-in.md:276 +# blockquote, which can be cascaded +msgid "> > tin" +msgstr "" + +#: python-novice-gapminder/_episodes/04-built-in.md:280 +# blockquote, which can be cascaded +msgid "> > print(max(len(rich), len(poor)))" +msgstr "" + +#: python-novice-gapminder/_episodes/04-built-in.md:284 +# blockquote, which can be cascaded +msgid "> > 4" +msgstr "" + +#: python-novice-gapminder/_episodes/04-built-in.md:288 +# blockquote, which can be cascaded +msgid "> > 2. It throws a TypeError. The command is trying to run `max(4, 'tin')` and you can't compare" +msgstr "" + +#: python-novice-gapminder/_episodes/04-built-in.md:289 +# blockquote, which can be cascaded +msgid "> > a string and an integer" +msgstr "" + +#: python-novice-gapminder/_episodes/04-built-in.md:293 +# blockquote, which can be cascaded +msgid "> ## Why Not?" +msgstr "" + +#: python-novice-gapminder/_episodes/04-built-in.md:294 +msgid ">\n" +"> Why don't `max` and `min` return `None` when they are given no arguments?\n" +">\n" +"> > ## Solution\n" +"> > `max` and `min` return TypeErrors in this case because the correct number of parameters\n" +"> > was not supplied. If it just returned `None`, the error would be much harder to trace as it\n" +"> > would likely be stored into a variable and used later in the program, only to likely throw\n" +"> > a runtime error." +msgstr "" + +#: python-novice-gapminder/_episodes/04-built-in.md:305 +# blockquote, which can be cascaded +msgid "> ## Last Character of a String" +msgstr "" + +#: python-novice-gapminder/_episodes/04-built-in.md:306 +msgid ">\n" +"> If Python starts counting from zero,\n" +"> and `len` returns the number of characters in a string,\n" +"> what index expression will get the last character in the string `name`?\n" +"> (Note: we will see a simpler way to do this in a later episode.)\n" +">\n" +"> > ## Solution\n" +"> >\n" +"> > `name[len(name) - 1]`" +msgstr "" + +#: python-novice-gapminder/_episodes/05-coffee.md:1 +# Front Matter +msgid "---\n" +"layout: break\n" +"title: \"Morning Coffee\"\n" +"teaching: 0\n" +"exercises: 0\n" +"break: 15\n" +"---" +msgstr "" + +#: python-novice-gapminder/_episodes/05-coffee.md:8 +# header +msgid "# Reflection exercise" +msgstr "" + +#: python-novice-gapminder/_episodes/05-coffee.md:10 +msgid "Over coffee, reflect on and discuss the following:\n" +"* What are the different kinds of errors Python will report?\n" +"* Did the code always produce the results you expected? If not, why?\n" +"* Is there something we can do to prevent errors when we write code?" +msgstr "" + +#: python-novice-gapminder/_episodes/06-libraries.md:1 +# Front Matter +msgid "---\n" +"title: \"Libraries\"\n" +"teaching: 10\n" +"exercises: 10\n" +"questions:\n" +"- \"How can I use software that other people have written?\"\n" +"- \"How can I find out what that software does?\"\n" +"objectives:\n" +"- \"Explain what software libraries are and why programmers create and use them.\"\n" +"- \"Write programs that import and use libraries from Python's standard library.\"\n" +"- \"Find and read documentation for standard libraries interactively (in the interpreter) and online.\"\n" +"keypoints:\n" +"- \"Most of the power of a programming language is in its libraries.\"\n" +"- \"A program must import a library module in order to use it.\"\n" +"- \"Use `help` to learn about the contents of a library module.\"\n" +"- \"Import specific items from a library to shorten programs.\"\n" +"- \"Create an alias for a library when importing it to shorten programs.\"\n" +"---" +msgstr "" + +#: python-novice-gapminder/_episodes/06-libraries.md:19 +# header +msgid "## Most of the power of a programming language is in its libraries." +msgstr "" + +#: python-novice-gapminder/_episodes/06-libraries.md:21 +# unordered list +msgid "* A *library* is a collection of files (called *modules*) that contains" +msgstr "" + +#: python-novice-gapminder/_episodes/06-libraries.md:22 +msgid " functions for use by other programs.\n" +" * May also contain data values (e.g., numerical constants) and other things.\n" +" * Library's contents are supposed to be related, but there's no way to enforce that.\n" +"* The Python [standard library][stdlib] is an extensive suite of modules that comes\n" +" with Python itself.\n" +"* Many additional libraries are available from [PyPI][pypi] (the Python Package Index).\n" +"* We will see later how to write new libraries." +msgstr "" + +#: python-novice-gapminder/_episodes/06-libraries.md:30 +# blockquote, which can be cascaded +msgid "> ## Libraries and modules" +msgstr "" + +#: python-novice-gapminder/_episodes/06-libraries.md:31 +msgid ">\n" +"> A library is a collection of modules, but the terms are often used\n" +"> interchangeably, especially since many libraries only consist of a single\n" +"> module, so don't worry if you mix them." +msgstr "" + +#: python-novice-gapminder/_episodes/06-libraries.md:38 +# header +msgid "## A program must import a library module before using it." +msgstr "" + +#: python-novice-gapminder/_episodes/06-libraries.md:40 +# unordered list +msgid "* Use `import` to load a library module into a program's memory." +msgstr "" + +#: python-novice-gapminder/_episodes/06-libraries.md:41 +# unordered list +msgid "* Then refer to things from the module as `module_name.thing_name`." +msgstr "" + +#: python-novice-gapminder/_episodes/06-libraries.md:42 +# unordered list +msgid " * Python uses `.` to mean \"part of\"." +msgstr "" + +#: python-novice-gapminder/_episodes/06-libraries.md:43 +# unordered list +msgid "* Using `math`, one of the modules in the standard library:" +msgstr "" + +#: python-novice-gapminder/_episodes/06-libraries.md:45 +# code block +msgid "~~~\n" +"import math\n" +"\n" +"print('pi is', math.pi)\n" +"print('cos(pi) is', math.cos(math.pi))\n" +"~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/06-libraries.md:52 +# code block +msgid "~~~\n" +"pi is 3.141592653589793\n" +"cos(pi) is -1.0\n" +"~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/06-libraries.md:58 +# unordered list +msgid "* Have to refer to each item with the module's name." +msgstr "" + +#: python-novice-gapminder/_episodes/06-libraries.md:59 +# unordered list +msgid " * `math.cos(pi)` won't work: the reference to `pi`" +msgstr "" + +#: python-novice-gapminder/_episodes/06-libraries.md:60 +msgid " doesn't somehow \"inherit\" the function's reference to `math`." +msgstr "" + +#: python-novice-gapminder/_episodes/06-libraries.md:62 +# header +msgid "## Use `help` to learn about the contents of a library module." +msgstr "" + +#: python-novice-gapminder/_episodes/06-libraries.md:64 +# unordered list +msgid "* Works just like help for a function." +msgstr "" + +#: python-novice-gapminder/_episodes/06-libraries.md:66 +# code block +msgid "~~~\n" +"help(math)\n" +"~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/06-libraries.md:70 +# code block +msgid "~~~\n" +"Help on module math:\n" +"\n" +"NAME\n" +" math\n" +"\n" +"MODULE REFERENCE\n" +" http://docs.python.org/3.5/library/math\n" +"\n" +" The following documentation is automatically generated from the Python\n" +" source files. It may be incomplete, incorrect or include features that\n" +" are considered implementation detail and may vary between Python\n" +" implementations. When in doubt, consult the module reference at the\n" +" location listed above.\n" +"\n" +"DESCRIPTION\n" +" This module is always available. It provides access to the\n" +" mathematical functions defined by the C standard.\n" +"\n" +"FUNCTIONS\n" +" acos(...)\n" +" acos(x)\n" +"\n" +" Return the arc cosine (measured in radians) of x.\n" +"⋮ ⋮ ⋮\n" +"~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/06-libraries.md:98 +# header +msgid "## Import specific items from a library module to shorten programs." +msgstr "" + +#: python-novice-gapminder/_episodes/06-libraries.md:100 +# unordered list +msgid "* Use `from ... import ...` to load only specific items from a library module." +msgstr "" + +#: python-novice-gapminder/_episodes/06-libraries.md:101 +# unordered list +msgid "* Then refer to them directly without library name as prefix." +msgstr "" + +#: python-novice-gapminder/_episodes/06-libraries.md:103 +# code block +msgid "~~~\n" +"from math import cos, pi\n" +"\n" +"print('cos(pi) is', cos(pi))\n" +"~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/06-libraries.md:109 +#: python-novice-gapminder/_episodes/06-libraries.md:125 +# code block +msgid "~~~\n" +"cos(pi) is -1.0\n" +"~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/06-libraries.md:114 +# header +msgid "## Create an alias for a library module when importing it to shorten programs." +msgstr "" + +#: python-novice-gapminder/_episodes/06-libraries.md:116 +# unordered list +msgid "* Use `import ... as ...` to give a library a short *alias* while importing it." +msgstr "" + +#: python-novice-gapminder/_episodes/06-libraries.md:117 +# unordered list +msgid "* Then refer to items in the library using that shortened name." +msgstr "" + +#: python-novice-gapminder/_episodes/06-libraries.md:119 +# code block +msgid "~~~\n" +"import math as m\n" +"\n" +"print('cos(pi) is', m.cos(m.pi))\n" +"~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/06-libraries.md:130 +# unordered list +msgid "* Commonly used for libraries that are frequently used or have long names." +msgstr "" + +#: python-novice-gapminder/_episodes/06-libraries.md:131 +# unordered list +msgid " * E.g., `matplotlib` plotting library is often aliased as `mpl`." +msgstr "" + +#: python-novice-gapminder/_episodes/06-libraries.md:132 +# unordered list +msgid "* But can make programs harder to understand," +msgstr "" + +#: python-novice-gapminder/_episodes/06-libraries.md:133 +msgid " since readers must learn your program's aliases." +msgstr "" + +#: python-novice-gapminder/_episodes/06-libraries.md:135 +# blockquote, which can be cascaded +msgid "> ## Exploring the Math Module" +msgstr "" + +#: python-novice-gapminder/_episodes/06-libraries.md:136 +msgid ">\n" +"> 1. What function from the `math` module can you use to calculate a square root\n" +"> *without* using `sqrt`?\n" +"> 2. Since the library contains this function, why does `sqrt` exist?\n" +">\n" +"> > ## Solution\n" +"> > 1. Using `help(math)` we see that we've got `pow(x,y)` in addition to `sqrt(x)`,\n" +"> > so we could use `pow(x, 0.5)` to find a square root.\n" +"> > 2. The `sqrt(x)` function is arguably more readable than `pow(x, 0.5)` when\n" +"> > implementing equations. Readability is a cornerstone of good programming, so it\n" +"> > makes sense to provide a special function for this specific common case.\n" +"> >\n" +"> > Also, the design of Python's `math` library has its origin in the C standard,\n" +"> > which includes both `sqrt(x)` and `pow(x,y)`, so a little bit of the history\n" +"> > of programming is showing in Python's function names.\n" +"> >" +msgstr "" + +#: python-novice-gapminder/_episodes/06-libraries.md:155 +# blockquote, which can be cascaded +msgid "> ## Locating the Right Module" +msgstr "" + +#: python-novice-gapminder/_episodes/06-libraries.md:156 +msgid ">\n" +"> You want to select a random character from a string:\n" +">\n" +"> ~~~\n" +"> bases = 'ACTTGCTTGAC'\n" +"> ~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/06-libraries.md:163 +msgid ">\n" +"> 1. Which [standard library][stdlib] module could help you?\n" +"> 2. Which function would you select from that module? Are there alternatives?\n" +"> 3. Try to write a program that uses the function.\n" +">\n" +"> > ## Solution\n" +"> >\n" +"> > The [random module](randommod) seems like it could help you.\n" +"> >\n" +"> > The string has 11 characters, each having a positional index from 0 to 10.\n" +"> > You could use `random.randrange` function (or the alias `random.randint`\n" +"> > if you find that easier to remember) to get a random integer between 0 and\n" +"> > 10, and then pick out the character at that position:\n" +"> >\n" +"> > ~~~\n" +"> > from random import randrange\n" +"> >\n" +"> > random_index = randrange(len(bases))\n" +"> > print(bases[random_index])\n" +"> > ~~~\n" +"> > {: .python}\n" +"> >\n" +"> > or more compactly:\n" +"> >\n" +"> > ~~~\n" +"> > from random import randrange\n" +"> >\n" +"> > print(bases[randrange(len(bases))])\n" +"> > ~~~\n" +"> > {: .python}\n" +"> >\n" +"> > Perhaps you found the `random.sample` function? It allows for slightly\n" +"> > less typing:\n" +"> >\n" +"> > ~~~\n" +"> > from random import sample\n" +"> >\n" +"> > print(sample(bases, 1)[0])\n" +"> > ~~~\n" +"> > {: .python}\n" +"> >\n" +"> > Note that this function returns a list of values. We will learn about\n" +"> > lists in episode 11.\n" +"> >\n" +"> > There's also other functions you could use, but with more convoluted\n" +"> > code as a result." +msgstr "" + +#: python-novice-gapminder/_episodes/06-libraries.md:213 +# blockquote, which can be cascaded +msgid "> ## Jigsaw Puzzle (Parson's Problem) Programming Example" +msgstr "" + +#: python-novice-gapminder/_episodes/06-libraries.md:214 +msgid ">\n" +"> Rearrange the following statements so that a random\n" +"> DNA base is printed and its index in the string. Not all statements may be needed. Feel free to use/add\n" +"> intermediate variables.\n" +">\n" +"> ~~~\n" +"> bases=\"ACTTGCTTGAC\"\n" +"> import math\n" +"> import random\n" +"> ___ = random.randrange(n_bases)\n" +"> ___ = len(bases)\n" +"> print(\"random base \", bases[___], \"base index\", ___)\n" +"> ~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/06-libraries.md:228 +msgid ">\n" +"> > ## Solution\n" +"> >\n" +"> > ~~~\n" +"> > import math \n" +"> > import random\n" +"> > bases = \"ACTTGCTTGAC\" \n" +"> > n_bases = len(bases)\n" +"> > idx = random.randrange(n_bases)\n" +"> > print(\"random base\", bases[idx], \"base index\", idx)\n" +"> > ~~~\n" +"> > {: .python}\n" +"> >" +msgstr "" + +#: python-novice-gapminder/_episodes/06-libraries.md:244 +# blockquote, which can be cascaded +msgid "> ## When Is Help Available?" +msgstr "" + +#: python-novice-gapminder/_episodes/06-libraries.md:245 +msgid ">\n" +"> When a colleague of yours types `help(math)`,\n" +"> Python reports an error:\n" +">\n" +"> ~~~\n" +"> NameError: name 'math' is not defined\n" +"> ~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/06-libraries.md:253 +msgid ">\n" +"> What has your colleague forgotten to do?\n" +">\n" +"> > ## Solution\n" +"> >\n" +"> > Importing the math module (`import math`)" +msgstr "" + +#: python-novice-gapminder/_episodes/06-libraries.md:262 +# blockquote, which can be cascaded +msgid "> ## Importing With Aliases" +msgstr "" + +#: python-novice-gapminder/_episodes/06-libraries.md:263 +msgid ">\n" +"> 1. Fill in the blanks so that the program below prints `90.0`.\n" +"> 2. Rewrite the program so that it uses `import` *without* `as`.\n" +"> 3. Which form do you find easier to read?\n" +">\n" +"> ~~~\n" +"> import math as m\n" +"> angle = ____.degrees(____.pi / 2)\n" +"> print(____)\n" +"> ~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/06-libraries.md:274 +msgid ">\n" +"> > ## Solution\n" +"> >\n" +"> > ~~~\n" +"> > import math as m\n" +"> > angle = m.degrees(m.pi / 2)\n" +"> > print(angle)\n" +"> > ~~~\n" +"> > {: .python}\n" +"> >\n" +"> > can bewritten as\n" +"> >\n" +"> > ~~~\n" +"> > import math\n" +"> > angle = math.degrees(math.pi / 2)\n" +"> > print(angle)\n" +"> > ~~~\n" +"> > {: .python}\n" +"> >\n" +"> > Since you just wrote the code and are familiar with it, you might actually\n" +"> > find the first version easier to read. But when trying to read a huge piece\n" +"> > of code written by someone else, or when getting back to your own huge piece\n" +"> > of code after several months, non-abbreviated names are often easier, except\n" +"> > where there are clear abbreviation conventions." +msgstr "" + +#: python-novice-gapminder/_episodes/06-libraries.md:301 +# blockquote, which can be cascaded +msgid "> ## There Are Many Ways To Import Libraries!" +msgstr "" + +#: python-novice-gapminder/_episodes/06-libraries.md:302 +msgid ">\n" +"> Match the following print statements with the appropriate library calls.\n" +">\n" +"> Print commands:\n" +">\n" +"> 1. `print(\"sin(pi/2) =\",sin(pi/2))`\n" +"> 2. `print(\"sin(pi/2) =\",m.sin(m.pi/2))`\n" +"> 3. `print(\"sin(pi/2) =\",math.sin(math.pi/2))`\n" +">\n" +"> Library calls:\n" +">\n" +"> 1. `from math import sin,pi`\n" +"> 2. `import math`\n" +"> 3. `import math as m`\n" +"> 4. `from math import *`\n" +">\n" +"> > ## Solution\n" +"> >\n" +"> > 1. Library calls 1 and 4. In order to directly refer to `sin` and `pi` without\n" +"> > the library name as prefix, you need to use the `from ... import ...`\n" +"> > statement. Whereas library call 1 specifically imports the two functions\n" +"> > `sin` and `pi`, library call 4 imports all functions in the `math` module.\n" +"> > 2. Library call 3. Here `sin` and `pi` are referred to with a shortened library\n" +"> > name `m` instead of `math`. Library call 3 does exactly that using the\n" +"> > `import ... as ...` syntax - it creates an alias for `math` in the form of\n" +"> > the shortened name `m`.\n" +"> > 3. Library call 2. Here `sin` and `pi` are referred to with the regular library\n" +"> > name `math`, so the regular `import ...` call suffices." +msgstr "" + +#: python-novice-gapminder/_episodes/06-libraries.md:333 +# blockquote, which can be cascaded +msgid "> ## Importing Specific Items" +msgstr "" + +#: python-novice-gapminder/_episodes/06-libraries.md:334 +msgid ">\n" +"> 1. Fill in the blanks so that the program below prints `90.0`.\n" +"> 2. Do you find this version easier to read than preceding ones?\n" +"> 3. Why *wouldn't* programmers always use this form of `import`?\n" +">\n" +"> ~~~\n" +"> ____ math import ____, ____\n" +"> angle = degrees(pi / 2)\n" +"> print(angle)\n" +"> ~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/06-libraries.md:345 +msgid ">\n" +"> > ## Solution\n" +"> >\n" +"> > ~~~\n" +"> > from math import degrees, pi\n" +"> > angle = degrees(pi / 2)\n" +"> > print(angle)\n" +"> > ~~~\n" +"> > {: .python}\n" +"> >\n" +"> > Most likely you find this version easier to read since it's less dense.\n" +"> > The main reason not to use this form of import is to avoid name clashes.\n" +"> > For instance, you wouldn't import `degrees` this way if you also wanted to\n" +"> > use the name `degrees` for a variable or function of your own. Or if you\n" +"> > were to also import a function named `degrees` from another library." +msgstr "" + +#: python-novice-gapminder/_episodes/06-libraries.md:363 +#: python-novice-gapminder/_episodes/15-scope.md:76 +# blockquote, which can be cascaded +msgid "> ## Reading Error Messages" +msgstr "" + +#: python-novice-gapminder/_episodes/06-libraries.md:364 +msgid ">\n" +"> 1. Read the code below and try to identify what the errors are without running it.\n" +"> 2. Run the code, and read the error message. What type of error is it?\n" +">\n" +"> ~~~\n" +"> from math import log\n" +"> log(0)\n" +"> ~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/06-libraries.md:373 +msgid ">\n" +"> > ## Solution\n" +"> >\n" +"> > 1. The logarithm of `x` is only defined for `x > 0`, so 0 is outside the\n" +"> > domain of the function.\n" +"> > 2. You get an error of type \"ValueError\", indicating that the function\n" +"> > received an inappropriate argument value. The additional message\n" +"> > \"math domain error\" makes it clearer what the problem is." +msgstr "" + +#: python-novice-gapminder/_episodes/06-libraries.md:384 +msgid "[pypi]: https://pypi.python.org/pypi/\n" +"[stdlib]: https://docs.python.org/3/library/\n" +"[randommod]: https://docs.python.org/3/library/random.html" +msgstr "" + +#: python-novice-gapminder/_episodes/07-reading-tabular.md:1 +# Front Matter +msgid "---\n" +"title: \"Reading Tabular Data into DataFrames\"\n" +"teaching: 10\n" +"exercises: 10\n" +"questions:\n" +"- \"How can I read tabular data?\"\n" +"objectives:\n" +"- \"Import the Pandas library.\"\n" +"- \"Use Pandas to load a simple CSV data set.\"\n" +"- \"Get some basic information about a Pandas DataFrame.\"\n" +"keypoints:\n" +"- \"Use the Pandas library to get basic statistics out of tabular data.\"\n" +"- \"Use `index_col` to specify that a column's values should be used as row headings.\"\n" +"- \"Use `DataFrame.info` to find out more about a dataframe.\"\n" +"- \"The `DataFrame.columns` variable stores information about the dataframe's columns.\"\n" +"- \"Use `DataFrame.T` to transpose a dataframe.\"\n" +"- \"Use `DataFrame.describe` to get summary statistics about data.\"\n" +"---" +msgstr "" + +#: python-novice-gapminder/_episodes/07-reading-tabular.md:19 +# header +msgid "## Use the Pandas library to do statistics on tabular data." +msgstr "" + +#: python-novice-gapminder/_episodes/07-reading-tabular.md:21 +# unordered list +msgid "* Pandas is a widely-used Python library for statistics, particularly on tabular data." +msgstr "" + +#: python-novice-gapminder/_episodes/07-reading-tabular.md:22 +# unordered list +msgid "* Borrows many features from R's dataframes." +msgstr "" + +#: python-novice-gapminder/_episodes/07-reading-tabular.md:23 +# unordered list +msgid " * A 2-dimenstional table whose columns have names" +msgstr "" + +#: python-novice-gapminder/_episodes/07-reading-tabular.md:24 +msgid " and potentially have different data types.\n" +"* Load it with `import pandas`.\n" +"* Read a Comma Separate Values (CSV) data file with `pandas.read_csv`.\n" +" * Argument is the name of the file to be read.\n" +" * Assign result to a variable to store the data that was read." +msgstr "" + +#: python-novice-gapminder/_episodes/07-reading-tabular.md:30 +# code block +msgid "~~~\n" +"import pandas\n" +"\n" +"data = pandas.read_csv('data/gapminder_gdp_oceania.csv')\n" +"print(data)\n" +"~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/07-reading-tabular.md:37 +# code block +msgid "~~~\n" +" country gdpPercap_1952 gdpPercap_1957 gdpPercap_1962 \\\n" +"0 Australia 10039.59564 10949.64959 12217.22686\n" +"1 New Zealand 10556.57566 12247.39532 13175.67800\n" +"\n" +" gdpPercap_1967 gdpPercap_1972 gdpPercap_1977 gdpPercap_1982 \\\n" +"0 14526.12465 16788.62948 18334.19751 19477.00928\n" +"1 14463.91893 16046.03728 16233.71770 17632.41040\n" +"\n" +" gdpPercap_1987 gdpPercap_1992 gdpPercap_1997 gdpPercap_2002 \\\n" +"0 21888.88903 23424.76683 26997.93657 30687.75473\n" +"1 19007.19129 18363.32494 21050.41377 23189.80135\n" +"\n" +" gdpPercap_2007\n" +"0 34435.36744\n" +"1 25185.00911\n" +"~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/07-reading-tabular.md:56 +# unordered list +msgid "* The columns in a dataframe are the observed variables, and the rows are the observations." +msgstr "" + +#: python-novice-gapminder/_episodes/07-reading-tabular.md:57 +# unordered list +msgid "* Pandas uses backslash `\\` to show wrapped lines when output is too wide to fit the screen." +msgstr "" + +#: python-novice-gapminder/_episodes/07-reading-tabular.md:59 +# blockquote, which can be cascaded +msgid "> ## File Not Found" +msgstr "" + +#: python-novice-gapminder/_episodes/07-reading-tabular.md:60 +msgid ">\n" +"> Our lessons store their data files in a `data` sub-directory,\n" +"> which is why the path to the file is `data/gapminder_gdp_oceania.csv`.\n" +"> If you forget to include `data/`,\n" +"> or if you include it but your copy of the file is somewhere else,\n" +"> you will get a [runtime error]({{ page.root }}/05-error-messages/)\n" +"> that ends with a line like this:\n" +">\n" +"> ~~~\n" +"> OSError: File b'gapminder_gdp_oceania.csv' does not exist\n" +"> ~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/07-reading-tabular.md:74 +# header +msgid "## Use `index_col` to specify that a column's values should be used as row headings." +msgstr "" + +#: python-novice-gapminder/_episodes/07-reading-tabular.md:76 +# unordered list +msgid "* Row headings are numbers (0 and 1 in this case)." +msgstr "" + +#: python-novice-gapminder/_episodes/07-reading-tabular.md:77 +# unordered list +msgid "* Really want to index by country." +msgstr "" + +#: python-novice-gapminder/_episodes/07-reading-tabular.md:78 +# unordered list +msgid "* Pass the name of the column to `read_csv` as its `index_col` parameter to do this." +msgstr "" + +#: python-novice-gapminder/_episodes/07-reading-tabular.md:80 +# code block +msgid "~~~\n" +"data = pandas.read_csv('data/gapminder_gdp_oceania.csv', index_col='country')\n" +"print(data)\n" +"~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/07-reading-tabular.md:85 +# code block +msgid "~~~\n" +" gdpPercap_1952 gdpPercap_1957 gdpPercap_1962 gdpPercap_1967 \\\n" +"country\n" +"Australia 10039.59564 10949.64959 12217.22686 14526.12465\n" +"New Zealand 10556.57566 12247.39532 13175.67800 14463.91893\n" +"\n" +" gdpPercap_1972 gdpPercap_1977 gdpPercap_1982 gdpPercap_1987 \\\n" +"country\n" +"Australia 16788.62948 18334.19751 19477.00928 21888.88903\n" +"New Zealand 16046.03728 16233.71770 17632.41040 19007.19129\n" +"\n" +" gdpPercap_1992 gdpPercap_1997 gdpPercap_2002 gdpPercap_2007\n" +"country\n" +"Australia 23424.76683 26997.93657 30687.75473 34435.36744\n" +"New Zealand 18363.32494 21050.41377 23189.80135 25185.00911\n" +"~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/07-reading-tabular.md:103 +# header +msgid "## Use `DataFrame.info` to find out more about a dataframe." +msgstr "" + +#: python-novice-gapminder/_episodes/07-reading-tabular.md:105 +# code block +msgid "~~~\n" +"data.info()\n" +"~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/07-reading-tabular.md:109 +# code block +msgid "~~~\n" +"\n" +"Index: 2 entries, Australia to New Zealand\n" +"Data columns (total 12 columns):\n" +"gdpPercap_1952 2 non-null float64\n" +"gdpPercap_1957 2 non-null float64\n" +"gdpPercap_1962 2 non-null float64\n" +"gdpPercap_1967 2 non-null float64\n" +"gdpPercap_1972 2 non-null float64\n" +"gdpPercap_1977 2 non-null float64\n" +"gdpPercap_1982 2 non-null float64\n" +"gdpPercap_1987 2 non-null float64\n" +"gdpPercap_1992 2 non-null float64\n" +"gdpPercap_1997 2 non-null float64\n" +"gdpPercap_2002 2 non-null float64\n" +"gdpPercap_2007 2 non-null float64\n" +"dtypes: float64(12)\n" +"memory usage: 208.0+ bytes\n" +"~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/07-reading-tabular.md:130 +# unordered list +msgid "* This is a `DataFrame`" +msgstr "" + +#: python-novice-gapminder/_episodes/07-reading-tabular.md:131 +# unordered list +msgid "* Two rows named `'Australia'` and `'New Zealand'`" +msgstr "" + +#: python-novice-gapminder/_episodes/07-reading-tabular.md:132 +# unordered list +msgid "* Twelve columns, each of which has two actual 64-bit floating point values." +msgstr "" + +#: python-novice-gapminder/_episodes/07-reading-tabular.md:133 +# unordered list +msgid " * We will talk later about null values, which are used to represent missing observations." +msgstr "" + +#: python-novice-gapminder/_episodes/07-reading-tabular.md:134 +# unordered list +msgid "* Uses 208 bytes of memory." +msgstr "" + +#: python-novice-gapminder/_episodes/07-reading-tabular.md:136 +# header +msgid "## The `DataFrame.columns` variable stores information about the dataframe's columns." +msgstr "" + +#: python-novice-gapminder/_episodes/07-reading-tabular.md:138 +# unordered list +msgid "* Note that this is data, *not* a method." +msgstr "" + +#: python-novice-gapminder/_episodes/07-reading-tabular.md:139 +# unordered list +msgid " * Like `math.pi`." +msgstr "" + +#: python-novice-gapminder/_episodes/07-reading-tabular.md:140 +# unordered list +msgid " * So do not use `()` to try to call it." +msgstr "" + +#: python-novice-gapminder/_episodes/07-reading-tabular.md:141 +# unordered list +msgid "* Called a *member variable*, or just *member*." +msgstr "" + +#: python-novice-gapminder/_episodes/07-reading-tabular.md:143 +# code block +msgid "~~~\n" +"print(data.columns)\n" +"~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/07-reading-tabular.md:147 +# code block +msgid "~~~\n" +"Index(['gdpPercap_1952', 'gdpPercap_1957', 'gdpPercap_1962', 'gdpPercap_1967',\n" +" 'gdpPercap_1972', 'gdpPercap_1977', 'gdpPercap_1982', 'gdpPercap_1987',\n" +" 'gdpPercap_1992', 'gdpPercap_1997', 'gdpPercap_2002', 'gdpPercap_2007'],\n" +" dtype='object')\n" +"~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/07-reading-tabular.md:155 +# header +msgid "## Use `DataFrame.T` to transpose a dataframe." +msgstr "" + +#: python-novice-gapminder/_episodes/07-reading-tabular.md:157 +# unordered list +msgid "* Sometimes want to treat columns as rows and vice versa." +msgstr "" + +#: python-novice-gapminder/_episodes/07-reading-tabular.md:158 +# unordered list +msgid "* Transpose (written `.T`) doesn't copy the data, just changes the program's view of it." +msgstr "" + +#: python-novice-gapminder/_episodes/07-reading-tabular.md:159 +# unordered list +msgid "* Like `columns`, it is a member variable." +msgstr "" + +#: python-novice-gapminder/_episodes/07-reading-tabular.md:161 +# code block +msgid "~~~\n" +"print(data.T)\n" +"~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/07-reading-tabular.md:165 +# code block +msgid "~~~\n" +"country Australia New Zealand\n" +"gdpPercap_1952 10039.59564 10556.57566\n" +"gdpPercap_1957 10949.64959 12247.39532\n" +"gdpPercap_1962 12217.22686 13175.67800\n" +"gdpPercap_1967 14526.12465 14463.91893\n" +"gdpPercap_1972 16788.62948 16046.03728\n" +"gdpPercap_1977 18334.19751 16233.71770\n" +"gdpPercap_1982 19477.00928 17632.41040\n" +"gdpPercap_1987 21888.88903 19007.19129\n" +"gdpPercap_1992 23424.76683 18363.32494\n" +"gdpPercap_1997 26997.93657 21050.41377\n" +"gdpPercap_2002 30687.75473 23189.80135\n" +"gdpPercap_2007 34435.36744 25185.00911\n" +"~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/07-reading-tabular.md:182 +# header +msgid "## Use `DataFrame.describe` to get summary statistics about data." +msgstr "" + +#: python-novice-gapminder/_episodes/07-reading-tabular.md:184 +msgid "DataFrame.describe() gets the summary statistics of only the columns that have numerical data. \n" +"All other columns are ignored, unless you use the argument `include='all'`.\n" +"~~~\n" +"print(data.describe())\n" +"~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/07-reading-tabular.md:190 +# code block +msgid "~~~\n" +" gdpPercap_1952 gdpPercap_1957 gdpPercap_1962 gdpPercap_1967 \\\n" +"count 2.000000 2.000000 2.000000 2.000000\n" +"mean 10298.085650 11598.522455 12696.452430 14495.021790\n" +"std 365.560078 917.644806 677.727301 43.986086\n" +"min 10039.595640 10949.649590 12217.226860 14463.918930\n" +"25% 10168.840645 11274.086022 12456.839645 14479.470360\n" +"50% 10298.085650 11598.522455 12696.452430 14495.021790\n" +"75% 10427.330655 11922.958888 12936.065215 14510.573220\n" +"max 10556.575660 12247.395320 13175.678000 14526.124650\n" +"\n" +" gdpPercap_1972 gdpPercap_1977 gdpPercap_1982 gdpPercap_1987 \\\n" +"count 2.00000 2.000000 2.000000 2.000000\n" +"mean 16417.33338 17283.957605 18554.709840 20448.040160\n" +"std 525.09198 1485.263517 1304.328377 2037.668013\n" +"min 16046.03728 16233.717700 17632.410400 19007.191290\n" +"25% 16231.68533 16758.837652 18093.560120 19727.615725\n" +"50% 16417.33338 17283.957605 18554.709840 20448.040160\n" +"75% 16602.98143 17809.077557 19015.859560 21168.464595\n" +"max 16788.62948 18334.197510 19477.009280 21888.889030\n" +"\n" +" gdpPercap_1992 gdpPercap_1997 gdpPercap_2002 gdpPercap_2007\n" +"count 2.000000 2.000000 2.000000 2.000000\n" +"mean 20894.045885 24024.175170 26938.778040 29810.188275\n" +"std 3578.979883 4205.533703 5301.853680 6540.991104\n" +"min 18363.324940 21050.413770 23189.801350 25185.009110\n" +"25% 19628.685413 22537.294470 25064.289695 27497.598692\n" +"50% 20894.045885 24024.175170 26938.778040 29810.188275\n" +"75% 22159.406358 25511.055870 28813.266385 32122.777857\n" +"max 23424.766830 26997.936570 30687.754730 34435.367440\n" +"~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/07-reading-tabular.md:223 +# unordered list +msgid "* Not particularly useful with just two records," +msgstr "" + +#: python-novice-gapminder/_episodes/07-reading-tabular.md:224 +msgid " but very helpful when there are thousands." +msgstr "" + +#: python-novice-gapminder/_episodes/07-reading-tabular.md:226 +# blockquote, which can be cascaded +msgid "> ## Reading Other Data" +msgstr "" + +#: python-novice-gapminder/_episodes/07-reading-tabular.md:227 +msgid ">\n" +"> Read the data in `gapminder_gdp_americas.csv`\n" +"> (which should be in the same directory as `gapminder_gdp_oceania.csv`)\n" +"> into a variable called `americas`\n" +"> and display its summary statistics.\n" +">\n" +"> > ## Solution\n" +"> > To read in a CSV, we use `pandas.read_csv` and pass the filename 'data/gapminder_gdp_americas.csv' to it. We also once again pass the\n" +"> > column name 'country' to the parameter `index_col` in order to index by country:\n" +"> > ~~~\n" +"> > americas = pandas.read_csv('data/gapminder_gdp_americas.csv', index_col='country')\n" +"> > ~~~\n" +"> >{: .python}" +msgstr "" + +#: python-novice-gapminder/_episodes/07-reading-tabular.md:245 +# blockquote, which can be cascaded +msgid "> ## Inspecting Data." +msgstr "" + +#: python-novice-gapminder/_episodes/07-reading-tabular.md:246 +msgid ">\n" +"> After reading the data for the Americas,\n" +"> use `help(americas.head)` and `help(americas.tail)`\n" +"> to find out what `DataFrame.head` and `DataFrame.tail` do.\n" +">\n" +"> 1. What method call will display the first three rows of this data?\n" +"> 2. What method call will display the last three columns of this data?\n" +"> (Hint: you may need to change your view of the data.)\n" +">\n" +"> > ## Solution\n" +"> > 1. We can check out the first five rows of `americas` by executing `americas.head()` (allowing us to view the head\n" +"> > of the DataFrame). We can specify the number of rows we wish to see by specifying the parameter `n` in our call\n" +"> > to `americas.head()`. To view the first three rows, execute:\n" +"> >\n" +"> > ~~~\n" +"> > americas.head(n=3)\n" +"> > ~~~\n" +"> >{: .python}\n" +"> > \n" +"> > The output is then\n" +"> > ~~~\n" +"> > continent gdpPercap_1952 gdpPercap_1957 gdpPercap_1962 \\\n" +"> >country \n" +"> >Argentina Americas 5911.315053 6856.856212 7133.166023 \n" +"> >Bolivia Americas 2677.326347 2127.686326 2180.972546 \n" +"> >Brazil Americas 2108.944355 2487.365989 3336.585802 \n" +"> >\n" +"> > gdpPercap_1967 gdpPercap_1972 gdpPercap_1977 gdpPercap_1982 \\\n" +"> >country \n" +"> >Argentina 8052.953021 9443.038526 10079.026740 8997.897412 \n" +"> >Bolivia 2586.886053 2980.331339 3548.097832 3156.510452 \n" +"> >Brazil 3429.864357 4985.711467 6660.118654 7030.835878 \n" +"> >\n" +"> > gdpPercap_1987 gdpPercap_1992 gdpPercap_1997 gdpPercap_2002 \\\n" +"> >country \n" +"> >Argentina 9139.671389 9308.418710 10967.281950 8797.640716 \n" +"> >Bolivia 2753.691490 2961.699694 3326.143191 3413.262690 \n" +"> >Brazil 7807.095818 6950.283021 7957.980824 8131.212843 \n" +"> >\n" +"> > gdpPercap_2007 \n" +"> >country \n" +"> >Argentina 12779.379640 \n" +"> >Bolivia 3822.137084 \n" +"> >Brazil 9065.800825 \n" +"> > ~~~ \n" +"> >{: .output}\n" +"> > 2. To check out the last three rows of `americas`, we would use the command, `americas.tail(n=3)`,\n" +"> > analogous to `head()` used above. However, here we want to look at the last three columns so we need\n" +"> > to change our view and then use `tail()`. To do so, we create a new DataFrame in which rows and \n" +"> > columns are switched\n" +"> > \n" +"> > ~~~\n" +"> > americas_flipped = americas.T\n" +"> > ~~~\n" +"> >{: .python}\n" +"> >\n" +"> > We can then view the last three columns of `americas` by viewing the last three rows of `americas_flipped`:\n" +"> > ~~~\n" +"> > americas_flipped.tail(n=3)\n" +"> > ~~~\n" +"> >{: .python}\n" +"> > The output is then\n" +"> > ~~~\n" +"> > country Argentina Bolivia Brazil Canada Chile Colombia \\\n" +"> > gdpPercap_1997 10967.3 3326.14 7957.98 28954.9 10118.1 6117.36 \n" +"> > gdpPercap_2002 8797.64 3413.26 8131.21 33329 10778.8 5755.26 \n" +"> > gdpPercap_2007 12779.4 3822.14 9065.8 36319.2 13171.6 7006.58 \n" +"> > \n" +"> > country Costa Rica Cuba Dominican Republic Ecuador ... \\\n" +"> > gdpPercap_1997 6677.05 5431.99 3614.1 7429.46 ... \n" +"> > gdpPercap_2002 7723.45 6340.65 4563.81 5773.04 ... \n" +"> > gdpPercap_2007 9645.06 8948.1 6025.37 6873.26 ... \n" +"> > \n" +"> > country Mexico Nicaragua Panama Paraguay Peru Puerto Rico \\\n" +"> > gdpPercap_1997 9767.3 2253.02 7113.69 4247.4 5838.35 16999.4 \n" +"> > gdpPercap_2002 10742.4 2474.55 7356.03 3783.67 5909.02 18855.6 \n" +"> > gdpPercap_2007 11977.6 2749.32 9809.19 4172.84 7408.91 19328.7 \n" +"> > \n" +"> > country Trinidad and Tobago United States Uruguay Venezuela \n" +"> > gdpPercap_1997 8792.57 35767.4 9230.24 10165.5 \n" +"> > gdpPercap_2002 11460.6 39097.1 7727 8605.05 \n" +"> > gdpPercap_2007 18008.5 42951.7 10611.5 11415.8 \n" +"> > ~~~ \n" +"> >{: .output}\n" +"> > Note: we could have done the above in a single line of code by 'chaining' the commands:\n" +"> > ~~~\n" +"> > americas.T.tail(n=3)\n" +"> > ~~~\n" +"> >{: .python}" +msgstr "" + +#: python-novice-gapminder/_episodes/07-reading-tabular.md:338 +# blockquote, which can be cascaded +msgid "> ## Reading Files in Other Directories" +msgstr "" + +#: python-novice-gapminder/_episodes/07-reading-tabular.md:339 +msgid ">\n" +"> The data for your current project is stored in a file called `microbes.csv`,\n" +"> which is located in a folder called `field_data`.\n" +"> You are doing analysis in a notebook called `analysis.ipynb`\n" +"> in a sibling folder called `thesis`:\n" +">\n" +"> ~~~\n" +"> your_home_directory\n" +"> +-- field_data/\n" +"> | +-- microbes.csv\n" +"> +-- thesis/\n" +"> +-- analysis.ipynb\n" +"> ~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/07-reading-tabular.md:353 +msgid ">\n" +"> What value(s) should you pass to `read_csv` to read `microbes.csv` in `analysis.ipynb`?\n" +"> \n" +"> > ## Solution\n" +"> > We need to specify the path to the file of interest in the call to `pandas.read_csv`. We first need to 'jump' out of\n" +"> > the folder `thesis` using '../' and then into the folder `field_data` using 'field_data/'. Then we can specify the filename `microbes.csv.\n" +"> > The result is as follows:\n" +"> > ~~~\n" +"> > data_microbes = pandas.read_csv('../field_data/microbes.csv')\n" +"> > ~~~\n" +"> >{: .python}" +msgstr "" + +#: python-novice-gapminder/_episodes/07-reading-tabular.md:367 +# blockquote, which can be cascaded +msgid "> ## Writing Data" +msgstr "" + +#: python-novice-gapminder/_episodes/07-reading-tabular.md:369 +# blockquote, which can be cascaded +msgid "> As well as the `read_csv` function for reading data from a file," +msgstr "" + +#: python-novice-gapminder/_episodes/07-reading-tabular.md:370 +# blockquote, which can be cascaded +msgid "> Pandas provides a `to_csv` function to write dataframes to files." +msgstr "" + +#: python-novice-gapminder/_episodes/07-reading-tabular.md:371 +# blockquote, which can be cascaded +msgid "> Applying what you've learned about reading from files," +msgstr "" + +#: python-novice-gapminder/_episodes/07-reading-tabular.md:372 +# blockquote, which can be cascaded +msgid "> write one of your dataframes to a file called `processed.csv`." +msgstr "" + +#: python-novice-gapminder/_episodes/07-reading-tabular.md:373 +# blockquote, which can be cascaded +msgid "> You can use `help` to get information on how to use `to_csv`." +msgstr "" + +#: python-novice-gapminder/_episodes/07-reading-tabular.md:375 +# blockquote, which can be cascaded +msgid "> > In order to write the DataFrame `americas` to a file called `processed.csv`, execute the following command:" +msgstr "" + +#: python-novice-gapminder/_episodes/07-reading-tabular.md:377 +# blockquote, which can be cascaded +msgid "> > americas.to_csv('processed.csv')" +msgstr "" + +#: python-novice-gapminder/_episodes/07-reading-tabular.md:379 +#: python-novice-gapminder/_episodes/07-reading-tabular.md:384 +# blockquote, which can be cascaded +msgid "> >{: .python}" +msgstr "" + +#: python-novice-gapminder/_episodes/07-reading-tabular.md:380 +# blockquote, which can be cascaded +msgid "> > For help on `to_csv`, you could execute, for example," +msgstr "" + +#: python-novice-gapminder/_episodes/07-reading-tabular.md:382 +# blockquote, which can be cascaded +msgid "> > help(americas.to_csv)" +msgstr "" + +#: python-novice-gapminder/_episodes/07-reading-tabular.md:385 +# blockquote, which can be cascaded +msgid "> > Note that `help(to_csv)` throws an error! This is a subtlety and is due to the fact that `to_csv` is NOT a function in " +msgstr "" + +#: python-novice-gapminder/_episodes/07-reading-tabular.md:386 +# blockquote, which can be cascaded +msgid "> > and of itself and the actual call is `americas.to_csv`. " +msgstr "" + +#: python-novice-gapminder/_episodes/08-data-frames.md:1 +# Front Matter +msgid "---\n" +"title: \"Pandas DataFrames\"\n" +"teaching: 15\n" +"exercises: 15\n" +"questions:\n" +"- \"How can I do statistical analysis of tabular data?\"\n" +"objectives:\n" +"- \"Select individual values from a Pandas dataframe.\"\n" +"- \"Select entire rows or entire columns from a dataframe.\"\n" +"- \"Select a subset of both rows and columns from a dataframe in a single operation.\"\n" +"- \"Select a subset of a dataframe by a single Boolean criterion.\"\n" +"keypoints:\n" +"- \"Use `DataFrame.iloc[..., ...]` to select values by integer location.\"\n" +"- \"Use `:` on its own to mean all columns or all rows.\"\n" +"- \"Select multiple columns or rows using `DataFrame.loc` and a named slice.\"\n" +"- \"Result of slicing can be used in further operations.\"\n" +"- \"Use comparisons to select data based on value.\"\n" +"- \"Select values or NaN using a Boolean mask.\"\n" +"---" +msgstr "" + +#: python-novice-gapminder/_episodes/08-data-frames.md:21 +# header +msgid "## Note about Pandas DataFrames/Series" +msgstr "" + +#: python-novice-gapminder/_episodes/08-data-frames.md:23 +msgid "A [DataFrame][pandas-dataframe] is a collection of [Series][pandas-series];\n" +"The DataFrame is the way Pandas represents a table, and Series is the data-structure\n" +"Pandas use to represent a column." +msgstr "" + +#: python-novice-gapminder/_episodes/08-data-frames.md:27 +msgid "Pandas is built on top of the [Numpy][numpy] library, which in practice means that\n" +"most of the methods defined for Numpy Arrays apply to Pandas Series/DataFrames." +msgstr "" + +#: python-novice-gapminder/_episodes/08-data-frames.md:30 +msgid "What makes Pandas so attractive is the powerful interface to access individual records\n" +"of the table, proper handling of missing values, and relational-databases operations\n" +"between DataFrames." +msgstr "" + +#: python-novice-gapminder/_episodes/08-data-frames.md:34 +# header +msgid "## Selecting values" +msgstr "" + +#: python-novice-gapminder/_episodes/08-data-frames.md:36 +msgid "To access a value at the position `[i,j]` of a DataFrame, we have two options, depending on\n" +"what is the meaning of `i` in use.\n" +"Remember that a DataFrame provides a *index* as a way to identify the rows of the table;\n" +"a row, then, has a *position* inside the table as well as a *label*, which\n" +"uniquely identifies its *entry* in the DataFrame." +msgstr "" + +#: python-novice-gapminder/_episodes/08-data-frames.md:42 +# header +msgid "## Use `DataFrame.iloc[..., ...]` to select values by their (entry) position" +msgstr "" + +#: python-novice-gapminder/_episodes/08-data-frames.md:44 +# unordered list +msgid "* Can specify location by numerical index analogously to 2D version of character selection in strings." +msgstr "" + +#: python-novice-gapminder/_episodes/08-data-frames.md:46 +# code block +msgid "~~~\n" +"import pandas\n" +"data = pandas.read_csv('data/gapminder_gdp_europe.csv', index_col='country')\n" +"print(data.iloc[0, 0])\n" +"~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/08-data-frames.md:52 +#: python-novice-gapminder/_episodes/08-data-frames.md:66 +# code block +msgid "~~~\n" +"1601.056136\n" +"~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/08-data-frames.md:57 +# header +msgid "## Use `DataFrame.loc[..., ...]` to select values by their (entry) label." +msgstr "" + +#: python-novice-gapminder/_episodes/08-data-frames.md:59 +# unordered list +msgid "* Can specify location by row name analogously to 2D version of dictionary keys." +msgstr "" + +#: python-novice-gapminder/_episodes/08-data-frames.md:61 +# code block +msgid "~~~\n" +"data = pandas.read_csv('data/gapminder_gdp_europe.csv', index_col='country')\n" +"print(data.loc[\"Albania\", \"gdpPercap_1952\"])\n" +"~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/08-data-frames.md:70 +# header +msgid "## Use `:` on its own to mean all columns or all rows." +msgstr "" + +#: python-novice-gapminder/_episodes/08-data-frames.md:72 +# unordered list +msgid "* Just like Python's usual slicing notation." +msgstr "" + +#: python-novice-gapminder/_episodes/08-data-frames.md:74 +# code block +msgid "~~~\n" +"print(data.loc[\"Albania\", :])\n" +"~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/08-data-frames.md:78 +# code block +msgid "~~~\n" +"gdpPercap_1952 1601.056136\n" +"gdpPercap_1957 1942.284244\n" +"gdpPercap_1962 2312.888958\n" +"gdpPercap_1967 2760.196931\n" +"gdpPercap_1972 3313.422188\n" +"gdpPercap_1977 3533.003910\n" +"gdpPercap_1982 3630.880722\n" +"gdpPercap_1987 3738.932735\n" +"gdpPercap_1992 2497.437901\n" +"gdpPercap_1997 3193.054604\n" +"gdpPercap_2002 4604.211737\n" +"gdpPercap_2007 5937.029526\n" +"Name: Albania, dtype: float64\n" +"~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/08-data-frames.md:95 +# unordered list +msgid "* Would get the same result printing `data.loc[\"Albania\"]` (without a second index)." +msgstr "" + +#: python-novice-gapminder/_episodes/08-data-frames.md:97 +# code block +msgid "~~~\n" +"print(data.loc[:, \"gdpPercap_1952\"])\n" +"~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/08-data-frames.md:101 +# code block +msgid "~~~\n" +"country\n" +"Albania 1601.056136\n" +"Austria 6137.076492\n" +"Belgium 8343.105127\n" +"⋮ ⋮ ⋮\n" +"Switzerland 14734.232750\n" +"Turkey 1969.100980\n" +"United Kingdom 9979.508487\n" +"Name: gdpPercap_1952, dtype: float64\n" +"~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/08-data-frames.md:114 +# unordered list +msgid "* Would get the same result printing `data[\"gdpPercap_1952\"]`" +msgstr "" + +#: python-novice-gapminder/_episodes/08-data-frames.md:115 +# unordered list +msgid "* Also get the same result printing `data.gdpPercap_1952` (since it's a column name)" +msgstr "" + +#: python-novice-gapminder/_episodes/08-data-frames.md:117 +# header +msgid "## Select multiple columns or rows using `DataFrame.loc` and a named slice." +msgstr "" + +#: python-novice-gapminder/_episodes/08-data-frames.md:119 +# code block +msgid "~~~\n" +"print(data.loc['Italy':'Poland', 'gdpPercap_1962':'gdpPercap_1972'])\n" +"~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/08-data-frames.md:123 +# code block +msgid "~~~\n" +" gdpPercap_1962 gdpPercap_1967 gdpPercap_1972\n" +"country\n" +"Italy 8243.582340 10022.401310 12269.273780\n" +"Montenegro 4649.593785 5907.850937 7778.414017\n" +"Netherlands 12790.849560 15363.251360 18794.745670\n" +"Norway 13450.401510 16361.876470 18965.055510\n" +"Poland 5338.752143 6557.152776 8006.506993\n" +"~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/08-data-frames.md:134 +msgid "In the above code, we discover that **slicing using `loc` is inclusive at both\n" +"ends**, which differs from **slicing using `iloc`**, where slicing indicates\n" +"everything up to but not including the final index. " +msgstr "" + +#: python-novice-gapminder/_episodes/08-data-frames.md:139 +# header +msgid "## Result of slicing can be used in further operations." +msgstr "" + +#: python-novice-gapminder/_episodes/08-data-frames.md:141 +# unordered list +msgid "* Usually don't just print a slice." +msgstr "" + +#: python-novice-gapminder/_episodes/08-data-frames.md:142 +# unordered list +msgid "* All the statistical operators that work on entire dataframes" +msgstr "" + +#: python-novice-gapminder/_episodes/08-data-frames.md:143 +msgid " work the same way on slices.\n" +"* E.g., calculate max of a slice." +msgstr "" + +#: python-novice-gapminder/_episodes/08-data-frames.md:146 +# code block +msgid "~~~\n" +"print(data.loc['Italy':'Poland', 'gdpPercap_1962':'gdpPercap_1972'].max())\n" +"~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/08-data-frames.md:150 +# code block +msgid "~~~\n" +"gdpPercap_1962 13450.40151\n" +"gdpPercap_1967 16361.87647\n" +"gdpPercap_1972 18965.05551\n" +"dtype: float64\n" +"~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/08-data-frames.md:158 +# code block +msgid "~~~\n" +"print(data.loc['Italy':'Poland', 'gdpPercap_1962':'gdpPercap_1972'].min())\n" +"~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/08-data-frames.md:162 +# code block +msgid "~~~\n" +"gdpPercap_1962 4649.593785\n" +"gdpPercap_1967 5907.850937\n" +"gdpPercap_1972 7778.414017\n" +"dtype: float64\n" +"~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/08-data-frames.md:170 +# header +msgid "## Use comparisons to select data based on value." +msgstr "" + +#: python-novice-gapminder/_episodes/08-data-frames.md:172 +# unordered list +msgid "* Comparison is applied element by element." +msgstr "" + +#: python-novice-gapminder/_episodes/08-data-frames.md:173 +# unordered list +msgid "* Returns a similarly-shaped dataframe of `True` and `False`." +msgstr "" + +#: python-novice-gapminder/_episodes/08-data-frames.md:175 +# code block +msgid "~~~\n" +"# Use a subset of data to keep output readable.\n" +"subset = data.loc['Italy':'Poland', 'gdpPercap_1962':'gdpPercap_1972']\n" +"print('Subset of data:\\n', subset)\n" +"\n" +"# Which values were greater than 10000 ?\n" +"print('\\nWhere are values large?\\n', subset > 10000)\n" +"~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/08-data-frames.md:184 +# code block +msgid "~~~\n" +"Subset of data:\n" +" gdpPercap_1962 gdpPercap_1967 gdpPercap_1972\n" +"country\n" +"Italy 8243.582340 10022.401310 12269.273780\n" +"Montenegro 4649.593785 5907.850937 7778.414017\n" +"Netherlands 12790.849560 15363.251360 18794.745670\n" +"Norway 13450.401510 16361.876470 18965.055510\n" +"Poland 5338.752143 6557.152776 8006.506993\n" +"\n" +"Where are values large?\n" +" gdpPercap_1962 gdpPercap_1967 gdpPercap_1972\n" +"country\n" +"Italy False True True\n" +"Montenegro False False False\n" +"Netherlands True True True\n" +"Norway True True True\n" +"Poland False False False\n" +"~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/08-data-frames.md:205 +# header +msgid "## Select values or NaN using a Boolean mask." +msgstr "" + +#: python-novice-gapminder/_episodes/08-data-frames.md:207 +# unordered list +msgid "* A frame full of Booleans is sometimes called a *mask* because of how it can be used." +msgstr "" + +#: python-novice-gapminder/_episodes/08-data-frames.md:209 +# code block +msgid "~~~\n" +"mask = subset > 10000\n" +"print(subset[mask])\n" +"~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/08-data-frames.md:214 +# code block +msgid "~~~\n" +" gdpPercap_1962 gdpPercap_1967 gdpPercap_1972\n" +"country\n" +"Italy NaN 10022.40131 12269.27378\n" +"Montenegro NaN NaN NaN\n" +"Netherlands 12790.84956 15363.25136 18794.74567\n" +"Norway 13450.40151 16361.87647 18965.05551\n" +"Poland NaN NaN NaN\n" +"~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/08-data-frames.md:225 +# unordered list +msgid "* Get the value where the mask is true, and NaN (Not a Number) where it is false." +msgstr "" + +#: python-novice-gapminder/_episodes/08-data-frames.md:226 +# unordered list +msgid "* Useful because NaNs are ignored by operations like max, min, average, etc." +msgstr "" + +#: python-novice-gapminder/_episodes/08-data-frames.md:228 +# code block +msgid "~~~\n" +"print(subset[subset > 10000].describe())\n" +"~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/08-data-frames.md:232 +# code block +msgid "~~~\n" +" gdpPercap_1962 gdpPercap_1967 gdpPercap_1972\n" +"count 2.000000 3.000000 3.000000\n" +"mean 13120.625535 13915.843047 16676.358320\n" +"std 466.373656 3408.589070 3817.597015\n" +"min 12790.849560 10022.401310 12269.273780\n" +"25% 12955.737547 12692.826335 15532.009725\n" +"50% 13120.625535 15363.251360 18794.745670\n" +"75% 13285.513523 15862.563915 18879.900590\n" +"max 13450.401510 16361.876470 18965.055510\n" +"~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/08-data-frames.md:245 +# header +msgid "## Select-Apply-Combine operations" +msgstr "" + +#: python-novice-gapminder/_episodes/08-data-frames.md:247 +msgid "Pandas vectorizing methods and grouping operations are features that provide users \n" +"much flexibility to analyse their data." +msgstr "" + +#: python-novice-gapminder/_episodes/08-data-frames.md:250 +msgid "For instance, let's say we want to have a clearer view on how the European countries \n" +"split themselves according to their GDP." +msgstr "" + +#: python-novice-gapminder/_episodes/08-data-frames.md:253 +# ordered list +msgid "1. We may have a glance by splitting the countries in two groups during the years surveyed," +msgstr "" + +#: python-novice-gapminder/_episodes/08-data-frames.md:254 +msgid " those who presented a GDP *higher* than the European average and those with a *lower* GDP.\n" +"2. We then estimate a *wealthy score* based on the historical (from 1962 to 2007) values,\n" +" where we account how many times a country has participated in the groups of *lower* or *higher* GDP" +msgstr "" + +#: python-novice-gapminder/_episodes/08-data-frames.md:258 +# code block +msgid "~~~\n" +"mask_higher = data.apply(lambda x:x>x.mean())\n" +"wealth_score = mask_higher.aggregate('sum',axis=1)/len(data.columns)\n" +"wealth_score\n" +"~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/08-data-frames.md:264 +# code block +msgid "~~~\n" +"country\n" +"Albania 0.000000\n" +"Austria 1.000000\n" +"Belgium 1.000000\n" +"Bosnia and Herzegovina 0.000000\n" +"Bulgaria 0.000000\n" +"Croatia 0.000000\n" +"Czech Republic 0.500000\n" +"Denmark 1.000000\n" +"Finland 1.000000\n" +"France 1.000000\n" +"Germany 1.000000\n" +"Greece 0.333333\n" +"Hungary 0.000000\n" +"Iceland 1.000000\n" +"Ireland 0.333333\n" +"Italy 0.500000\n" +"Montenegro 0.000000\n" +"Netherlands 1.000000\n" +"Norway 1.000000\n" +"Poland 0.000000\n" +"Portugal 0.000000\n" +"Romania 0.000000\n" +"Serbia 0.000000\n" +"Slovak Republic 0.000000\n" +"Slovenia 0.333333\n" +"Spain 0.333333\n" +"Sweden 1.000000\n" +"Switzerland 1.000000\n" +"Turkey 0.000000\n" +"United Kingdom 1.000000\n" +"dtype: float64\n" +"~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/08-data-frames.md:300 +msgid "Finally, for each group in the `wealth_score` table, we sum their (financial) contribution\n" +"across the years surveyed:" +msgstr "" + +#: python-novice-gapminder/_episodes/08-data-frames.md:303 +# code block +msgid "~~~\n" +"data.groupby(wealth_score).sum()\n" +"~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/08-data-frames.md:307 +# code block +msgid "~~~\n" +" gdpPercap_1952 gdpPercap_1957 gdpPercap_1962 gdpPercap_1967 \\\n" +"0.000000 36916.854200 46110.918793 56850.065437 71324.848786 \n" +"0.333333 16790.046878 20942.456800 25744.935321 33567.667670 \n" +"0.500000 11807.544405 14505.000150 18380.449470 21421.846200 \n" +"1.000000 104317.277560 127332.008735 149989.154201 178000.350040 \n" +"\n" +" gdpPercap_1972 gdpPercap_1977 gdpPercap_1982 gdpPercap_1987 \\\n" +"0.000000 88569.346898 104459.358438 113553.768507 119649.599409 \n" +"0.333333 45277.839976 53860.456750 59679.634020 64436.912960 \n" +"0.500000 25377.727380 29056.145370 31914.712050 35517.678220 \n" +"1.000000 215162.343140 241143.412730 263388.781960 296825.131210 \n" +"\n" +" gdpPercap_1992 gdpPercap_1997 gdpPercap_2002 gdpPercap_2007 \n" +"0.000000 92380.047256 103772.937598 118590.929863 149577.357928 \n" +"0.333333 67918.093220 80876.051580 102086.795210 122803.729520 \n" +"0.500000 36310.666080 40723.538700 45564.308390 51403.028210 \n" +"1.000000   315238.235970   346930.926170   385109.939210   427850.333420\n" +"~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/08-data-frames.md:329 +# blockquote, which can be cascaded +msgid "> ## Selection of Individual Values" +msgstr "" + +#: python-novice-gapminder/_episodes/08-data-frames.md:330 +msgid ">\n" +"> Assume Pandas has been imported into your notebook\n" +"> and the Gapminder GDP data for Europe has been loaded:\n" +">\n" +"> ~~~\n" +"> import pandas\n" +">\n" +"> df = pandas.read_csv('data/gapminder_gdp_europe.csv', index_col='country')\n" +"> ~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/08-data-frames.md:340 +msgid ">\n" +"> Write an expression to find the Per Capita GDP of Serbia in 2007." +msgstr "" + +#: python-novice-gapminder/_episodes/08-data-frames.md:343 +msgid ">\n" +"> > ## Solution\n" +"> > The selection can be done by using the labels for both the row (\"Serbia\") and the column (\"gdpPercap_2007\"):\n" +"> > ~~~\n" +"> > print(df.loc['Serbia', 'gdpPercap_2007'])\n" +"> > ~~~\n" +"> >{: .python}\n" +"> > The output is\n" +"> > ~~~\n" +"> > 9786.534714\n" +"> > ~~~\n" +"> >{: .output}" +msgstr "" + +#: python-novice-gapminder/_episodes/08-data-frames.md:358 +# blockquote, which can be cascaded +msgid "> ## Extent of Slicing" +msgstr "" + +#: python-novice-gapminder/_episodes/08-data-frames.md:359 +msgid ">\n" +"> 1. Do the two statements below produce the same output?\n" +"> 2. Based on this,\n" +"> what rule governs what is included (or not) in numerical slices and named slices in Pandas?\n" +"> \n" +"> ~~~\n" +"> print(data.iloc[0:2, 0:2])\n" +"> print(data.loc['Albania':'Belgium', 'gdpPercap_1952':'gdpPercap_1962'])\n" +"> ~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/08-data-frames.md:373 +# blockquote, which can be cascaded +msgid "> > No, they do not produce the same output! The output of the first statement is:" +msgstr "" + +#: python-novice-gapminder/_episodes/08-data-frames.md:375 +# blockquote, which can be cascaded +msgid "> > gdpPercap_1952 gdpPercap_1957" +msgstr "" + +#: python-novice-gapminder/_episodes/08-data-frames.md:376 +# blockquote, which can be cascaded +msgid "> > country " +msgstr "" + +#: python-novice-gapminder/_episodes/08-data-frames.md:377 +# blockquote, which can be cascaded +msgid "> > Albania 1601.056136 1942.284244" +msgstr "" + +#: python-novice-gapminder/_episodes/08-data-frames.md:378 +# blockquote, which can be cascaded +msgid "> > Austria 6137.076492 8842.598030" +msgstr "" + +#: python-novice-gapminder/_episodes/08-data-frames.md:380 +#: python-novice-gapminder/_episodes/08-data-frames.md:389 +# blockquote, which can be cascaded +msgid "> >{: .output}" +msgstr "" + +#: python-novice-gapminder/_episodes/08-data-frames.md:381 +# blockquote, which can be cascaded +msgid "> > The second statement gives:" +msgstr "" + +#: python-novice-gapminder/_episodes/08-data-frames.md:383 +# blockquote, which can be cascaded +msgid "> > gdpPercap_1952 gdpPercap_1957 gdpPercap_1962" +msgstr "" + +#: python-novice-gapminder/_episodes/08-data-frames.md:384 +# blockquote, which can be cascaded +msgid "> > country " +msgstr "" + +#: python-novice-gapminder/_episodes/08-data-frames.md:385 +# blockquote, which can be cascaded +msgid "> > Albania 1601.056136 1942.284244 2312.888958" +msgstr "" + +#: python-novice-gapminder/_episodes/08-data-frames.md:386 +# blockquote, which can be cascaded +msgid "> > Austria 6137.076492 8842.598030 10750.721110" +msgstr "" + +#: python-novice-gapminder/_episodes/08-data-frames.md:387 +# blockquote, which can be cascaded +msgid "> > Belgium 8343.105127 9714.960623 10991.206760" +msgstr "" + +#: python-novice-gapminder/_episodes/08-data-frames.md:390 +# blockquote, which can be cascaded +msgid "> > Clearly, the second statement produces an additional column and an additional row compared to the first statement. " +msgstr "" + +#: python-novice-gapminder/_episodes/08-data-frames.md:391 +# blockquote, which can be cascaded +msgid "> > What conclusion can we draw? We see that a numerical slice, 0:2, *omits* the final index (i.e. index 2)" +msgstr "" + +#: python-novice-gapminder/_episodes/08-data-frames.md:392 +# blockquote, which can be cascaded +msgid "> > in the range provided," +msgstr "" + +#: python-novice-gapminder/_episodes/08-data-frames.md:393 +# blockquote, which can be cascaded +msgid "> > while a named slice, 'gdpPercap_1952':'gdpPercap_1962', *includes* the final element." +msgstr "" + +#: python-novice-gapminder/_episodes/08-data-frames.md:397 +# blockquote, which can be cascaded +msgid "> ## Reconstructing Data" +msgstr "" + +#: python-novice-gapminder/_episodes/08-data-frames.md:398 +msgid ">\n" +"> Explain what each line in the following short program does:\n" +"> what is in `first`, `second`, etc.?\n" +">\n" +"> ~~~\n" +"> first = pandas.read_csv('data/gapminder_all.csv', index_col='country')\n" +"> second = first[first['continent'] == 'Americas']\n" +"> third = second.drop('Puerto Rico')\n" +"> fourth = third.drop('continent', axis = 1)\n" +"> fourth.to_csv('result.csv')\n" +"> ~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/08-data-frames.md:411 +msgid ">\n" +"> > ## Solution\n" +"> > Let's go through this piece of code line by line.\n" +"> > ~~~\n" +"> > first = pandas.read_csv('data/gapminder_all.csv', index_col='country')\n" +"> > ~~~\n" +"> > {: .python}\n" +"> > This line loads the dataset containing the GDP data from all countries into a dataframe called \n" +"> > `first`. The `index_col='country'` parameter selects which column to use as the \n" +"> > row labels in the dataframe. \n" +"> > ~~~\n" +"> > second = first[first['continent'] == 'Americas']\n" +"> > ~~~\n" +"> > {: .python}\n" +"> > This line makes a selection: only those rows of `first` for which the 'continent' column matches \n" +"> > 'Americas' are extracted. Notice how the Boolean expression inside the brackets, \n" +"> > `first['continent'] == 'Americas'`, is used to select only those rows where the expression is true. \n" +"> > Try printing this expression! Can you print also its individual True/False elements? \n" +"> > (hint: first assign the expression to a variable)\n" +"> > ~~~\n" +"> > third = second.drop('Puerto Rico')\n" +"> > ~~~\n" +"> > {: .python}\n" +"> > As the syntax suggests, this line drops the row from `second` where the label is 'Puerto Rico'. The \n" +"> > resulting dataframe `third` has one row less than the original dataframe `second`.\n" +"> > ~~~\n" +"> > fourth = third.drop('continent', axis = 1)\n" +"> > ~~~\n" +"> > {: .python}\n" +"> > Again we apply the drop function, but in this case we are dropping not a row but a whole column. \n" +"> > To accomplish this, we need to specify also the `axis` parameter (we want to drop the second column \n" +"> > which has index 1).\n" +"> > ~~~\n" +"> > fourth.to_csv('result.csv')\n" +"> > ~~~\n" +"> > {: .python}\n" +"> > The final step is to write the data that we have been working on to a csv file. Pandas makes this easy \n" +"> > with the `to_csv()` function. The only required argument to the function is the filename. Note that the \n" +"> > file will be written in the directory from which you started the Jupyter or Python session." +msgstr "" + +#: python-novice-gapminder/_episodes/08-data-frames.md:453 +# blockquote, which can be cascaded +msgid "> ## Selecting Indices" +msgstr "" + +#: python-novice-gapminder/_episodes/08-data-frames.md:454 +msgid ">\n" +"> Explain in simple terms what `idxmin` and `idxmax` do in the short program below.\n" +"> When would you use these methods?\n" +">\n" +"> ~~~\n" +"> data = pandas.read_csv('data/gapminder_gdp_europe.csv', index_col='country')\n" +"> print(data.idxmin())\n" +"> print(data.idxmax())\n" +"> ~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/08-data-frames.md:465 +msgid ">\n" +"> > ## Solution\n" +"> > For each column in `data`, `idxmin` will return the index value corresponding to each column's minimum;\n" +"> > `idxmax` will do accordingly the same for each column's maximum value.\n" +"> >\n" +"> > You can use these functions whenever you want to get the row index of the minimum/maximum value and not the actual minimum/maximum value." +msgstr "" + +#: python-novice-gapminder/_episodes/08-data-frames.md:474 +# blockquote, which can be cascaded +msgid "> ## Practice with Selection" +msgstr "" + +#: python-novice-gapminder/_episodes/08-data-frames.md:475 +msgid ">\n" +"> Assume Pandas has been imported and the Gapminder GDP data for Europe has been loaded.\n" +"> Write an expression to select each of the following:\n" +">\n" +"> 1. GDP per capita for all countries in 1982.\n" +"> 2. GDP per capita for Denmark for all years.\n" +"> 3. GDP per capita for all countries for years *after* 1985.\n" +"> 4. GDP per capita for each country in 2007 as a multiple of \n" +"> GDP per capita for that country in 1952." +msgstr "" + +#: python-novice-gapminder/_episodes/08-data-frames.md:485 +msgid ">\n" +"> > ## Solution\n" +"> > 1:\n" +"> > ~~~\n" +"> > data['gdpPercap_1982']\n" +"> > ~~~\n" +"> > {: .python}\n" +"> >\n" +"> > 2:\n" +"> > ~~~\n" +"> > data.loc['Denmark',:]\n" +"> > ~~~\n" +"> > {: .python}\n" +"> >\n" +"> > 3:\n" +"> > ~~~\n" +"> > data.loc[:,'gdpPercap_1985':]\n" +"> > ~~~\n" +"> > {: .python}\n" +"> > Pandas is smart enough to recognize the number at the end of the column label and does not give you an error, although no column named `gdpPercap_1985` actually exists. This is useful if new columns are added to the CSV file later.\n" +"> >\n" +"> > 4:\n" +"> > ~~~\n" +"> > data['gdpPercap_2007']/data['gdpPercap_1952']\n" +"> > ~~~\n" +"> > {: .python}" +msgstr "" + +#: python-novice-gapminder/_episodes/08-data-frames.md:514 +# blockquote, which can be cascaded +msgid "> ## Interpretation" +msgstr "" + +#: python-novice-gapminder/_episodes/08-data-frames.md:515 +msgid ">\n" +"> Poland's borders have been stable since 1945,\n" +"> but changed several times in the years before then.\n" +"> How would you handle this if you were creating a table of GDP per capita for Poland\n" +"> for the entire twentieth century?" +msgstr "" + +#: python-novice-gapminder/_episodes/08-data-frames.md:523 +msgid "[pandas-dataframe]: https://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.html\n" +"[pandas-series]: https://pandas.pydata.org/pandas-docs/stable/generated/pandas.Series.html\n" +"[numpy]: http://www.numpy.org/" +msgstr "" + +#: python-novice-gapminder/_episodes/09-plotting.md:1 +# Front Matter +msgid "---\n" +"title: \"Plotting\"\n" +"teaching: 15\n" +"exercises: 15\n" +"questions:\n" +"- \"How can I plot my data?\"\n" +"- \"How can I save my plot for publishing?\"\n" +"objectives:\n" +"- \"Create a time series plot showing a single data set.\"\n" +"- \"Create a scatter plot showing relationship between two data sets.\"\n" +"keypoints:\n" +"- \"[`matplotlib`](https://matplotlib.org/) is the most widely used scientific plotting library in Python.\"\n" +"- \"Plot data directly from a Pandas dataframe.\"\n" +"- \"Select and transform data, then plot it.\"\n" +"- \"Many styles of plot are available: see the [Python Graph Gallery](https://python-graph-gallery.com/matplotlib/) for more options.\"\n" +"- \"Can plot many sets of data together.\"\n" +"---" +msgstr "" + +#: python-novice-gapminder/_episodes/09-plotting.md:18 +# header +msgid "## [`matplotlib`](https://matplotlib.org/) is the most widely used scientific plotting library in Python." +msgstr "" + +#: python-novice-gapminder/_episodes/09-plotting.md:20 +# unordered list +msgid "* Commonly use a sub-library called [`matplotlib.pyplot`](https://matplotlib.org/api/pyplot_api.html)." +msgstr "" + +#: python-novice-gapminder/_episodes/09-plotting.md:21 +# unordered list +msgid "* The Jupyter Notebook will render plots inline if we ask it to using a \"magic\" command." +msgstr "" + +#: python-novice-gapminder/_episodes/09-plotting.md:23 +# code block +msgid "~~~\n" +"%matplotlib inline\n" +"import matplotlib.pyplot as plt\n" +"~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/09-plotting.md:27 +#: python-novice-gapminder/_episodes/09-plotting.md:39 +#: python-novice-gapminder/_episodes/09-plotting.md:60 +#: python-novice-gapminder/_episodes/09-plotting.md:72 +#: python-novice-gapminder/_episodes/09-plotting.md:84 +#: python-novice-gapminder/_episodes/09-plotting.md:100 +#: python-novice-gapminder/_episodes/09-plotting.md:120 +#: python-novice-gapminder/_episodes/09-plotting.md:129 +msgid "{: .language-python}" +msgstr "" + +#: python-novice-gapminder/_episodes/09-plotting.md:29 +# unordered list +msgid "* Simple plots are then (fairly) simple to create." +msgstr "" + +#: python-novice-gapminder/_episodes/09-plotting.md:31 +# code block +msgid "~~~\n" +"time = [0, 1, 2, 3]\n" +"position = [0, 100, 200, 300]\n" +"\n" +"plt.plot(time, position)\n" +"plt.xlabel('Time (hr)')\n" +"plt.ylabel('Position (km)')\n" +"~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/09-plotting.md:41 +msgid "![Simple Position-Time Plot](../fig/9_simple_position_time_plot.png)\n" +"## Plot data directly from a [`Pandas dataframe`](https://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.html)." +msgstr "" + +#: python-novice-gapminder/_episodes/09-plotting.md:44 +# unordered list +msgid "* We can also plot [Pandas dataframes](https://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.html)." +msgstr "" + +#: python-novice-gapminder/_episodes/09-plotting.md:45 +# unordered list +msgid "* This implicitly uses [`matplotlib.pyplot`](https://matplotlib.org/api/pyplot_api.html)." +msgstr "" + +#: python-novice-gapminder/_episodes/09-plotting.md:46 +# unordered list +msgid "* Before plotting, we convert the column headings from a `string` to `integer` data type, since they represent numerical values" +msgstr "" + +#: python-novice-gapminder/_episodes/09-plotting.md:48 +# code block +msgid "~~~\n" +"import pandas\n" +"\n" +"data = pandas.read_csv('data/gapminder_gdp_oceania.csv', index_col='country')\n" +"\n" +"# Extract year from last 4 characters of each column name\n" +"years = data.columns.str.strip('gdpPercap_')\n" +"# Convert year values to integers, saving results back to dataframe\n" +"data.columns = years.astype(int)\n" +"\n" +"data.loc['Australia'].plot()\n" +"~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/09-plotting.md:62 +msgid "![GDP plot for Australia](../fig/9_gdp_australia.png)\n" +"## Select and transform data, then plot it." +msgstr "" + +#: python-novice-gapminder/_episodes/09-plotting.md:65 +# unordered list +msgid "* By default, [`DataFrame.plot`](https://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.plot.html#pandas.DataFrame.plot) plots with the rows as the X axis." +msgstr "" + +#: python-novice-gapminder/_episodes/09-plotting.md:66 +# unordered list +msgid "* We can transpose the data in order to plot multiple series." +msgstr "" + +#: python-novice-gapminder/_episodes/09-plotting.md:68 +# code block +msgid "~~~\n" +"data.T.plot()\n" +"plt.ylabel('GDP per capita')\n" +"~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/09-plotting.md:74 +msgid "![GDP plot for Australia and New Zealand](../fig/9_gdp_australia_nz.png)\n" +"## Many styles of plot are available." +msgstr "" + +#: python-novice-gapminder/_episodes/09-plotting.md:77 +# unordered list +msgid "* For example, do a bar plot using a fancier style." +msgstr "" + +#: python-novice-gapminder/_episodes/09-plotting.md:79 +# code block +msgid "~~~\n" +"plt.style.use('ggplot')\n" +"data.T.plot(kind='bar')\n" +"plt.ylabel('GDP per capita')\n" +"~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/09-plotting.md:86 +msgid "![GDP barplot for Australia](../fig/9_gdp_bar.png)" +msgstr "" + +#: python-novice-gapminder/_episodes/09-plotting.md:88 +# header +msgid "## Data can also be plotted by calling the `matplotlib` `plot` function directly." +msgstr "" + +#: python-novice-gapminder/_episodes/09-plotting.md:89 +# unordered list +msgid "* The command is `plt.plot(x, y)`" +msgstr "" + +#: python-novice-gapminder/_episodes/09-plotting.md:90 +# unordered list +msgid "* The color / format of markers can also be specified as an optical argument: e.g. 'b-' is a blue line, 'g--' is a green dashed line." +msgstr "" + +#: python-novice-gapminder/_episodes/09-plotting.md:92 +# header +msgid "## Get Australia data from dataframe" +msgstr "" + +#: python-novice-gapminder/_episodes/09-plotting.md:94 +# code block +msgid "~~~\n" +"years = data.columns\n" +"gdp_australia = data.loc['Australia']\n" +"\n" +"plt.plot(years, gdp_australia, 'g--')\n" +"~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/09-plotting.md:102 +msgid "![GDP formatted plot for Australia](../fig/9_gdp_australia_formatted.png)" +msgstr "" + +#: python-novice-gapminder/_episodes/09-plotting.md:104 +# header +msgid "## Can plot many sets of data together." +msgstr "" + +#: python-novice-gapminder/_episodes/09-plotting.md:106 +# code block +msgid "~~~\n" +"# Select two countries' worth of data.\n" +"gdp_australia = data.loc['Australia']\n" +"gdp_nz = data.loc['New Zealand']\n" +"\n" +"# Plot with differently-colored markers.\n" +"plt.plot(years, gdp_australia, 'b-', label='Australia')\n" +"plt.plot(years, gdp_nz, 'g-', label='New Zealand')\n" +"\n" +"# Create legend.\n" +"plt.legend(loc='upper left')\n" +"plt.xlabel('Year')\n" +"plt.ylabel('GDP per capita ($)')\n" +"~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/09-plotting.md:122 +msgid "![GDP formatted plot for Australia and New Zealand](../fig/9_gdp_australia_nz_formatted.png)\n" +"* Plot a scatter plot correlating the GDP of Australia and New Zealand\n" +"* Use either `plt.scatter` or `DataFrame.plot.scatter`" +msgstr "" + +#: python-novice-gapminder/_episodes/09-plotting.md:126 +# code block +msgid "~~~\n" +"plt.scatter(gdp_australia, gdp_nz)\n" +"~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/09-plotting.md:131 +msgid "![GDP correlation using plt.scatter](../fig/9_gdp_correlation_plt.png)\n" +"~~~\n" +"data.T.plot.scatter(x = 'Australia', y = 'New Zealand')\n" +"~~~\n" +"{: .language-python}" +msgstr "" + +#: python-novice-gapminder/_episodes/09-plotting.md:137 +msgid "![GDP correlation using data.T.plot.scatter](../fig/9_gdp_correlation_data.png)\n" +"> ## Minima and Maxima\n" +">\n" +"> Fill in the blanks below to plot the minimum GDP per capita over time\n" +"> for all the countries in Europe.\n" +"> Modify it again to plot the maximum GDP per capita over time for Europe.\n" +">\n" +"> ~~~\n" +"> data_europe = pandas.read_csv('data/gapminder_gdp_europe.csv', index_col='country')\n" +"> data_europe.____.plot(label='min')\n" +"> data_europe.____\n" +"> plt.legend(loc='best')\n" +"> plt.xticks(rotation=90)\n" +"> ~~~\n" +"> {: .language-python}\n" +">\n" +"> > ## Solution\n" +"> >\n" +"> > ~~~\n" +"> > data_europe = pandas.read_csv('data/gapminder_gdp_europe.csv', index_col='country')\n" +"> > data_europe.min().plot(label='min')\n" +"> > data_europe.max().plot(label='max')\n" +"> > plt.legend(loc='best')\n" +"> > plt.xticks(rotation=90)\n" +"> > ~~~\n" +"> > {: .language-python}\n" +"> > ![Minima Maxima Solution](../fig/9_minima_maxima_solution.png)" +msgstr "" + +#: python-novice-gapminder/_episodes/09-plotting.md:167 +# blockquote, which can be cascaded +msgid "> ## Correlations" +msgstr "" + +#: python-novice-gapminder/_episodes/09-plotting.md:168 +msgid ">\n" +"> Modify the example in the notes to create a scatter plot showing\n" +"> the relationship between the minimum and maximum GDP per capita\n" +"> among the countries in Asia for each year in the data set.\n" +"> What relationship do you see (if any)?\n" +">\n" +"> ~~~\n" +"> data_asia = pandas.read_csv('data/gapminder_gdp_asia.csv', index_col='country')\n" +"> data_asia.describe().T.plot(kind='scatter', x='min', y='max')\n" +"> ~~~\n" +"> {: .language-python}\n" +">\n" +"> > ## Solution\n" +"> >\n" +"> > ![Correlations Solution 1](../fig/9_correlations_solution1.png)\n" +"> >\n" +"> > No particular correlations can be seen between the minimum and maximum gdp values\n" +"> > year on year. It seems the fortunes of asian countries do not rise and fall together.\n" +"> >" +msgstr "" + +#: python-novice-gapminder/_episodes/09-plotting.md:188 +msgid ">\n" +"> You might note that the variability in the maximum is much higher than\n" +"> that of the minimum. Take a look at the maximum and the max indexes:\n" +">\n" +"> ~~~\n" +"> data_asia = pandas.read_csv('data/gapminder_gdp_asia.csv', index_col='country')\n" +"> data_asia.max().plot()\n" +"> print(data_asia.idxmax())\n" +"> print(data_asia.idxmin())\n" +"> ~~~\n" +"> {: .language-python}\n" +"> > ## Solution\n" +"> > ![Correlations Solution 2](../fig/9_correlations_solution2.png)\n" +"> >\n" +"> > Seems the variability in this value is due to a sharp drop after 1972.\n" +"> > Some geopolitics at play perhaps? Given the dominance of oil producing countries,\n" +"> > maybe the Brent crude index would make an interesting comparison?\n" +"> > Whilst Myanmar consistently has the lowest gdp, the highest gdb nation has varied\n" +"> > more notably.\n" +"> >" +msgstr "" + +#: python-novice-gapminder/_episodes/09-plotting.md:211 +# blockquote, which can be cascaded +msgid "> ## More Correlations" +msgstr "" + +#: python-novice-gapminder/_episodes/09-plotting.md:212 +msgid ">\n" +"> This short program creates a plot showing\n" +"> the correlation between GDP and life expectancy for 2007,\n" +"> normalizing marker size by population:\n" +">\n" +"> ~~~\n" +"> data_all = pandas.read_csv('data/gapminder_all.csv', index_col='country')\n" +"> data_all.plot(kind='scatter', x='gdpPercap_2007', y='lifeExp_2007',\n" +"> s=data_all['pop_2007']/1e6)\n" +"> ~~~\n" +"> {: .language-python}\n" +">\n" +"> Using online help and other resources,\n" +"> explain what each argument to `plot` does.\n" +">\n" +"> > ## Solution\n" +"> > ![More Correlations Solution](../fig/9_more_correlations_solution.png)\n" +"> >\n" +"> > A good place to look is the documentation for the plot function -\n" +"> > help(data_all.plot).\n" +"> >\n" +"> > kind - As seen already this determines the kind of plot to be drawn.\n" +"> >\n" +"> > x and y - A column name or index that determines what data will be\n" +"> > placed on the x and y axes of the plot\n" +"> >\n" +"> > s - Details for this can be found in the documentation of plt.scatter.\n" +"> > A single number or one value for each data point. Determines the size\n" +"> > of the plotted points.\n" +"> >" +msgstr "" + +#: python-novice-gapminder/_episodes/09-plotting.md:245 +# blockquote, which can be cascaded +msgid "> ## Saving your plot to a file" +msgstr "" + +#: python-novice-gapminder/_episodes/09-plotting.md:247 +# blockquote, which can be cascaded +msgid "> If you are satisfied with the plot you see you may want to save it to a file," +msgstr "" + +#: python-novice-gapminder/_episodes/09-plotting.md:248 +# blockquote, which can be cascaded +msgid "> perhaps to include it in a publication. There is a function in the" +msgstr "" + +#: python-novice-gapminder/_episodes/09-plotting.md:249 +# blockquote, which can be cascaded +msgid "> matplotlib.pyplot module that accomplishes this:" +msgstr "" + +#: python-novice-gapminder/_episodes/09-plotting.md:250 +# blockquote, which can be cascaded +msgid "> [savefig](https://matplotlib.org/api/_as_gen/matplotlib.pyplot.savefig.html)." +msgstr "" + +#: python-novice-gapminder/_episodes/09-plotting.md:251 +# blockquote, which can be cascaded +msgid "> Calling this function, e.g. with" +msgstr "" + +#: python-novice-gapminder/_episodes/09-plotting.md:253 +# blockquote, which can be cascaded +msgid "> plt.savefig('my_figure.png')" +msgstr "" + +#: python-novice-gapminder/_episodes/09-plotting.md:255 +# blockquote, which can be cascaded +msgid "> {: .language-python}" +msgstr "" + +#: python-novice-gapminder/_episodes/09-plotting.md:257 +# blockquote, which can be cascaded +msgid "> will save the current figure to the file `my_figure.png`. The file format" +msgstr "" + +#: python-novice-gapminder/_episodes/09-plotting.md:258 +# blockquote, which can be cascaded +msgid "> will automatically be deduced from the file name extension (other formats" +msgstr "" + +#: python-novice-gapminder/_episodes/09-plotting.md:259 +# blockquote, which can be cascaded +msgid "> are pdf, ps, eps and svg)." +msgstr "" + +#: python-novice-gapminder/_episodes/09-plotting.md:260 +msgid ">\n" +"> Note that functions in `plt` refer to a global figure variable\n" +"> and after a figure has been displayed to the screen (e.g. with `plt.show`) \n" +"> matplotlib will make this variable refer to a new empty figure.\n" +"> Therefore, make sure you call `plt.savefig` before the plot is displayed to\n" +"> the screen, otherwise you may find a file with an empty plot.\n" +">\n" +"> When using dataframes, data is often generated and plotted to screen in one line,\n" +"> and `plt.savefig` seems not to be a possible approach.\n" +"> One possibility to save the figure to file is then to\n" +">\n" +"> * save a reference to the current figure in a local variable (with `plt.gcf`) \n" +"> * call the `savefig` class method from that varible.\n" +">\n" +"> ~~~\n" +"> fig = plt.gcf() # get current figure\n" +"> data.plot(kind='bar')\n" +"> fig.savefig('my_figure.png')\n" +"> ~~~\n" +"> {: .language-python}" +msgstr "" + +#: python-novice-gapminder/_episodes/10-lunch.md:1 +# Front Matter +msgid "---\n" +"layout: break\n" +"title: \"Lunch\"\n" +"teaching: 0\n" +"exercises: 0\n" +"break: 45\n" +"---" +msgstr "" + +#: python-novice-gapminder/_episodes/10-lunch.md:8 +#: python-novice-gapminder/_episodes/16-coffee.md:8 +msgid "FIXME: describe what to reflect on." +msgstr "" + +#: python-novice-gapminder/_episodes/11-lists.md:1 +# Front Matter +msgid "---\n" +"title: \"Lists\"\n" +"teaching: 10\n" +"exercises: 10\n" +"questions:\n" +"- \"How can I store multiple values?\"\n" +"objectives:\n" +"- \"Explain why programs need collections of values.\"\n" +"- \"Write programs that create flat lists, index them, slice them, and modify them through assignment and method calls.\"\n" +"keypoints:\n" +"- \"A list stores many values in a single structure.\"\n" +"- \"Use an item's index to fetch it from a list.\"\n" +"- \"Lists' values can be replaced by assigning to them.\"\n" +"- \"Appending items to a list lengthens it.\"\n" +"- \"Use `del` to remove items from a list entirely.\"\n" +"- \"The empty list contains no values.\"\n" +"- \"Lists may contain values of different types.\"\n" +"- \"Character strings can be indexed like lists.\"\n" +"- \"Character strings are immutable.\"\n" +"- \"Indexing beyond the end of the collection is an error.\"\n" +"---" +msgstr "" + +#: python-novice-gapminder/_episodes/11-lists.md:22 +# header +msgid "## A list stores many values in a single structure." +msgstr "" + +#: python-novice-gapminder/_episodes/11-lists.md:24 +# unordered list +msgid "* Doing calculations with a hundred variables called `pressure_001`, `pressure_002`, etc.," +msgstr "" + +#: python-novice-gapminder/_episodes/11-lists.md:25 +msgid " would be at least as slow as doing them by hand.\n" +"* Use a *list* to store many values together.\n" +" * Contained within square brackets `[...]`.\n" +" * Values separated by commas `,`.\n" +"* Use `len` to find out how many values are in a list." +msgstr "" + +#: python-novice-gapminder/_episodes/11-lists.md:31 +# code block +msgid "~~~\n" +"pressures = [0.273, 0.275, 0.277, 0.275, 0.276]\n" +"print('pressures:', pressures)\n" +"print('length:', len(pressures))\n" +"~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/11-lists.md:37 +# code block +msgid "~~~\n" +"pressures: [0.273, 0.275, 0.277, 0.275, 0.276]\n" +"length: 5\n" +"~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/11-lists.md:43 +# header +msgid "## Use an item's index to fetch it from a list." +msgstr "" + +#: python-novice-gapminder/_episodes/11-lists.md:45 +# unordered list +msgid "* Just like strings." +msgstr "" + +#: python-novice-gapminder/_episodes/11-lists.md:47 +# code block +msgid "~~~\n" +"print('zeroth item of pressures:', pressures[0])\n" +"print('fourth item of pressures:', pressures[4])\n" +"~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/11-lists.md:52 +# code block +msgid "~~~\n" +"zeroth item of pressures: 0.273\n" +"fourth item of pressures: 0.276\n" +"~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/11-lists.md:58 +# header +msgid "## Lists' values can be replaced by assigning to them." +msgstr "" + +#: python-novice-gapminder/_episodes/11-lists.md:60 +# unordered list +msgid "* Use an index expression on the left of assignment to replace a value." +msgstr "" + +#: python-novice-gapminder/_episodes/11-lists.md:62 +# code block +msgid "~~~\n" +"pressures[0] = 0.265\n" +"print('pressures is now:', pressures)\n" +"~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/11-lists.md:67 +# code block +msgid "~~~\n" +"pressures is now: [0.265, 0.275, 0.277, 0.275, 0.276]\n" +"~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/11-lists.md:72 +# header +msgid "## Appending items to a list lengthens it." +msgstr "" + +#: python-novice-gapminder/_episodes/11-lists.md:74 +# unordered list +msgid "* Use `list_name.append` to add items to the end of a list." +msgstr "" + +#: python-novice-gapminder/_episodes/11-lists.md:76 +# code block +msgid "~~~\n" +"primes = [2, 3, 5]\n" +"print('primes is initially:', primes)\n" +"primes.append(7)\n" +"primes.append(9)\n" +"print('primes has become:', primes)\n" +"~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/11-lists.md:84 +# code block +msgid "~~~\n" +"primes is initially: [2, 3, 5]\n" +"primes has become: [2, 3, 5, 7, 9]\n" +"~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/11-lists.md:90 +# unordered list +msgid "* `append` is a *method* of lists." +msgstr "" + +#: python-novice-gapminder/_episodes/11-lists.md:91 +# unordered list +msgid " * Like a function, but tied to a particular object." +msgstr "" + +#: python-novice-gapminder/_episodes/11-lists.md:92 +# unordered list +msgid "* Use `object_name.method_name` to call methods." +msgstr "" + +#: python-novice-gapminder/_episodes/11-lists.md:93 +# unordered list +msgid " * Deliberately resembles the way we refer to things in a library." +msgstr "" + +#: python-novice-gapminder/_episodes/11-lists.md:94 +# unordered list +msgid "* We will meet other methods of lists as we go along." +msgstr "" + +#: python-novice-gapminder/_episodes/11-lists.md:95 +# unordered list +msgid " * Use `help(list)` for a preview." +msgstr "" + +#: python-novice-gapminder/_episodes/11-lists.md:96 +# unordered list +msgid "* `extend` is similar to `append`, but it allows you to combine two lists. For example:" +msgstr "" + +#: python-novice-gapminder/_episodes/11-lists.md:98 +# code block +msgid "~~~\n" +"teen_primes = [11, 13, 17, 19]\n" +"middle_aged_primes = [37, 41, 43, 47]\n" +"print('primes is currently:', primes)\n" +"primes.extend(teen_primes)\n" +"print('primes has now become:', primes)\n" +"primes.append(middle_aged_primes)\n" +"print('primes has finally become:', primes)\n" +"~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/11-lists.md:108 +# code block +msgid "~~~\n" +"primes is currently: [2, 3, 5, 7, 9]\n" +"primes has now become: [2, 3, 5, 7, 9, 11, 13, 17, 19]\n" +"primes has finally become: [2, 3, 5, 7, 9, 11, 13, 17, 19, [37, 41, 43, 47]]\n" +"~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/11-lists.md:115 +msgid "Note that while `extend` maintains the \"flat\" structure of the list, appending a list to a list makes the result two-dimensional." +msgstr "" + +#: python-novice-gapminder/_episodes/11-lists.md:117 +# header +msgid "## Use `del` to remove items from a list entirely." +msgstr "" + +#: python-novice-gapminder/_episodes/11-lists.md:119 +# unordered list +msgid "* `del list_name[index]` removes an item from a list and shortens the list." +msgstr "" + +#: python-novice-gapminder/_episodes/11-lists.md:120 +# unordered list +msgid "* Not a function or a method, but a statement in the language." +msgstr "" + +#: python-novice-gapminder/_episodes/11-lists.md:122 +# code block +msgid "~~~\n" +"print('primes before removing last item:', primes)\n" +"del primes[4]\n" +"print('primes after removing last item:', primes)\n" +"~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/11-lists.md:128 +# code block +msgid "~~~\n" +"primes before removing last item: [2, 3, 5, 7, 9]\n" +"primes after removing last item: [2, 3, 5, 7]\n" +"~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/11-lists.md:134 +# header +msgid "## The empty list contains no values." +msgstr "" + +#: python-novice-gapminder/_episodes/11-lists.md:136 +# unordered list +msgid "* Use `[]` on its own to represent a list that doesn't contain any values." +msgstr "" + +#: python-novice-gapminder/_episodes/11-lists.md:137 +# unordered list +msgid " * \"The zero of lists.\"" +msgstr "" + +#: python-novice-gapminder/_episodes/11-lists.md:138 +# unordered list +msgid "* Helpful as a starting point for collecting values" +msgstr "" + +#: python-novice-gapminder/_episodes/11-lists.md:139 +msgid " (which we will see in the [next episode]({{page.root}}/09-for-loops/))." +msgstr "" + +#: python-novice-gapminder/_episodes/11-lists.md:141 +# header +msgid "## Lists may contain values of different types." +msgstr "" + +#: python-novice-gapminder/_episodes/11-lists.md:143 +# unordered list +msgid "* A single list may contain numbers, strings, and anything else." +msgstr "" + +#: python-novice-gapminder/_episodes/11-lists.md:145 +# code block +msgid "~~~\n" +"goals = [1, 'Create lists.', 2, 'Extract items from lists.', 3, 'Modify lists.']\n" +"~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/11-lists.md:150 +# header +msgid "## Character strings can be indexed like lists." +msgstr "" + +#: python-novice-gapminder/_episodes/11-lists.md:152 +# unordered list +msgid "* Get single characters from a character string using indexes in square brackets." +msgstr "" + +#: python-novice-gapminder/_episodes/11-lists.md:154 +# code block +msgid "~~~\n" +"element = 'carbon'\n" +"print('zeroth character:', element[0])\n" +"print('third character:', element[3])\n" +"~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/11-lists.md:160 +# code block +msgid "~~~\n" +"zeroth character: c\n" +"third character: b\n" +"~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/11-lists.md:166 +# header +msgid "## Character strings are immutable." +msgstr "" + +#: python-novice-gapminder/_episodes/11-lists.md:168 +# unordered list +msgid "* Cannot change the characters in a string after it has been created." +msgstr "" + +#: python-novice-gapminder/_episodes/11-lists.md:169 +# unordered list +msgid " * *Immutable*: can't be changed after creation." +msgstr "" + +#: python-novice-gapminder/_episodes/11-lists.md:170 +# unordered list +msgid " * In contrast, lists are *mutable*: they can be modified in place." +msgstr "" + +#: python-novice-gapminder/_episodes/11-lists.md:171 +# unordered list +msgid "* Python considers the string to be a single value with parts," +msgstr "" + +#: python-novice-gapminder/_episodes/11-lists.md:172 +msgid " not a collection of values." +msgstr "" + +#: python-novice-gapminder/_episodes/11-lists.md:174 +# code block +msgid "~~~\n" +"element[0] = 'C'\n" +"~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/11-lists.md:178 +# code block +msgid "~~~\n" +"TypeError: 'str' object does not support item assignment\n" +"~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/11-lists.md:183 +# unordered list +msgid "* Lists and character strings are both *collections*." +msgstr "" + +#: python-novice-gapminder/_episodes/11-lists.md:185 +# header +msgid "## Indexing beyond the end of the collection is an error." +msgstr "" + +#: python-novice-gapminder/_episodes/11-lists.md:187 +# unordered list +msgid "* Python reports an `IndexError` if we attempt to access a value that doesn't exist." +msgstr "" + +#: python-novice-gapminder/_episodes/11-lists.md:188 +# unordered list +msgid " * This is a kind of [runtime error]({{ page.root }}/05-error-messages/)." +msgstr "" + +#: python-novice-gapminder/_episodes/11-lists.md:189 +# unordered list +msgid " * Cannot be detected as the code is parsed" +msgstr "" + +#: python-novice-gapminder/_episodes/11-lists.md:190 +msgid " because the index might be calculated based on data." +msgstr "" + +#: python-novice-gapminder/_episodes/11-lists.md:192 +# code block +msgid "~~~\n" +"print('99th element of element is:', element[99])\n" +"~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/11-lists.md:196 +# code block +msgid "~~~\n" +"IndexError: string index out of range\n" +"~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/11-lists.md:201 +# blockquote, which can be cascaded +msgid "> ## Fill in the Blanks" +msgstr "" + +#: python-novice-gapminder/_episodes/11-lists.md:202 +msgid ">\n" +"> Fill in the blanks so that the program below produces the output shown.\n" +">\n" +"> ~~~\n" +"> values = ____\n" +"> values.____(1)\n" +"> values.____(3)\n" +"> values.____(5)\n" +"> print('first time:', values)\n" +"> values = values[____]\n" +"> print('second time:', values)\n" +"> ~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/11-lists.md:215 +msgid ">\n" +"> ~~~\n" +"> first time: [1, 3, 5]\n" +"> second time: [3, 5]\n" +"> ~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/11-lists.md:221 +msgid ">\n" +"> > ## Solution\n" +"> > ~~~\n" +"> > values = []\n" +"> > values.append(1)\n" +"> > values.append(3)\n" +"> > values.append(5)\n" +"> > print('first time:', values)\n" +"> > values = values[1:]\n" +"> > print('second time:', values)\n" +"> > ~~~\n" +"> > {: .python}" +msgstr "" + +#: python-novice-gapminder/_episodes/11-lists.md:236 +# blockquote, which can be cascaded +msgid "> ## How Large is a Slice?" +msgstr "" + +#: python-novice-gapminder/_episodes/11-lists.md:237 +msgid ">\n" +"> If 'low' and 'high' are both non-negative integers,\n" +"> how long is the list `values[low:high]`?\n" +">\n" +"> > ## Solution\n" +"> > The list `values[low:high]` has `high - low` elements. For example,\n" +"> > `values[1:4]` has the 3 elements `values[1]`, `values[2]`, and `values[3]`.\n" +"> > Note that the expression will only work if `high` is less than the total\n" +"> > length of the list `values`." +msgstr "" + +#: python-novice-gapminder/_episodes/11-lists.md:249 +# blockquote, which can be cascaded +msgid "> ## From Strings to Lists and Back" +msgstr "" + +#: python-novice-gapminder/_episodes/11-lists.md:250 +msgid ">\n" +"> Given this:\n" +">\n" +"> ~~~\n" +"> print('string to list:', list('tin'))\n" +"> print('list to string:', ''.join(['g', 'o', 'l', 'd']))\n" +"> ~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/11-lists.md:259 +# blockquote, which can be cascaded +msgid "> ['t', 'i', 'n']" +msgstr "" + +#: python-novice-gapminder/_episodes/11-lists.md:260 +# blockquote, which can be cascaded +msgid "> 'gold'" +msgstr "" + +#: python-novice-gapminder/_episodes/11-lists.md:263 +msgid ">\n" +"> 1. Explain in simple terms what `list('some string')` does.\n" +"> 2. What does `'-'.join(['x', 'y'])` generate?\n" +">\n" +"> > ## Solution\n" +"> > 1. `list('some string')` \"splits\" a string into a list of its characters.\n" +"> > 2. `x-y`" +msgstr "" + +#: python-novice-gapminder/_episodes/11-lists.md:273 +# blockquote, which can be cascaded +msgid "> ## Working With the End" +msgstr "" + +#: python-novice-gapminder/_episodes/11-lists.md:274 +msgid ">\n" +"> What does the following program print?\n" +">\n" +"> ~~~\n" +"> element = 'helium'\n" +"> print(element[-1])\n" +"> ~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/11-lists.md:282 +msgid ">\n" +"> 1. How does Python interpret a negative index?\n" +"> 2. If a list or string has N elements,\n" +"> what is the most negative index that can safely be used with it,\n" +"> and what location does that index represent?\n" +"> 3. If `values` is a list, what does `del values[-1]` do?\n" +"> 4. How can you display all elements but the last one without changing `values`?\n" +"> (Hint: you will need to combine slicing and negative indexing.)\n" +">\n" +"> > ## Solution\n" +"> > The program prints `m`.\n" +"> > 1. Python interprets a negative index as starting from the end (as opposed to\n" +"> > starting from the beginning). The last element is `-1`.\n" +"> > 2. The last index that can safely be used with a list of N elements is element\n" +"> > `-N`, which represents the first element.\n" +"> > 3. `del values[-1]` removes the last element from the list.\n" +"> > 4. `values[:-1]`" +msgstr "" + +#: python-novice-gapminder/_episodes/11-lists.md:302 +# blockquote, which can be cascaded +msgid "> ## Stepping Through a List" +msgstr "" + +#: python-novice-gapminder/_episodes/11-lists.md:303 +msgid ">\n" +"> What does the following program print?\n" +">\n" +"> ~~~\n" +"> element = 'fluorine'\n" +"> print(element[::2])\n" +"> print(element[::-1])\n" +"> ~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/11-lists.md:312 +msgid ">\n" +"> 1. If we write a slice as `low:high:stride`, what does `stride` do?\n" +"> 2. What expression would select all of the even-numbered items from a collection?\n" +">\n" +"> > ## Solution\n" +"> > The program prints\n" +"> > ~~~\n" +"> > furn\n" +"> > eniroulf\n" +"> > ~~~\n" +"> > {: .python}\n" +"> > 1. `stride` is the step size of the slice\n" +"> > 2. The slice `1::2` selects all even-numbered items from a collection: it starts\n" +"> > with element `1` (which is the second element, since indexing starts at `0`),\n" +"> > goes on until the end (since no `end` is given), and uses a step size of `2`\n" +"> > (i.e., selects every second element)." +msgstr "" + +#: python-novice-gapminder/_episodes/11-lists.md:331 +# blockquote, which can be cascaded +msgid "> ## Slice Bounds" +msgstr "" + +#: python-novice-gapminder/_episodes/11-lists.md:332 +msgid ">\n" +"> What does the following program print?\n" +">\n" +"> ~~~\n" +"> element = 'lithium'\n" +"> print(element[0:20])\n" +"> print(element[-1:3])\n" +"> ~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/11-lists.md:341 +msgid ">\n" +"> > ## Solution\n" +"> > ~~~\n" +"> > lithium\n" +"> > \n" +"> > ~~~\n" +"> > {: .python}" +msgstr "" + +#: python-novice-gapminder/_episodes/11-lists.md:351 +# blockquote, which can be cascaded +msgid "> ## Sort and Sorted" +msgstr "" + +#: python-novice-gapminder/_episodes/11-lists.md:352 +msgid ">\n" +"> What do these two programs print?\n" +"> In simple terms, explain the difference between `sorted(letters)` and `letters.sort()`.\n" +">\n" +"> ~~~\n" +"> # Program A\n" +"> letters = list('gold')\n" +"> result = sorted(letters)\n" +"> print('letters is', letters, 'and result is', result)\n" +"> ~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/11-lists.md:363 +msgid ">\n" +"> ~~~\n" +"> # Program B\n" +"> letters = list('gold')\n" +"> result = letters.sort()\n" +"> print('letters is', letters, 'and result is', result)\n" +"> ~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/11-lists.md:371 +msgid ">\n" +"> > ## Solution\n" +"> > Program A prints\n" +"> > ~~~\n" +"> > letters is ['g', 'o', 'l', 'd'] and result is ['d', 'g', 'l', 'o']\n" +"> > ~~~\n" +"> > {: .python}\n" +"> > Program B prints\n" +"> > ~~~\n" +"> > letters is ['d', 'g', 'l', 'o'] and result is None\n" +"> > ~~~\n" +"> > {: .python}\n" +"> > `sorted(letters)` returns a sorted copy of the list `letters` (the original\n" +"> > list `letters` remains unchanged), while `letters.sort()` sorts the list\n" +"> > `letters` in-place and does not return anything." +msgstr "" + +#: python-novice-gapminder/_episodes/11-lists.md:389 +# blockquote, which can be cascaded +msgid "> ## Copying (or Not)" +msgstr "" + +#: python-novice-gapminder/_episodes/11-lists.md:390 +msgid ">\n" +"> What do these two programs print?\n" +"> In simple terms, explain the difference between `new = old` and `new = old[:]`.\n" +">\n" +"> ~~~\n" +"> # Program A\n" +"> old = list('gold')\n" +"> new = old # simple assignment\n" +"> new[0] = 'D'\n" +"> print('new is', new, 'and old is', old)\n" +"> ~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/11-lists.md:402 +msgid ">\n" +"> ~~~\n" +"> # Program B\n" +"> old = list('gold')\n" +"> new = old[:] # assigning a slice\n" +"> new[0] = 'D'\n" +"> print('new is', new, 'and old is', old)\n" +"> ~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/11-lists.md:411 +msgid ">\n" +"> > ## Solution\n" +"> > Program A prints\n" +"> > ~~~\n" +"> > new is ['D', 'o', 'l', 'd'] and old is ['D', 'o', 'l', 'd']\n" +"> > ~~~\n" +"> > Program B prints\n" +"> > ~~~\n" +"> > new is ['D', 'o', 'l', 'd'] and old is ['g', 'o', 'l', 'd']\n" +"> > ~~~\n" +"> > {: .python}\n" +"> > `new = old` makes `new` a reference to the list `old`; `new` and `old` point\n" +"> > towards the same object.\n" +"> > \n" +"> > `new = old[:]` however creates a new list object `new` containing all elements\n" +"> > from the list `old`; `new` and `old` are different objects." +msgstr "" + +#: python-novice-gapminder/_episodes/12-for-loops.md:1 +# Front Matter +msgid "---\n" +"title: \"For Loops\"\n" +"teaching: 10\n" +"exercises: 15\n" +"questions:\n" +"- \"How can I make a program do many things?\"\n" +"objectives:\n" +"- \"Explain what for loops are normally used for.\"\n" +"- \"Trace the execution of a simple (unnested) loop and correctly state the values of variables in each iteration.\"\n" +"- \"Write for loops that use the Accumulator pattern to aggregate values.\"\n" +"keypoints:\n" +"- \"A *for loop* executes commands once for each value in a collection.\"\n" +"- \"The first line of the `for` loop must end with a colon, and the body must be indented.\"\n" +"- \"Indentation is always meaningful in Python.\"\n" +"- \"A `for` loop is made up of a collection, a loop variable, and a body.\"\n" +"- \"Loop variables can be called anything (but it is strongly advised to have a meaningful name to the looping variable).\"\n" +"- \"The body of a loop can contain many statements.\"\n" +"- \"Use `range` to iterate over a sequence of numbers.\"\n" +"- \"The Accumulator pattern turns many values into one.\"\n" +"---" +msgstr "" + +#: python-novice-gapminder/_episodes/12-for-loops.md:21 +# header +msgid "## A *for loop* executes commands once for each value in a collection." +msgstr "" + +#: python-novice-gapminder/_episodes/12-for-loops.md:23 +# unordered list +msgid "* Doing calculations on the values in a list one by one" +msgstr "" + +#: python-novice-gapminder/_episodes/12-for-loops.md:24 +msgid " is as painful as working with `pressure_001`, `pressure_002`, etc.\n" +"* A *for loop* tells Python to execute some statements once for each value in a list,\n" +" a character string,\n" +" or some other collection.\n" +"* \"for each thing in this group, do these operations\"" +msgstr "" + +#: python-novice-gapminder/_episodes/12-for-loops.md:30 +#: python-novice-gapminder/_episodes/12-for-loops.md:90 +# code block +msgid "~~~\n" +"for number in [2, 3, 5]:\n" +" print(number)\n" +"~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/12-for-loops.md:36 +# unordered list +msgid "* This `for` loop is equivalent to:" +msgstr "" + +#: python-novice-gapminder/_episodes/12-for-loops.md:38 +# code block +msgid "~~~\n" +"print(2)\n" +"print(3)\n" +"print(5)\n" +"~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/12-for-loops.md:45 +# unordered list +msgid "* And the `for` loop's output is:" +msgstr "" + +#: python-novice-gapminder/_episodes/12-for-loops.md:47 +# code block +msgid "~~~\n" +"2\n" +"3\n" +"5\n" +"~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/12-for-loops.md:54 +# header +msgid "## The first line of the `for` loop must end with a colon, and the body must be indented." +msgstr "" + +#: python-novice-gapminder/_episodes/12-for-loops.md:56 +# unordered list +msgid "* The colon at the end of the first line signals the start of a *block* of statements." +msgstr "" + +#: python-novice-gapminder/_episodes/12-for-loops.md:57 +# unordered list +msgid "* Python uses indentation rather than `{}` or `begin`/`end` to show *nesting*." +msgstr "" + +#: python-novice-gapminder/_episodes/12-for-loops.md:58 +# unordered list +msgid " * Any consistent indentation is legal, but almost everyone uses four spaces." +msgstr "" + +#: python-novice-gapminder/_episodes/12-for-loops.md:60 +# code block +msgid "~~~\n" +"for number in [2, 3, 5]:\n" +"print(number)\n" +"~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/12-for-loops.md:65 +# code block +msgid "~~~\n" +"IndentationError: expected an indented block\n" +"~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/12-for-loops.md:70 +# unordered list +msgid "* Indentation is always meaningful in Python." +msgstr "" + +#: python-novice-gapminder/_episodes/12-for-loops.md:72 +# code block +msgid "~~~\n" +"firstName=\"Jon\"\n" +" lastName=\"Smith\"\n" +"~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/12-for-loops.md:77 +# code block +msgid "~~~\n" +" File \"\", line 2\n" +" lastName=\"Smith\"\n" +" ^\n" +"IndentationError: unexpected indent\n" +"~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/12-for-loops.md:85 +# unordered list +msgid "* This error can be fixed by removing the extra spaces" +msgstr "" + +#: python-novice-gapminder/_episodes/12-for-loops.md:86 +msgid " at the beginning of the second line." +msgstr "" + +#: python-novice-gapminder/_episodes/12-for-loops.md:88 +# header +msgid "## A `for` loop is made up of a collection, a loop variable, and a body." +msgstr "" + +#: python-novice-gapminder/_episodes/12-for-loops.md:96 +# unordered list +msgid "* The collection, `[2, 3, 5]`, is what the loop is being run on." +msgstr "" + +#: python-novice-gapminder/_episodes/12-for-loops.md:97 +# unordered list +msgid "* The body, `print(number)`, specifies what to do for each value in the collection." +msgstr "" + +#: python-novice-gapminder/_episodes/12-for-loops.md:98 +# unordered list +msgid "* The loop variable, `number`, is what changes for each *iteration* of the loop." +msgstr "" + +#: python-novice-gapminder/_episodes/12-for-loops.md:99 +# unordered list +msgid " * The \"current thing\"." +msgstr "" + +#: python-novice-gapminder/_episodes/12-for-loops.md:101 +# header +msgid "## Loop variables can be called anything." +msgstr "" + +#: python-novice-gapminder/_episodes/12-for-loops.md:103 +# unordered list +msgid "* As with all variables, loop variables are:" +msgstr "" + +#: python-novice-gapminder/_episodes/12-for-loops.md:104 +# unordered list +msgid " * Created on demand." +msgstr "" + +#: python-novice-gapminder/_episodes/12-for-loops.md:105 +# unordered list +msgid " * Meaningless: their names can be anything at all." +msgstr "" + +#: python-novice-gapminder/_episodes/12-for-loops.md:107 +# code block +msgid "~~~\n" +"for kitten in [2, 3, 5]:\n" +" print(kitten)\n" +"~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/12-for-loops.md:113 +# header +msgid "## The body of a loop can contain many statements." +msgstr "" + +#: python-novice-gapminder/_episodes/12-for-loops.md:115 +# unordered list +msgid "* But no loop should be more than a few lines long." +msgstr "" + +#: python-novice-gapminder/_episodes/12-for-loops.md:116 +# unordered list +msgid "* Hard for human beings to keep larger chunks of code in mind." +msgstr "" + +#: python-novice-gapminder/_episodes/12-for-loops.md:118 +# code block +msgid "~~~\n" +"primes = [2, 3, 5]\n" +"for p in primes:\n" +" squared = p ** 2\n" +" cubed = p ** 3\n" +" print(p, squared, cubed)\n" +"~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/12-for-loops.md:126 +# code block +msgid "~~~\n" +"2 4 8\n" +"3 9 27\n" +"5 25 125\n" +"~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/12-for-loops.md:133 +# header +msgid "## Use `range` to iterate over a sequence of numbers." +msgstr "" + +#: python-novice-gapminder/_episodes/12-for-loops.md:135 +# unordered list +msgid "* The built-in function `range` produces a sequence of numbers." +msgstr "" + +#: python-novice-gapminder/_episodes/12-for-loops.md:136 +# unordered list +msgid " * *Not* a list: the numbers are produced on demand" +msgstr "" + +#: python-novice-gapminder/_episodes/12-for-loops.md:137 +msgid " to make looping over large ranges more efficient.\n" +"* `range(N)` is the numbers 0..N-1\n" +" * Exactly the legal indices of a list or character string of length N" +msgstr "" + +#: python-novice-gapminder/_episodes/12-for-loops.md:141 +# code block +msgid "~~~\n" +"print('a range is not a list: range(0, 3)')\n" +"for number in range(0,3):\n" +" print(number)\n" +"~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/12-for-loops.md:147 +# code block +msgid "~~~\n" +"a range is not a list: range(0, 3)\n" +"0\n" +"1\n" +"2\n" +"~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/12-for-loops.md:155 +# header +msgid "## The Accumulator pattern turns many values into one." +msgstr "" + +#: python-novice-gapminder/_episodes/12-for-loops.md:157 +# unordered list +msgid "* A common pattern in programs is to:" +msgstr "" + +#: python-novice-gapminder/_episodes/12-for-loops.md:158 +msgid " 1. Initialize an *accumulator* variable to zero, the empty string, or the empty list.\n" +" 2. Update the variable with values from a collection." +msgstr "" + +#: python-novice-gapminder/_episodes/12-for-loops.md:161 +# code block +msgid "~~~\n" +"# Sum the first 10 integers.\n" +"total = 0\n" +"for number in range(10):\n" +" total = total + (number + 1)\n" +"print(total)\n" +"~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/12-for-loops.md:169 +# code block +msgid "~~~\n" +"55\n" +"~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/12-for-loops.md:174 +# unordered list +msgid "* Read `total = total + (number + 1)` as:" +msgstr "" + +#: python-novice-gapminder/_episodes/12-for-loops.md:175 +# unordered list +msgid " * Add 1 to the current value of the loop variable `number`." +msgstr "" + +#: python-novice-gapminder/_episodes/12-for-loops.md:176 +# unordered list +msgid " * Add that to the current value of the accumulator variable `total`." +msgstr "" + +#: python-novice-gapminder/_episodes/12-for-loops.md:177 +# unordered list +msgid " * Assign that to `total`, replacing the current value." +msgstr "" + +#: python-novice-gapminder/_episodes/12-for-loops.md:178 +# unordered list +msgid "* We have to add `number + 1` because `range` produces 0..9, not 1..10." +msgstr "" + +#: python-novice-gapminder/_episodes/12-for-loops.md:180 +# blockquote, which can be cascaded +msgid "> ## Classifying Errors" +msgstr "" + +#: python-novice-gapminder/_episodes/12-for-loops.md:181 +msgid ">\n" +"> Is an indentation error a syntax error or a runtime error?\n" +"> > ## Solution\n" +"> > An IndentationError is a syntax error. Programs with syntax errors cannot be started.\n" +"> > A program with a runtime error will start but an error will be thrown under certain conditions." +msgstr "" + +#: python-novice-gapminder/_episodes/12-for-loops.md:189 +#: python-novice-gapminder/_episodes/17-conditionals.md:253 +# blockquote, which can be cascaded +msgid "> ## Tracing Execution" +msgstr "" + +#: python-novice-gapminder/_episodes/12-for-loops.md:190 +msgid ">\n" +"> Create a table showing the numbers of the lines that are executed when this program runs,\n" +"> and the values of the variables after each line is executed.\n" +">\n" +"> ~~~\n" +"> total = 0\n" +"> for char in \"tin\":\n" +"> total = total + 1\n" +"> ~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/12-for-loops.md:202 +# blockquote, which can be cascaded +msgid "> > | Line no | Variables |" +msgstr "" + +#: python-novice-gapminder/_episodes/12-for-loops.md:203 +# blockquote, which can be cascaded +msgid "> > |---------|----------------------|" +msgstr "" + +#: python-novice-gapminder/_episodes/12-for-loops.md:204 +# blockquote, which can be cascaded +msgid "> > | 1 | total = 0 |" +msgstr "" + +#: python-novice-gapminder/_episodes/12-for-loops.md:205 +# blockquote, which can be cascaded +msgid "> > | 2 | total = 0 char = 't' |" +msgstr "" + +#: python-novice-gapminder/_episodes/12-for-loops.md:206 +# blockquote, which can be cascaded +msgid "> > | 3 | total = 1 char = 't' |" +msgstr "" + +#: python-novice-gapminder/_episodes/12-for-loops.md:207 +# blockquote, which can be cascaded +msgid "> > | 2 | total = 1 char = 'i' |" +msgstr "" + +#: python-novice-gapminder/_episodes/12-for-loops.md:208 +# blockquote, which can be cascaded +msgid "> > | 3 | total = 2 char = 'i' |" +msgstr "" + +#: python-novice-gapminder/_episodes/12-for-loops.md:209 +# blockquote, which can be cascaded +msgid "> > | 2 | total = 2 char = 'n' |" +msgstr "" + +#: python-novice-gapminder/_episodes/12-for-loops.md:210 +# blockquote, which can be cascaded +msgid "> > | 3 | total = 3 char = 'n' |" +msgstr "" + +#: python-novice-gapminder/_episodes/12-for-loops.md:214 +# blockquote, which can be cascaded +msgid "> ## Reversing a String" +msgstr "" + +#: python-novice-gapminder/_episodes/12-for-loops.md:215 +msgid ">\n" +"> Fill in the blanks in the program below so that it prints \"nit\"\n" +"> (the reverse of the original character string \"tin\").\n" +">\n" +"> ~~~\n" +"> original = \"tin\"\n" +"> result = ____\n" +"> for char in original:\n" +"> result = ____\n" +"> print(result)\n" +"> ~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/12-for-loops.md:229 +# blockquote, which can be cascaded +msgid "> > original = \"tin\"" +msgstr "" + +#: python-novice-gapminder/_episodes/12-for-loops.md:230 +#: python-novice-gapminder/_episodes/12-for-loops.md:292 +# blockquote, which can be cascaded +msgid "> > result = \"\"" +msgstr "" + +#: python-novice-gapminder/_episodes/12-for-loops.md:231 +# blockquote, which can be cascaded +msgid "> > for char in original:" +msgstr "" + +#: python-novice-gapminder/_episodes/12-for-loops.md:232 +# blockquote, which can be cascaded +msgid "> > result = char + result" +msgstr "" + +#: python-novice-gapminder/_episodes/12-for-loops.md:233 +#: python-novice-gapminder/_episodes/12-for-loops.md:295 +#: python-novice-gapminder/_episodes/17-conditionals.md:308 +# blockquote, which can be cascaded +msgid "> > print(result)" +msgstr "" + +#: python-novice-gapminder/_episodes/12-for-loops.md:239 +# blockquote, which can be cascaded +msgid "> ## Practice Accumulating" +msgstr "" + +#: python-novice-gapminder/_episodes/12-for-loops.md:240 +msgid ">\n" +"> Fill in the blanks in each of the programs below\n" +"> to produce the indicated result.\n" +">\n" +"> ~~~\n" +"> # Total length of the strings in the list: [\"red\", \"green\", \"blue\"] => 12\n" +"> total = 0\n" +"> for word in [\"red\", \"green\", \"blue\"]:\n" +"> ____ = ____ + len(word)\n" +"> print(total)\n" +"> ~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/12-for-loops.md:254 +# blockquote, which can be cascaded +msgid "> > total = 0" +msgstr "" + +#: python-novice-gapminder/_episodes/12-for-loops.md:255 +#: python-novice-gapminder/_episodes/12-for-loops.md:273 +#: python-novice-gapminder/_episodes/12-for-loops.md:308 +# blockquote, which can be cascaded +msgid "> > for word in [\"red\", \"green\", \"blue\"]:" +msgstr "" + +#: python-novice-gapminder/_episodes/12-for-loops.md:256 +# blockquote, which can be cascaded +msgid "> > total = total + len(word)" +msgstr "" + +#: python-novice-gapminder/_episodes/12-for-loops.md:257 +# blockquote, which can be cascaded +msgid "> > print(total)" +msgstr "" + +#: python-novice-gapminder/_episodes/12-for-loops.md:261 +msgid ">\n" +"> ~~~\n" +"> # List of word lengths: [\"red\", \"green\", \"blue\"] => [3, 5, 4]\n" +"> lengths = ____\n" +"> for word in [\"red\", \"green\", \"blue\"]:\n" +"> lengths.____(____)\n" +"> print(lengths)\n" +"> ~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/12-for-loops.md:272 +# blockquote, which can be cascaded +msgid "> > lengths = []" +msgstr "" + +#: python-novice-gapminder/_episodes/12-for-loops.md:274 +# blockquote, which can be cascaded +msgid "> > lengths.append(len(word))" +msgstr "" + +#: python-novice-gapminder/_episodes/12-for-loops.md:275 +# blockquote, which can be cascaded +msgid "> > print(lengths)" +msgstr "" + +#: python-novice-gapminder/_episodes/12-for-loops.md:279 +msgid ">\n" +"> ~~~\n" +"> # Concatenate all words: [\"red\", \"green\", \"blue\"] => \"redgreenblue\"\n" +"> words = [\"red\", \"green\", \"blue\"]\n" +"> result = ____\n" +"> for ____ in ____:\n" +"> ____\n" +"> print(result)\n" +"> ~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/12-for-loops.md:291 +# blockquote, which can be cascaded +msgid "> > words = [\"red\", \"green\", \"blue\"]" +msgstr "" + +#: python-novice-gapminder/_episodes/12-for-loops.md:293 +# blockquote, which can be cascaded +msgid "> > for word in words:" +msgstr "" + +#: python-novice-gapminder/_episodes/12-for-loops.md:294 +# blockquote, which can be cascaded +msgid "> > result = result + word" +msgstr "" + +#: python-novice-gapminder/_episodes/12-for-loops.md:299 +msgid ">\n" +"> ~~~\n" +"> # Create acronym: [\"red\", \"green\", \"blue\"] => \"RGB\"\n" +"> # write the whole thing\n" +"> ~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/12-for-loops.md:307 +# blockquote, which can be cascaded +msgid "> > acronym = \"\"" +msgstr "" + +#: python-novice-gapminder/_episodes/12-for-loops.md:309 +# blockquote, which can be cascaded +msgid "> > acronym = acronym + word[0].upper()" +msgstr "" + +#: python-novice-gapminder/_episodes/12-for-loops.md:310 +# blockquote, which can be cascaded +msgid "> > print(acronym)" +msgstr "" + +#: python-novice-gapminder/_episodes/12-for-loops.md:316 +# blockquote, which can be cascaded +msgid "> ## Cumulative Sum" +msgstr "" + +#: python-novice-gapminder/_episodes/12-for-loops.md:317 +msgid ">\n" +"> Reorder and properly indent the lines of code below\n" +"> so that they print an array with the cumulative sum of data.\n" +"> The result should be `[1, 3, 5, 10]`.\n" +">\n" +"> ~~~\n" +"> cumulative += [sum]\n" +"> for number in data:\n" +"> cumulative = []\n" +"> sum += number\n" +"> sum = 0\n" +"> print(cumulative)\n" +"> data = [1,2,2,5]\n" +"> ~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/12-for-loops.md:334 +# blockquote, which can be cascaded +msgid "> > sum = 0" +msgstr "" + +#: python-novice-gapminder/_episodes/12-for-loops.md:335 +# blockquote, which can be cascaded +msgid "> > data = [1,2,2,5]" +msgstr "" + +#: python-novice-gapminder/_episodes/12-for-loops.md:336 +# blockquote, which can be cascaded +msgid "> > cumulative = []" +msgstr "" + +#: python-novice-gapminder/_episodes/12-for-loops.md:337 +# blockquote, which can be cascaded +msgid "> > for number in data:" +msgstr "" + +#: python-novice-gapminder/_episodes/12-for-loops.md:338 +# blockquote, which can be cascaded +msgid "> > sum += number" +msgstr "" + +#: python-novice-gapminder/_episodes/12-for-loops.md:339 +# blockquote, which can be cascaded +msgid "> > cumulative.append(sum)" +msgstr "" + +#: python-novice-gapminder/_episodes/12-for-loops.md:340 +# blockquote, which can be cascaded +msgid "> > print(cumulative)" +msgstr "" + +#: python-novice-gapminder/_episodes/12-for-loops.md:346 +# blockquote, which can be cascaded +msgid "> ## Identifying Variable Name Errors" +msgstr "" + +#: python-novice-gapminder/_episodes/12-for-loops.md:347 +msgid ">\n" +"> 1. Read the code below and try to identify what the errors are\n" +"> *without* running it.\n" +"> 2. Run the code and read the error message.\n" +"> What type of `NameError` do you think this is?\n" +"> Is it a string with no quotes, a misspelled variable, or a \n" +"> variable that should have been defined but was not?\n" +"> 3. Fix the error.\n" +"> 4. Repeat steps 2 and 3, until you have fixed all the errors.\n" +">\n" +"> ~~~\n" +"> for number in range(10):\n" +"> # use a if the number is a multiple of 3, otherwise use b\n" +"> if (Number % 3) == 0:\n" +"> message = message + a\n" +"> else:\n" +"> message = message + \"b\"\n" +"> print(message)\n" +"> ~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/12-for-loops.md:369 +# blockquote, which can be cascaded +msgid "> > message = \"\"" +msgstr "" + +#: python-novice-gapminder/_episodes/12-for-loops.md:370 +# blockquote, which can be cascaded +msgid "> > for number in range(10):" +msgstr "" + +#: python-novice-gapminder/_episodes/12-for-loops.md:371 +# blockquote, which can be cascaded +msgid "> > # use a if the number is a multiple of 3, otherwise use b" +msgstr "" + +#: python-novice-gapminder/_episodes/12-for-loops.md:372 +# blockquote, which can be cascaded +msgid "> > if (number % 3) == 0:" +msgstr "" + +#: python-novice-gapminder/_episodes/12-for-loops.md:373 +# blockquote, which can be cascaded +msgid "> > message = message + \"a\"" +msgstr "" + +#: python-novice-gapminder/_episodes/12-for-loops.md:374 +#: python-novice-gapminder/_episodes/17-conditionals.md:306 +# blockquote, which can be cascaded +msgid "> > else:" +msgstr "" + +#: python-novice-gapminder/_episodes/12-for-loops.md:375 +# blockquote, which can be cascaded +msgid "> > message = message + \"b\"" +msgstr "" + +#: python-novice-gapminder/_episodes/12-for-loops.md:376 +# blockquote, which can be cascaded +msgid "> > print(message)" +msgstr "" + +#: python-novice-gapminder/_episodes/12-for-loops.md:382 +# blockquote, which can be cascaded +msgid "> ## Identifying Item Errors" +msgstr "" + +#: python-novice-gapminder/_episodes/12-for-loops.md:383 +msgid ">\n" +"> 1. Read the code below and try to identify what the errors are\n" +"> *without* running it.\n" +"> 2. Run the code, and read the error message. What type of error is it?\n" +"> 3. Fix the error.\n" +">\n" +"> ~~~\n" +"> seasons = ['Spring', 'Summer', 'Fall', 'Winter']\n" +"> print('My favorite season is ', seasons[4])\n" +"> ~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/12-for-loops.md:396 +# blockquote, which can be cascaded +msgid "> > seasons = ['Spring', 'Summer', 'Fall', 'Winter']" +msgstr "" + +#: python-novice-gapminder/_episodes/12-for-loops.md:397 +# blockquote, which can be cascaded +msgid "> > print('My favorite season is ', seasons[3])" +msgstr "" + +#: python-novice-gapminder/_episodes/13-looping-data-sets.md:1 +# Front Matter +msgid "---\n" +"title: \"Looping Over Data Sets\"\n" +"teaching: 5\n" +"exercises: 10\n" +"questions:\n" +"- \"How can I process many data sets with a single command?\"\n" +"objectives:\n" +"- \"Be able to read and write globbing expressions that match sets of files.\"\n" +"- \"Use glob to create lists of files.\"\n" +"- \"Write for loops to perform operations on files given their names in a list.\"\n" +"keypoints:\n" +"- \"Use a `for` loop to process files given a list of their names.\"\n" +"- \"Use `glob.glob` to find sets of files whose names match a pattern.\"\n" +"- \"Use `glob` and `for` to process batches of files.\"\n" +"---" +msgstr "" + +#: python-novice-gapminder/_episodes/13-looping-data-sets.md:17 +# header +msgid "## Use a `for` loop to process files given a list of their names." +msgstr "" + +#: python-novice-gapminder/_episodes/13-looping-data-sets.md:19 +# unordered list +msgid "* A filename is just a character string." +msgstr "" + +#: python-novice-gapminder/_episodes/13-looping-data-sets.md:20 +# unordered list +msgid "* And lists can contain character strings." +msgstr "" + +#: python-novice-gapminder/_episodes/13-looping-data-sets.md:22 +# code block +msgid "~~~\n" +"import pandas\n" +"for filename in ['data/gapminder_gdp_africa.csv', 'data/gapminder_gdp_asia.csv']:\n" +" data = pandas.read_csv(filename, index_col='country')\n" +" print(filename, data.min())\n" +"~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/13-looping-data-sets.md:29 +# code block +msgid "~~~\n" +"data/gapminder_gdp_africa.csv gdpPercap_1952 298.846212\n" +"gdpPercap_1957 335.997115\n" +"gdpPercap_1962 355.203227\n" +"gdpPercap_1967 412.977514\n" +"⋮ ⋮ ⋮\n" +"gdpPercap_1997 312.188423\n" +"gdpPercap_2002 241.165877\n" +"gdpPercap_2007 277.551859\n" +"dtype: float64\n" +"data/gapminder_gdp_asia.csv gdpPercap_1952 331\n" +"gdpPercap_1957 350\n" +"gdpPercap_1962 388\n" +"gdpPercap_1967 349\n" +"⋮ ⋮ ⋮\n" +"gdpPercap_1997 415\n" +"gdpPercap_2002 611\n" +"gdpPercap_2007 944\n" +"dtype: float64\n" +"~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/13-looping-data-sets.md:51 +# header +msgid "## Use `glob.glob` to find sets of files whose names match a pattern." +msgstr "" + +#: python-novice-gapminder/_episodes/13-looping-data-sets.md:53 +# unordered list +msgid "* In Unix, the term \"globbing\" means \"matching a set of files with a pattern\"." +msgstr "" + +#: python-novice-gapminder/_episodes/13-looping-data-sets.md:54 +# unordered list +msgid "* The most common patterns are:" +msgstr "" + +#: python-novice-gapminder/_episodes/13-looping-data-sets.md:55 +# unordered list +msgid " * `*` meaning \"match zero or more characters\"" +msgstr "" + +#: python-novice-gapminder/_episodes/13-looping-data-sets.md:56 +# unordered list +msgid " * `?` meaning \"match exactly one character\"" +msgstr "" + +#: python-novice-gapminder/_episodes/13-looping-data-sets.md:57 +# unordered list +msgid "* Python contains the `glob` library to provide pattern matching functionality" +msgstr "" + +#: python-novice-gapminder/_episodes/13-looping-data-sets.md:58 +# unordered list +msgid "* The `glob` library contains a function also called `glob` to match file patterns" +msgstr "" + +#: python-novice-gapminder/_episodes/13-looping-data-sets.md:59 +# unordered list +msgid "* E.g., `glob.glob('*.txt')` matches all files in the current directory " +msgstr "" + +#: python-novice-gapminder/_episodes/13-looping-data-sets.md:60 +msgid " whose names end with `.txt`.\n" +"* Result is a (possibly empty) list of character strings." +msgstr "" + +#: python-novice-gapminder/_episodes/13-looping-data-sets.md:63 +# code block +msgid "~~~\n" +"import glob\n" +"print('all csv files in data directory:', glob.glob('data/*.csv'))\n" +"~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/13-looping-data-sets.md:68 +# code block +msgid "~~~\n" +"all csv files in data directory: ['data/gapminder_all.csv', 'data/gapminder_gdp_africa.csv', \\\n" +"'data/gapminder_gdp_americas.csv', 'data/gapminder_gdp_asia.csv', 'data/gapminder_gdp_europe.csv', \\\n" +"'data/gapminder_gdp_oceania.csv']\n" +"~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/13-looping-data-sets.md:75 +# code block +msgid "~~~\n" +"print('all PDB files:', glob.glob('*.pdb'))\n" +"~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/13-looping-data-sets.md:79 +# code block +msgid "~~~\n" +"all PDB files: []\n" +"~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/13-looping-data-sets.md:84 +# header +msgid "## Use `glob` and `for` to process batches of files." +msgstr "" + +#: python-novice-gapminder/_episodes/13-looping-data-sets.md:86 +# unordered list +msgid "* Helps a lot if the files are named and stored systematically and consistently" +msgstr "" + +#: python-novice-gapminder/_episodes/13-looping-data-sets.md:87 +msgid " so that simple patterns will find the right data." +msgstr "" + +#: python-novice-gapminder/_episodes/13-looping-data-sets.md:89 +# code block +msgid "~~~\n" +"for filename in glob.glob('data/gapminder_*.csv'):\n" +" data = pandas.read_csv(filename)\n" +" print(filename, data['gdpPercap_1952'].min())\n" +"~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/13-looping-data-sets.md:95 +# code block +msgid "~~~\n" +"data/gapminder_all.csv 298.8462121\n" +"data/gapminder_gdp_africa.csv 298.8462121\n" +"data/gapminder_gdp_americas.csv 1397.717137\n" +"data/gapminder_gdp_asia.csv 331.0\n" +"data/gapminder_gdp_europe.csv 973.5331948\n" +"data/gapminder_gdp_oceania.csv 10039.59564\n" +"~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/13-looping-data-sets.md:105 +# unordered list +msgid "* This includes all data, as well as per-region data." +msgstr "" + +#: python-novice-gapminder/_episodes/13-looping-data-sets.md:106 +# unordered list +msgid "* Use a more specific pattern in the exercises to exclude the whole data set." +msgstr "" + +#: python-novice-gapminder/_episodes/13-looping-data-sets.md:107 +# unordered list +msgid "* But note that the minimum of the entire data set is also the minimum of one of the data sets," +msgstr "" + +#: python-novice-gapminder/_episodes/13-looping-data-sets.md:108 +msgid " which is a nice check on correctness." +msgstr "" + +#: python-novice-gapminder/_episodes/13-looping-data-sets.md:110 +# blockquote, which can be cascaded +msgid "> ## Determining Matches" +msgstr "" + +#: python-novice-gapminder/_episodes/13-looping-data-sets.md:111 +msgid ">\n" +"> Which of these files is *not* matched by the expression `glob.glob('data/*as*.csv')`?\n" +">\n" +"> 1. `data/gapminder_gdp_africa.csv`\n" +"> 2. `data/gapminder_gdp_americas.csv`\n" +"> 3. `data/gapminder_gdp_asia.csv`\n" +"> 4. 1 and 2 are not matched.\n" +">\n" +"> > ## Solution\n" +"> >\n" +"> > 1 is not matched by the glob." +msgstr "" + +#: python-novice-gapminder/_episodes/13-looping-data-sets.md:125 +# blockquote, which can be cascaded +msgid "> ## Minimum File Size" +msgstr "" + +#: python-novice-gapminder/_episodes/13-looping-data-sets.md:126 +msgid ">\n" +"> Modify this program so that it prints the number of records in\n" +"> the file that has the fewest records.\n" +">\n" +"> ~~~\n" +"> import glob\n" +"> import pandas\n" +"> fewest = ____\n" +"> for filename in glob.glob('data/*.csv'):\n" +"> dataframe = pandas.____(filename)\n" +"> fewest = min(____, dataframe.shape[0])\n" +"> print('smallest file has', fewest, 'records')\n" +"> ~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/13-looping-data-sets.md:140 +# blockquote, which can be cascaded +msgid "> Notice that the shape method returns a tuple with " +msgstr "" + +#: python-novice-gapminder/_episodes/13-looping-data-sets.md:141 +# blockquote, which can be cascaded +msgid "> the number of rows and columns of the data frame." +msgstr "" + +#: python-novice-gapminder/_episodes/13-looping-data-sets.md:142 +msgid ">\n" +"> > ## Solution\n" +"> > ~~~\n" +"> > import glob\n" +"> > import pandas\n" +"> > fewest = float('Inf')\n" +"> > for filename in glob.glob('data/*.csv'):\n" +"> > dataframe = pandas.read_csv(filename)\n" +"> > fewest = min(fewest, dataframe.shape[0])\n" +"> > print('smallest file has', fewest, 'records')\n" +"> > ~~~\n" +"> > {: .python}" +msgstr "" + +#: python-novice-gapminder/_episodes/13-looping-data-sets.md:157 +# blockquote, which can be cascaded +msgid "> ## Comparing Data" +msgstr "" + +#: python-novice-gapminder/_episodes/13-looping-data-sets.md:158 +msgid ">\n" +"> Write a program that reads in the regional data sets\n" +"> and plots the average GDP per capita for each region over time\n" +"> in a single chart.\n" +"> > ## Solution\n" +"> > ~~~\n" +"> > import glob\n" +"> > import pandas \n" +"> > import matplotlib.pyplot as plt\n" +"> > fig, ax = plt.subplots(1,1)\n" +"> > for filename in glob.glob('data/gapminder_gdp*.csv'):\n" +"> > dataframe = pandas.read_csv(filename)\n" +"> > # extract region from the filename, expected to be in the format 'data/gapminder_gdp_.csv'\n" +"> > region = filename.rpartition('_')[2][:-4] \n" +"> > dataframe.mean().plot(ax=ax, label=region)\n" +"> > plt.legend()\n" +"> > plt.show()\n" +"> > ~~~\n" +"> > {: .python}" +msgstr "" + +#: python-novice-gapminder/_episodes/14-writing-functions.md:1 +# Front Matter +msgid "---\n" +"title: \"Writing Functions\"\n" +"teaching: 10\n" +"exercises: 15\n" +"questions:\n" +"- \"How can I create my own functions?\"\n" +"objectives:\n" +"- \"Explain and identify the difference between function definition and function call.\"\n" +"- \"Write a function that takes a small, fixed number of arguments and produces a single result.\"\n" +"keypoints:\n" +"- \"Break programs down into functions to make them easier to understand.\"\n" +"- \"Define a function using `def` with a name, parameters, and a block of code.\"\n" +"- \"Defining a function does not run it.\"\n" +"- \"Arguments in call are matched to parameters in definition.\"\n" +"- \"Functions may return a result to their caller using `return`.\"\n" +"---" +msgstr "" + +#: python-novice-gapminder/_episodes/14-writing-functions.md:17 +# header +msgid "## Break programs down into functions to make them easier to understand." +msgstr "" + +#: python-novice-gapminder/_episodes/14-writing-functions.md:19 +# unordered list +msgid "* Human beings can only keep a few items in working memory at a time." +msgstr "" + +#: python-novice-gapminder/_episodes/14-writing-functions.md:20 +# unordered list +msgid "* Understand larger/more complicated ideas by understanding and combining pieces." +msgstr "" + +#: python-novice-gapminder/_episodes/14-writing-functions.md:21 +# unordered list +msgid " * Components in a machine." +msgstr "" + +#: python-novice-gapminder/_episodes/14-writing-functions.md:22 +# unordered list +msgid " * Lemmas when proving theorems." +msgstr "" + +#: python-novice-gapminder/_episodes/14-writing-functions.md:23 +# unordered list +msgid "* Functions serve the same purpose in programs." +msgstr "" + +#: python-novice-gapminder/_episodes/14-writing-functions.md:24 +# unordered list +msgid " * *Encapsulate* complexity so that we can treat it as a single \"thing\"." +msgstr "" + +#: python-novice-gapminder/_episodes/14-writing-functions.md:25 +# unordered list +msgid "* Also enables *re-use*." +msgstr "" + +#: python-novice-gapminder/_episodes/14-writing-functions.md:26 +# unordered list +msgid " * Write one time, use many times." +msgstr "" + +#: python-novice-gapminder/_episodes/14-writing-functions.md:28 +# header +msgid "## Define a function using `def` with a name, parameters, and a block of code." +msgstr "" + +#: python-novice-gapminder/_episodes/14-writing-functions.md:30 +# unordered list +msgid "* Begin the definition of a new function with `def`." +msgstr "" + +#: python-novice-gapminder/_episodes/14-writing-functions.md:31 +# unordered list +msgid "* Followed by the name of the function." +msgstr "" + +#: python-novice-gapminder/_episodes/14-writing-functions.md:32 +# unordered list +msgid " * Must obey the same rules as variable names." +msgstr "" + +#: python-novice-gapminder/_episodes/14-writing-functions.md:33 +# unordered list +msgid "* Then *parameters* in parentheses." +msgstr "" + +#: python-novice-gapminder/_episodes/14-writing-functions.md:34 +# unordered list +msgid " * Empty parentheses if the function doesn't take any inputs." +msgstr "" + +#: python-novice-gapminder/_episodes/14-writing-functions.md:35 +# unordered list +msgid " * We will discuss this in detail in a moment." +msgstr "" + +#: python-novice-gapminder/_episodes/14-writing-functions.md:36 +# unordered list +msgid "* Then a colon." +msgstr "" + +#: python-novice-gapminder/_episodes/14-writing-functions.md:37 +# unordered list +msgid "* Then an indented block of code." +msgstr "" + +#: python-novice-gapminder/_episodes/14-writing-functions.md:39 +# code block +msgid "~~~\n" +"def print_greeting():\n" +" print('Hello!')\n" +"~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/14-writing-functions.md:45 +# header +msgid "## Defining a function does not run it." +msgstr "" + +#: python-novice-gapminder/_episodes/14-writing-functions.md:47 +# unordered list +msgid "* Defining a function does not run it." +msgstr "" + +#: python-novice-gapminder/_episodes/14-writing-functions.md:48 +# unordered list +msgid " * Like assigning a value to a variable." +msgstr "" + +#: python-novice-gapminder/_episodes/14-writing-functions.md:49 +# unordered list +msgid "* Must call the function to execute the code it contains." +msgstr "" + +#: python-novice-gapminder/_episodes/14-writing-functions.md:51 +# code block +msgid "~~~\n" +"print_greeting()\n" +"~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/14-writing-functions.md:55 +# code block +msgid "~~~\n" +"Hello!\n" +"~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/14-writing-functions.md:60 +# header +msgid "## Arguments in call are matched to parameters in definition." +msgstr "" + +#: python-novice-gapminder/_episodes/14-writing-functions.md:62 +# unordered list +msgid "* Functions are most useful when they can operate on different data." +msgstr "" + +#: python-novice-gapminder/_episodes/14-writing-functions.md:63 +# unordered list +msgid "* Specify *parameters* when defining a function." +msgstr "" + +#: python-novice-gapminder/_episodes/14-writing-functions.md:64 +# unordered list +msgid " * These become variables when the function is executed." +msgstr "" + +#: python-novice-gapminder/_episodes/14-writing-functions.md:65 +# unordered list +msgid " * Are assigned the arguments in the call (i.e., the values passed to the function)." +msgstr "" + +#: python-novice-gapminder/_episodes/14-writing-functions.md:66 +# unordered list +msgid " * If you don't name the arguments when using them in the call, the arguments will be matched to" +msgstr "" + +#: python-novice-gapminder/_episodes/14-writing-functions.md:67 +msgid "parameters in the order the parameters are defined in the function." +msgstr "" + +#: python-novice-gapminder/_episodes/14-writing-functions.md:69 +# code block +msgid "~~~\n" +"def print_date(year, month, day):\n" +" joined = str(year) + '/' + str(month) + '/' + str(day)\n" +" print(joined)\n" +"\n" +"print_date(1871, 3, 19)\n" +"~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/14-writing-functions.md:77 +#: python-novice-gapminder/_episodes/14-writing-functions.md:88 +# code block +msgid "~~~\n" +"1871/3/19\n" +"~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/14-writing-functions.md:82 +msgid "Or, we can name the arguments when we call the function, which allows us to\n" +"specify them in any order:\n" +"~~~\n" +"print_date(month=3, day=19, year=1871)\n" +"~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/14-writing-functions.md:93 +# unordered list +msgid "* Via [Twitter](https://twitter.com/minisciencegirl/status/693486088963272705):" +msgstr "" + +#: python-novice-gapminder/_episodes/14-writing-functions.md:94 +msgid " `()` contains the ingredients for the function\n" +" while the body contains the recipe." +msgstr "" + +#: python-novice-gapminder/_episodes/14-writing-functions.md:97 +# header +msgid "## Functions may return a result to their caller using `return`." +msgstr "" + +#: python-novice-gapminder/_episodes/14-writing-functions.md:99 +# unordered list +msgid "* Use `return ...` to give a value back to the caller." +msgstr "" + +#: python-novice-gapminder/_episodes/14-writing-functions.md:100 +# unordered list +msgid "* May occur anywhere in the function." +msgstr "" + +#: python-novice-gapminder/_episodes/14-writing-functions.md:101 +# unordered list +msgid "* But functions are easier to understand if `return` occurs:" +msgstr "" + +#: python-novice-gapminder/_episodes/14-writing-functions.md:102 +# unordered list +msgid " * At the start to handle special cases." +msgstr "" + +#: python-novice-gapminder/_episodes/14-writing-functions.md:103 +# unordered list +msgid " * At the very end, with a final result." +msgstr "" + +#: python-novice-gapminder/_episodes/14-writing-functions.md:105 +# code block +msgid "~~~\n" +"def average(values):\n" +" if len(values) == 0:\n" +" return None\n" +" return sum(values) / len(values)\n" +"~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/14-writing-functions.md:113 +# code block +msgid "~~~\n" +"a = average([1, 3, 4])\n" +"print('average of actual values:', a)\n" +"~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/14-writing-functions.md:118 +# code block +msgid "~~~\n" +"2.6666666666666665\n" +"~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/14-writing-functions.md:123 +# code block +msgid "~~~\n" +"print('average of empty list:', average([]))\n" +"~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/14-writing-functions.md:127 +# code block +msgid "~~~\n" +"None\n" +"~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/14-writing-functions.md:132 +# unordered list +msgid "* Remember: [every function returns something]({{ page.root }}/04-built-in/)." +msgstr "" + +#: python-novice-gapminder/_episodes/14-writing-functions.md:133 +# unordered list +msgid "* A function that doesn't explicitly `return` a value automatically returns `None`." +msgstr "" + +#: python-novice-gapminder/_episodes/14-writing-functions.md:135 +# code block +msgid "~~~\n" +"result = print_date(1871, 3, 19)\n" +"print('result of call is:', result)\n" +"~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/14-writing-functions.md:140 +# code block +msgid "~~~\n" +"1871/3/19\n" +"result of call is: None\n" +"~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/14-writing-functions.md:146 +# blockquote, which can be cascaded +msgid "> ## Identifying Syntax Errors" +msgstr "" + +#: python-novice-gapminder/_episodes/14-writing-functions.md:147 +msgid ">\n" +"> 1. Read the code below and try to identify what the errors are\n" +"> *without* running it.\n" +"> 2. Run the code and read the error message.\n" +"> Is it a `SyntaxError` or an `IndentationError`?\n" +"> 3. Fix the error.\n" +"> 4. Repeat steps 2 and 3 until you have fixed all the errors.\n" +">\n" +"> ~~~\n" +"> def another_function\n" +"> print(\"Syntax errors are annoying.\")\n" +"> print(\"But at least python tells us about them!\")\n" +"> print(\"So they are usually not too hard to fix.\")\n" +"> ~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/14-writing-functions.md:162 +msgid ">\n" +"> > ## Solution\n" +"> >\n" +"> > ~~~\n" +"> > def another_function():\n" +"> > print(\"Syntax errors are annoying.\")\n" +"> > print(\"But at least Python tells us about them!\")\n" +"> > print(\"So they are usually not too hard to fix.\")\n" +"> > ~~~\n" +"> > {: .python}" +msgstr "" + +#: python-novice-gapminder/_episodes/14-writing-functions.md:175 +# blockquote, which can be cascaded +msgid "> ## Definition and Use" +msgstr "" + +#: python-novice-gapminder/_episodes/14-writing-functions.md:176 +msgid ">\n" +"> What does the following program print?\n" +">\n" +"> ~~~\n" +"> def report(pressure):\n" +"> print('pressure is', pressure)\n" +">\n" +"> print('calling', report, 22.5)\n" +"> ~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/14-writing-functions.md:189 +# blockquote, which can be cascaded +msgid "> > calling 22.5" +msgstr "" + +#: python-novice-gapminder/_episodes/14-writing-functions.md:190 +# blockquote, which can be cascaded +msgid "> > ~~~ " +msgstr "" + +#: python-novice-gapminder/_episodes/14-writing-functions.md:193 +# blockquote, which can be cascaded +msgid "> > A function call always needs parenthesis, otherwise you get memory address of the function object. So, if we wanted to call the function named report, and give it the value 22.5 to report on, we could have our function call as follows" +msgstr "" + +#: python-novice-gapminder/_episodes/14-writing-functions.md:195 +# blockquote, which can be cascaded +msgid "> > print(\"calling\")" +msgstr "" + +#: python-novice-gapminder/_episodes/14-writing-functions.md:196 +# blockquote, which can be cascaded +msgid "> > report(22.5)" +msgstr "" + +#: python-novice-gapminder/_episodes/14-writing-functions.md:202 +# blockquote, which can be cascaded +msgid "> ## Order of Operations" +msgstr "" + +#: python-novice-gapminder/_episodes/14-writing-functions.md:203 +msgid ">\n" +"> The example above:\n" +">\n" +"> ~~~\n" +"> result = print_date(1871, 3, 19)\n" +"> print('result of call is:', result)\n" +"> ~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/14-writing-functions.md:211 +msgid ">\n" +"> printed:\n" +"> ~~~\n" +"> 1871/3/19\n" +"> result of call is: None\n" +"> ~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/14-writing-functions.md:218 +msgid ">\n" +"> Explain why the two lines of output appeared in the order they did.\n" +">\n" +"> What's wrong in this example?\n" +"> ~~~\n" +"> result = print_date(1871,3,19)\n" +">\n" +"> def print_date(year, month, day):\n" +"> joined = str(year) + '/' + str(month) + '/' + str(day)\n" +"> print(joined)\n" +"> ~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/14-writing-functions.md:233 +# blockquote, which can be cascaded +msgid "> > 1. The first line of output (`1871/3/19`) is from the print function inside `print_date()`, while the second line" +msgstr "" + +#: python-novice-gapminder/_episodes/14-writing-functions.md:234 +# blockquote, which can be cascaded +msgid "> > is from the print function below the function call. All of the code inside `print_date()` is executed first, and" +msgstr "" + +#: python-novice-gapminder/_episodes/14-writing-functions.md:235 +# blockquote, which can be cascaded +msgid "> > the program then \"leaves\" the function and executes the rest of the code. " +msgstr "" + +#: python-novice-gapminder/_episodes/14-writing-functions.md:236 +# blockquote, which can be cascaded +msgid "> > 2. The problem with the example is that the function is defined *after* the call to the function is made. Python" +msgstr "" + +#: python-novice-gapminder/_episodes/14-writing-functions.md:237 +# blockquote, which can be cascaded +msgid "> > therefore doesn't understand the function call." +msgstr "" + +#: python-novice-gapminder/_episodes/14-writing-functions.md:241 +# blockquote, which can be cascaded +msgid "> ## Encapsulation" +msgstr "" + +#: python-novice-gapminder/_episodes/14-writing-functions.md:242 +msgid ">\n" +"> Fill in the blanks to create a function that takes a single filename as an argument,\n" +"> loads the data in the file named by the argument,\n" +"> and returns the minimum value in that data.\n" +">\n" +"> ~~~\n" +"> import pandas\n" +">\n" +"> def min_in_data(____):\n" +"> data = ____\n" +"> return ____\n" +"> ~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/14-writing-functions.md:258 +#: python-novice-gapminder/_episodes/17-conditionals.md:331 +# blockquote, which can be cascaded +msgid "> > import pandas" +msgstr "" + +#: python-novice-gapminder/_episodes/14-writing-functions.md:260 +# blockquote, which can be cascaded +msgid "> > def min_in_data(filename):" +msgstr "" + +#: python-novice-gapminder/_episodes/14-writing-functions.md:261 +# blockquote, which can be cascaded +msgid "> > data = pandas.read_csv(filename)" +msgstr "" + +#: python-novice-gapminder/_episodes/14-writing-functions.md:262 +# blockquote, which can be cascaded +msgid "> > return data.min()" +msgstr "" + +#: python-novice-gapminder/_episodes/14-writing-functions.md:268 +# blockquote, which can be cascaded +msgid "> ## Find the First" +msgstr "" + +#: python-novice-gapminder/_episodes/14-writing-functions.md:269 +msgid ">\n" +"> Fill in the blanks to create a function that takes a list of numbers as an argument\n" +"> and returns the first negative value in the list.\n" +"> What does your function do if the list is empty?\n" +">\n" +"> ~~~\n" +"> def first_negative(values):\n" +"> for v in ____:\n" +"> if ____:\n" +"> return ____\n" +"> ~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/14-writing-functions.md:284 +# blockquote, which can be cascaded +msgid "> > def first_negative(values):" +msgstr "" + +#: python-novice-gapminder/_episodes/14-writing-functions.md:285 +# blockquote, which can be cascaded +msgid "> > for v in values:" +msgstr "" + +#: python-novice-gapminder/_episodes/14-writing-functions.md:286 +# blockquote, which can be cascaded +msgid "> > if v<0:" +msgstr "" + +#: python-novice-gapminder/_episodes/14-writing-functions.md:287 +# blockquote, which can be cascaded +msgid "> > return v" +msgstr "" + +#: python-novice-gapminder/_episodes/14-writing-functions.md:290 +# blockquote, which can be cascaded +msgid "> > If an empty list is passed to this function, it returns `None`:" +msgstr "" + +#: python-novice-gapminder/_episodes/14-writing-functions.md:292 +# blockquote, which can be cascaded +msgid "> > my_list = []" +msgstr "" + +#: python-novice-gapminder/_episodes/14-writing-functions.md:293 +# blockquote, which can be cascaded +msgid "> > print(first_negative(my_list)" +msgstr "" + +#: python-novice-gapminder/_episodes/14-writing-functions.md:297 +# blockquote, which can be cascaded +msgid "> > None" +msgstr "" + +#: python-novice-gapminder/_episodes/14-writing-functions.md:303 +# blockquote, which can be cascaded +msgid "> ## Calling by Name" +msgstr "" + +#: python-novice-gapminder/_episodes/14-writing-functions.md:304 +msgid ">\n" +"> Earlier we saw this function:\n" +">\n" +"> ~~~\n" +"> def print_date(year, month, day):\n" +"> joined = str(year) + '/' + str(month) + '/' + str(day)\n" +"> print(joined)\n" +"> ~~~\n" +"> We saw that we can call the function using *named arguments*, like this:\n" +"> ~~~\n" +"> print_date(day=1, month=2, year=2003)\n" +"> ~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/14-writing-functions.md:317 +msgid ">\n" +"> 1. What does `print_date(day=1, month=2, year=2003)` print?\n" +"> 2. When have you seen a function call like this before?\n" +"> 3. When and why is it useful to call functions this way?" +msgstr "" + +#: python-novice-gapminder/_episodes/14-writing-functions.md:324 +# blockquote, which can be cascaded +msgid "> > 1. `2003/2/1`" +msgstr "" + +#: python-novice-gapminder/_episodes/14-writing-functions.md:325 +# blockquote, which can be cascaded +msgid "> > 2. We saw examples of using *named arguments* when working with the pandas library. For example, when reading in a dataset " +msgstr "" + +#: python-novice-gapminder/_episodes/14-writing-functions.md:326 +# blockquote, which can be cascaded +msgid "> > using `data = pandas.read_csv('data/gapminder_gdp_europe.csv', index_col='country')`, the last argument `index_col` is a " +msgstr "" + +#: python-novice-gapminder/_episodes/14-writing-functions.md:327 +# blockquote, which can be cascaded +msgid "> > named argument. " +msgstr "" + +#: python-novice-gapminder/_episodes/14-writing-functions.md:328 +# blockquote, which can be cascaded +msgid "> > 3. Using named arguments can make code more readable since one can see from the function call what name the different arguments " +msgstr "" + +#: python-novice-gapminder/_episodes/14-writing-functions.md:329 +# blockquote, which can be cascaded +msgid "> > have inside the function. It can also reduce the chances of passing arguments in the wrong order, since by using named arguments " +msgstr "" + +#: python-novice-gapminder/_episodes/14-writing-functions.md:330 +# blockquote, which can be cascaded +msgid "> > the order doesn't matter." +msgstr "" + +#: python-novice-gapminder/_episodes/14-writing-functions.md:334 +# blockquote, which can be cascaded +msgid "> ## Encapsulate of If/Print Block" +msgstr "" + +#: python-novice-gapminder/_episodes/14-writing-functions.md:335 +msgid ">\n" +"> The code below will run on a label-printer for chicken eggs. A digital scale will report a chicken egg mass (in grams) to the computer and then the computer will print a label. \n" +">\n" +"> Please re-write the code so that the if-block is folded into a function.\n" +">\n" +"> ~~~\n" +"> import random\n" +"> for i in range(10):\n" +">\n" +"> # simulating the mass of a chicken egg\n" +"> # the (random) mass will be 70 +/- 20 grams\n" +"> mass=70+20.0*(2.0*random.random()-1.0)\n" +">\n" +"> print(mass)\n" +"> \n" +"> #egg sizing machinery prints a label\n" +"> if(mass>=85):\n" +"> print(\"jumbo\")\n" +"> elif(mass>=70):\n" +"> print(\"large\")\n" +"> elif(mass<70 and mass>=55):\n" +"> print(\"medium\")\n" +"> else:\n" +"> print(\"small\")\n" +"> ~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/14-writing-functions.md:361 +msgid ">\n" +">\n" +"> The simplified program follows. What function definition will make it functional?\n" +">\n" +"> ~~~\n" +"> # revised version\n" +"> import random\n" +"> for i in range(10):\n" +">\n" +"> # simulating the mass of a chicken egg\n" +"> # the (random) mass will be 70 +/- 20 grams\n" +"> mass=70+20.0*(2.0*random.random()-1.0)\n" +">\n" +"> print(mass,print_egg_label(mass)) \n" +">\n" +"> ~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/14-writing-functions.md:378 +msgid ">\n" +">\n" +"> 1. Create a function definition for `print_egg_label()` that will work with the revised program above. Note, the function's return value will be significant. Sample output might be `71.23 large`.\n" +"> 2. A dirty egg might have a mass of more than 90 grams, and a spoiled or broken egg will probably have a mass that's less than 50 grams. Modify your `print_egg_label()` function to account for these error conditions. Sample output could be `25 too light, probably spoiled`.\n" +">\n" +"> > ## Solution\n" +"> >\n" +"> > ~~~\n" +"> > def print_egg_label(mass):\n" +"> > #egg sizing machinery prints a label\n" +"> > if(mass>=90):\n" +"> > return(\"warning: egg might be dirty\")\n" +"> > elif(mass>=85):\n" +"> > return(\"jumbo\")\n" +"> > elif(mass>=70):\n" +"> > return(\"large\")\n" +"> > elif(mass<70 and mass>=55):\n" +"> > return(\"medium\")\n" +"> > elif(mass<50):\n" +"> > return(\"too light, probably spoiled\")\n" +"> > else:\n" +"> > return(\"small\")\n" +"> > ~~~\n" +"> > {: .python}" +msgstr "" + +#: python-novice-gapminder/_episodes/14-writing-functions.md:405 +# blockquote, which can be cascaded +msgid "> ## Encapsulating Data Analysis" +msgstr "" + +#: python-novice-gapminder/_episodes/14-writing-functions.md:406 +msgid ">\n" +"> Assume that the following code has been executed:\n" +">\n" +"> ~~~\n" +"> import pandas\n" +">\n" +"> df = pandas.read_csv('data/gapminder_gdp_asia.csv', index_col=0)\n" +"> japan = df.loc['Japan']\n" +"> ~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/14-writing-functions.md:416 +msgid ">\n" +"> 1.Complete the statements below to obtain the average GDP for Japan\n" +"> across the years reported for the 1980s.\n" +">\n" +"> ~~~\n" +"> year = 1983\n" +"> gdp_decade = 'gdpPercap_' + str(year // ____)\n" +"> avg = (japan.loc[gdp_decade + ___] + japan.loc[gdp_decade + ___]) / 2\n" +"> ~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/14-writing-functions.md:426 +msgid ">\n" +"> 2.Abstract the code above into a single function.\n" +">\n" +"> ~~~\n" +"> def avg_gdp_in_decade(country, continent, year):\n" +"> df = pandas.read_csv('data/gapminder_gdp_'+___+'.csv',delimiter=',',index_col=0)\n" +"> ____\n" +"> ____\n" +"> ____\n" +"> return avg\n" +"> ~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/14-writing-functions.md:438 +msgid ">\n" +"> 3.How would you generalize this function\n" +"> if you did not know beforehand which specific years occurred as columns in the data?\n" +"> For instance, what if we also had data from years ending in 1 and 9 for each decade?\n" +"> (Hint: use the columns to filter out the ones that correspond to the decade,\n" +"> instead of enumerating them in the code.)\n" +">\n" +"> > ## Solution\n" +"> >\n" +"> > 1.\n" +"> >\n" +"> > ~~~\n" +"> > year = 1983\n" +"> > gdp_decade = 'gdpPercap_' + str(year // 10)\n" +"> > avg = (japan.loc[gdp_decade + '2'] + japan.loc[gdp_decade + '7']) / 2\n" +"> > ~~~\n" +"> > {: .python}\n" +"> >\n" +"> > 2.\n" +"> >\n" +"> > ~~~\n" +"> > def avg_gdp_in_decade(country, continent, year):\n" +"> > df = pandas.read_csv('data/gapminder_gdp_' + continent + '.csv', index_col=0)\n" +"> > c = df.loc[country]\n" +"> > gdp_decade = 'gdpPercap_' + str(year // 10)\n" +"> > avg = (c.loc[gdp_decade + '2'] + c.loc[gdp_decade + '7'])/2\n" +"> > return avg\n" +"> > ~~~\n" +"> > {: .python}\n" +"> >\n" +"> > 3.\n" +"> > \n" +"> > We need to loop over the reported years\n" +"> > to obtain the average for the relevant ones in the data.\n" +"> >\n" +"> > ~~~\n" +"> > def avg_gdp_in_decade(country, continent, year):\n" +"> > df = pandas.read_csv('data/gapminder_gdp_' + continent + '.csv', index_col=0)\n" +"> > c = df.loc[country]\n" +"> > gdp_decade = 'gdpPercap_' + str(year // 10)\n" +"> > total = 0.0\n" +"> > num_years = 0\n" +"> > for yr_header in c.index: # c's index contains reported years\n" +"> > if yr_header.startswith(gdp_decade):\n" +"> > total = total + c.loc[yr_header]\n" +"> > num_years = num_years + 1\n" +"> > return total/num_years\n" +"> > ~~~\n" +"> > {: .python}\n" +"> > The function can now be called by:\n" +"> > ~~~\n" +"> > avg_gdp_in_decade('Japan','asia',1983)\n" +"> > ~~~\n" +"> > {: .python}\n" +"> > \n" +"> > ~~~\n" +"> > 20880.023800000003\n" +"> > ~~~\n" +"> > {: .output}" +msgstr "" + +#: python-novice-gapminder/_episodes/14-writing-functions.md:499 +# blockquote, which can be cascaded +msgid "> ## Simulating a dynamical system" +msgstr "" + +#: python-novice-gapminder/_episodes/14-writing-functions.md:500 +msgid ">\n" +"> In mathematics, a [dynamical system](https://en.wikipedia.org/wiki/Dynamical_system) is a system in which a function describes the time dependence of a point in a geometrical space. A canonical example of a dynamical system is a system called the [logistic map](https://en.wikipedia.org/wiki/Logistic_map).\n" +">\n" +">\n" +"> 1. Define a function called `logistic_map` that takes two inputs: `x`, representing the state of the system at time _t_, and a parameter `r`. This function should return a value representing the state of the system at time _t+1_.\n" +">\n" +"> 2. Using a `for` loop, iterate the `logistic_map` function defined in part 1 starting from an initial condition of 0.5 for `t_final=10`, `100`, and `1000` periods. Store the intermediate results in a list so that after the `for` loop terminates you have accumulated a sequence of values representing the state of the logistic map at time _t=0,1,...,t_final_.\n" +">\n" +"> 3. Encapsulate the logic of your `for` loop into a function called `iterate` that takes the initial condition as its first input, the parameter `t_final` as its second input and the parameter `r` as its third input. The function should return the list of values representing the state of the logistic map at time _t=0,1,...,t_final_.\n" +">\n" +">\n" +"> > ## Solution\n" +"> >\n" +"> > 1.\n" +"> >\n" +"> > ~~~\n" +"> > def logistic_map(x, r):\n" +"> > return r * x * (1 - x)\n" +"> > ~~~\n" +"> > {: .python}\n" +"> >\n" +"> > 2.\n" +"> >\n" +"> > ~~~\n" +"> > initial_condition = 0.5\n" +"> > t_final = 10\n" +"> > r = 1.0\n" +"> > trajectory = [initial_condition]\n" +"> > for t in range(1, t_final):\n" +"> > trajectory[t] = logistic_map(trajectory[t-1], r)\n" +"> > ~~~\n" +"> > {: .python}\n" +"> >\n" +"> > 3.\n" +"> > ~~~\n" +"> > def iterate(initial_condition, t_final, r):\n" +"> > trajectory = [initial_condition]\n" +"> > for t in range(1, t_final):\n" +"> > trajectory[t] = logistic_map(trajectory[t-1], r)\n" +"> > return trajectorys\n" +"> > ~~~\n" +"> > {: .python}" +msgstr "" + +#: python-novice-gapminder/_episodes/15-scope.md:1 +# Front Matter +msgid "---\n" +"title: \"Variable Scope\"\n" +"teaching: 10\n" +"exercises: 10\n" +"questions:\n" +"- \"How do function calls actually work?\"\n" +"- \"How can I determine where errors occurred?\"\n" +"objectives:\n" +"- \"Identify local and global variables.\"\n" +"- \"Identify parameters as local variables.\"\n" +"- \"Read a traceback and determine the file, function, and line number on which the error occurred, the type of error, and the error message.\"\n" +"keypoints:\n" +"- \"The scope of a variable is the part of a program that can 'see' that variable.\"\n" +"---" +msgstr "" + +#: python-novice-gapminder/_episodes/15-scope.md:15 +# header +msgid "## The scope of a variable is the part of a program that can 'see' that variable." +msgstr "" + +#: python-novice-gapminder/_episodes/15-scope.md:17 +# unordered list +msgid "* There are only so many sensible names for variables." +msgstr "" + +#: python-novice-gapminder/_episodes/15-scope.md:18 +# unordered list +msgid "* People using functions shouldn't have to worry about" +msgstr "" + +#: python-novice-gapminder/_episodes/15-scope.md:19 +msgid " what variable names the author of the function used.\n" +"* People writing functions shouldn't have to worry about\n" +" what variable names the function's caller uses.\n" +"* The part of a program in which a variable is visible is called its *scope*." +msgstr "" + +#: python-novice-gapminder/_episodes/15-scope.md:24 +# code block +msgid "~~~\n" +"pressure = 103.9\n" +"\n" +"def adjust(t):\n" +" temperature = t * 1.43 / pressure\n" +" return temperature\n" +"~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/15-scope.md:33 +# unordered list +msgid "* `pressure` is a *global variable*." +msgstr "" + +#: python-novice-gapminder/_episodes/15-scope.md:34 +# unordered list +msgid " * Defined outside any particular function." +msgstr "" + +#: python-novice-gapminder/_episodes/15-scope.md:35 +# unordered list +msgid " * Visible everywhere." +msgstr "" + +#: python-novice-gapminder/_episodes/15-scope.md:36 +# unordered list +msgid "* `t` and `temperature` are *local variables* in `adjust`." +msgstr "" + +#: python-novice-gapminder/_episodes/15-scope.md:37 +# unordered list +msgid " * Defined in the function." +msgstr "" + +#: python-novice-gapminder/_episodes/15-scope.md:38 +# unordered list +msgid " * Not visible in the main program." +msgstr "" + +#: python-novice-gapminder/_episodes/15-scope.md:39 +# unordered list +msgid " * Remember: a function parameter is a variable" +msgstr "" + +#: python-novice-gapminder/_episodes/15-scope.md:40 +msgid " that is automatically assigned a value when the function is called." +msgstr "" + +#: python-novice-gapminder/_episodes/15-scope.md:42 +# code block +msgid "~~~\n" +"print('adjusted:', adjust(0.9))\n" +"print('temperature after call:', temperature)\n" +"~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/15-scope.md:47 +# code block +msgid "~~~\n" +"adjusted: 0.01238691049085659\n" +"~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/15-scope.md:51 +# code block +msgid "~~~\n" +"Traceback (most recent call last):\n" +" File \"/Users/swcarpentry/foo.py\", line 8, in \n" +" print('temperature after call:', temperature)\n" +"NameError: name 'temperature' is not defined\n" +"~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/15-scope.md:59 +# blockquote, which can be cascaded +msgid "> ## Local and Global Variable Use" +msgstr "" + +#: python-novice-gapminder/_episodes/15-scope.md:60 +msgid ">\n" +"> Trace the values of all variables in this program as it is executed.\n" +"> (Use '---' as the value of variables before and after they exist.)\n" +">\n" +"> ~~~\n" +"> limit = 100\n" +">\n" +"> def clip(value):\n" +"> return min(max(0.0, value), limit)\n" +">\n" +"> value = -22.5\n" +"> print(clip(value))\n" +"> ~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/15-scope.md:77 +msgid ">\n" +"> Read the traceback below, and identify the following:\n" +">\n" +"> 1. How many levels does the traceback have?\n" +"> 2. What is the file name where the error occurred?\n" +"> 3. What is the function name where the error occurred?\n" +"> 4. On which line number in this function did the error occurr?\n" +"> 5. What is the type of error?\n" +"> 6. What is the error message?\n" +">\n" +"> ~~~\n" +"> ---------------------------------------------------------------------------\n" +"> KeyError Traceback (most recent call last)\n" +"> in ()\n" +"> 1 import errors_02\n" +"> ----> 2 errors_02.print_friday_message()\n" +">\n" +"> /Users/ghopper/thesis/code/errors_02.py in print_friday_message()\n" +"> 13\n" +"> 14 def print_friday_message():\n" +"> ---> 15 print_message(\"Friday\")\n" +">\n" +"> /Users/ghopper/thesis/code/errors_02.py in print_message(day)\n" +"> 9 \"sunday\": \"Aw, the weekend is almost over.\"\n" +"> 10 }\n" +"> ---> 11 print(messages[day])\n" +"> 12\n" +"> 13\n" +">\n" +"> KeyError: 'Friday'\n" +"> ~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/16-coffee.md:1 +# Front Matter +msgid "---\n" +"layout: break\n" +"title: \"Afternoon Coffee\"\n" +"teaching: 0\n" +"exercises: 0\n" +"break: 15\n" +"---" +msgstr "" + +#: python-novice-gapminder/_episodes/17-conditionals.md:1 +# Front Matter +msgid "---\n" +"title: \"Conditionals\"\n" +"teaching: 10\n" +"exercises: 15\n" +"questions:\n" +"- \"How can programs do different things for different data?\"\n" +"objectives:\n" +"- \"Correctly write programs that use if and else statements and simple Boolean expressions (without logical operators).\"\n" +"- \"Trace the execution of unnested conditionals and conditionals inside loops.\"\n" +"keypoints:\n" +"- \"Use `if` statements to control whether or not a block of code is executed.\"\n" +"- \"Conditionals are often used inside loops.\"\n" +"- \"Use `else` to execute a block of code when an `if` condition is *not* true.\"\n" +"- \"Use `elif` to specify additional tests.\"\n" +"- \"Conditions are tested once, in order.\"\n" +"- \"Create a table showing variables' values to trace a program's execution.\"\n" +"---" +msgstr "" + +#: python-novice-gapminder/_episodes/17-conditionals.md:18 +# header +msgid "## Use `if` statements to control whether or not a block of code is executed." +msgstr "" + +#: python-novice-gapminder/_episodes/17-conditionals.md:20 +# unordered list +msgid "* An `if` statement (more properly called a *conditional* statement)" +msgstr "" + +#: python-novice-gapminder/_episodes/17-conditionals.md:21 +msgid " controls whether some block of code is executed or not.\n" +"* Structure is similar to a `for` statement:\n" +" * First line opens with `if` and ends with a colon\n" +" * Body containing one or more statements is indented (usually by 4 spaces)" +msgstr "" + +#: python-novice-gapminder/_episodes/17-conditionals.md:26 +# code block +msgid "~~~\n" +"mass = 3.54\n" +"if mass > 3.0:\n" +" print(mass, 'is large')\n" +"\n" +"mass = 2.07\n" +"if mass > 3.0:\n" +" print (mass, 'is large')\n" +"~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/17-conditionals.md:36 +# code block +msgid "~~~\n" +"3.54 is large\n" +"~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/17-conditionals.md:41 +# header +msgid "## Conditionals are often used inside loops." +msgstr "" + +#: python-novice-gapminder/_episodes/17-conditionals.md:43 +# unordered list +msgid "* Not much point using a conditional when we know the value (as above)." +msgstr "" + +#: python-novice-gapminder/_episodes/17-conditionals.md:44 +# unordered list +msgid "* But useful when we have a collection to process." +msgstr "" + +#: python-novice-gapminder/_episodes/17-conditionals.md:46 +# code block +msgid "~~~\n" +"masses = [3.54, 2.07, 9.22, 1.86, 1.71]\n" +"for m in masses:\n" +" if m > 3.0:\n" +" print(m, 'is large')\n" +"~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/17-conditionals.md:53 +# code block +msgid "~~~\n" +"3.54 is large\n" +"9.22 is large\n" +"~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/17-conditionals.md:59 +# header +msgid "## Use `else` to execute a block of code when an `if` condition is *not* true." +msgstr "" + +#: python-novice-gapminder/_episodes/17-conditionals.md:61 +# unordered list +msgid "* `else` can be used following an `if`." +msgstr "" + +#: python-novice-gapminder/_episodes/17-conditionals.md:62 +# unordered list +msgid "* Allows us to specify an alternative to execute when the `if` *branch* isn't taken." +msgstr "" + +#: python-novice-gapminder/_episodes/17-conditionals.md:64 +# code block +msgid "~~~\n" +"masses = [3.54, 2.07, 9.22, 1.86, 1.71]\n" +"for m in masses:\n" +" if m > 3.0:\n" +" print(m, 'is large')\n" +" else:\n" +" print(m, 'is small')\n" +"~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/17-conditionals.md:73 +# code block +msgid "~~~\n" +"3.54 is large\n" +"2.07 is small\n" +"9.22 is large\n" +"1.86 is small\n" +"1.71 is small\n" +"~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/17-conditionals.md:82 +# header +msgid "## Use `elif` to specify additional tests." +msgstr "" + +#: python-novice-gapminder/_episodes/17-conditionals.md:84 +# unordered list +msgid "* May want to provide several alternative choices, each with its own test." +msgstr "" + +#: python-novice-gapminder/_episodes/17-conditionals.md:85 +# unordered list +msgid "* Use `elif` (short for \"else if\") and a condition to specify these." +msgstr "" + +#: python-novice-gapminder/_episodes/17-conditionals.md:86 +# unordered list +msgid "* Always associated with an `if`." +msgstr "" + +#: python-novice-gapminder/_episodes/17-conditionals.md:87 +# unordered list +msgid "* Must come before the `else` (which is the \"catch all\")." +msgstr "" + +#: python-novice-gapminder/_episodes/17-conditionals.md:89 +# code block +msgid "~~~\n" +"masses = [3.54, 2.07, 9.22, 1.86, 1.71]\n" +"for m in masses:\n" +" if m > 9.0:\n" +" print(m, 'is HUGE')\n" +" elif m > 3.0:\n" +" print(m, 'is large')\n" +" else:\n" +" print(m, 'is small')\n" +"~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/17-conditionals.md:100 +# code block +msgid "~~~\n" +"3.54 is large\n" +"2.07 is small\n" +"9.22 is HUGE\n" +"1.86 is small\n" +"1.71 is small\n" +"~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/17-conditionals.md:109 +# header +msgid "## Conditions are tested once, in order." +msgstr "" + +#: python-novice-gapminder/_episodes/17-conditionals.md:111 +# unordered list +msgid "* Python steps through the branches of the conditional in order, testing each in turn." +msgstr "" + +#: python-novice-gapminder/_episodes/17-conditionals.md:112 +# unordered list +msgid "* So ordering matters." +msgstr "" + +#: python-novice-gapminder/_episodes/17-conditionals.md:114 +# code block +msgid "~~~\n" +"grade = 85\n" +"if grade >= 70:\n" +" print('grade is C')\n" +"elif grade >= 80:\n" +" print('grade is B')\n" +"elif grade >= 90:\n" +" print('grade is A')\n" +"~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/17-conditionals.md:124 +# code block +msgid "~~~\n" +"grade is C\n" +"~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/17-conditionals.md:129 +# unordered list +msgid "* Does *not* automatically go back and re-evaluate if values change." +msgstr "" + +#: python-novice-gapminder/_episodes/17-conditionals.md:131 +# code block +msgid "~~~\n" +"velocity = 10.0\n" +"if velocity > 20.0:\n" +" print('moving too fast')\n" +"else:\n" +" print('adjusting velocity')\n" +" velocity = 50.0\n" +"~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/17-conditionals.md:140 +# code block +msgid "~~~\n" +"adjusting velocity\n" +"~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/17-conditionals.md:145 +# unordered list +msgid "* Often use conditionals in a loop to \"evolve\" the values of variables." +msgstr "" + +#: python-novice-gapminder/_episodes/17-conditionals.md:147 +# code block +msgid "~~~\n" +"velocity = 10.0\n" +"for i in range(5): # execute the loop 5 times\n" +" print(i, ':', velocity)\n" +" if velocity > 20.0:\n" +" print('moving too fast')\n" +" velocity = velocity - 5.0\n" +" else:\n" +" print('moving too slow')\n" +" velocity = velocity + 10.0\n" +"print('final velocity:', velocity)\n" +"~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/17-conditionals.md:160 +# code block +msgid "~~~\n" +"0 : 10.0\n" +"moving too slow\n" +"1 : 20.0\n" +"moving too slow\n" +"2 : 30.0\n" +"moving too fast\n" +"3 : 25.0\n" +"moving too fast\n" +"4 : 20.0\n" +"moving too slow\n" +"final velocity: 30.0\n" +"~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/17-conditionals.md:175 +# header +msgid "## Create a table showing variables' values to trace a program's execution." +msgstr "" + +#: python-novice-gapminder/_episodes/17-conditionals.md:177 +# inline html +msgid "\n" +" \n" +" \n" +" \n" +" \n" +" \n" +" \n" +" \n" +" \n" +" \n" +" \n" +" \n" +" \n" +" \n" +" \n" +" \n" +" \n" +" \n" +" \n" +" \n" +" \n" +" \n" +" \n" +" \n" +" \n" +" \n" +" \n" +"
i0.1.2.3.4.
velocity10.020.0.30.0.25.0.20.0.30.0
" +msgstr "" + +#: python-novice-gapminder/_episodes/17-conditionals.md:206 +# unordered list +msgid "* The program must have a `print` statement *outside* the body of the loop" +msgstr "" + +#: python-novice-gapminder/_episodes/17-conditionals.md:207 +msgid " to show the final value of `velocity`,\n" +" since its value is updated by the last iteration of the loop." +msgstr "" + +#: python-novice-gapminder/_episodes/17-conditionals.md:210 +# blockquote, which can be cascaded +msgid "> ## Compound Relations Using `and`, `or`, and Parentheses" +msgstr "" + +#: python-novice-gapminder/_episodes/17-conditionals.md:211 +msgid ">\n" +"> Often, you want some combination of things to be true. You can combine\n" +"> relations within a conditional using `and` and `or`. Continuing the example\n" +"> above, suppose you have\n" +">\n" +"> ~~~\n" +"> mass = [ 3.54, 2.07, 9.22, 1.86, 1.71]\n" +"> velocity = [10.00, 20.00, 30.00, 25.00, 20.00]\n" +">\n" +"> i = 0\n" +"> for i in range(5):\n" +"> if mass[i] > 5 and velocity[i] > 20:\n" +"> print(\"Fast heavy object. Duck!\")\n" +"> elif mass[i] > 2 and mass[i] <= 5 and velocity[i] <= 20:\n" +"> print(\"Normal traffic\")\n" +"> elif mass[i] <= 2 and velocity[i] <= 20:\n" +"> print(\"Slow light object. Ignore it\")\n" +"> else:\n" +"> print(\"Whoa! Something is up with the data. Check it\")\n" +"> ~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/17-conditionals.md:232 +msgid ">\n" +"> Just like with arithmetic, you can and should use parentheses whenever there\n" +"> is possible ambiguity. A good general rule is to *always* use parentheses\n" +"> when mixing `and` and `or` in the same condition. That is, instead of:\n" +">\n" +"> ~~~\n" +"> if mass[i] <= 2 or mass[i] >= 5 and velocity[i] > 20:\n" +"> ~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/17-conditionals.md:241 +msgid ">\n" +"> write one of these:\n" +">\n" +"> ~~~\n" +"> if (mass[i] <= 2 or mass[i] >= 5) and velocity[i] > 20:\n" +"> if mass[i] <= 2 or (mass[i] >= 5 and velocity[i] > 20):\n" +"> ~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/17-conditionals.md:249 +msgid ">\n" +"> so it is perfectly clear to a reader (and to Python) what you really mean." +msgstr "" + +#: python-novice-gapminder/_episodes/17-conditionals.md:254 +msgid ">\n" +"> What does this program print?\n" +">\n" +"> ~~~\n" +"> pressure = 71.9\n" +"> if pressure > 50.0:\n" +"> pressure = 25.0\n" +"> elif pressure <= 50.0:\n" +"> pressure = 0.0\n" +"> print(pressure)\n" +"> ~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/17-conditionals.md:266 +msgid ">\n" +"> > ## Solution\n" +"> >\n" +"> > ~~~\n" +"> > 25.0\n" +"> > ~~~\n" +"> > {: .output}" +msgstr "" + +#: python-novice-gapminder/_episodes/17-conditionals.md:276 +# blockquote, which can be cascaded +msgid "> ## Trimming Values" +msgstr "" + +#: python-novice-gapminder/_episodes/17-conditionals.md:277 +msgid ">\n" +"> Fill in the blanks so that this program creates a new list\n" +"> containing zeroes where the original list's values were negative\n" +"> and ones where the original list's values were positive.\n" +">\n" +"> ~~~\n" +"> original = [-1.5, 0.2, 0.4, 0.0, -1.3, 0.4]\n" +"> result = ____\n" +"> for value in original:\n" +"> if ____:\n" +"> result.append(0)\n" +"> else:\n" +"> ____\n" +"> print(result)\n" +"> ~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/17-conditionals.md:293 +msgid ">\n" +"> ~~~\n" +"> [0, 1, 1, 1, 0, 1]\n" +"> ~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/17-conditionals.md:301 +# blockquote, which can be cascaded +msgid "> > original = [-1.5, 0.2, 0.4, 0.0, -1.3, 0.4]" +msgstr "" + +#: python-novice-gapminder/_episodes/17-conditionals.md:302 +# blockquote, which can be cascaded +msgid "> > result = []" +msgstr "" + +#: python-novice-gapminder/_episodes/17-conditionals.md:303 +# blockquote, which can be cascaded +msgid "> > for value in original:" +msgstr "" + +#: python-novice-gapminder/_episodes/17-conditionals.md:304 +# blockquote, which can be cascaded +msgid "> > if value<0.0:" +msgstr "" + +#: python-novice-gapminder/_episodes/17-conditionals.md:305 +# blockquote, which can be cascaded +msgid "> > result.append(0)" +msgstr "" + +#: python-novice-gapminder/_episodes/17-conditionals.md:307 +# blockquote, which can be cascaded +msgid "> > result.append(1)" +msgstr "" + +#: python-novice-gapminder/_episodes/17-conditionals.md:314 +# blockquote, which can be cascaded +msgid "> ## Processing Small Files" +msgstr "" + +#: python-novice-gapminder/_episodes/17-conditionals.md:315 +msgid ">\n" +"> Modify this program so that it only processes files with fewer than 50 records.\n" +">\n" +"> ~~~\n" +"> import glob\n" +"> import pandas\n" +"> for filename in glob.glob('data/*.csv'):\n" +"> contents = pandas.read_csv(filename)\n" +"> ____:\n" +"> print(filename, len(contents))\n" +"> ~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/17-conditionals.md:330 +# blockquote, which can be cascaded +msgid "> > import glob" +msgstr "" + +#: python-novice-gapminder/_episodes/17-conditionals.md:332 +# blockquote, which can be cascaded +msgid "> > for filename in glob.glob('data/*.csv'):" +msgstr "" + +#: python-novice-gapminder/_episodes/17-conditionals.md:333 +# blockquote, which can be cascaded +msgid "> > contents = pandas.read_csv(filename)" +msgstr "" + +#: python-novice-gapminder/_episodes/17-conditionals.md:334 +# blockquote, which can be cascaded +msgid "> > if len(contents)<50:" +msgstr "" + +#: python-novice-gapminder/_episodes/17-conditionals.md:335 +# blockquote, which can be cascaded +msgid "> > print(filename, len(contents))" +msgstr "" + +#: python-novice-gapminder/_episodes/17-conditionals.md:341 +# blockquote, which can be cascaded +msgid "> ## Initializing" +msgstr "" + +#: python-novice-gapminder/_episodes/17-conditionals.md:342 +msgid ">\n" +"> Modify this program so that it finds the largest and smallest values in the list\n" +"> no matter what the range of values originally is.\n" +">\n" +"> ~~~\n" +"> values = [...some test data...]\n" +"> smallest, largest = None, None\n" +"> for v in values:\n" +"> if ____:\n" +"> smallest, largest = v, v\n" +"> ____:\n" +"> smallest = min(____, v)\n" +"> largest = max(____, v)\n" +"> print(smallest, largest)\n" +"> ~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/17-conditionals.md:358 +msgid ">\n" +"> What are the advantages and disadvantages of using this method\n" +"> to find the range of the data?\n" +"> > ## Solution\n" +"> >\n" +"> > ~~~\n" +"> > values = [-2,1,65,78,-54,-24,100]\n" +"> > smallest, largest = None, None\n" +"> > for v in values:\n" +"> > if smallest==None and largest==None:\n" +"> > smallest, largest = v, v\n" +"> > else:\n" +"> > smallest = min(smallest, v)\n" +"> > largest = max(largest, v)\n" +"> > print(smallest, largest)\n" +"> > ~~~\n" +"> > {: .python}" +msgstr "" + +#: python-novice-gapminder/_episodes/17-conditionals.md:378 +# blockquote, which can be cascaded +msgid "> ## Using Functions With Conditionals in Pandas" +msgstr "" + +#: python-novice-gapminder/_episodes/17-conditionals.md:379 +msgid ">\n" +"> Functions will often contain conditionals. Here is a short example that\n" +"> will indicate which quartile the argument is in based on hand-coded values\n" +"> for the quartile cut points.\n" +">\n" +"> ~~~\n" +"> def calculate_life_quartile(exp):\n" +"> if exp < 58.41:\n" +"> # This observation is in the first quartile\n" +"> return 1\n" +"> elif exp >= 58.41 and exp < 67.05:\n" +"> # This observation is in the second quartile\n" +"> return 2\n" +"> elif exp >= 67.05 and exp < 71.70:\n" +"> # This observation is in the third quartile\n" +"> return 3\n" +"> elif exp >= 71.70:\n" +"> # This observation is in the fourth quartile\n" +"> return 4\n" +"> else:\n" +"> # This observation has bad data\n" +"> return None\n" +">\n" +"> calculate_life_quartile(62.5)\n" +"> ~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/17-conditionals.md:405 +msgid ">\n" +"> ~~~\n" +"> 2\n" +"> ~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/17-conditionals.md:410 +msgid ">\n" +"> That function would typically be used within a `for` loop, but Pandas has\n" +"> a different, more efficient way of doing the same thing, and that is by\n" +"> *applying* a function to a dataframe or a portion of a dataframe. Here\n" +"> is an example, using the definition above.\n" +">\n" +"> ~~~\n" +"> data = pd.read_csv('Americas-data.csv')\n" +"> data['life_qrtl'] = data['lifeExp'].apply(calculate_life_quartile)\n" +"> ~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/17-conditionals.md:421 +msgid ">\n" +"> There is a lot in that second line, so let's take it piece by piece.\n" +"> On the right side of the `=` we start with `data['lifeExp']`, which is the\n" +"> column in the dataframe called `data` labeled `lifExp`. We use the\n" +"> `apply()` to do what it says, apply the `calculate_life_quartile` to the\n" +"> value of this column for every row in the dataframe." +msgstr "" + +#: python-novice-gapminder/_episodes/18-style.md:1 +# Front Matter +msgid "---\n" +"title: \"Programming Style\"\n" +"teaching: 15\n" +"exercises: 15\n" +"questions:\n" +"- \"How can I make my programs more readable?\"\n" +"- \"How do most programmers format their code?\"\n" +"- \"How can programs check their own operation?\"\n" +"objectives:\n" +"- \"Provide sound justifications for basic rules of coding style.\"\n" +"- \"Refactor one-page programs to make them more readable and justify the changes.\"\n" +"- \"Use Python community coding standards (PEP-8).\"\n" +"keypoints:\n" +"- \"Follow standard Python style in your code.\"\n" +"- \"Use docstrings to provide online help.\"\n" +"---" +msgstr "" + +#: python-novice-gapminder/_episodes/18-style.md:18 +# header +msgid "## Coding style" +msgstr "" + +#: python-novice-gapminder/_episodes/18-style.md:20 +msgid "Coding style helps us to understand the code better. It helps to maintain and change the code.\n" +"Python relies strongly on coding style, as we may notice by the indentation we apply to lines to define different blocks of code.\n" +"Python proposes a standard style through one of its first Python Enhancement Proposals (PEP), [PEP8](https://www.python.org/dev/peps/pep-0008), and highlight the importance of readability in the [Zen of Python](https://www.python.org/dev/peps/pep-0020)." +msgstr "" + +#: python-novice-gapminder/_episodes/18-style.md:24 +msgid "We may highlight some points:\n" +"* document your code\n" +"* use clear, meaningful variable names\n" +"* use white-space, *not* tabs, to indent lines" +msgstr "" + +#: python-novice-gapminder/_episodes/18-style.md:30 +# header +msgid "## Follow standard Python style in your code." +msgstr "" + +#: python-novice-gapminder/_episodes/18-style.md:32 +# unordered list +msgid "* [PEP8](https://www.python.org/dev/peps/pep-0008):" +msgstr "" + +#: python-novice-gapminder/_episodes/18-style.md:33 +msgid " a style guide for Python that discusses topics such as how you should name variables,\n" +" how you should use indentation in your code,\n" +" how you should structure your `import` statements,\n" +" etc.\n" +" Adhering to PEP8 makes it easier for other Python developers to read and understand your code,\n" +" and to understand what their contributions should look like.\n" +" The [PEP8 application and Python library](https://pypi.python.org/pypi/pep8)\n" +" can check your code for compliance with PEP8.\n" +"* [Google style guide on Python](https://google.github.io/styleguide/pyguide.html) \n" +" supports the use of PEP8 and extend the coding style to more specific structure of \n" +" a Python code, which may be interesting also to follow." +msgstr "" + +#: python-novice-gapminder/_episodes/18-style.md:45 +# header +msgid "## Use assertions to check for internal errors." +msgstr "" + +#: python-novice-gapminder/_episodes/18-style.md:47 +msgid "Assertions are a simple, but powerful method for making sure that the context in which your code is executing is as you expect." +msgstr "" + +#: python-novice-gapminder/_episodes/18-style.md:49 +# code block +msgid "~~~\n" +"def calc_bulk_density(mass, volume):\n" +" '''Return dry bulk density = powder mass / powder volume.'''\n" +" assert volume > 0\n" +" return mass / volume\n" +"~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/18-style.md:57 +msgid "If the assertion is `False`, the Python interpreter raises an `AssertionError` runtime exception. The source code for the expression that failed will be displayed as part of the error message. To ignore assertions in your code run the interpreter with the '-O' (optimize) switch. Assertions should contain only simple checks and never change the state of the program. For example, an assertion should never contain an assignment." +msgstr "" + +#: python-novice-gapminder/_episodes/18-style.md:59 +# header +msgid "## Use docstrings to provide online help." +msgstr "" + +#: python-novice-gapminder/_episodes/18-style.md:61 +# unordered list +msgid "* If the first thing in a function is a character string" +msgstr "" + +#: python-novice-gapminder/_episodes/18-style.md:62 +msgid " that is not assigned to a variable,\n" +" Python attaches it to the function as the online help.\n" +"* Called a *docstring* (short for \"documentation string\")." +msgstr "" + +#: python-novice-gapminder/_episodes/18-style.md:66 +# code block +msgid "~~~\n" +"def average(values):\n" +" \"Return average of values, or None if no values are supplied.\"\n" +"\n" +" if len(values) == 0:\n" +" return None\n" +" return sum(values) / average(values)\n" +"\n" +"help(average)\n" +"~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/18-style.md:77 +# code block +msgid "~~~\n" +"Help on function average in module __main__:\n" +"\n" +"average(values)\n" +" Return average of values, or None if no values are supplied.\n" +"~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/18-style.md:85 +# blockquote, which can be cascaded +msgid "> ## Multiline Strings" +msgstr "" + +#: python-novice-gapminder/_episodes/18-style.md:86 +msgid ">\n" +"> Often use *multiline strings* for documentation.\n" +"> These start and end with three quote characters (either single or double)\n" +"> and end with three matching characters.\n" +">\n" +"> ~~~\n" +"> \"\"\"This string spans\n" +"> multiple lines.\n" +">\n" +"> Blank lines are allowed.\"\"\"\n" +"> ~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/18-style.md:100 +# blockquote, which can be cascaded +msgid "> ## What Will Be Shown?" +msgstr "" + +#: python-novice-gapminder/_episodes/18-style.md:101 +msgid ">\n" +"> Highlight the lines in the code below that will be available as online help.\n" +"> Are there lines that should be made available, but won't be?\n" +"> Will any lines produce a syntax error or a runtime error?\n" +">\n" +"> ~~~\n" +"> \"Find maximum edit distance between multiple sequences.\"\n" +"> # This finds the maximum distance between all sequences.\n" +">\n" +"> def overall_max(sequences):\n" +"> '''Determine overall maximum edit distance.'''\n" +">\n" +"> highest = 0\n" +"> for left in sequences:\n" +"> for right in sequences:\n" +"> '''Avoid checking sequence against itself.'''\n" +"> if left != right:\n" +"> this = edit_distance(left, right)\n" +"> highest = max(highest, this)\n" +">\n" +"> # Report.\n" +"> return highest\n" +"> ~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/18-style.md:127 +# blockquote, which can be cascaded +msgid "> ## Document This" +msgstr "" + +#: python-novice-gapminder/_episodes/18-style.md:128 +msgid ">\n" +"> Turn the comment on the following function into a docstring\n" +"> and check that `help` displays it properly.\n" +">\n" +"> ~~~\n" +"> def middle(a, b, c):\n" +"> # Return the middle value of three.\n" +"> # Assumes the values can actually be compared.\n" +"> values = [a, b, c]\n" +"> values.sort()\n" +"> return values[1]\n" +"> ~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/18-style.md:144 +# blockquote, which can be cascaded +msgid "> > def middle(a, b, c):" +msgstr "" + +#: python-novice-gapminder/_episodes/18-style.md:145 +# blockquote, which can be cascaded +msgid "> > '''Return the middle value of three." +msgstr "" + +#: python-novice-gapminder/_episodes/18-style.md:146 +# blockquote, which can be cascaded +msgid "> > Assumes the values can actually be compared.'''" +msgstr "" + +#: python-novice-gapminder/_episodes/18-style.md:147 +# blockquote, which can be cascaded +msgid "> > values = [a, b, c]" +msgstr "" + +#: python-novice-gapminder/_episodes/18-style.md:148 +# blockquote, which can be cascaded +msgid "> > values.sort()" +msgstr "" + +#: python-novice-gapminder/_episodes/18-style.md:149 +# blockquote, which can be cascaded +msgid "> > return values[1]" +msgstr "" + +#: python-novice-gapminder/_episodes/18-style.md:155 +# blockquote, which can be cascaded +msgid "> ## Clean Up This Code" +msgstr "" + +#: python-novice-gapminder/_episodes/18-style.md:156 +msgid ">\n" +"> 1. Read this short program and try to predict what it does.\n" +"> 2. Run it: how accurate was your prediction?\n" +"> 3. Refactor the program to make it more readable.\n" +"> Remember to run it after each change to ensure its behavior hasn't changed.\n" +"> 4. Compare your rewrite with your neighbor's.\n" +"> What did you do the same?\n" +"> What did you do differently, and why?\n" +">\n" +"> ~~~\n" +"> n = 10\n" +"> s = 'et cetera'\n" +"> print(s)\n" +"> i = 0\n" +"> while i < n:\n" +"> # print('at', j)\n" +"> new = ''\n" +"> for j in range(len(s)):\n" +"> left = j-1\n" +"> right = (j+1)%len(s)\n" +"> if s[left]==s[right]: new += '-'\n" +"> else: new += '*'\n" +"> s=''.join(new)\n" +"> print(s)\n" +"> i += 1\n" +"> ~~~" +msgstr "" + +#: python-novice-gapminder/_episodes/18-style.md:183 +msgid ">\n" +"> > ## Solution\n" +"> >\n" +"> > Here's one solution.\n" +"> >\n" +"> > ~~~\n" +"> > def string_machine(input_string, iterations):\n" +"> > \"\"\"\n" +"> > Takes input_string and generates a new string with -'s and *'s\n" +"> > corresponding to characters that have identical adjacent characters\n" +"> > or not, respectively. Iterates through this procedure with the resultant\n" +"> > strings for the supplied number of iterations.\n" +"> > \"\"\"\n" +"> > print(input_string)\n" +"> > old = input_string\n" +"> > for i in range(iterations):\n" +"> > new = ''\n" +"> > # iterate through characters in previous string\n" +"> > for j in range(len(input_string)):\n" +"> > left = j-1\n" +"> > right = (j+1)%len(input_string) # ensure right index wraps around\n" +"> > if old[left]==old[right]:\n" +"> > new += '-'\n" +"> > else:\n" +"> > new += '*'\n" +"> > print(new)\n" +"> > # store new string as old\n" +"> > old = new\n" +"> >\n" +"> > string_machine('et cetera', 10)\n" +"> > ~~~\n" +"> > {: .python}\n" +"> > \n" +"> > ~~~\n" +"> > et cetera\n" +"> > *****-***\n" +"> > ----*-*--\n" +"> > ---*---*-\n" +"> > --*-*-*-*\n" +"> > **-------\n" +"> > ***-----*\n" +"> > --**---**\n" +"> > *****-***\n" +"> > ----*-*--\n" +"> > ---*---*-\n" +"> > ~~~\n" +"> > {: .output}" +msgstr "" + +#: python-novice-gapminder/_episodes/19-wrap.md:1 +# Front Matter +msgid "---\n" +"title: \"Wrap-Up\"\n" +"teaching: 20\n" +"exercises: 0\n" +"questions:\n" +"- \"What have we learned?\"\n" +"- \"What else is out there and where do I find it?\"\n" +"objectives:\n" +"- \"Name and locate scientific Python community sites for software, workshops, and help.\"\n" +"keypoints:\n" +"- \"Python supports a large community within and outwith research.\"\n" +"---" +msgstr "" + +#: python-novice-gapminder/_episodes/19-wrap.md:14 +msgid "Leslie Lamport once said, \"Writing is nature's way of showing you how sloppy your thinking is.\"\n" +"The same is true of programming:\n" +"many things that seem obvious when we're thinking about them\n" +"turn out to be anything but when we have to explain them precisely." +msgstr "" + +#: python-novice-gapminder/_episodes/19-wrap.md:19 +# header +msgid "## Python supports a large community within and outwith research." +msgstr "" + +#: python-novice-gapminder/_episodes/19-wrap.md:21 +# unordered list +msgid "* The [Python 3 documentation](https://docs.python.org/3/) covers the core language" +msgstr "" + +#: python-novice-gapminder/_episodes/19-wrap.md:22 +msgid " and the standard library." +msgstr "" + +#: python-novice-gapminder/_episodes/19-wrap.md:24 +# unordered list +msgid "* [PyCon](https://pycon.org/) is the largest annual conference for the Python community." +msgstr "" + +#: python-novice-gapminder/_episodes/19-wrap.md:26 +# unordered list +msgid "* [SciPy](https://scipy.org) is a rich collection of scientific utilities." +msgstr "" + +#: python-novice-gapminder/_episodes/19-wrap.md:27 +msgid " It is also the name of [a series of annual conferences](https://conference.scipy.org/)." +msgstr "" + +#: python-novice-gapminder/_episodes/19-wrap.md:29 +# unordered list +msgid "* [Jupyter](https://jupyter.org) is the home of the Jupyter Notebook." +msgstr "" + +#: python-novice-gapminder/_episodes/19-wrap.md:31 +# unordered list +msgid "* [Pandas](https://pandas.pydata.org) is the home of the Pandas data library." +msgstr "" + +#: python-novice-gapminder/_episodes/19-wrap.md:33 +# unordered list +msgid "* Stack Overflow's [general Python section](http://stackoverflow.com/questions/tagged/python)" +msgstr "" + +#: python-novice-gapminder/_episodes/19-wrap.md:34 +msgid " can be helpful,\n" +" as can the sections on [NumPy](http://stackoverflow.com/questions/tagged/numpy),\n" +" [SciPy](http://stackoverflow.com/questions/tagged/scipy),\n" +" [Pandas](http://stackoverflow.com/questions/tagged/pandas),\n" +" and other topics." +msgstr "" + +#: python-novice-gapminder/_episodes/20-feedback.md:1 +# Front Matter +msgid "---\n" +"title: \"Feedback\"\n" +"teaching: 0\n" +"exercises: 15\n" +"questions:\n" +"- \"How did the class go?\"\n" +"objectives:\n" +"- \"Gather feedback on the class\"\n" +"keypoints:\n" +"- \"We are constantly seeking to improve this course.\"\n" +"---" +msgstr "" + +#: python-novice-gapminder/_episodes/20-feedback.md:13 +msgid "Gather feedback from participants." +msgstr "" + +#: python-novice-gapminder/_extras/about.md:1 +# Front Matter +msgid "---\n" +"layout: page\n" +"title: About\n" +"permalink: /about/\n" +"---" +msgstr "" + +#: python-novice-gapminder/_extras/about.md:6 +msgid "{% include carpentries.html %}" +msgstr "" + +#: python-novice-gapminder/_extras/design.md:1 +# Front Matter +msgid "---\n" +"layout: page\n" +"title: \"Lesson Design\"\n" +"permalink: /design/\n" +"---" +msgstr "" + +#: python-novice-gapminder/_extras/design.md:7 +# blockquote, which can be cascaded +msgid "> ## Help Wanted" +msgstr "" + +#: python-novice-gapminder/_extras/design.md:8 +# blockquote, which can be cascaded +msgid "> {:.no_toc}" +msgstr "" + +#: python-novice-gapminder/_extras/design.md:9 +msgid ">\n" +"> **We are filling in the exercises [below](#stage-3-learning-plan)\n" +"> in order to make the lesson plan more concrete.\n" +"> Contributions (both in the form of pull requests with filled-in exercises,\n" +"> and comments on specific exercises, ordering, and timings) are greatly appreciated.**" +msgstr "" + +#: python-novice-gapminder/_extras/design.md:16 +# header +msgid "## Process Used" +msgstr "" + +#: python-novice-gapminder/_extras/design.md:18 +# blockquote, which can be cascaded +msgid "> Michael Pollan's advice if he taught R or Python programming:" +msgstr "" + +#: python-novice-gapminder/_extras/design.md:19 +msgid ">\n" +"> 1. Write code.\n" +"> 2. Not too much.\n" +"> 3. Mostly plots.\n" +">\n" +"> — [Michael Koontz](https://twitter.com/_mikoontz/status/758021742078025728)" +msgstr "" + +#: python-novice-gapminder/_extras/design.md:25 +# SC/DC Template label +msgid "{: .quotation}" +msgstr "" + +#: python-novice-gapminder/_extras/design.md:27 +msgid "This lesson was developed using a slimmed-down variant of the \"Understanding by Design\" process.\n" +"The main sections are:" +msgstr "" + +#: python-novice-gapminder/_extras/design.md:30 +# ordered list +msgid "1. Assumptions about audience, time, etc." +msgstr "" + +#: python-novice-gapminder/_extras/design.md:31 +msgid " (The current draft also includes some conclusions and decisions in this \n" +" section - that should be refactored.)" +msgstr "" + +#: python-novice-gapminder/_extras/design.md:34 +# ordered list +msgid "2. Desired results:" +msgstr "" + +#: python-novice-gapminder/_extras/design.md:35 +msgid " overall goals, summative assessments at half-day granularity, what learners \n" +" will be able to do, what learners will know." +msgstr "" + +#: python-novice-gapminder/_extras/design.md:38 +# ordered list +msgid "3. Learning plan:" +msgstr "" + +#: python-novice-gapminder/_extras/design.md:39 +msgid " each episode has a heading that summarizes what will be covered,\n" +" then estimates time that will be spent on teaching and on exercises,\n" +" while the exercises are given as bullet points." +msgstr "" + +#: python-novice-gapminder/_extras/design.md:43 +# header +msgid "## Stage 1: Assumptions" +msgstr "" + +#: python-novice-gapminder/_extras/design.md:45 +# unordered list +msgid "* Audience" +msgstr "" + +#: python-novice-gapminder/_extras/design.md:46 +# unordered list +msgid " * Graduate students in numerate disciplines from cosmology to archaeology" +msgstr "" + +#: python-novice-gapminder/_extras/design.md:47 +# unordered list +msgid " * Who have manipulated data in spreadsheets and with interactive tools like SAS" +msgstr "" + +#: python-novice-gapminder/_extras/design.md:48 +# unordered list +msgid " * But have *not* programmed beyond CPD (copy-paste-despair)" +msgstr "" + +#: python-novice-gapminder/_extras/design.md:49 +# unordered list +msgid "* Constraints" +msgstr "" + +#: python-novice-gapminder/_extras/design.md:50 +# unordered list +msgid " * One full day 09:00-16:30" +msgstr "" + +#: python-novice-gapminder/_extras/design.md:51 +# unordered list +msgid " * 06:15 class time" +msgstr "" + +#: python-novice-gapminder/_extras/design.md:52 +# unordered list +msgid " * 0:45 lunch" +msgstr "" + +#: python-novice-gapminder/_extras/design.md:53 +# unordered list +msgid " * 0:30 total for two coffee breaks" +msgstr "" + +#: python-novice-gapminder/_extras/design.md:54 +# unordered list +msgid " * Learners use native installs on their own machines" +msgstr "" + +#: python-novice-gapminder/_extras/design.md:55 +# unordered list +msgid " * May use VMs or cloud resources at instructor's discretion" +msgstr "" + +#: python-novice-gapminder/_extras/design.md:56 +# unordered list +msgid " * But must keep native local install as an option" +msgstr "" + +#: python-novice-gapminder/_extras/design.md:57 +# unordered list +msgid " * No dependence on other Carpentry modules" +msgstr "" + +#: python-novice-gapminder/_extras/design.md:58 +# unordered list +msgid " * In particular, does not require knowledge of shell or version control" +msgstr "" + +#: python-novice-gapminder/_extras/design.md:59 +# unordered list +msgid " * Use the Jupyter Notebook" +msgstr "" + +#: python-novice-gapminder/_extras/design.md:60 +# unordered list +msgid " * Authentic tool used by many instructors" +msgstr "" + +#: python-novice-gapminder/_extras/design.md:61 +# unordered list +msgid " * There isn't really an alternative" +msgstr "" + +#: python-novice-gapminder/_extras/design.md:62 +# unordered list +msgid " * And means that even people who have seen a bit of Python before" +msgstr "" + +#: python-novice-gapminder/_extras/design.md:63 +msgid " will probably learn something\n" +"* Motivating Example\n" +" * Creating 2D plots suitable for inclusion in papers\n" +" * Appeals to almost everyone\n" +" * Makes lesson usable by both Carpentries\n" +" * And means that even people who have seen a bit of Python before \n" +" will probably learn something\n" +"* Data\n" +" * Use the gapminder data throughout\n" +" * But break into multiple files by continent\n" +" * To make display of output from examples tidier\n" +" (e.g., use Australia/New Zealand, which is only two lines)\n" +" * And allow examples showing use of multiple data sets\n" +"* Focus on Pandas instead of NumPy\n" +" * Makes lesson usable by both Data Carpentry and Software Carpentry\n" +" * Genuine novices are likely to want data analysis\n" +" * And people with some prior experience:\n" +" * will accept data analysis as an authentic task,\n" +" * and are unlikely to have encountered Pandas,\n" +" so they'll still get something useful out of the lesson\n" +"* Challenges will mostly *not* be \"write this code from scratch\"\n" +" * Want lots of short exercises that can reliably be finished in allotted time\n" +" * So use MCQs, fill-in-the-blanks, Parsons Problems, \"tweak this code\", etc." +msgstr "" + +#: python-novice-gapminder/_extras/design.md:87 +# header +msgid "## Stage 2: Desired Results" +msgstr "" + +#: python-novice-gapminder/_extras/design.md:89 +# header +msgid "### Questions" +msgstr "" + +#: python-novice-gapminder/_extras/design.md:91 +msgid "How do I..." +msgstr "" + +#: python-novice-gapminder/_extras/design.md:93 +# unordered list +msgid "* ...read tabular data?" +msgstr "" + +#: python-novice-gapminder/_extras/design.md:94 +# unordered list +msgid "* ...plot a single vector of values?" +msgstr "" + +#: python-novice-gapminder/_extras/design.md:95 +# unordered list +msgid "* ...create a time series plot?" +msgstr "" + +#: python-novice-gapminder/_extras/design.md:96 +# unordered list +msgid "* ...create one plot for each of several data sets?" +msgstr "" + +#: python-novice-gapminder/_extras/design.md:97 +# unordered list +msgid "* ...get extra data from a single data set for plotting?" +msgstr "" + +#: python-novice-gapminder/_extras/design.md:98 +# unordered list +msgid "* ...write programs I can read and re-use in future?" +msgstr "" + +#: python-novice-gapminder/_extras/design.md:100 +# header +msgid "### Skills" +msgstr "" + +#: python-novice-gapminder/_extras/design.md:102 +msgid "I can..." +msgstr "" + +#: python-novice-gapminder/_extras/design.md:104 +# unordered list +msgid "* ...write short scripts using loops and conditionals." +msgstr "" + +#: python-novice-gapminder/_extras/design.md:105 +# unordered list +msgid "* ...write functions with a fixed number of parameters that return a single result." +msgstr "" + +#: python-novice-gapminder/_extras/design.md:106 +# unordered list +msgid "* ...import libraries using aliases and refer to those libraries' contents." +msgstr "" + +#: python-novice-gapminder/_extras/design.md:107 +# unordered list +msgid "* ...do simple data extraction and formatting using Pandas." +msgstr "" + +#: python-novice-gapminder/_extras/design.md:109 +# header +msgid "### Concepts" +msgstr "" + +#: python-novice-gapminder/_extras/design.md:111 +msgid "I know..." +msgstr "" + +#: python-novice-gapminder/_extras/design.md:113 +# unordered list +msgid "* ...that a program is a piece of lab equipment that implements an analysis" +msgstr "" + +#: python-novice-gapminder/_extras/design.md:114 +# unordered list +msgid " * Needs to be validated/calibrated before/during use" +msgstr "" + +#: python-novice-gapminder/_extras/design.md:115 +# unordered list +msgid " * Makes analysis reproducible, reviewable, shareable" +msgstr "" + +#: python-novice-gapminder/_extras/design.md:116 +# unordered list +msgid "* ...that programs are written for people, not for computers" +msgstr "" + +#: python-novice-gapminder/_extras/design.md:117 +# unordered list +msgid " * Meaningful variable names" +msgstr "" + +#: python-novice-gapminder/_extras/design.md:118 +# unordered list +msgid " * Modularity for readability as well as re-use" +msgstr "" + +#: python-novice-gapminder/_extras/design.md:119 +# unordered list +msgid " * No duplication" +msgstr "" + +#: python-novice-gapminder/_extras/design.md:120 +# unordered list +msgid " * Document purpose and use" +msgstr "" + +#: python-novice-gapminder/_extras/design.md:121 +# unordered list +msgid "* ...that there is no magic: the programs they use are no different " +msgstr "" + +#: python-novice-gapminder/_extras/design.md:122 +msgid " in principle from those they build\n" +"* ...how to assign values to variables\n" +"* ...what integers, floats, strings, NumPy arrays, and Pandas dataframes are\n" +"* ...how to trace the execution of a `for` loop\n" +"* ...how to trace the execution of `if`/`else` statements\n" +"* ...how to create and index lists\n" +"* ...how to create and index NumPy arrays\n" +"* ...how to create and index Pandas dataframes\n" +"* ...how to create time series plots\n" +"* ...the difference between defining and calling a function\n" +"* ...where to find documentation on standard libraries\n" +"* ...how to find out what else scientific Python offers" +msgstr "" + +#: python-novice-gapminder/_extras/design.md:135 +# header +msgid "## Stage 3: Learning Plan" +msgstr "" + +#: python-novice-gapminder/_extras/design.md:137 +# header +msgid "### Summative Assessment" +msgstr "" + +#: python-novice-gapminder/_extras/design.md:139 +# unordered list +msgid "* Midpoint: create time-series plot for each file in a directory." +msgstr "" + +#: python-novice-gapminder/_extras/design.md:140 +# unordered list +msgid "* Final: extract data from Pandas dataframe" +msgstr "" + +#: python-novice-gapminder/_extras/design.md:141 +msgid " and create comparative multi-line time series plot." +msgstr "" + +#: python-novice-gapminder/_extras/design.md:143 +# header +msgid "### [Running and Quitting Interactively]({{page.root}}/01-run-quit/) (9:00)" +msgstr "" + +#: python-novice-gapminder/_extras/design.md:145 +# unordered list +msgid "* Teaching: 15 min (because setup issues)" +msgstr "" + +#: python-novice-gapminder/_extras/design.md:146 +# unordered list +msgid " * Launch the Jupyter Notebook, create new notebooks, and exit the Notebook." +msgstr "" + +#: python-novice-gapminder/_extras/design.md:147 +# unordered list +msgid " * Create Markdown cells in a notebook." +msgstr "" + +#: python-novice-gapminder/_extras/design.md:148 +# unordered list +msgid " * Create and run Python cells in a notebook." +msgstr "" + +#: python-novice-gapminder/_extras/design.md:149 +# unordered list +msgid "* Challenges: 0 min (accounted for in teaching time - no separate exercise)" +msgstr "" + +#: python-novice-gapminder/_extras/design.md:150 +# unordered list +msgid " * Creating lists in Markdown" +msgstr "" + +#: python-novice-gapminder/_extras/design.md:151 +# unordered list +msgid " * What is displayed when several expressions are put in a single cell?" +msgstr "" + +#: python-novice-gapminder/_extras/design.md:152 +# unordered list +msgid " * Change an existing cell from code to Markdown" +msgstr "" + +#: python-novice-gapminder/_extras/design.md:153 +# unordered list +msgid " * Rendering LaTeX-style equations" +msgstr "" + +#: python-novice-gapminder/_extras/design.md:155 +# header +msgid "### [Variables and Assignment]({{page.root}}/02-variables/) (9:15)" +msgstr "" + +#: python-novice-gapminder/_extras/design.md:157 +#: python-novice-gapminder/_extras/design.md:169 +#: python-novice-gapminder/_extras/design.md:204 +#: python-novice-gapminder/_extras/design.md:216 +#: python-novice-gapminder/_extras/design.md:259 +#: python-novice-gapminder/_extras/design.md:273 +#: python-novice-gapminder/_extras/design.md:297 +#: python-novice-gapminder/_extras/design.md:311 +#: python-novice-gapminder/_extras/design.md:323 +# unordered list +msgid "* Teaching: 10 min" +msgstr "" + +#: python-novice-gapminder/_extras/design.md:158 +# unordered list +msgid " * Write programs that assign scalar values to variables and perform calculations with those values." +msgstr "" + +#: python-novice-gapminder/_extras/design.md:159 +# unordered list +msgid " * Correctly trace value changes in programs that use scalar assignment." +msgstr "" + +#: python-novice-gapminder/_extras/design.md:160 +#: python-novice-gapminder/_extras/design.md:173 +#: python-novice-gapminder/_extras/design.md:193 +#: python-novice-gapminder/_extras/design.md:208 +#: python-novice-gapminder/_extras/design.md:220 +#: python-novice-gapminder/_extras/design.md:262 +#: python-novice-gapminder/_extras/design.md:290 +#: python-novice-gapminder/_extras/design.md:315 +# unordered list +msgid "* Challenges: 10 min" +msgstr "" + +#: python-novice-gapminder/_extras/design.md:161 +# unordered list +msgid " * Trace execution of code swapping two values using an intermediate variable." +msgstr "" + +#: python-novice-gapminder/_extras/design.md:162 +# unordered list +msgid " * Predict final values of variables after several assignments." +msgstr "" + +#: python-novice-gapminder/_extras/design.md:163 +# unordered list +msgid " * What happens if you try to index a number?" +msgstr "" + +#: python-novice-gapminder/_extras/design.md:164 +# unordered list +msgid " * Which is a better variable name, `m`, `min`, or `minutes`?" +msgstr "" + +#: python-novice-gapminder/_extras/design.md:165 +# unordered list +msgid " * What do the following slice expressions produce?" +msgstr "" + +#: python-novice-gapminder/_extras/design.md:167 +# header +msgid "### [Data Types and Type Conversion]({{page.root}}/03-types-conversion/) (09:35)" +msgstr "" + +#: python-novice-gapminder/_extras/design.md:170 +# unordered list +msgid " * Explain key differences between integers and floating point numbers." +msgstr "" + +#: python-novice-gapminder/_extras/design.md:171 +# unordered list +msgid " * Explain key differences between numbers and character strings." +msgstr "" + +#: python-novice-gapminder/_extras/design.md:172 +# unordered list +msgid " * Use built-in functions to convert between integers, floating point numbers, and strings." +msgstr "" + +#: python-novice-gapminder/_extras/design.md:174 +# unordered list +msgid " * What type of value is 3.4?" +msgstr "" + +#: python-novice-gapminder/_extras/design.md:175 +# unordered list +msgid " * What type of value is 3.25 + 4?" +msgstr "" + +#: python-novice-gapminder/_extras/design.md:176 +# unordered list +msgid " * What type of value would you use to represent:" +msgstr "" + +#: python-novice-gapminder/_extras/design.md:177 +# unordered list +msgid " * Number of days since the start of the year." +msgstr "" + +#: python-novice-gapminder/_extras/design.md:178 +# unordered list +msgid " * Time elapsed since the start of the year." +msgstr "" + +#: python-novice-gapminder/_extras/design.md:179 +# unordered list +msgid " * Etc." +msgstr "" + +#: python-novice-gapminder/_extras/design.md:180 +# unordered list +msgid " * How can you use `//` (integer division) and `%` (modulo)?" +msgstr "" + +#: python-novice-gapminder/_extras/design.md:181 +# unordered list +msgid " * What does `int(\"3.4\")` do?" +msgstr "" + +#: python-novice-gapminder/_extras/design.md:182 +# unordered list +msgid " * Given these float, int, and string values, which expressions will print a particular result?" +msgstr "" + +#: python-novice-gapminder/_extras/design.md:183 +# unordered list +msgid " * What do you expect `1+2j + 3` to produce?" +msgstr "" + +#: python-novice-gapminder/_extras/design.md:185 +# header +msgid "### [Built-in Functions and Help]({{page.root}}/04-built-in/) (09:55)" +msgstr "" + +#: python-novice-gapminder/_extras/design.md:187 +#: python-novice-gapminder/_extras/design.md:228 +#: python-novice-gapminder/_extras/design.md:247 +#: python-novice-gapminder/_extras/design.md:335 +# unordered list +msgid "* Teaching: 15 min" +msgstr "" + +#: python-novice-gapminder/_extras/design.md:188 +# unordered list +msgid " * Explain the purpose of functions." +msgstr "" + +#: python-novice-gapminder/_extras/design.md:189 +# unordered list +msgid " * Correctly call built-in Python functions." +msgstr "" + +#: python-novice-gapminder/_extras/design.md:190 +# unordered list +msgid " * Correctly nest calls to built-in functions." +msgstr "" + +#: python-novice-gapminder/_extras/design.md:191 +# unordered list +msgid " * Use help to display documentation for built-in functions." +msgstr "" + +#: python-novice-gapminder/_extras/design.md:192 +# unordered list +msgid " * Correctly describe situations in which SyntaxError and NameError occur." +msgstr "" + +#: python-novice-gapminder/_extras/design.md:194 +# unordered list +msgid " * Explain the order of operations in the following complex expression." +msgstr "" + +#: python-novice-gapminder/_extras/design.md:195 +# unordered list +msgid " * What will each nested combination of `min` and `max` calls produce?" +msgstr "" + +#: python-novice-gapminder/_extras/design.md:196 +# unordered list +msgid " * Why don't `max` and `min` return `None` when given no arguments?" +msgstr "" + +#: python-novice-gapminder/_extras/design.md:197 +# unordered list +msgid " * Given what we have seen so far," +msgstr "" + +#: python-novice-gapminder/_extras/design.md:198 +msgid " what index expression will get the last character in a string?" +msgstr "" + +#: python-novice-gapminder/_extras/design.md:200 +# header +msgid "### [Coffee]({{page.root}}/05-coffee/): 15 min (10:20)" +msgstr "" + +#: python-novice-gapminder/_extras/design.md:202 +# header +msgid "### [Libraries]({{page.root}}/06-libraries/) (10:35)" +msgstr "" + +#: python-novice-gapminder/_extras/design.md:205 +# unordered list +msgid " * Explain what software libraries are and why programmers create and use them." +msgstr "" + +#: python-novice-gapminder/_extras/design.md:206 +# unordered list +msgid " * Write programs that import and use libraries from Python's standard library." +msgstr "" + +#: python-novice-gapminder/_extras/design.md:207 +# unordered list +msgid " * Find and read documentation for standard libraries interactively (in the interpreter) and online." +msgstr "" + +#: python-novice-gapminder/_extras/design.md:209 +# unordered list +msgid " * Which function from the standard math library could you use to calculate a square root?" +msgstr "" + +#: python-novice-gapminder/_extras/design.md:210 +# unordered list +msgid " * What library would you use to select a random value from data?" +msgstr "" + +#: python-novice-gapminder/_extras/design.md:211 +# unordered list +msgid " * If `help(math)` produces an error, what have you forgotten to do?" +msgstr "" + +#: python-novice-gapminder/_extras/design.md:212 +# unordered list +msgid " * Fill in the blanks in code below so that the import statement and program run." +msgstr "" + +#: python-novice-gapminder/_extras/design.md:214 +# header +msgid "### [Reading Tabular Data]({{page.root}}/07-reading-tabular/) (10:55)" +msgstr "" + +#: python-novice-gapminder/_extras/design.md:217 +# unordered list +msgid " * Import the Pandas library." +msgstr "" + +#: python-novice-gapminder/_extras/design.md:218 +# unordered list +msgid " * Use Pandas to load a simple CSV data set." +msgstr "" + +#: python-novice-gapminder/_extras/design.md:219 +# unordered list +msgid " * Get some basic information about a Pandas DataFrame." +msgstr "" + +#: python-novice-gapminder/_extras/design.md:221 +# unordered list +msgid " * Read the data for the Americas and display its summary statistics." +msgstr "" + +#: python-novice-gapminder/_extras/design.md:222 +# unordered list +msgid " * What do `.head` and `.tail` do?" +msgstr "" + +#: python-novice-gapminder/_extras/design.md:223 +# unordered list +msgid " * What string(s) should you pass to `read_csv` to read files from other directories?" +msgstr "" + +#: python-novice-gapminder/_extras/design.md:224 +# unordered list +msgid " * How can you *write* CSV data?" +msgstr "" + +#: python-novice-gapminder/_extras/design.md:226 +# header +msgid "### [DataFrames]({{page.root}}/08-data-frames/) (11:15)" +msgstr "" + +#: python-novice-gapminder/_extras/design.md:229 +# unordered list +msgid " * Select individual values from a Pandas dataframe." +msgstr "" + +#: python-novice-gapminder/_extras/design.md:230 +# unordered list +msgid " * Select entire rows or entire columns from a dataframe." +msgstr "" + +#: python-novice-gapminder/_extras/design.md:231 +# unordered list +msgid " * Select a subset of both rows and columns from a dataframe in a single operation." +msgstr "" + +#: python-novice-gapminder/_extras/design.md:232 +# unordered list +msgid " * Select a subset of a dataframe by a single Boolean criterion." +msgstr "" + +#: python-novice-gapminder/_extras/design.md:233 +#: python-novice-gapminder/_extras/design.md:277 +#: python-novice-gapminder/_extras/design.md:300 +#: python-novice-gapminder/_extras/design.md:326 +#: python-novice-gapminder/_extras/design.md:339 +#: python-novice-gapminder/_extras/design.md:354 +# unordered list +msgid "* Challenges: 15 min" +msgstr "" + +#: python-novice-gapminder/_extras/design.md:234 +# unordered list +msgid " * Write an expression to find the Per Capita GDP of Serbia in 2007." +msgstr "" + +#: python-novice-gapminder/_extras/design.md:235 +# unordered list +msgid " * What rule governs what is (or isn't) included in numerical and named slices in Pandas?" +msgstr "" + +#: python-novice-gapminder/_extras/design.md:236 +# unordered list +msgid " * What does each line in the following short program do?" +msgstr "" + +#: python-novice-gapminder/_extras/design.md:237 +# unordered list +msgid " * What do `idxmin` and `idxmax` do?" +msgstr "" + +#: python-novice-gapminder/_extras/design.md:238 +# unordered list +msgid " * Write expressions to get the GDP per capita for all countries in 1982," +msgstr "" + +#: python-novice-gapminder/_extras/design.md:239 +msgid " for all countries *after* 1985,\n" +" etc.\n" +" * Given the way its borders have changed since 1900,\n" +" what would you do if asked to create a table of GDP per capita for Poland\n" +" for the Twentieth Century?" +msgstr "" + +#: python-novice-gapminder/_extras/design.md:245 +# header +msgid "### [Plotting]({{page.root}}/09-plotting/) (11:45)" +msgstr "" + +#: python-novice-gapminder/_extras/design.md:248 +# unordered list +msgid " * Create a time series plot showing a single data set." +msgstr "" + +#: python-novice-gapminder/_extras/design.md:249 +# unordered list +msgid " * Create a scatter plot showing relationship between two data sets." +msgstr "" + +#: python-novice-gapminder/_extras/design.md:250 +# unordered list +msgid "* Exercise: 15 min" +msgstr "" + +#: python-novice-gapminder/_extras/design.md:251 +# unordered list +msgid " * Fill in the blanks to plot the minimum GDP per capita over time for European countries." +msgstr "" + +#: python-novice-gapminder/_extras/design.md:252 +# unordered list +msgid " * Modify the example to create a scatter plot of GDP per capita in Asian countries." +msgstr "" + +#: python-novice-gapminder/_extras/design.md:253 +# unordered list +msgid " * Explain what each argument to `plot` does in the following example." +msgstr "" + +#: python-novice-gapminder/_extras/design.md:255 +# header +msgid "### [Lunch]({{page.root}}/10-lunch/) (12:15): 45 min" +msgstr "" + +#: python-novice-gapminder/_extras/design.md:257 +# header +msgid "### [Lists]({{page.root}}/11-lists/) (13:00)" +msgstr "" + +#: python-novice-gapminder/_extras/design.md:260 +# unordered list +msgid " * Explain why programs need collections of values." +msgstr "" + +#: python-novice-gapminder/_extras/design.md:261 +# unordered list +msgid " * Write programs that create flat lists, index them, slice them, and modify them through assignment and method calls." +msgstr "" + +#: python-novice-gapminder/_extras/design.md:263 +# unordered list +msgid " * Fill in the blanks so that the program produces the output shown." +msgstr "" + +#: python-novice-gapminder/_extras/design.md:264 +# unordered list +msgid " * How large are the following slices?" +msgstr "" + +#: python-novice-gapminder/_extras/design.md:265 +# unordered list +msgid " * What do negative index expressions print?" +msgstr "" + +#: python-novice-gapminder/_extras/design.md:266 +# unordered list +msgid " * What does a \"stride\" in a slice do?" +msgstr "" + +#: python-novice-gapminder/_extras/design.md:267 +# unordered list +msgid " * How do slices treat out-of-range bounds?" +msgstr "" + +#: python-novice-gapminder/_extras/design.md:268 +# unordered list +msgid " * What are the differences between sorting these two ways?" +msgstr "" + +#: python-novice-gapminder/_extras/design.md:269 +# unordered list +msgid " * What is the difference between `new = old` and `new = old[:]`?" +msgstr "" + +#: python-novice-gapminder/_extras/design.md:271 +# header +msgid "### [Loops]({{page.root}}/12-for-loops/) (13:20)" +msgstr "" + +#: python-novice-gapminder/_extras/design.md:274 +# unordered list +msgid " * Explain what for loops are normally used for." +msgstr "" + +#: python-novice-gapminder/_extras/design.md:275 +# unordered list +msgid " * Trace the execution of a simple (unnested) loop and correctly state the values of variables in each iteration." +msgstr "" + +#: python-novice-gapminder/_extras/design.md:276 +# unordered list +msgid " * Write for loops that use the Accumulator pattern to aggregate values." +msgstr "" + +#: python-novice-gapminder/_extras/design.md:278 +# unordered list +msgid " * Is an indentation error a syntax error or a runtime error?" +msgstr "" + +#: python-novice-gapminder/_extras/design.md:279 +# unordered list +msgid " * Trace which lines of this program are executed in what order." +msgstr "" + +#: python-novice-gapminder/_extras/design.md:280 +# unordered list +msgid " * Fill in the blanks in this program so that it reverses a string." +msgstr "" + +#: python-novice-gapminder/_extras/design.md:281 +# unordered list +msgid " * Fill in the blanks in this series of examples to get practice accumulating values." +msgstr "" + +#: python-novice-gapminder/_extras/design.md:282 +# unordered list +msgid " * Reorder and indent these lins to calculate the cumulative sum of the list values." +msgstr "" + +#: python-novice-gapminder/_extras/design.md:284 +# header +msgid "### [Looping Over Data Sets]({{page.root}}/13-looping-data-sets/) (13:45)" +msgstr "" + +#: python-novice-gapminder/_extras/design.md:286 +# unordered list +msgid "* Teaching: 5 min" +msgstr "" + +#: python-novice-gapminder/_extras/design.md:287 +# unordered list +msgid " * Be able to read and write globbing expressions that match sets of files." +msgstr "" + +#: python-novice-gapminder/_extras/design.md:288 +# unordered list +msgid " * Use glob to create lists of files." +msgstr "" + +#: python-novice-gapminder/_extras/design.md:289 +# unordered list +msgid " * Write for loops to perform operations on files given their names in a list." +msgstr "" + +#: python-novice-gapminder/_extras/design.md:291 +# unordered list +msgid " * Which filenames are *not* matched by this glob expression?" +msgstr "" + +#: python-novice-gapminder/_extras/design.md:292 +# unordered list +msgid " * Modify this program so that it prints the number of records in the shortest file." +msgstr "" + +#: python-novice-gapminder/_extras/design.md:293 +# unordered list +msgid " * Write a program that reads and plots all of the regional data sets." +msgstr "" + +#: python-novice-gapminder/_extras/design.md:295 +# header +msgid "### [Writing Functions]({{page.root}}/14-writing-functions/) (14:00)" +msgstr "" + +#: python-novice-gapminder/_extras/design.md:298 +# unordered list +msgid " * Explain and identify the difference between function definition and function call." +msgstr "" + +#: python-novice-gapminder/_extras/design.md:299 +# unordered list +msgid " * Write a function that takes a small, fixed number of arguments and produces a single result." +msgstr "" + +#: python-novice-gapminder/_extras/design.md:301 +# unordered list +msgid " * This code defines and calls a function - what does it print when run?" +msgstr "" + +#: python-novice-gapminder/_extras/design.md:302 +# unordered list +msgid " * Explain why this short program prints things in the order it does." +msgstr "" + +#: python-novice-gapminder/_extras/design.md:303 +# unordered list +msgid " * Fill in the blanks to create a function that finds the minimum value in a data file." +msgstr "" + +#: python-novice-gapminder/_extras/design.md:304 +# unordered list +msgid " * Fill in the blanks to create a function that finds the first negative value in a list." +msgstr "" + +#: python-novice-gapminder/_extras/design.md:305 +msgid " What does your function do if the list is empty?\n" +" * Why is it sometimes useful to pass arguments by naming the corresponding parameters?\n" +" * Fill in the blanks and turn this short piece of code into a function." +msgstr "" + +#: python-novice-gapminder/_extras/design.md:309 +# header +msgid "### [Variable Scope]({{page.root}}/15-scope/) (14:25)" +msgstr "" + +#: python-novice-gapminder/_extras/design.md:312 +# unordered list +msgid " * Identify local and global variables." +msgstr "" + +#: python-novice-gapminder/_extras/design.md:313 +# unordered list +msgid " * Identify parameters as local variables." +msgstr "" + +#: python-novice-gapminder/_extras/design.md:314 +# unordered list +msgid " * Read a traceback and determine the file, function, and line number on which the error occurred." +msgstr "" + +#: python-novice-gapminder/_extras/design.md:316 +# unordered list +msgid " * Trace the changes to the values in this program," +msgstr "" + +#: python-novice-gapminder/_extras/design.md:317 +msgid " being careful to distinguish local from global values." +msgstr "" + +#: python-novice-gapminder/_extras/design.md:319 +# header +msgid "### [Coffee]({{page.root}}/16-coffee/) (14:45): 15 min" +msgstr "" + +#: python-novice-gapminder/_extras/design.md:321 +# header +msgid "### [Conditionals]({{page.root}}/17-conditionals/) (15:00)" +msgstr "" + +#: python-novice-gapminder/_extras/design.md:324 +# unordered list +msgid " * Correctly write programs that use if and else statements and simple Boolean expressions (without logical operators)." +msgstr "" + +#: python-novice-gapminder/_extras/design.md:325 +# unordered list +msgid " * Trace the execution of unnested conditionals and conditionals inside loops." +msgstr "" + +#: python-novice-gapminder/_extras/design.md:327 +# unordered list +msgid " * Trace the execution of this conditional statement." +msgstr "" + +#: python-novice-gapminder/_extras/design.md:328 +# unordered list +msgid " * Fill in the blanks so that this function replaces negative values with zeroes." +msgstr "" + +#: python-novice-gapminder/_extras/design.md:329 +# unordered list +msgid " * Modify this program so that it only processes files with fewer than 50 records." +msgstr "" + +#: python-novice-gapminder/_extras/design.md:330 +# unordered list +msgid " * Modify this program so that it always finds the largest and smallest values in a list" +msgstr "" + +#: python-novice-gapminder/_extras/design.md:331 +msgid " no matter what the list's values are." +msgstr "" + +#: python-novice-gapminder/_extras/design.md:333 +# header +msgid "### [Programming Style]({{page.root}}/18-style/) (15:25)" +msgstr "" + +#: python-novice-gapminder/_extras/design.md:336 +# unordered list +msgid " * How can I make my programs more readable?" +msgstr "" + +#: python-novice-gapminder/_extras/design.md:337 +# unordered list +msgid " * How do most programmers format their code?" +msgstr "" + +#: python-novice-gapminder/_extras/design.md:338 +# unordered list +msgid " * How can programs check their own operation?" +msgstr "" + +#: python-novice-gapminder/_extras/design.md:340 +# unordered list +msgid " * Which lines in this code will be available as online help?" +msgstr "" + +#: python-novice-gapminder/_extras/design.md:341 +# unordered list +msgid " * Turn the comments in this program into docstrings." +msgstr "" + +#: python-novice-gapminder/_extras/design.md:342 +# unordered list +msgid " * Rewrite this short program to be more readable." +msgstr "" + +#: python-novice-gapminder/_extras/design.md:344 +# header +msgid "### [Wrap-Up]({{page.root}}/19-wrap/) (15:55)" +msgstr "" + +#: python-novice-gapminder/_extras/design.md:346 +# unordered list +msgid "* Teaching: 20 min" +msgstr "" + +#: python-novice-gapminder/_extras/design.md:347 +# unordered list +msgid " * Name and locate scientific Python community sites for software, workshops, and help." +msgstr "" + +#: python-novice-gapminder/_extras/design.md:348 +# unordered list +msgid "* Challenges: 0 min" +msgstr "" + +#: python-novice-gapminder/_extras/design.md:349 +# unordered list +msgid " * None." +msgstr "" + +#: python-novice-gapminder/_extras/design.md:351 +# header +msgid "### [Feedback]({{page.root}}/20-feedback/) (16:15)" +msgstr "" + +#: python-novice-gapminder/_extras/design.md:353 +# unordered list +msgid "* Teaching: 0 min" +msgstr "" + +#: python-novice-gapminder/_extras/design.md:355 +# unordered list +msgid " * Collect feedback" +msgstr "" + +#: python-novice-gapminder/_extras/design.md:357 +# header +msgid "### Finish (16:30)" +msgstr "" + +#: python-novice-gapminder/_extras/discuss.md:1 +# Front Matter +msgid "---\n" +"layout: page\n" +"title: \"Discussion\"\n" +"permalink: /discuss/\n" +"---" +msgstr "" + +#: python-novice-gapminder/_extras/discuss.md:6 +msgid "FIXME: general discussion and further reading for learners." +msgstr "" + +#: python-novice-gapminder/_extras/exercises.md:1 +# Front Matter +msgid "---\n" +"layout: page\n" +"title: \"Further Exercises\"\n" +"permalink: /exercises/\n" +"---" +msgstr "" + +#: python-novice-gapminder/_extras/exercises.md:6 +msgid "FIXME: exercises that don't fit into the regular schedule." +msgstr "" + +#: python-novice-gapminder/_extras/figures.md:1 +#: python-novice-gapminder/bin/boilerplate/_extras/figures.md:1 +# Front Matter +msgid "---\n" +"title: Figures\n" +"---" +msgstr "" + +#: python-novice-gapminder/_extras/figures.md:4 +#: python-novice-gapminder/bin/boilerplate/_extras/figures.md:4 +# inline html +msgid "" +msgstr "" + +#: python-novice-gapminder/_extras/figures.md:33 +#: python-novice-gapminder/aio.md:29 +#: python-novice-gapminder/bin/boilerplate/_extras/figures.md:33 +#: python-novice-gapminder/bin/boilerplate/aio.md:29 +msgid "{% comment %}\n" +"Create anchor for each one of the episodes.\n" +"{% endcomment %}\n" +"{% for episode in site.episodes %}\n" +"
\n" +"{% endfor %}" +msgstr "" + +#: python-novice-gapminder/_extras/guide.md:1 +# Front Matter +msgid "---\n" +"layout: page\n" +"title: \"Instructors' Guide\"\n" +"permalink: /guide/\n" +"---" +msgstr "" + +#: python-novice-gapminder/_extras/guide.md:7 +# header +msgid "## General Notes" +msgstr "" + +#: python-novice-gapminder/_extras/guide.md:9 +msgid "It's all right not to get through the whole lesson.\n" +": This lesson is designed for people who have never programmed before,\n" +" but any given class may include people with a wide range of prior experience.\n" +" We have therefore included enough material to fill a full day if need be,\n" +" but expect that many offerings will only get as far as the introduction to Pandas." +msgstr "" + +#: python-novice-gapminder/_extras/guide.md:15 +msgid "Don't tell people to Google things.\n" +": One of the goals of this less is\n" +" to help novices build a workable mental model of how programming works.\n" +" Until they have that model,\n" +" they will not know what to search for or how to recognize a helpful answer.\n" +" Telling them to Google can also give the impression that we think their problem is trivial.\n" +" (That said, if learners have done enough programming before to be past these issues,\n" +" having them search for solutions online can help them solidify their understanding.)\n" +" It's also worth quoting\n" +" [Trevor King](https://github.com/swcarpentry/python-novice-\n" +" gapminder/issues/22#issuecomment-182573516)'s\n" +" comment about online search:\n" +" \"If you find anything,\n" +" other folks were confused enough to bother with a blog or Stack Overflow post,\n" +" so it's probably not trivial.\"" +msgstr "" + +#: python-novice-gapminder/_includes/links.md:1 +msgid "[cc-by-human]: https://creativecommons.org/licenses/by/4.0/\n" +"[cc-by-legal]: https://creativecommons.org/licenses/by/4.0/legalcode\n" +"[ci]: http://communityin.org/\n" +"[coc-reporting]: https://docs.carpentries.org/topic_folders/policies/code-of-conduct.html#reporting-guidelines\n" +"[coc]: https://docs.carpentries.org/topic_folders/policies/code-of-conduct.html\n" +"[concept-maps]: https://carpentries.github.io/instructor-training/05-memory/\n" +"[contrib-covenant]: https://contributor-covenant.org/\n" +"[contributing]: {{ site.github.repository_url }}/blob/gh-pages/CONTRIBUTING.md\n" +"[cran-checkpoint]: https://cran.r-project.org/package=checkpoint\n" +"[cran-knitr]: https://cran.r-project.org/package=knitr\n" +"[cran-stringr]: https://cran.r-project.org/package=stringr\n" +"[email]: mailto:team@carpentries.org\n" +"[github-importer]: https://import.github.com/\n" +"[importer]: https://github.com/new/import\n" +"[jekyll-collection]: https://jekyllrb.com/docs/collections/\n" +"[jekyll-install]: https://jekyllrb.com/docs/installation/\n" +"[jekyll-windows]: http://jekyll-windows.juthilo.com/\n" +"[jekyll]: https://jekyllrb.com/\n" +"[jupyter]: https://jupyter.org/\n" +"[lesson-example]: https://carpentries.github.io/lesson-example/\n" +"[mit-license]: https://opensource.org/licenses/mit-license.html\n" +"[morea]: https://morea-framework.github.io/\n" +"[numfocus]: https://numfocus.org/\n" +"[osi]: https://opensource.org\n" +"[pandoc]: https://pandoc.org/\n" +"[paper-now]: https://github.com/PeerJ/paper-now\n" +"[python-gapminder]: https://swcarpentry.github.io/python-novice-gapminder/\n" +"[pyyaml]: https://pypi.python.org/pypi/PyYAML\n" +"[r-markdown]: https://rmarkdown.rstudio.com/\n" +"[rstudio]: https://www.rstudio.com/\n" +"[ruby-install-guide]: https://www.ruby-lang.org/en/downloads/\n" +"[ruby-installer]: https://rubyinstaller.org/\n" +"[rubygems]: https://rubygems.org/pages/download/\n" +"[styles]: https://github.com/carpentries/styles/\n" +"[swc-releases]: https://github.com/swcarpentry/swc-releases\n" +"[workshop-repo]: {{ site.workshop_repo }}\n" +"[yaml]: http://yaml.org/" +msgstr "" + +#: python-novice-gapminder/aio.md:1 +#: python-novice-gapminder/bin/boilerplate/aio.md:1 +# Front Matter +msgid "---\n" +"---" +msgstr "" + +#: python-novice-gapminder/aio.md:3 +#: python-novice-gapminder/bin/boilerplate/aio.md:3 +# inline html +msgid "" +msgstr "" + +#: python-novice-gapminder/bin/boilerplate/CONTRIBUTING.md:12 +msgid "By contributing,\n" +"you agree that we may redistribute your work under [our license](LICENSE.md).\n" +"In exchange,\n" +"we will address your issues and/or assess your change proposal as promptly as we can,\n" +"and help you become a member of our community.\n" +"Everyone involved in [Software Carpentry][swc-site] and [Data Carpentry][dc-site]\n" +"agrees to abide by our [code of conduct](CODE_OF_CONDUCT.md)." +msgstr "" + +#: python-novice-gapminder/bin/boilerplate/CONTRIBUTING.md:30 +msgid " you can [send us comments by email][email].\n" +" However,\n" +" we will be able to respond more quickly if you use one of the other methods described below." +msgstr "" + +#: python-novice-gapminder/bin/boilerplate/CONTRIBUTING.md:49 +msgid " please work in ,\n" +" which can be viewed at ." +msgstr "" + +#: python-novice-gapminder/bin/boilerplate/CONTRIBUTING.md:69 +msgid "There are many ways to contribute,\n" +"from writing new exercises and improving existing ones\n" +"to updating or filling in the documentation\n" +"and submitting [bug reports][issues]\n" +"about things that don't work, aren't clear, or are missing.\n" +"If you are looking for ideas, please see the 'Issues' tab for\n" +"a list of issues associated with this repository,\n" +"or you may also look at the issues for [Data Carpentry][dc-issues]\n" +"and [Software Carpentry][swc-issues] projects." +msgstr "" + +#: python-novice-gapminder/bin/boilerplate/CONTRIBUTING.md:104 +msgid "If you choose to contribute via GitHub, you may want to look at\n" +"[How to Contribute to an Open Source Project on GitHub][how-contribute].\n" +"To manage changes, we follow [GitHub flow][github-flow].\n" +"Each lesson has two maintainers who review issues and pull requests or encourage others to do so.\n" +"The maintainers are community volunteers and have final say over what gets merged into the lesson.\n" +"To use the web interface for contributing to a lesson:" +msgstr "" + +#: python-novice-gapminder/bin/boilerplate/CONTRIBUTING.md:111 +# ordered list +msgid "1. Fork the originating repository to your GitHub profile." +msgstr "" + +#: python-novice-gapminder/bin/boilerplate/CONTRIBUTING.md:112 +# ordered list +msgid "2. Within your version of the forked repository, move to the `gh-pages` branch and" +msgstr "" + +#: python-novice-gapminder/bin/boilerplate/CONTRIBUTING.md:113 +msgid "create a new branch for each significant change being made.\n" +"3. Navigate to the file(s) you wish to change within the new branches and make revisions as required.\n" +"4. Commit all changed files within the appropriate branches.\n" +"5. Create individual pull requests from each of your changed branches\n" +"to the `gh-pages` branch within the originating repository.\n" +"6. If you receive feedback, make changes using your issue-specific branches of the forked\n" +"repository and the pull requests will update automatically.\n" +"7. Repeat as needed until all feedback has been addressed." +msgstr "" + +#: python-novice-gapminder/bin/boilerplate/CONTRIBUTING.md:122 +msgid "When starting work, please make sure your clone of the originating `gh-pages` branch is up-to-date\n" +"before creating your own revision-specific branch(es) from there.\n" +"Additionally, please only work from your newly-created branch(es) and *not*\n" +"your clone of the originating `gh-pages` branch.\n" +"Lastly, published copies of all the lessons are available in the `gh-pages` branch of the originating\n" +"repository for reference while revising." +msgstr "" + +#: python-novice-gapminder/bin/boilerplate/CONTRIBUTING.md:131 +msgid "General discussion of [Software Carpentry][swc-site] and [Data Carpentry][dc-site]\n" +"happens on the [discussion mailing list][discuss-list],\n" +"which everyone is welcome to join.\n" +"You can also [reach us by email][email]." +msgstr "" + +#: python-novice-gapminder/bin/boilerplate/CONTRIBUTING.md:136 +msgid "[email]: mailto:admin@software-carpentry.org\n" +"[dc-issues]: https://github.com/issues?q=user%3Adatacarpentry\n" +"[dc-lessons]: http://datacarpentry.org/lessons/\n" +"[dc-site]: http://datacarpentry.org/\n" +"[discuss-list]: http://lists.software-carpentry.org/listinfo/discuss\n" +"[github]: https://github.com\n" +"[github-flow]: https://guides.github.com/introduction/flow/\n" +"[github-join]: https://github.com/join\n" +"[how-contribute]: https://egghead.io/series/how-to-contribute-to-an-open-source-project-on-github\n" +"[issues]: https://guides.github.com/features/issues/\n" +"[swc-issues]: https://github.com/issues?q=user%3Aswcarpentry\n" +"[swc-lessons]: https://software-carpentry.org/lessons/\n" +"[swc-site]: https://software-carpentry.org/" +msgstr "" + +#: python-novice-gapminder/bin/boilerplate/README.md:1 +# header +msgid "# FIXME Lesson title" +msgstr "" + +#: python-novice-gapminder/bin/boilerplate/README.md:3 +msgid "[![Create a Slack Account with us](https://img.shields.io/badge/Create_Slack_Account-The_Carpentries-071159.svg)](https://swc-slack-invite.herokuapp.com/)" +msgstr "" + +#: python-novice-gapminder/bin/boilerplate/README.md:5 +#: python-novice-gapminder/bin/boilerplate/_episodes/01-introduction.md:12 +#: python-novice-gapminder/bin/boilerplate/_extras/discuss.md:4 +#: python-novice-gapminder/bin/boilerplate/_extras/guide.md:4 +#: python-novice-gapminder/bin/boilerplate/reference.md:7 +#: python-novice-gapminder/bin/boilerplate/setup.md:4 +msgid "FIXME" +msgstr "" + +#: python-novice-gapminder/bin/boilerplate/README.md:7 +# header +msgid "## Contributing" +msgstr "" + +#: python-novice-gapminder/bin/boilerplate/README.md:9 +msgid "We welcome all contributions to improve the lesson! Maintainers will do their best to help you if you have any\n" +"questions, concerns, or experience any difficulties along the way." +msgstr "" + +#: python-novice-gapminder/bin/boilerplate/README.md:12 +msgid "We'd like to ask you to familiarize yourself with our [Contribution Guide](CONTRIBUTING.md) and have a look at\n" +"the [more detailed guidelines][lesson-example] on proper formatting, ways to render the lesson locally, and even\n" +"how to write new episodes." +msgstr "" + +#: python-novice-gapminder/bin/boilerplate/README.md:16 +# header +msgid "## Maintainer(s)" +msgstr "" + +#: python-novice-gapminder/bin/boilerplate/README.md:18 +# unordered list +msgid "* FIXME" +msgstr "" + +#: python-novice-gapminder/bin/boilerplate/README.md:20 +# header +msgid "## Authors" +msgstr "" + +#: python-novice-gapminder/bin/boilerplate/README.md:22 +msgid "A list of contributors to the lesson can be found in [AUTHORS](AUTHORS)" +msgstr "" + +#: python-novice-gapminder/bin/boilerplate/README.md:24 +# header +msgid "## Citation" +msgstr "" + +#: python-novice-gapminder/bin/boilerplate/README.md:26 +msgid "To cite this lesson, please consult with [CITATION](CITATION)" +msgstr "" + +#: python-novice-gapminder/bin/boilerplate/README.md:28 +msgid "[lesson-example]: https://carpentries.github.io/lesson-example" +msgstr "" + +#: python-novice-gapminder/bin/boilerplate/_episodes/01-introduction.md:1 +# Front Matter +msgid "---\n" +"title: \"Introduction\"\n" +"teaching: 0\n" +"exercises: 0\n" +"questions:\n" +"- \"Key question (FIXME)\"\n" +"objectives:\n" +"- \"First objective. (FIXME)\"\n" +"keypoints:\n" +"- \"First key point. (FIXME)\"\n" +"---" +msgstr "" + +#: python-novice-gapminder/bin/boilerplate/_extras/about.md:1 +# Front Matter +msgid "---\n" +"title: About\n" +"---" +msgstr "" + +#: python-novice-gapminder/bin/boilerplate/_extras/about.md:4 +msgid "{% include carpentries.html %}\n" +"{% include links.md %}" +msgstr "" + +#: python-novice-gapminder/bin/boilerplate/_extras/discuss.md:1 +# Front Matter +msgid "---\n" +"title: Discussion\n" +"---" +msgstr "" + +#: python-novice-gapminder/bin/boilerplate/_extras/guide.md:1 +# Front Matter +msgid "---\n" +"title: \"Instructor Notes\"\n" +"---" +msgstr "" + +#: python-novice-gapminder/bin/boilerplate/index.md:1 +# Front Matter +msgid "---\n" +"layout: lesson\n" +"root: . # Is the only page that don't follow the partner /:path/index.html\n" +"permalink: index.html # Is the only page that don't follow the partner /:path/index.html\n" +"---" +msgstr "" + +#: python-novice-gapminder/bin/boilerplate/index.md:6 +msgid "FIXME: home page introduction" +msgstr "" + +#: python-novice-gapminder/bin/boilerplate/index.md:8 +#: python-novice-gapminder/index.md:25 +# blockquote, which can be cascaded +msgid "> ## Prerequisites" +msgstr "" + +#: python-novice-gapminder/bin/boilerplate/index.md:9 +msgid ">\n" +"> FIXME" +msgstr "" + +#: python-novice-gapminder/bin/boilerplate/index.md:11 +#: python-novice-gapminder/index.md:39 +# SC/DC Template label +msgid "{: .prereq}" +msgstr "" + +#: python-novice-gapminder/bin/boilerplate/reference.md:1 +# Front Matter +msgid "---\n" +"layout: reference\n" +"---" +msgstr "" + +#: python-novice-gapminder/bin/boilerplate/reference.md:5 +#: python-novice-gapminder/reference.md:9 +# header +msgid "## Glossary" +msgstr "" + +#: python-novice-gapminder/bin/boilerplate/setup.md:1 +# Front Matter +msgid "---\n" +"title: Setup\n" +"---" +msgstr "" + +#: python-novice-gapminder/index.md:1 +# Front Matter +msgid "---\n" +"layout: lesson\n" +"root: .\n" +"---" +msgstr "" + +#: python-novice-gapminder/index.md:6 +msgid "This lesson is an introduction to programming in Python\n" +"for people with little or no previous programming experience.\n" +"It uses plotting as its motivating example,\n" +"and is designed to be used in both [Data Carpentry]({{ site.dc_site }})\n" +"and [Software Carpentry]({{ site.swc_site }}) workshops.\n" +"This lesson references the Jupyter Notebook,\n" +"but can be taught using a regular Python interpreter as well.\n" +"Please note that this lesson uses Python 3 rather than Python 2." +msgstr "" + +#: python-novice-gapminder/index.md:15 +# blockquote, which can be cascaded +msgid "> ## Under Design" +msgstr "" + +#: python-novice-gapminder/index.md:16 +msgid ">\n" +"> **This lesson is currently in its early design stage;\n" +"> please check [the design notes]({{ page.root }}/design/)\n" +"> to see what we have so far.\n" +"> Contributions are very welcome:\n" +"> we would be particularly grateful for exercises\n" +"> and for commentary on the ones already there.**" +msgstr "" + +#: python-novice-gapminder/index.md:26 +msgid ">\n" +"> 1. Learners need to understand what files and directories are,\n" +"> what a working directory is,\n" +"> and how to start a Python interpreter.\n" +">\n" +"> 2. Learners must install Python before the class starts.\n" +">\n" +"> 3. Learners must get the gapminder data before class starts:\n" +"> please download and unzip the file \n" +"> [python-novice-gapminder-data.zip]({{page.root}}/files/python-novice-gapminder-data.zip).\n" +">\n" +"> Please see [the setup instructions]({{ page.root }}/setup/)\n" +"> for details." +msgstr "" + +#: python-novice-gapminder/reference.md:1 +# Front Matter +msgid "---\n" +"layout: reference\n" +"permalink: /reference/\n" +"root: ..\n" +"---" +msgstr "" + +#: python-novice-gapminder/reference.md:7 +msgid "FIXME: more reference material." +msgstr "" + +#: python-novice-gapminder/reference.md:11 +msgid "FIXME: glossary." +msgstr "" + +#: python-novice-gapminder/setup.md:1 +# Front Matter +msgid "---\n" +"layout: page\n" +"title: \"Setup\"\n" +"permalink: /setup/\n" +"root: ..\n" +"---" +msgstr "" + +#: python-novice-gapminder/setup.md:8 +# header +msgid "## Installing Python Using Anaconda" +msgstr "" + +#: python-novice-gapminder/setup.md:10 +msgid "[Python][python] is a popular language for scientific computing, and great for\n" +"general-purpose programming as well. Installing all of its scientific packages\n" +"individually can be a bit difficult, however, so we recommend the all-in-one\n" +"installer [Anaconda][anaconda]." +msgstr "" + +#: python-novice-gapminder/setup.md:15 +msgid "Regardless of how you choose to install it, please make sure you install Python\n" +"version 3.x (e.g., 3.4 is fine). Also, please set up your python environment at \n" +"least a day in advance of the workshop. If you encounter problems with the \n" +"installation procedure, ask your workshop organizers via e-mail for assistance so\n" +"you are ready to go as soon as the workshop begins." +msgstr "" + +#: python-novice-gapminder/setup.md:21 +# header +msgid "### Windows - [Video tutorial][video-windows]" +msgstr "" + +#: python-novice-gapminder/setup.md:23 +# ordered list +msgid "1. Open [https://www.anaconda.com/download][continuum-windows]" +msgstr "" + +#: python-novice-gapminder/setup.md:24 +#: python-novice-gapminder/setup.md:35 +msgid " with your web browser." +msgstr "" + +#: python-novice-gapminder/setup.md:26 +# ordered list +msgid "2. Download the Python 3 installer for Windows." +msgstr "" + +#: python-novice-gapminder/setup.md:28 +# ordered list +msgid "3. Double-click the executable and install Python 3 using _MOST_ of the" +msgstr "" + +#: python-novice-gapminder/setup.md:29 +msgid " default settings. The only exception is to check the \n" +" **Make Anaconda the default Python** option." +msgstr "" + +#: python-novice-gapminder/setup.md:32 +# header +msgid "### Mac OS X - [Video tutorial][video-mac]" +msgstr "" + +#: python-novice-gapminder/setup.md:34 +# ordered list +msgid "1. Open [https://www.anaconda.com/download][continuum-mac]" +msgstr "" + +#: python-novice-gapminder/setup.md:37 +# ordered list +msgid "2. Download the Python 3 installer for OS X." +msgstr "" + +#: python-novice-gapminder/setup.md:39 +# ordered list +msgid "3. Install Python 3 using all of the defaults for installation." +msgstr "" + +#: python-novice-gapminder/setup.md:41 +# header +msgid "### Linux" +msgstr "" + +#: python-novice-gapminder/setup.md:43 +msgid "Note that the following installation steps require you to work from the shell. \n" +"If you run into any difficulties, please request help before the workshop begins." +msgstr "" + +#: python-novice-gapminder/setup.md:46 +# ordered list +msgid "1. Open [https://www.anaconda.com/download][continuum-linux] with your web browser." +msgstr "" + +#: python-novice-gapminder/setup.md:48 +# ordered list +msgid "2. Download the Python 3 installer for Linux." +msgstr "" + +#: python-novice-gapminder/setup.md:50 +# ordered list +msgid "3. Install Python 3 using all of the defaults for installation." +msgstr "" + +#: python-novice-gapminder/setup.md:52 +msgid " a. Open a terminal window." +msgstr "" + +#: python-novice-gapminder/setup.md:54 +msgid " b. Navigate to the folder where you downloaded the installer" +msgstr "" + +#: python-novice-gapminder/setup.md:56 +msgid " c. Type" +msgstr "" + +#: python-novice-gapminder/setup.md:58 +msgid " ~~~\n" +" $ bash Anaconda3-\n" +" ~~~" +msgstr "" + +#: python-novice-gapminder/setup.md:61 +# SC/DC Template label +msgid " {: .bash}" +msgstr "" + +#: python-novice-gapminder/setup.md:63 +msgid " and press tab. The name of the file you just downloaded should appear." +msgstr "" + +#: python-novice-gapminder/setup.md:65 +msgid " d. Press enter." +msgstr "" + +#: python-novice-gapminder/setup.md:67 +msgid " e. Follow the text-only prompts. When the license agreement appears (a colon\n" +" will be present at the bottom of the screen) hold the down arrow until the \n" +" bottom of the text. Type `yes` and press enter to approve the license. Press \n" +" enter again to approve the default location for the files. Type `yes` and \n" +" press enter to prepend Anaconda to your `PATH` (this makes the Anaconda \n" +" distribution the default Python)." +msgstr "" + +#: python-novice-gapminder/setup.md:74 +# header +msgid "## Getting the Data" +msgstr "" + +#: python-novice-gapminder/setup.md:76 +msgid "The data we will be using is taken from the [gapminder][gapminder] dataset.\n" +"To obtain it, download and unzip the file \n" +"[python-novice-gapminder-data.zip]({{page.root}}/files/python-novice-gapminder-data.zip).\n" +"In order to follow the presented material, you should launch a Jupyter \n" +"notebook in the root directory (see [Starting Python](#Starting-Python))." +msgstr "" + +#: python-novice-gapminder/setup.md:82 +# header +msgid "## Starting Python" +msgstr "" + +#: python-novice-gapminder/setup.md:84 +msgid "We will teach Python using the [Jupyter notebook][jupyter], a \n" +"programming environment that runs in a web browser. Jupyter requires a reasonably \n" +"up-to-date browser, preferably a current version of Chrome, Safari, or Firefox \n" +"(note that Internet Explorer version 9 and below are *not* supported). If you \n" +"installed Python using Anaconda, Jupyter should already be on your system. If \n" +"you did not use Anaconda, use the Python package manager pip\n" +"(see the [Jupyter website][jupyter-install] for details.)" +msgstr "" + +#: python-novice-gapminder/setup.md:92 +msgid "To start the notebook, open a terminal or git bash and type the command:" +msgstr "" + +#: python-novice-gapminder/setup.md:94 +# code block +msgid "~~~\n" +"$ jupyter notebook\n" +"~~~" +msgstr "" + +#: python-novice-gapminder/setup.md:97 +#: python-novice-gapminder/setup.md:105 +# SC/DC Template label +msgid "{: .bash}" +msgstr "" + +#: python-novice-gapminder/setup.md:99 +msgid "To start the Python interpreter without the notebook, open a terminal \n" +"or Git Bash and type the command:" +msgstr "" + +#: python-novice-gapminder/setup.md:102 +# code block +msgid "~~~\n" +"$ python\n" +"~~~" +msgstr "" + +#: python-novice-gapminder/setup.md:107 +msgid "[anaconda]: https://www.anaconda.com/\n" +"[continuum-mac]: https://www.anaconda.com/download/#macos\n" +"[continuum-linux]: https://www.anaconda.com/download/#linux\n" +"[continuum-windows]: https://www.anaconda.com/download/#windows\n" +"[gapminder]: http://gapminder.org\n" +"[jupyter]: http://jupyter.org/\n" +"[jupyter-install]: http://jupyter.readthedocs.io/en/latest/install.html#optional-for-experienced-python-developers-installing-jupyter-with-pip\n" +"[python]: https://python.org\n" +"[video-mac]: https://www.youtube.com/watch?v=TcSAln46u9U\n" +"[video-windows]: https://www.youtube.com/watch?v=xxQ0mzZ8UvA" +msgstr "" + diff --git a/po/.ancestors/.python-novice-inflammation.ja.po.ancestor b/po/.ancestors/.python-novice-inflammation.ja.po.ancestor new file mode 100644 index 00000000..7c687f14 --- /dev/null +++ b/po/.ancestors/.python-novice-inflammation.ja.po.ancestor @@ -0,0 +1,11144 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: i18n\n" +"Report-Msgid-Bugs-To: https://github.com/haiwen/seafile-docs/issues\n" +"POT-Creation-Date: 2018-09-16 01:25:36+0900\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: python-novice-inflammation/CODE_OF_CONDUCT.md:1 +# Front Matter +msgid "---\n" +"layout: page\n" +"title: \"Contributor Code of Conduct\"\n" +"---" +msgstr "" + +#: python-novice-inflammation/CODE_OF_CONDUCT.md:5 +msgid "As contributors and maintainers of this project,\n" +"we pledge to follow the [Carpentry Code of Conduct][coc]." +msgstr "" + +#: python-novice-inflammation/CODE_OF_CONDUCT.md:8 +msgid "Instances of abusive, harassing, or otherwise unacceptable behavior\n" +"may be reported by following our [reporting guidelines][coc-reporting]." +msgstr "" + +#: python-novice-inflammation/CODE_OF_CONDUCT.md:11 +#: python-novice-inflammation/_episodes/01-numpy.md:1281 +#: python-novice-inflammation/_episodes/02-loop.md:384 +#: python-novice-inflammation/_episodes/03-lists.md:544 +#: python-novice-inflammation/_episodes/04-files.md:193 +#: python-novice-inflammation/_episodes/05-cond.md:473 +#: python-novice-inflammation/_episodes/06-func.md:982 +#: python-novice-inflammation/_episodes/07-errors.md:581 +#: python-novice-inflammation/_episodes/08-defensive.md:552 +#: python-novice-inflammation/_episodes/09-debugging.md:286 +#: python-novice-inflammation/_episodes/10-cmdline.md:1026 +#: python-novice-inflammation/_extras/figures.md:68 +#: python-novice-inflammation/bin/boilerplate/_episodes/01-introduction.md:14 +#: python-novice-inflammation/bin/boilerplate/_extras/discuss.md:6 +#: python-novice-inflammation/bin/boilerplate/_extras/figures.md:68 +#: python-novice-inflammation/bin/boilerplate/_extras/guide.md:6 +#: python-novice-inflammation/bin/boilerplate/index.md:13 +#: python-novice-inflammation/bin/boilerplate/reference.md:9 +#: python-novice-inflammation/bin/boilerplate/setup.md:7 +msgid "{% include links.md %}" +msgstr "" + +#: python-novice-inflammation/CONTRIBUTING.md:1 +#: python-novice-inflammation/bin/boilerplate/CONTRIBUTING.md:1 +# header +msgid "# Contributing" +msgstr "" + +#: python-novice-inflammation/CONTRIBUTING.md:3 +#: python-novice-inflammation/bin/boilerplate/CONTRIBUTING.md:3 +msgid "[Software Carpentry][swc-site] and [Data Carpentry][dc-site] are open source projects,\n" +"and we welcome contributions of all kinds:\n" +"new lessons,\n" +"fixes to existing material,\n" +"bug reports,\n" +"and reviews of proposed changes are all welcome." +msgstr "" + +#: python-novice-inflammation/CONTRIBUTING.md:10 +#: python-novice-inflammation/bin/boilerplate/CONTRIBUTING.md:10 +# header +msgid "## Contributor Agreement" +msgstr "" + +#: python-novice-inflammation/CONTRIBUTING.md:12 +#: python-novice-inflammation/bin/boilerplate/CONTRIBUTING.md:12 +msgid "By contributing,\n" +"you agree that we may redistribute your work under [our license](LICENSE.md).\n" +"In exchange,\n" +"we will address your issues and/or assess your change proposal as promptly as we can,\n" +"and help you become a member of our community.\n" +"Everyone involved in [Software Carpentry][swc-site] and [Data Carpentry][dc-site]\n" +"agrees to abide by our [code of conduct](CODE_OF_CONDUCT.md)." +msgstr "" + +#: python-novice-inflammation/CONTRIBUTING.md:20 +#: python-novice-inflammation/bin/boilerplate/CONTRIBUTING.md:20 +# header +msgid "## How to Contribute" +msgstr "" + +#: python-novice-inflammation/CONTRIBUTING.md:22 +#: python-novice-inflammation/bin/boilerplate/CONTRIBUTING.md:22 +msgid "The easiest way to get started is to file an issue\n" +"to tell us about a spelling mistake,\n" +"some awkward wording,\n" +"or a factual error.\n" +"This is a good way to introduce yourself\n" +"and to meet some of our community members." +msgstr "" + +#: python-novice-inflammation/CONTRIBUTING.md:29 +#: python-novice-inflammation/bin/boilerplate/CONTRIBUTING.md:29 +# ordered list +msgid "1. If you do not have a [GitHub][github] account," +msgstr "" + +#: python-novice-inflammation/CONTRIBUTING.md:30 +#: python-novice-inflammation/bin/boilerplate/CONTRIBUTING.md:30 +msgid " you can [send us comments by email][email].\n" +" However,\n" +" we will be able to respond more quickly if you use one of the other methods described below." +msgstr "" + +#: python-novice-inflammation/CONTRIBUTING.md:34 +#: python-novice-inflammation/bin/boilerplate/CONTRIBUTING.md:34 +# ordered list +msgid "2. If you have a [GitHub][github] account," +msgstr "" + +#: python-novice-inflammation/CONTRIBUTING.md:35 +#: python-novice-inflammation/bin/boilerplate/CONTRIBUTING.md:35 +msgid " or are willing to [create one][github-join],\n" +" but do not know how to use Git,\n" +" you can report problems or suggest improvements by [creating an issue][issues].\n" +" This allows us to assign the item to someone\n" +" and to respond to it in a threaded discussion." +msgstr "" + +#: python-novice-inflammation/CONTRIBUTING.md:41 +#: python-novice-inflammation/bin/boilerplate/CONTRIBUTING.md:41 +# ordered list +msgid "3. If you are comfortable with Git," +msgstr "" + +#: python-novice-inflammation/CONTRIBUTING.md:42 +#: python-novice-inflammation/bin/boilerplate/CONTRIBUTING.md:42 +msgid " and would like to add or change material,\n" +" you can submit a pull request (PR).\n" +" Instructions for doing this are [included below](#using-github)." +msgstr "" + +#: python-novice-inflammation/CONTRIBUTING.md:46 +#: python-novice-inflammation/bin/boilerplate/CONTRIBUTING.md:46 +# header +msgid "## Where to Contribute" +msgstr "" + +#: python-novice-inflammation/CONTRIBUTING.md:48 +#: python-novice-inflammation/bin/boilerplate/CONTRIBUTING.md:48 +# ordered list +msgid "1. If you wish to change this lesson," +msgstr "" + +#: python-novice-inflammation/CONTRIBUTING.md:49 +msgid " please work in ,\n" +" which can be viewed at ." +msgstr "" + +#: python-novice-inflammation/CONTRIBUTING.md:52 +#: python-novice-inflammation/bin/boilerplate/CONTRIBUTING.md:52 +# ordered list +msgid "2. If you wish to change the example lesson," +msgstr "" + +#: python-novice-inflammation/CONTRIBUTING.md:53 +#: python-novice-inflammation/bin/boilerplate/CONTRIBUTING.md:53 +msgid " please work in ,\n" +" which documents the format of our lessons\n" +" and can be viewed at ." +msgstr "" + +#: python-novice-inflammation/CONTRIBUTING.md:57 +#: python-novice-inflammation/bin/boilerplate/CONTRIBUTING.md:57 +# ordered list +msgid "3. If you wish to change the template used for workshop websites," +msgstr "" + +#: python-novice-inflammation/CONTRIBUTING.md:58 +#: python-novice-inflammation/bin/boilerplate/CONTRIBUTING.md:58 +msgid " please work in .\n" +" The home page of that repository explains how to set up workshop websites,\n" +" while the extra pages in \n" +" provide more background on our design choices." +msgstr "" + +#: python-novice-inflammation/CONTRIBUTING.md:63 +#: python-novice-inflammation/bin/boilerplate/CONTRIBUTING.md:63 +# ordered list +msgid "4. If you wish to change CSS style files, tools," +msgstr "" + +#: python-novice-inflammation/CONTRIBUTING.md:64 +#: python-novice-inflammation/bin/boilerplate/CONTRIBUTING.md:64 +msgid " or HTML boilerplate for lessons or workshops stored in `_includes` or `_layouts`,\n" +" please work in ." +msgstr "" + +#: python-novice-inflammation/CONTRIBUTING.md:67 +#: python-novice-inflammation/bin/boilerplate/CONTRIBUTING.md:67 +# header +msgid "## What to Contribute" +msgstr "" + +#: python-novice-inflammation/CONTRIBUTING.md:69 +#: python-novice-inflammation/bin/boilerplate/CONTRIBUTING.md:69 +msgid "There are many ways to contribute,\n" +"from writing new exercises and improving existing ones\n" +"to updating or filling in the documentation\n" +"and submitting [bug reports][issues]\n" +"about things that don't work, aren't clear, or are missing.\n" +"If you are looking for ideas, please see the 'Issues' tab for\n" +"a list of issues associated with this repository,\n" +"or you may also look at the issues for [Data Carpentry][dc-issues]\n" +"and [Software Carpentry][swc-issues] projects." +msgstr "" + +#: python-novice-inflammation/CONTRIBUTING.md:79 +#: python-novice-inflammation/bin/boilerplate/CONTRIBUTING.md:79 +msgid "Comments on issues and reviews of pull requests are just as welcome:\n" +"we are smarter together than we are on our own.\n" +"Reviews from novices and newcomers are particularly valuable:\n" +"it's easy for people who have been using these lessons for a while\n" +"to forget how impenetrable some of this material can be,\n" +"so fresh eyes are always welcome." +msgstr "" + +#: python-novice-inflammation/CONTRIBUTING.md:86 +#: python-novice-inflammation/bin/boilerplate/CONTRIBUTING.md:86 +# header +msgid "## What *Not* to Contribute" +msgstr "" + +#: python-novice-inflammation/CONTRIBUTING.md:88 +#: python-novice-inflammation/bin/boilerplate/CONTRIBUTING.md:88 +msgid "Our lessons already contain more material than we can cover in a typical workshop,\n" +"so we are usually *not* looking for more concepts or tools to add to them.\n" +"As a rule,\n" +"if you want to introduce a new idea,\n" +"you must (a) estimate how long it will take to teach\n" +"and (b) explain what you would take out to make room for it.\n" +"The first encourages contributors to be honest about requirements;\n" +"the second, to think hard about priorities." +msgstr "" + +#: python-novice-inflammation/CONTRIBUTING.md:97 +#: python-novice-inflammation/bin/boilerplate/CONTRIBUTING.md:97 +msgid "We are also not looking for exercises or other material that only run on one platform.\n" +"Our workshops typically contain a mixture of Windows, macOS, and Linux users;\n" +"in order to be usable,\n" +"our lessons must run equally well on all three." +msgstr "" + +#: python-novice-inflammation/CONTRIBUTING.md:102 +#: python-novice-inflammation/bin/boilerplate/CONTRIBUTING.md:102 +# header +msgid "## Using GitHub" +msgstr "" + +#: python-novice-inflammation/CONTRIBUTING.md:104 +#: python-novice-inflammation/bin/boilerplate/CONTRIBUTING.md:104 +msgid "If you choose to contribute via GitHub, you may want to look at\n" +"[How to Contribute to an Open Source Project on GitHub][how-contribute].\n" +"To manage changes, we follow [GitHub flow][github-flow].\n" +"Each lesson has two maintainers who review issues and pull requests or encourage others to do so.\n" +"The maintainers are community volunteers and have final say over what gets merged into the lesson.\n" +"To use the web interface for contributing to a lesson:" +msgstr "" + +#: python-novice-inflammation/CONTRIBUTING.md:111 +#: python-novice-inflammation/bin/boilerplate/CONTRIBUTING.md:111 +# ordered list +msgid "1. Fork the originating repository to your GitHub profile." +msgstr "" + +#: python-novice-inflammation/CONTRIBUTING.md:112 +#: python-novice-inflammation/bin/boilerplate/CONTRIBUTING.md:112 +# ordered list +msgid "2. Within your version of the forked repository, move to the `gh-pages` branch and" +msgstr "" + +#: python-novice-inflammation/CONTRIBUTING.md:113 +#: python-novice-inflammation/bin/boilerplate/CONTRIBUTING.md:113 +msgid "create a new branch for each significant change being made.\n" +"3. Navigate to the file(s) you wish to change within the new branches and make revisions as required.\n" +"4. Commit all changed files within the appropriate branches.\n" +"5. Create individual pull requests from each of your changed branches\n" +"to the `gh-pages` branch within the originating repository.\n" +"6. If you receive feedback, make changes using your issue-specific branches of the forked\n" +"repository and the pull requests will update automatically.\n" +"7. Repeat as needed until all feedback has been addressed." +msgstr "" + +#: python-novice-inflammation/CONTRIBUTING.md:122 +#: python-novice-inflammation/bin/boilerplate/CONTRIBUTING.md:122 +msgid "When starting work, please make sure your clone of the originating `gh-pages` branch is up-to-date\n" +"before creating your own revision-specific branch(es) from there.\n" +"Additionally, please only work from your newly-created branch(es) and *not*\n" +"your clone of the originating `gh-pages` branch.\n" +"Lastly, published copies of all the lessons are available in the `gh-pages` branch of the originating\n" +"repository for reference while revising." +msgstr "" + +#: python-novice-inflammation/CONTRIBUTING.md:129 +#: python-novice-inflammation/bin/boilerplate/CONTRIBUTING.md:129 +# header +msgid "## Other Resources" +msgstr "" + +#: python-novice-inflammation/CONTRIBUTING.md:131 +#: python-novice-inflammation/bin/boilerplate/CONTRIBUTING.md:131 +msgid "General discussion of [Software Carpentry][swc-site] and [Data Carpentry][dc-site]\n" +"happens on the [discussion mailing list][discuss-list],\n" +"which everyone is welcome to join.\n" +"You can also [reach us by email][email]." +msgstr "" + +#: python-novice-inflammation/CONTRIBUTING.md:136 +#: python-novice-inflammation/bin/boilerplate/CONTRIBUTING.md:136 +msgid "[email]: mailto:admin@software-carpentry.org\n" +"[dc-issues]: https://github.com/issues?q=user%3Adatacarpentry\n" +"[dc-lessons]: http://datacarpentry.org/lessons/\n" +"[dc-site]: http://datacarpentry.org/\n" +"[discuss-list]: http://lists.software-carpentry.org/listinfo/discuss\n" +"[github]: https://github.com\n" +"[github-flow]: https://guides.github.com/introduction/flow/\n" +"[github-join]: https://github.com/join\n" +"[how-contribute]: https://egghead.io/series/how-to-contribute-to-an-open-source-project-on-github\n" +"[issues]: https://guides.github.com/features/issues/\n" +"[swc-issues]: https://github.com/issues?q=user%3Aswcarpentry\n" +"[swc-lessons]: https://software-carpentry.org/lessons/\n" +"[swc-site]: https://software-carpentry.org/" +msgstr "" + +#: python-novice-inflammation/LICENSE.md:1 +# Front Matter +msgid "---\n" +"layout: page\n" +"title: \"Licenses\"\n" +"root: .\n" +"---" +msgstr "" + +#: python-novice-inflammation/LICENSE.md:6 +# header +msgid "## Instructional Material" +msgstr "" + +#: python-novice-inflammation/LICENSE.md:8 +msgid "All Software Carpentry and Data Carpentry instructional material is\n" +"made available under the [Creative Commons Attribution\n" +"license][cc-by-human]. The following is a human-readable summary of\n" +"(and not a substitute for) the [full legal text of the CC BY 4.0\n" +"license][cc-by-legal]." +msgstr "" + +#: python-novice-inflammation/LICENSE.md:14 +msgid "You are free:" +msgstr "" + +#: python-novice-inflammation/LICENSE.md:16 +# unordered list +msgid "* to **Share**---copy and redistribute the material in any medium or format" +msgstr "" + +#: python-novice-inflammation/LICENSE.md:17 +# unordered list +msgid "* to **Adapt**---remix, transform, and build upon the material" +msgstr "" + +#: python-novice-inflammation/LICENSE.md:19 +msgid "for any purpose, even commercially." +msgstr "" + +#: python-novice-inflammation/LICENSE.md:21 +msgid "The licensor cannot revoke these freedoms as long as you follow the\n" +"license terms." +msgstr "" + +#: python-novice-inflammation/LICENSE.md:24 +msgid "Under the following terms:" +msgstr "" + +#: python-novice-inflammation/LICENSE.md:26 +# unordered list +msgid "* **Attribution**---You must give appropriate credit (mentioning that" +msgstr "" + +#: python-novice-inflammation/LICENSE.md:27 +msgid " your work is derived from work that is Copyright © Software\n" +" Carpentry and, where practical, linking to\n" +" http://software-carpentry.org/), provide a [link to the\n" +" license][cc-by-human], and indicate if changes were made. You may do\n" +" so in any reasonable manner, but not in any way that suggests the\n" +" licensor endorses you or your use." +msgstr "" + +#: python-novice-inflammation/LICENSE.md:34 +msgid "**No additional restrictions**---You may not apply legal terms or\n" +"technological measures that legally restrict others from doing\n" +"anything the license permits. With the understanding that:" +msgstr "" + +#: python-novice-inflammation/LICENSE.md:38 +msgid "Notices:" +msgstr "" + +#: python-novice-inflammation/LICENSE.md:40 +# unordered list +msgid "* You do not have to comply with the license for elements of the" +msgstr "" + +#: python-novice-inflammation/LICENSE.md:41 +msgid " material in the public domain or where your use is permitted by an\n" +" applicable exception or limitation.\n" +"* No warranties are given. The license may not give you all of the\n" +" permissions necessary for your intended use. For example, other\n" +" rights such as publicity, privacy, or moral rights may limit how you\n" +" use the material." +msgstr "" + +#: python-novice-inflammation/LICENSE.md:48 +# header +msgid "## Software" +msgstr "" + +#: python-novice-inflammation/LICENSE.md:50 +msgid "Except where otherwise noted, the example programs and other software\n" +"provided by Software Carpentry and Data Carpentry are made available under the\n" +"[OSI][osi]-approved\n" +"[MIT license][mit-license]." +msgstr "" + +#: python-novice-inflammation/LICENSE.md:55 +msgid "Permission is hereby granted, free of charge, to any person obtaining\n" +"a copy of this software and associated documentation files (the\n" +"\"Software\"), to deal in the Software without restriction, including\n" +"without limitation the rights to use, copy, modify, merge, publish,\n" +"distribute, sublicense, and/or sell copies of the Software, and to\n" +"permit persons to whom the Software is furnished to do so, subject to\n" +"the following conditions:" +msgstr "" + +#: python-novice-inflammation/LICENSE.md:63 +msgid "The above copyright notice and this permission notice shall be\n" +"included in all copies or substantial portions of the Software." +msgstr "" + +#: python-novice-inflammation/LICENSE.md:66 +msgid "THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n" +"EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n" +"MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n" +"NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\n" +"LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\n" +"OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\n" +"WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." +msgstr "" + +#: python-novice-inflammation/LICENSE.md:74 +# header +msgid "## Trademark" +msgstr "" + +#: python-novice-inflammation/LICENSE.md:76 +msgid "\"Software Carpentry\" and \"Data Carpentry\" and their respective logos\n" +"are registered trademarks of [Community Initiatives][CI]." +msgstr "" + +#: python-novice-inflammation/LICENSE.md:79 +msgid "[cc-by-human]: https://creativecommons.org/licenses/by/4.0/\n" +"[cc-by-legal]: https://creativecommons.org/licenses/by/4.0/legalcode\n" +"[mit-license]: https://opensource.org/licenses/mit-license.html\n" +"[ci]: http://communityin.org/\n" +"[osi]: https://opensource.org" +msgstr "" + +#: python-novice-inflammation/README.md:1 +# header +msgid "# Programming with Python" +msgstr "" + +#: python-novice-inflammation/README.md:2 +msgid "[![GitHub release](https://img.shields.io/github/release/swcarpentry/python-novice-inflammation.svg)](https://github.com/swcarpentry/python-novice-inflammation/releases)\n" +"[![Create a Slack Account with us](https://img.shields.io/badge/Create_Slack_Account-The_Carpentries-071159.svg)](https://swc-slack-invite.herokuapp.com/)\n" +"[![Slack Status](https://img.shields.io/badge/Slack_Channel-swc--py--inflammation-E01563.svg)](https://swcarpentry.slack.com/messages/C9Y0L6MF0)" +msgstr "" + +#: python-novice-inflammation/README.md:6 +msgid "An introduction to Python for non-programmers using inflammation data." +msgstr "" + +#: python-novice-inflammation/README.md:8 +msgid "Rendered version of the lesson: " +msgstr "" + +#: python-novice-inflammation/README.md:10 +#: python-novice-inflammation/bin/boilerplate/README.md:7 +# header +msgid "## Contributing" +msgstr "" + +#: python-novice-inflammation/README.md:11 +msgid "[![Travis Build Status](https://travis-ci.org/swcarpentry/python-novice-inflammation.svg?branch=gh-pages)](https://travis-ci.org/swcarpentry/python-novice-inflammation)" +msgstr "" + +#: python-novice-inflammation/README.md:13 +msgid "We welcome all contributions to improve the lesson!\n" +"Maintainers will do their best to help you if you have any questions, concerns,\n" +"or experience any difficulties along the way." +msgstr "" + +#: python-novice-inflammation/README.md:17 +msgid "We'd like to ask you to familiarize yourself with our [Contribution Guide](CONTRIBUTING.md)\n" +"and have a look at the [more detailed guidelines][lesson-example] on proper formatting,\n" +"ways to render the lesson locally, and even how to write new episodes!" +msgstr "" + +#: python-novice-inflammation/README.md:21 +# header +msgid "## Maintainers" +msgstr "" + +#: python-novice-inflammation/README.md:23 +msgid "Lesson maintainers are [Trevor Bekolay][trevor_bekolay], [Maxim Belkin][maxim_belkin],\n" +"[Anne Fouilloux][anne_fouilloux], [Valentina Staneva][valentina_staneva],\n" +"[Mike Trizna][mike_trizna], and [creator][swc_history] of Software Carpentry:\n" +"[Greg Wilson][greg_wilson]" +msgstr "" + +#: python-novice-inflammation/README.md:28 +#: python-novice-inflammation/bin/boilerplate/README.md:20 +# header +msgid "## Authors" +msgstr "" + +#: python-novice-inflammation/README.md:29 +#: python-novice-inflammation/bin/boilerplate/README.md:22 +msgid "A list of contributors to the lesson can be found in [AUTHORS](AUTHORS)" +msgstr "" + +#: python-novice-inflammation/README.md:31 +#: python-novice-inflammation/bin/boilerplate/README.md:24 +# header +msgid "## Citation" +msgstr "" + +#: python-novice-inflammation/README.md:32 +#: python-novice-inflammation/bin/boilerplate/README.md:26 +msgid "To cite this lesson, please consult with [CITATION](CITATION)" +msgstr "" + +#: python-novice-inflammation/README.md:34 +msgid "[lesson-example]: https://carpentries.github.io/lesson-example\n" +"[anne_fouilloux]: https://github.com/annefou\n" +"[maxim_belkin]: https://github.com/maxim-belkin\n" +"[mike_trizna]: https://github.com/MikeTrizna\n" +"[trevor_bekolay]: http://software-carpentry.org/team/#bekolay_trevor\n" +"[valentina_staneva]: http://software-carpentry.org/team/#staneva_valentina\n" +"[greg_wilson]: https://github.com/gvwilson\n" +"[swc_history]: https://software-carpentry.org/scf/history/" +msgstr "" + +#: python-novice-inflammation/_episodes/01-numpy.md:1 +# Front Matter +msgid "---\n" +"title: Analyzing Patient Data\n" +"teaching: 60\n" +"exercises: 30\n" +"questions:\n" +"- \"How can I process tabular data files in Python?\"\n" +"objectives:\n" +"- \"Explain what a library is and what libraries are used for.\"\n" +"- \"Import a Python library and use the functions it contains.\"\n" +"- \"Read tabular data from a file into a program.\"\n" +"- \"Assign values to variables.\"\n" +"- \"Select individual values and subsections from data.\"\n" +"- \"Perform operations on arrays of data.\"\n" +"- \"Plot simple graphs from data.\"\n" +"keypoints:\n" +"- \"Import a library into a program using `import libraryname`.\"\n" +"- \"Use the `numpy` library to work with arrays in Python.\"\n" +"- \"Use `variable = value` to assign a value to a variable in order to record it in memory.\"\n" +"- \"Variables are created on demand whenever a value is assigned to them.\"\n" +"- \"Use `print(something)` to display the value of `something`.\"\n" +"- \"The expression `array.shape` gives the shape of an array.\"\n" +"- \"Use `array[x, y]` to select a single element from a 2D array.\"\n" +"- \"Array indices start at 0, not 1.\"\n" +"- \"Use `low:high` to specify a `slice` that includes the indices from `low` to `high-1`.\"\n" +"- \"All the indexing and slicing that works on arrays also works on strings.\"\n" +"- \"Use `# some kind of explanation` to add comments to programs.\"\n" +"- \"Use `numpy.mean(array)`, `numpy.max(array)`, and `numpy.min(array)` to calculate simple statistics.\"\n" +"- \"Use `numpy.mean(array, axis=0)` or `numpy.mean(array, axis=1)` to calculate statistics across the specified axis.\"\n" +"- \"Use the `pyplot` library from `matplotlib` for creating simple visualizations.\"\n" +"---" +msgstr "" + +#: python-novice-inflammation/_episodes/01-numpy.md:32 +msgid "In this lesson we will learn how to work with arthritis inflammation datasets in Python. However,\n" +"before we discuss how to deal with many data points, let's learn how to work with\n" +"single data values." +msgstr "" + +#: python-novice-inflammation/_episodes/01-numpy.md:36 +# header +msgid "## Variables" +msgstr "" + +#: python-novice-inflammation/_episodes/01-numpy.md:38 +msgid "Any Python interpreter can be used as a calculator:\n" +"~~~\n" +"3 + 5 * 4\n" +"~~~\n" +"{: .language-python}\n" +"~~~\n" +"23\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/01-numpy.md:46 +#: python-novice-inflammation/_episodes/01-numpy.md:105 +#: python-novice-inflammation/_episodes/01-numpy.md:116 +#: python-novice-inflammation/_episodes/01-numpy.md:128 +#: python-novice-inflammation/_episodes/01-numpy.md:139 +#: python-novice-inflammation/_episodes/01-numpy.md:153 +#: python-novice-inflammation/_episodes/01-numpy.md:239 +#: python-novice-inflammation/_episodes/01-numpy.md:297 +#: python-novice-inflammation/_episodes/01-numpy.md:312 +#: python-novice-inflammation/_episodes/01-numpy.md:353 +#: python-novice-inflammation/_episodes/01-numpy.md:376 +#: python-novice-inflammation/_episodes/01-numpy.md:386 +#: python-novice-inflammation/_episodes/01-numpy.md:438 +#: python-novice-inflammation/_episodes/01-numpy.md:458 +#: python-novice-inflammation/_episodes/01-numpy.md:479 +#: python-novice-inflammation/_episodes/01-numpy.md:511 +#: python-novice-inflammation/_episodes/01-numpy.md:537 +#: python-novice-inflammation/_episodes/01-numpy.md:551 +#: python-novice-inflammation/_episodes/01-numpy.md:601 +#: python-novice-inflammation/_episodes/01-numpy.md:630 +#: python-novice-inflammation/_episodes/01-numpy.md:648 +#: python-novice-inflammation/_episodes/01-numpy.md:677 +#: python-novice-inflammation/_episodes/01-numpy.md:690 +#: python-novice-inflammation/_episodes/01-numpy.md:709 +#: python-novice-inflammation/_episodes/02-loop.md:54 +#: python-novice-inflammation/_episodes/02-loop.md:82 +#: python-novice-inflammation/_episodes/02-loop.md:112 +#: python-novice-inflammation/_episodes/02-loop.md:132 +#: python-novice-inflammation/_episodes/02-loop.md:201 +#: python-novice-inflammation/_episodes/02-loop.md:239 +#: python-novice-inflammation/_episodes/02-loop.md:252 +#: python-novice-inflammation/_episodes/03-lists.md:39 +#: python-novice-inflammation/_episodes/03-lists.md:51 +#: python-novice-inflammation/_episodes/03-lists.md:68 +#: python-novice-inflammation/_episodes/03-lists.md:87 +#: python-novice-inflammation/_episodes/03-lists.md:234 +#: python-novice-inflammation/_episodes/03-lists.md:245 +#: python-novice-inflammation/_episodes/03-lists.md:256 +#: python-novice-inflammation/_episodes/03-lists.md:276 +#: python-novice-inflammation/_episodes/03-lists.md:295 +#: python-novice-inflammation/_episodes/03-lists.md:354 +#: python-novice-inflammation/_episodes/03-lists.md:478 +#: python-novice-inflammation/_episodes/03-lists.md:499 +#: python-novice-inflammation/_episodes/04-files.md:40 +#: python-novice-inflammation/_episodes/04-files.md:85 +#: python-novice-inflammation/_episodes/04-files.md:92 +#: python-novice-inflammation/_episodes/04-files.md:99 +#: python-novice-inflammation/_episodes/05-cond.md:44 +#: python-novice-inflammation/_episodes/05-cond.md:73 +#: python-novice-inflammation/_episodes/05-cond.md:94 +#: python-novice-inflammation/_episodes/05-cond.md:113 +#: python-novice-inflammation/_episodes/05-cond.md:126 +#: python-novice-inflammation/_episodes/05-cond.md:202 +#: python-novice-inflammation/_episodes/05-cond.md:222 +#: python-novice-inflammation/_episodes/06-func.md:89 +#: python-novice-inflammation/_episodes/06-func.md:111 +#: python-novice-inflammation/_episodes/06-func.md:132 +#: python-novice-inflammation/_episodes/06-func.md:239 +#: python-novice-inflammation/_episodes/06-func.md:259 +#: python-novice-inflammation/_episodes/06-func.md:278 +#: python-novice-inflammation/_episodes/06-func.md:295 +#: python-novice-inflammation/_episodes/06-func.md:310 +#: python-novice-inflammation/_episodes/06-func.md:357 +#: python-novice-inflammation/_episodes/06-func.md:382 +#: python-novice-inflammation/_episodes/06-func.md:406 +#: python-novice-inflammation/_episodes/06-func.md:460 +#: python-novice-inflammation/_episodes/06-func.md:483 +#: python-novice-inflammation/_episodes/06-func.md:513 +#: python-novice-inflammation/_episodes/06-func.md:530 +#: python-novice-inflammation/_episodes/06-func.md:627 +#: python-novice-inflammation/_episodes/06-func.md:635 +#: python-novice-inflammation/_episodes/07-errors.md:334 +#: python-novice-inflammation/_episodes/08-defensive.md:194 +#: python-novice-inflammation/_episodes/10-cmdline.md:52 +#: python-novice-inflammation/_episodes/10-cmdline.md:107 +#: python-novice-inflammation/_episodes/10-cmdline.md:132 +#: python-novice-inflammation/_episodes/10-cmdline.md:146 +#: python-novice-inflammation/_episodes/10-cmdline.md:279 +#: python-novice-inflammation/_episodes/10-cmdline.md:338 +#: python-novice-inflammation/_episodes/10-cmdline.md:349 +#: python-novice-inflammation/_episodes/10-cmdline.md:360 +#: python-novice-inflammation/_episodes/10-cmdline.md:423 +#: python-novice-inflammation/_episodes/10-cmdline.md:488 +#: python-novice-inflammation/_episodes/10-cmdline.md:586 +#: python-novice-inflammation/_episodes/10-cmdline.md:660 +#: python-novice-inflammation/_extras/additional_material.md:27 +#: python-novice-inflammation/_extras/additional_material.md:42 +#: python-novice-inflammation/_extras/additional_material.md:52 +#: python-novice-inflammation/_extras/additional_material.md:65 +#: python-novice-inflammation/_extras/additional_material.md:75 +#: python-novice-inflammation/_extras/additional_material.md:85 +#: python-novice-inflammation/_extras/additional_material.md:94 +#: python-novice-inflammation/_extras/additional_material.md:107 +#: python-novice-inflammation/_extras/additional_material.md:117 +#: python-novice-inflammation/_extras/discuss.md:109 +#: python-novice-inflammation/_extras/discuss.md:131 +#: python-novice-inflammation/_extras/discuss.md:145 +#: python-novice-inflammation/_extras/discuss.md:220 +#: python-novice-inflammation/_extras/discuss.md:251 +#: python-novice-inflammation/_extras/discuss.md:264 +# SC/DC Template label +msgid "{: .output}" +msgstr "" + +#: python-novice-inflammation/_episodes/01-numpy.md:48 +msgid "This is great but not very interesting.\n" +"To do anything useful with data, we need to assign its value to a _variable_.\n" +"In Python, we can [assign]({{ page.root }}/reference/#assign) a value to a\n" +"[variable]({{ page.root }}/reference/#variable), using the equals sign `=`.\n" +"For example, to assign value `60` to a variable `weight_kg`, we would execute:" +msgstr "" + +#: python-novice-inflammation/_episodes/01-numpy.md:54 +# code block +msgid "~~~\n" +"weight_kg = 60\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/01-numpy.md:57 +#: python-novice-inflammation/_episodes/01-numpy.md:85 +#: python-novice-inflammation/_episodes/01-numpy.md:92 +#: python-novice-inflammation/_episodes/01-numpy.md:100 +#: python-novice-inflammation/_episodes/01-numpy.md:123 +#: python-novice-inflammation/_episodes/01-numpy.md:148 +#: python-novice-inflammation/_episodes/01-numpy.md:216 +#: python-novice-inflammation/_episodes/01-numpy.md:228 +#: python-novice-inflammation/_episodes/01-numpy.md:277 +#: python-novice-inflammation/_episodes/01-numpy.md:286 +#: python-novice-inflammation/_episodes/01-numpy.md:307 +#: python-novice-inflammation/_episodes/01-numpy.md:348 +#: python-novice-inflammation/_episodes/01-numpy.md:371 +#: python-novice-inflammation/_episodes/01-numpy.md:381 +#: python-novice-inflammation/_episodes/01-numpy.md:430 +#: python-novice-inflammation/_episodes/01-numpy.md:449 +#: python-novice-inflammation/_episodes/01-numpy.md:488 +#: python-novice-inflammation/_episodes/01-numpy.md:499 +#: python-novice-inflammation/_episodes/01-numpy.md:520 +#: python-novice-inflammation/_episodes/01-numpy.md:529 +#: python-novice-inflammation/_episodes/01-numpy.md:546 +#: python-novice-inflammation/_episodes/01-numpy.md:591 +#: python-novice-inflammation/_episodes/01-numpy.md:625 +#: python-novice-inflammation/_episodes/01-numpy.md:643 +#: python-novice-inflammation/_episodes/01-numpy.md:665 +#: python-novice-inflammation/_episodes/01-numpy.md:685 +#: python-novice-inflammation/_episodes/01-numpy.md:699 +#: python-novice-inflammation/_episodes/01-numpy.md:726 +#: python-novice-inflammation/_episodes/01-numpy.md:757 +#: python-novice-inflammation/_episodes/01-numpy.md:770 +#: python-novice-inflammation/_episodes/01-numpy.md:778 +#: python-novice-inflammation/_episodes/01-numpy.md:825 +#: python-novice-inflammation/_episodes/02-loop.md:34 +#: python-novice-inflammation/_episodes/02-loop.md:46 +#: python-novice-inflammation/_episodes/02-loop.md:75 +#: python-novice-inflammation/_episodes/02-loop.md:104 +#: python-novice-inflammation/_episodes/02-loop.md:122 +#: python-novice-inflammation/_episodes/02-loop.md:142 +#: python-novice-inflammation/_episodes/02-loop.md:196 +#: python-novice-inflammation/_episodes/02-loop.md:231 +#: python-novice-inflammation/_episodes/02-loop.md:247 +#: python-novice-inflammation/_episodes/03-lists.md:34 +#: python-novice-inflammation/_episodes/03-lists.md:46 +#: python-novice-inflammation/_episodes/03-lists.md:60 +#: python-novice-inflammation/_episodes/03-lists.md:81 +#: python-novice-inflammation/_episodes/03-lists.md:95 +#: python-novice-inflammation/_episodes/03-lists.md:229 +#: python-novice-inflammation/_episodes/03-lists.md:240 +#: python-novice-inflammation/_episodes/03-lists.md:251 +#: python-novice-inflammation/_episodes/03-lists.md:270 +#: python-novice-inflammation/_episodes/03-lists.md:289 +#: python-novice-inflammation/_episodes/03-lists.md:346 +#: python-novice-inflammation/_episodes/03-lists.md:472 +#: python-novice-inflammation/_episodes/03-lists.md:492 +#: python-novice-inflammation/_episodes/04-files.md:21 +#: python-novice-inflammation/_episodes/04-files.md:33 +#: python-novice-inflammation/_episodes/04-files.md:80 +#: python-novice-inflammation/_episodes/05-cond.md:38 +#: python-novice-inflammation/_episodes/05-cond.md:67 +#: python-novice-inflammation/_episodes/05-cond.md:89 +#: python-novice-inflammation/_episodes/05-cond.md:108 +#: python-novice-inflammation/_episodes/05-cond.md:121 +#: python-novice-inflammation/_episodes/05-cond.md:145 +#: python-novice-inflammation/_episodes/05-cond.md:162 +#: python-novice-inflammation/_episodes/05-cond.md:172 +#: python-novice-inflammation/_episodes/05-cond.md:180 +#: python-novice-inflammation/_episodes/05-cond.md:197 +#: python-novice-inflammation/_episodes/05-cond.md:217 +#: python-novice-inflammation/_episodes/06-func.md:51 +#: python-novice-inflammation/_episodes/06-func.md:74 +#: python-novice-inflammation/_episodes/06-func.md:106 +#: python-novice-inflammation/_episodes/06-func.md:127 +#: python-novice-inflammation/_episodes/06-func.md:170 +#: python-novice-inflammation/_episodes/06-func.md:187 +#: python-novice-inflammation/_episodes/06-func.md:201 +#: python-novice-inflammation/_episodes/06-func.md:220 +#: python-novice-inflammation/_episodes/06-func.md:233 +#: python-novice-inflammation/_episodes/06-func.md:248 +#: python-novice-inflammation/_episodes/06-func.md:272 +#: python-novice-inflammation/_episodes/06-func.md:290 +#: python-novice-inflammation/_episodes/06-func.md:305 +#: python-novice-inflammation/_episodes/06-func.md:329 +#: python-novice-inflammation/_episodes/06-func.md:341 +#: python-novice-inflammation/_episodes/06-func.md:349 +#: python-novice-inflammation/_episodes/06-func.md:373 +#: python-novice-inflammation/_episodes/06-func.md:395 +#: python-novice-inflammation/_episodes/06-func.md:413 +#: python-novice-inflammation/_episodes/06-func.md:443 +#: python-novice-inflammation/_episodes/06-func.md:454 +#: python-novice-inflammation/_episodes/06-func.md:473 +#: python-novice-inflammation/_episodes/06-func.md:503 +#: python-novice-inflammation/_episodes/06-func.md:524 +#: python-novice-inflammation/_episodes/06-func.md:538 +#: python-novice-inflammation/_episodes/06-func.md:644 +#: python-novice-inflammation/_episodes/06-func.md:683 +#: python-novice-inflammation/_episodes/07-errors.md:47 +#: python-novice-inflammation/_episodes/07-errors.md:143 +#: python-novice-inflammation/_episodes/07-errors.md:168 +#: python-novice-inflammation/_episodes/07-errors.md:222 +#: python-novice-inflammation/_episodes/07-errors.md:247 +#: python-novice-inflammation/_episodes/07-errors.md:268 +#: python-novice-inflammation/_episodes/07-errors.md:294 +#: python-novice-inflammation/_episodes/07-errors.md:327 +#: python-novice-inflammation/_episodes/07-errors.md:366 +#: python-novice-inflammation/_episodes/07-errors.md:400 +#: python-novice-inflammation/_episodes/08-defensive.md:73 +#: python-novice-inflammation/_episodes/08-defensive.md:134 +#: python-novice-inflammation/_episodes/08-defensive.md:141 +#: python-novice-inflammation/_episodes/08-defensive.md:163 +#: python-novice-inflammation/_episodes/08-defensive.md:189 +#: python-novice-inflammation/_episodes/08-defensive.md:202 +#: python-novice-inflammation/_episodes/08-defensive.md:301 +#: python-novice-inflammation/_episodes/08-defensive.md:332 +#: python-novice-inflammation/_episodes/08-defensive.md:348 +#: python-novice-inflammation/_episodes/08-defensive.md:375 +#: python-novice-inflammation/_episodes/08-defensive.md:402 +#: python-novice-inflammation/_episodes/08-defensive.md:419 +#: python-novice-inflammation/_episodes/08-defensive.md:426 +#: python-novice-inflammation/_episodes/10-cmdline.md:90 +#: python-novice-inflammation/_episodes/10-cmdline.md:115 +#: python-novice-inflammation/_episodes/10-cmdline.md:173 +#: python-novice-inflammation/_episodes/10-cmdline.md:208 +#: python-novice-inflammation/_episodes/10-cmdline.md:408 +#: python-novice-inflammation/_episodes/10-cmdline.md:475 +#: python-novice-inflammation/_episodes/10-cmdline.md:542 +#: python-novice-inflammation/_episodes/10-cmdline.md:569 +#: python-novice-inflammation/_episodes/10-cmdline.md:647 +#: python-novice-inflammation/_extras/additional_material.md:19 +#: python-novice-inflammation/_extras/additional_material.md:60 +#: python-novice-inflammation/_extras/additional_material.md:70 +#: python-novice-inflammation/_extras/additional_material.md:80 +#: python-novice-inflammation/_extras/additional_material.md:89 +#: python-novice-inflammation/_extras/additional_material.md:102 +#: python-novice-inflammation/_extras/additional_material.md:112 +#: python-novice-inflammation/_extras/discuss.md:32 +#: python-novice-inflammation/_extras/discuss.md:94 +#: python-novice-inflammation/_extras/discuss.md:126 +#: python-novice-inflammation/_extras/discuss.md:140 +#: python-novice-inflammation/_extras/discuss.md:186 +#: python-novice-inflammation/_extras/discuss.md:201 +#: python-novice-inflammation/_extras/discuss.md:213 +#: python-novice-inflammation/_extras/discuss.md:245 +#: python-novice-inflammation/_extras/discuss.md:259 +#: python-novice-inflammation/_extras/discuss.md:275 +#: python-novice-inflammation/_extras/discuss.md:311 +#: python-novice-inflammation/_extras/discuss.md:324 +#: python-novice-inflammation/_extras/discuss.md:341 +msgid "{: .language-python}" +msgstr "" + +#: python-novice-inflammation/_episodes/01-numpy.md:59 +msgid "From now on, whenever we use `weight_kg`, Python will substitute the value we assigned to\n" +"it. In essence, **a variable is just a name for a value**." +msgstr "" + +#: python-novice-inflammation/_episodes/01-numpy.md:62 +msgid "In Python, variable names:" +msgstr "" + +#: python-novice-inflammation/_episodes/01-numpy.md:64 +# unordered list +msgid " - can include letters, digits, and underscores" +msgstr "" + +#: python-novice-inflammation/_episodes/01-numpy.md:65 +# unordered list +msgid " - cannot start with a digit" +msgstr "" + +#: python-novice-inflammation/_episodes/01-numpy.md:66 +# unordered list +msgid " - are [case sensitive]({{ page.root }}/reference/#case-sensitive)." +msgstr "" + +#: python-novice-inflammation/_episodes/01-numpy.md:68 +msgid "This means that, for example:\n" +" - `weight0` is a valid variable name, whereas `0weight` is not\n" +" - `weight` and `Weight` are different variables" +msgstr "" + +#: python-novice-inflammation/_episodes/01-numpy.md:72 +# header +msgid "## Types of data" +msgstr "" + +#: python-novice-inflammation/_episodes/01-numpy.md:73 +msgid "Python knows various types of data. Three common ones are:" +msgstr "" + +#: python-novice-inflammation/_episodes/01-numpy.md:75 +# unordered list +msgid "* integer numbers" +msgstr "" + +#: python-novice-inflammation/_episodes/01-numpy.md:76 +# unordered list +msgid "* floating point numbers, and" +msgstr "" + +#: python-novice-inflammation/_episodes/01-numpy.md:77 +# unordered list +msgid "* strings." +msgstr "" + +#: python-novice-inflammation/_episodes/01-numpy.md:79 +msgid "In the example above, variable `weight_kg` has an integer value of `60`.\n" +"To create a variable with a floating point value, we can execute:" +msgstr "" + +#: python-novice-inflammation/_episodes/01-numpy.md:82 +# code block +msgid "~~~\n" +"weight_kg = 60.0\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/01-numpy.md:87 +msgid "And to create a string we simply have to add single or double quotes around some text, for example:" +msgstr "" + +#: python-novice-inflammation/_episodes/01-numpy.md:89 +# code block +msgid "~~~\n" +"weight_kg_text = 'weight in kilograms:'\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/01-numpy.md:94 +# header +msgid "## Using Variables in Python" +msgstr "" + +#: python-novice-inflammation/_episodes/01-numpy.md:95 +msgid "To display the value of a variable to the screen in Python, we can use the `print` function:" +msgstr "" + +#: python-novice-inflammation/_episodes/01-numpy.md:97 +# code block +msgid "~~~\n" +"print(weight_kg)\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/01-numpy.md:102 +#: python-novice-inflammation/_episodes/01-numpy.md:136 +# code block +msgid "~~~\n" +"60.0\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/01-numpy.md:107 +msgid "We can display multiple things at once using only one `print` command:" +msgstr "" + +#: python-novice-inflammation/_episodes/01-numpy.md:109 +# code block +msgid "~~~\n" +"print(weight_kg_text, weight_kg)\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/01-numpy.md:112 +msgid "{: .language-python}\n" +"~~~\n" +"weight in kilograms: 60.0\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/01-numpy.md:118 +msgid "Moreover, we can do arithmetics with variables right inside the `print` function:" +msgstr "" + +#: python-novice-inflammation/_episodes/01-numpy.md:120 +# code block +msgid "~~~\n" +"print('weight in pounds:', 2.2 * weight_kg)\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/01-numpy.md:125 +# code block +msgid "~~~\n" +"weight in pounds: 132.0\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/01-numpy.md:130 +msgid "The above command, however, did not change the value of `weight_kg`:\n" +"~~~\n" +"print(weight_kg)\n" +"~~~\n" +"{: .language-python}" +msgstr "" + +#: python-novice-inflammation/_episodes/01-numpy.md:141 +msgid "To change the value of the `weight_kg` variable, we have to\n" +"**assign** `weight_kg` a new value using the equals `=` sign:" +msgstr "" + +#: python-novice-inflammation/_episodes/01-numpy.md:144 +# code block +msgid "~~~\n" +"weight_kg = 65.0\n" +"print('weight in kilograms is now:', weight_kg)\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/01-numpy.md:150 +# code block +msgid "~~~\n" +"weight in kilograms is now: 65.0\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/01-numpy.md:155 +# blockquote, which can be cascaded +msgid "> ## Variables as Sticky Notes" +msgstr "" + +#: python-novice-inflammation/_episodes/01-numpy.md:156 +msgid ">\n" +"> A variable is analogous to a sticky note with a name written on it:\n" +"> assigning a value to a variable is like putting that sticky note on a particular value.\n" +">\n" +"> ![Variables as Sticky Notes](../fig/python-sticky-note-variables-01.svg)\n" +">\n" +"> This means that assigning a value to one variable does **not** change the values of other variables.\n" +"> For example, let's store the subject's weight in pounds in its own variable:\n" +">\n" +"> ~~~\n" +"> # There are 2.2 pounds per kilogram\n" +"> weight_lb = 2.2 * weight_kg\n" +"> print(weight_kg_text, weight_kg, 'and in pounds:', weight_lb)\n" +"> ~~~\n" +"> {: .language-python}\n" +">\n" +"> ~~~\n" +"> weight in kilograms: 65.0 and in pounds: 143.0\n" +"> ~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/01-numpy.md:175 +#: python-novice-inflammation/_episodes/01-numpy.md:190 +#: python-novice-inflammation/_episodes/01-numpy.md:337 +#: python-novice-inflammation/_episodes/01-numpy.md:572 +#: python-novice-inflammation/_episodes/01-numpy.md:899 +#: python-novice-inflammation/_episodes/01-numpy.md:1124 +#: python-novice-inflammation/_episodes/02-loop.md:182 +#: python-novice-inflammation/_episodes/02-loop.md:305 +#: python-novice-inflammation/_episodes/02-loop.md:369 +#: python-novice-inflammation/_episodes/03-lists.md:137 +#: python-novice-inflammation/_episodes/03-lists.md:153 +#: python-novice-inflammation/_episodes/03-lists.md:189 +#: python-novice-inflammation/_episodes/03-lists.md:199 +#: python-novice-inflammation/_episodes/03-lists.md:209 +#: python-novice-inflammation/_episodes/03-lists.md:370 +#: python-novice-inflammation/_episodes/03-lists.md:409 +#: python-novice-inflammation/_episodes/03-lists.md:426 +#: python-novice-inflammation/_episodes/03-lists.md:440 +#: python-novice-inflammation/_episodes/05-cond.md:350 +#: python-novice-inflammation/_episodes/05-cond.md:398 +#: python-novice-inflammation/_episodes/05-cond.md:407 +#: python-novice-inflammation/_episodes/06-func.md:716 +#: python-novice-inflammation/_episodes/06-func.md:779 +#: python-novice-inflammation/_episodes/08-defensive.md:488 +#: python-novice-inflammation/_episodes/08-defensive.md:498 +#: python-novice-inflammation/_episodes/09-debugging.md:275 +#: python-novice-inflammation/_episodes/10-cmdline.md:679 +#: python-novice-inflammation/_episodes/10-cmdline.md:689 +#: python-novice-inflammation/_episodes/10-cmdline.md:744 +#: python-novice-inflammation/_episodes/10-cmdline.md:1013 +#: python-novice-inflammation/_episodes/10-cmdline.md:1023 +# SC/DC Template label +msgid "> {: .output}" +msgstr "" + +#: python-novice-inflammation/_episodes/01-numpy.md:176 +msgid ">\n" +"> ![Creating Another Variable](../fig/python-sticky-note-variables-02.svg)\n" +">\n" +"> Let's now change `weight_kg`:\n" +">\n" +"> ~~~\n" +"> weight_kg = 100.0\n" +"> print('weight in kilograms is now:', weight_kg, 'and weight in pounds is still:', weight_lb)\n" +"> ~~~\n" +"> {: .language-python}\n" +">\n" +"> ~~~\n" +"> weight in kilograms is now: 100.0 and weight in pounds is still: 143.0\n" +"> ~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/01-numpy.md:191 +msgid ">\n" +"> ![Updating a Variable](../fig/python-sticky-note-variables-03.svg)\n" +">\n" +"> Since `weight_lb` doesn't remember where its value came from,\n" +"> it isn't automatically updated when `weight_kg` changes." +msgstr "" + +#: python-novice-inflammation/_episodes/01-numpy.md:196 +#: python-novice-inflammation/_episodes/01-numpy.md:341 +#: python-novice-inflammation/_episodes/01-numpy.md:418 +#: python-novice-inflammation/_episodes/01-numpy.md:577 +#: python-novice-inflammation/_episodes/01-numpy.md:612 +#: python-novice-inflammation/_episodes/01-numpy.md:748 +#: python-novice-inflammation/_episodes/01-numpy.md:848 +#: python-novice-inflammation/_episodes/02-loop.md:186 +#: python-novice-inflammation/_episodes/03-lists.md:159 +#: python-novice-inflammation/_episodes/03-lists.md:213 +#: python-novice-inflammation/_episodes/03-lists.md:220 +#: python-novice-inflammation/_episodes/05-cond.md:132 +#: python-novice-inflammation/_episodes/07-errors.md:92 +#: python-novice-inflammation/_episodes/07-errors.md:211 +#: python-novice-inflammation/_episodes/09-debugging.md:200 +#: python-novice-inflammation/_episodes/10-cmdline.md:33 +#: python-novice-inflammation/_episodes/10-cmdline.md:307 +#: python-novice-inflammation/_episodes/10-cmdline.md:321 +#: python-novice-inflammation/_episodes/10-cmdline.md:437 +# SC/DC Template label +msgid "{: .callout}" +msgstr "" + +#: python-novice-inflammation/_episodes/01-numpy.md:200 +msgid "Words are useful, but what's more useful are the sentences and stories we build with them.\n" +"Similarly, while a lot of powerful, general tools are built into languages like Python,\n" +"specialized tools built up from these basic units live in\n" +"[libraries]({{ page.root }}/reference/#library)\n" +"that can be called upon when needed." +msgstr "" + +#: python-novice-inflammation/_episodes/01-numpy.md:206 +# header +msgid "## Loading data into Python" +msgstr "" + +#: python-novice-inflammation/_episodes/01-numpy.md:207 +msgid "In order to load our inflammation data, we need to access\n" +"([import]({{ page.root }}/reference/#import) in Python terminology) a library called\n" +"[NumPy](http://docs.scipy.org/doc/numpy/ \"NumPy Documentation\"). In general you should use this\n" +"library if you want to do fancy things with numbers, especially if you have matrices or arrays. We\n" +"can import NumPy using:" +msgstr "" + +#: python-novice-inflammation/_episodes/01-numpy.md:213 +#: python-novice-inflammation/_episodes/05-cond.md:142 +# code block +msgid "~~~\n" +"import numpy\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/01-numpy.md:218 +msgid "Importing a library is like getting a piece of lab equipment out of a storage locker and setting it\n" +"up on the bench. Libraries provide additional functionality to the basic Python package, much like\n" +"a new piece of equipment adds functionality to a lab space. Just like in the lab, importing too\n" +"many libraries can sometimes complicate and slow down your programs - so we only import what we\n" +"need for each program. Once we've imported the library, we can ask the library to read our data\n" +"file for us:" +msgstr "" + +#: python-novice-inflammation/_episodes/01-numpy.md:225 +# code block +msgid "~~~\n" +"numpy.loadtxt(fname='inflammation-01.csv', delimiter=',')\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/01-numpy.md:230 +#: python-novice-inflammation/_episodes/06-func.md:397 +# code block +msgid "~~~\n" +"array([[ 0., 0., 1., ..., 3., 0., 0.],\n" +" [ 0., 1., 2., ..., 1., 0., 1.],\n" +" [ 0., 1., 1., ..., 2., 1., 1.],\n" +" ...,\n" +" [ 0., 1., 1., ..., 1., 1., 1.],\n" +" [ 0., 0., 0., ..., 0., 2., 0.],\n" +" [ 0., 0., 1., ..., 1., 1., 0.]])\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/01-numpy.md:241 +msgid "The expression `numpy.loadtxt(...)` is a [function call]({{ page.root }}/reference/#function-call)\n" +"that asks Python to run the [function]({{ page.root }}/reference/#function) `loadtxt` which\n" +"belongs to the `numpy` library. This [dotted notation]({{ page.root }}/reference/#dotted-notation)\n" +"is used everywhere in Python: the thing that appears before the dot contains the thing that\n" +"appears after." +msgstr "" + +#: python-novice-inflammation/_episodes/01-numpy.md:247 +msgid "As an example, John Smith is the John that belongs to the Smith family.\n" +"We could use the dot notation to write his name `smith.john`,\n" +"just as `loadtxt` is a function that belongs to the `numpy` library." +msgstr "" + +#: python-novice-inflammation/_episodes/01-numpy.md:251 +msgid "`numpy.loadtxt` has two [parameters]({{ page.root }}/reference/#parameter): the name of the file\n" +"we want to read and the [delimiter]({{ page.root }}/reference/#delimiter) that separates values on\n" +"a line. These both need to be character strings (or [strings]({{ page.root }}/reference/#string)\n" +"for short), so we put them in quotes." +msgstr "" + +#: python-novice-inflammation/_episodes/01-numpy.md:256 +msgid "Since we haven't told it to do anything else with the function's output,\n" +"the notebook displays it.\n" +"In this case,\n" +"that output is the data we just loaded.\n" +"By default,\n" +"only a few rows and columns are shown\n" +"(with `...` to omit elements when displaying big arrays).\n" +"To save space,\n" +"Python displays numbers as `1.` instead of `1.0`\n" +"when there's nothing interesting after the decimal point." +msgstr "" + +#: python-novice-inflammation/_episodes/01-numpy.md:267 +msgid "Our call to `numpy.loadtxt` read our file\n" +"but didn't save the data in memory.\n" +"To do that,\n" +"we need to assign the array to a variable. Just as we can assign a single value to a variable, we\n" +"can also assign an array of values to a variable using the same syntax. Let's re-run\n" +"`numpy.loadtxt` and save the returned data:" +msgstr "" + +#: python-novice-inflammation/_episodes/01-numpy.md:274 +# code block +msgid "~~~\n" +"data = numpy.loadtxt(fname='inflammation-01.csv', delimiter=',')\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/01-numpy.md:279 +msgid "This statement doesn't produce any output because we've assigned the output to the variable `data`.\n" +"If we want to check that the data have been loaded,\n" +"we can print the variable's value:" +msgstr "" + +#: python-novice-inflammation/_episodes/01-numpy.md:283 +# code block +msgid "~~~\n" +"print(data)\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/01-numpy.md:288 +# code block +msgid "~~~\n" +"[[ 0. 0. 1. ..., 3. 0. 0.]\n" +" [ 0. 1. 2. ..., 1. 0. 1.]\n" +" [ 0. 1. 1. ..., 2. 1. 1.]\n" +" ...,\n" +" [ 0. 1. 1. ..., 1. 1. 1.]\n" +" [ 0. 0. 0. ..., 0. 2. 0.]\n" +" [ 0. 0. 1. ..., 1. 1. 0.]]\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/01-numpy.md:299 +msgid "Now that the data are in memory,\n" +"we can manipulate them.\n" +"First,\n" +"let's ask what [type]({{ page.root }}/reference/#type) of thing `data` refers to:" +msgstr "" + +#: python-novice-inflammation/_episodes/01-numpy.md:304 +# code block +msgid "~~~\n" +"print(type(data))\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/01-numpy.md:309 +# code block +msgid "~~~\n" +"\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/01-numpy.md:314 +msgid "The output tells us that `data` currently refers to\n" +"an N-dimensional array, the functionality for which is provided by the NumPy library.\n" +"These data correspond to arthritis patients' inflammation.\n" +"The rows are the individual patients, and the columns\n" +"are their daily inflammation measurements." +msgstr "" + +#: python-novice-inflammation/_episodes/01-numpy.md:320 +# blockquote, which can be cascaded +msgid "> ## Data Type" +msgstr "" + +#: python-novice-inflammation/_episodes/01-numpy.md:321 +msgid ">\n" +"> A Numpy array contains one or more elements\n" +"> of the same type. The `type` function will only tell you that\n" +"> a variable is a NumPy array but won't tell you the type of\n" +"> thing inside the array.\n" +"> We can find out the type\n" +"> of the data contained in the NumPy array.\n" +">\n" +"> ~~~\n" +"> print(data.dtype)\n" +"> ~~~\n" +"> {: .language-python}\n" +">\n" +"> ~~~\n" +"> dtype('float64')\n" +"> ~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/01-numpy.md:338 +msgid ">\n" +"> This tells us that the NumPy array's elements are\n" +"> [floating-point numbers]({{ page.root }}/reference/#floating-point number)." +msgstr "" + +#: python-novice-inflammation/_episodes/01-numpy.md:343 +msgid "With the following command, we can see the array's [shape]({{ page.root }}/reference/#shape):" +msgstr "" + +#: python-novice-inflammation/_episodes/01-numpy.md:345 +# code block +msgid "~~~\n" +"print(data.shape)\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/01-numpy.md:350 +# code block +msgid "~~~\n" +"(60, 40)\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/01-numpy.md:355 +msgid "The output tells us that the `data` array variable contains 60 rows and 40 columns. When we\n" +"created the variable `data` to store our arthritis data, we didn't just create the array; we also\n" +"created information about the array, called [members]({{ page.root }}/reference/#member) or\n" +"attributes. This extra information describes `data` in the same way an adjective describes a noun.\n" +"`data.shape` is an attribute of `data` which describes the dimensions of `data`. We use the same\n" +"dotted notation for the attributes of variables that we use for the functions in libraries because\n" +"they have the same part-and-whole relationship." +msgstr "" + +#: python-novice-inflammation/_episodes/01-numpy.md:363 +msgid "If we want to get a single number from the array, we must provide an\n" +"[index]({{ page.root }}/reference/#index) in square brackets after the variable name, just as we\n" +"do in math when referring to an element of a matrix. Our inflammation data has two dimensions, so\n" +"we will need to use two indices to refer to one specific value:" +msgstr "" + +#: python-novice-inflammation/_episodes/01-numpy.md:368 +# code block +msgid "~~~\n" +"print('first value in data:', data[0, 0])\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/01-numpy.md:373 +# code block +msgid "~~~\n" +"first value in data: 0.0\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/01-numpy.md:378 +# code block +msgid "~~~\n" +"print('middle value in data:', data[30, 20])\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/01-numpy.md:383 +# code block +msgid "~~~\n" +"middle value in data: 13.0\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/01-numpy.md:388 +msgid "The expression `data[30, 20]` accesses the element at row 30, column 20. While this expression may\n" +"not surprise you,\n" +" `data[0, 0]` might.\n" +"Programming languages like Fortran, MATLAB and R start counting at 1\n" +"because that's what human beings have done for thousands of years.\n" +"Languages in the C family (including C++, Java, Perl, and Python) count from 0\n" +"because it represents an offset from the first value in the array (the second\n" +"value is offset by one index from the first value). This is closer to the way\n" +"that computers represent arrays (if you are interested in the historical\n" +"reasons behind counting indices from zero, you can read\n" +"[Mike Hoye's blog post](http://exple.tive.org/blarg/2013/10/22/citation-needed/)).\n" +"As a result,\n" +"if we have an M×N array in Python,\n" +"its indices go from 0 to M-1 on the first axis\n" +"and 0 to N-1 on the second.\n" +"It takes a bit of getting used to,\n" +"but one way to remember the rule is that\n" +"the index is how many steps we have to take from the start to get the item we want." +msgstr "" + +#: python-novice-inflammation/_episodes/01-numpy.md:407 +msgid "![Zero Index](../fig/python-zero-index.png)" +msgstr "" + +#: python-novice-inflammation/_episodes/01-numpy.md:409 +# blockquote, which can be cascaded +msgid "> ## In the Corner" +msgstr "" + +#: python-novice-inflammation/_episodes/01-numpy.md:410 +msgid ">\n" +"> What may also surprise you is that when Python displays an array,\n" +"> it shows the element with index `[0, 0]` in the upper left corner\n" +"> rather than the lower left.\n" +"> This is consistent with the way mathematicians draw matrices\n" +"> but different from the Cartesian coordinates.\n" +"> The indices are (row, column) instead of (column, row) for the same reason,\n" +"> which can be confusing when plotting data." +msgstr "" + +#: python-novice-inflammation/_episodes/01-numpy.md:420 +# header +msgid "## Slicing data" +msgstr "" + +#: python-novice-inflammation/_episodes/01-numpy.md:421 +msgid "An index like `[30, 20]` selects a single element of an array,\n" +"but we can select whole sections as well.\n" +"For example,\n" +"we can select the first ten days (columns) of values\n" +"for the first four patients (rows) like this:" +msgstr "" + +#: python-novice-inflammation/_episodes/01-numpy.md:427 +# code block +msgid "~~~\n" +"print(data[0:4, 0:10])\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/01-numpy.md:432 +# code block +msgid "~~~\n" +"[[ 0. 0. 1. 3. 1. 2. 4. 7. 8. 3.]\n" +" [ 0. 1. 2. 1. 2. 1. 3. 2. 2. 6.]\n" +" [ 0. 1. 1. 3. 3. 2. 6. 2. 5. 9.]\n" +" [ 0. 0. 2. 0. 4. 2. 2. 1. 6. 7.]]\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/01-numpy.md:440 +msgid "The [slice]({{ page.root }}/reference/#slice) `0:4` means, \"Start at index 0 and go up to, but not\n" +"including, index 4.\"Again, the up-to-but-not-including takes a bit of getting used to, but the\n" +"rule is that the difference between the upper and lower bounds is the number of values in the slice." +msgstr "" + +#: python-novice-inflammation/_episodes/01-numpy.md:444 +msgid "We don't have to start slices at 0:" +msgstr "" + +#: python-novice-inflammation/_episodes/01-numpy.md:446 +# code block +msgid "~~~\n" +"print(data[5:10, 0:10])\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/01-numpy.md:451 +# code block +msgid "~~~\n" +"[[ 0. 0. 1. 2. 2. 4. 2. 1. 6. 4.]\n" +" [ 0. 0. 2. 2. 4. 2. 2. 5. 5. 8.]\n" +" [ 0. 0. 1. 2. 3. 1. 2. 3. 5. 3.]\n" +" [ 0. 0. 0. 3. 1. 5. 6. 5. 5. 8.]\n" +" [ 0. 1. 1. 2. 1. 3. 5. 3. 5. 8.]]\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/01-numpy.md:460 +msgid "We also don't have to include the upper and lower bound on the slice. If we don't include the lower\n" +"bound, Python uses 0 by default; if we don't include the upper, the slice runs to the end of the\n" +"axis, and if we don't include either (i.e., if we just use ':' on its own), the slice includes\n" +"everything:" +msgstr "" + +#: python-novice-inflammation/_episodes/01-numpy.md:465 +# code block +msgid "~~~\n" +"small = data[:3, 36:]\n" +"print('small is:')\n" +"print(small)\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/01-numpy.md:470 +msgid "{: .language-python}\n" +"The above example selects rows 0 through 2 and columns 36 through to the end of the array." +msgstr "" + +#: python-novice-inflammation/_episodes/01-numpy.md:473 +# code block +msgid "~~~\n" +"small is:\n" +"[[ 2. 3. 0. 0.]\n" +" [ 1. 1. 0. 1.]\n" +" [ 2. 2. 1. 1.]]\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/01-numpy.md:481 +msgid "Arrays also know how to perform common mathematical operations on their values. The simplest\n" +"operations with data are arithmetic: addition, subtraction, multiplication, and division. When you\n" +"do such operations on arrays, the operation is done element-by-element. Thus:" +msgstr "" + +#: python-novice-inflammation/_episodes/01-numpy.md:485 +# code block +msgid "~~~\n" +"doubledata = data * 2.0\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/01-numpy.md:490 +msgid "will create a new array `doubledata`\n" +"each element of which is twice the value of the corresponding element in `data`:" +msgstr "" + +#: python-novice-inflammation/_episodes/01-numpy.md:493 +# code block +msgid "~~~\n" +"print('original:')\n" +"print(data[:3, 36:])\n" +"print('doubledata:')\n" +"print(doubledata[:3, 36:])\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/01-numpy.md:501 +# code block +msgid "~~~\n" +"original:\n" +"[[ 2. 3. 0. 0.]\n" +" [ 1. 1. 0. 1.]\n" +" [ 2. 2. 1. 1.]]\n" +"doubledata:\n" +"[[ 4. 6. 0. 0.]\n" +" [ 2. 2. 0. 2.]\n" +" [ 4. 4. 2. 2.]]\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/01-numpy.md:513 +msgid "If, instead of taking an array and doing arithmetic with a single value (as above), you did the\n" +"arithmetic operation with another array of the same shape, the operation will be done on\n" +"corresponding elements of the two arrays. Thus:" +msgstr "" + +#: python-novice-inflammation/_episodes/01-numpy.md:517 +# code block +msgid "~~~\n" +"tripledata = doubledata + data\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/01-numpy.md:522 +msgid "will give you an array where `tripledata[0,0]` will equal `doubledata[0,0]` plus `data[0,0]`,\n" +"and so on for all other elements of the arrays." +msgstr "" + +#: python-novice-inflammation/_episodes/01-numpy.md:525 +# code block +msgid "~~~\n" +"print('tripledata:')\n" +"print(tripledata[:3, 36:])\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/01-numpy.md:531 +# code block +msgid "~~~\n" +"tripledata:\n" +"[[ 6. 9. 0. 0.]\n" +" [ 3. 3. 0. 3.]\n" +" [ 6. 6. 3. 3.]]\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/01-numpy.md:539 +msgid "Often, we want to do more than add, subtract, multiply, and divide array elements. NumPy knows how\n" +"to do more complex operations, too. If we want to find the average inflammation for all patients on\n" +"all days, for example, we can ask NumPy to compute `data`'s mean value:" +msgstr "" + +#: python-novice-inflammation/_episodes/01-numpy.md:543 +# code block +msgid "~~~\n" +"print(numpy.mean(data))\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/01-numpy.md:548 +# code block +msgid "~~~\n" +"6.14875\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/01-numpy.md:553 +msgid "`mean` is a [function]({{ page.root }}/reference/#function) that takes\n" +"an array as an [argument]({{ page.root }}/reference/#argument)." +msgstr "" + +#: python-novice-inflammation/_episodes/01-numpy.md:556 +# blockquote, which can be cascaded +msgid "> ## Not All Functions Have Input" +msgstr "" + +#: python-novice-inflammation/_episodes/01-numpy.md:557 +msgid ">\n" +"> Generally, a function uses inputs to produce outputs.\n" +"> However, some functions produce outputs without\n" +"> needing any input. For example, checking the current time\n" +"> doesn't require any input.\n" +">\n" +"> ~~~\n" +"> import time\n" +"> print(time.ctime())\n" +"> ~~~\n" +"> {: .language-python}\n" +">\n" +"> ~~~\n" +"> 'Sat Mar 26 13:07:33 2016'\n" +"> ~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/01-numpy.md:573 +msgid ">\n" +"> For functions that don't take in any arguments,\n" +"> we still need parentheses (`()`)\n" +"> to tell Python to go and do something for us." +msgstr "" + +#: python-novice-inflammation/_episodes/01-numpy.md:579 +msgid "NumPy has lots of useful functions that take an array as input.\n" +"Let's use three of those functions to get some descriptive values about the dataset.\n" +"We'll also use multiple assignment,\n" +"a convenient Python feature that will enable us to do this all in one line." +msgstr "" + +#: python-novice-inflammation/_episodes/01-numpy.md:584 +# code block +msgid "~~~\n" +"maxval, minval, stdval = numpy.max(data), numpy.min(data), numpy.std(data)\n" +"\n" +"print('maximum inflammation:', maxval)\n" +"print('minimum inflammation:', minval)\n" +"print('standard deviation:', stdval)\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/01-numpy.md:593 +msgid "Here we've assigned the return value from `numpy.max(data)` to the variable `maxval`, the value\n" +"from `numpy.min(data)` to `minval`, and so on." +msgstr "" + +#: python-novice-inflammation/_episodes/01-numpy.md:596 +# code block +msgid "~~~\n" +"maximum inflammation: 20.0\n" +"minimum inflammation: 0.0\n" +"standard deviation: 4.61383319712\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/01-numpy.md:603 +# blockquote, which can be cascaded +msgid "> ## Mystery Functions in IPython" +msgstr "" + +#: python-novice-inflammation/_episodes/01-numpy.md:604 +msgid ">\n" +"> How did we know what functions NumPy has and how to use them?\n" +"> If you are working in the IPython/Jupyter Notebook, there is an easy way to find out.\n" +"> If you type the name of something followed by a dot, then you can use tab completion\n" +"> (e.g. type `numpy.` and then press tab)\n" +"> to see a list of all functions and attributes that you can use. After selecting one, you\n" +"> can also add a question mark (e.g. `numpy.cumprod?`), and IPython will return an\n" +"> explanation of the method! This is the same as doing `help(numpy.cumprod)`." +msgstr "" + +#: python-novice-inflammation/_episodes/01-numpy.md:614 +msgid "When analyzing data, though,\n" +"we often want to look at variations in statistical values,\n" +"such as the maximum inflammation per patient\n" +"or the average inflammation per day.\n" +"One way to do this is to create a new temporary array of the data we want,\n" +"then ask it to do the calculation:" +msgstr "" + +#: python-novice-inflammation/_episodes/01-numpy.md:621 +# code block +msgid "~~~\n" +"patient_0 = data[0, :] # 0 on the first axis (rows), everything on the second (columns)\n" +"print('maximum inflammation for patient 0:', patient_0.max())\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/01-numpy.md:627 +# code block +msgid "~~~\n" +"maximum inflammation for patient 0: 18.0\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/01-numpy.md:632 +msgid "Everything in a line of code following the '#' symbol is a\n" +"[comment]({{ page.root }}/reference/#comment) that is ignored by Python.\n" +"Comments allow programmers to leave explanatory notes for other\n" +"programmers or their future selves." +msgstr "" + +#: python-novice-inflammation/_episodes/01-numpy.md:637 +msgid "We don't actually need to store the row in a variable of its own.\n" +"Instead, we can combine the selection and the function call:" +msgstr "" + +#: python-novice-inflammation/_episodes/01-numpy.md:640 +# code block +msgid "~~~\n" +"print('maximum inflammation for patient 2:', numpy.max(data[2, :]))\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/01-numpy.md:645 +# code block +msgid "~~~\n" +"maximum inflammation for patient 2: 19.0\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/01-numpy.md:650 +msgid "What if we need the maximum inflammation for each patient over all days (as in the\n" +"next diagram on the left) or the average for each day (as in the\n" +"diagram on the right)? As the diagram below shows, we want to perform the\n" +"operation across an axis:" +msgstr "" + +#: python-novice-inflammation/_episodes/01-numpy.md:655 +msgid "![Operations Across Axes](../fig/python-operations-across-axes.png)" +msgstr "" + +#: python-novice-inflammation/_episodes/01-numpy.md:657 +msgid "To support this functionality,\n" +"most array functions allow us to specify the axis we want to work on.\n" +"If we ask for the average across axis 0 (rows in our 2D example),\n" +"we get:" +msgstr "" + +#: python-novice-inflammation/_episodes/01-numpy.md:662 +# code block +msgid "~~~\n" +"print(numpy.mean(data, axis=0))\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/01-numpy.md:667 +# code block +msgid "~~~\n" +"[ 0. 0.45 1.11666667 1.75 2.43333333 3.15\n" +" 3.8 3.88333333 5.23333333 5.51666667 5.95 5.9\n" +" 8.35 7.73333333 8.36666667 9.5 9.58333333\n" +" 10.63333333 11.56666667 12.35 13.25 11.96666667\n" +" 11.03333333 10.16666667 10. 8.66666667 9.15 7.25\n" +" 7.33333333 6.58333333 6.06666667 5.95 5.11666667 3.6\n" +" 3.3 3.56666667 2.48333333 1.5 1.13333333\n" +" 0.56666667]\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/01-numpy.md:679 +msgid "As a quick check,\n" +"we can ask this array what its shape is:" +msgstr "" + +#: python-novice-inflammation/_episodes/01-numpy.md:682 +# code block +msgid "~~~\n" +"print(numpy.mean(data, axis=0).shape)\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/01-numpy.md:687 +# code block +msgid "~~~\n" +"(40,)\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/01-numpy.md:692 +msgid "The expression `(40,)` tells us we have an N×1 vector,\n" +"so this is the average inflammation per day for all patients.\n" +"If we average across axis 1 (columns in our 2D example), we get:" +msgstr "" + +#: python-novice-inflammation/_episodes/01-numpy.md:696 +# code block +msgid "~~~\n" +"print(numpy.mean(data, axis=1))\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/01-numpy.md:701 +# code block +msgid "~~~\n" +"[ 5.45 5.425 6.1 5.9 5.55 6.225 5.975 6.65 6.625 6.525\n" +" 6.775 5.8 6.225 5.75 5.225 6.3 6.55 5.7 5.85 6.55\n" +" 5.775 5.825 6.175 6.1 5.8 6.425 6.05 6.025 6.175 6.55\n" +" 6.175 6.35 6.725 6.125 7.075 5.725 5.925 6.15 6.075 5.75\n" +" 5.975 5.725 6.3 5.9 6.75 5.925 7.225 6.15 5.95 6.275 5.7\n" +" 6.1 6.825 5.975 6.725 5.7 6.25 6.4 7.05 5.9 ]\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/01-numpy.md:711 +msgid "which is the average inflammation per patient across all days." +msgstr "" + +#: python-novice-inflammation/_episodes/01-numpy.md:713 +# header +msgid "## Visualizing data" +msgstr "" + +#: python-novice-inflammation/_episodes/01-numpy.md:714 +msgid "The mathematician Richard Hamming once said, \"The purpose of computing is insight, not numbers,\" and\n" +"the best way to develop insight is often to visualize data. Visualization deserves an entire\n" +"lecture of its own, but we can explore a few features of Python's `matplotlib` library here. While\n" +"there is no official plotting library, `matplotlib` is the _de facto_ standard. First, we will\n" +"import the `pyplot` module from `matplotlib` and use two of its functions to create and display a\n" +"heat map of our data:" +msgstr "" + +#: python-novice-inflammation/_episodes/01-numpy.md:721 +# code block +msgid "~~~\n" +"import matplotlib.pyplot\n" +"image = matplotlib.pyplot.imshow(data)\n" +"matplotlib.pyplot.show()\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/01-numpy.md:728 +msgid "![Heatmap of the Data](../fig/01-numpy_71_0.png)" +msgstr "" + +#: python-novice-inflammation/_episodes/01-numpy.md:730 +msgid "Blue pixels in this heat map represent low values, while yellow pixels represent high values. As we\n" +"can see, inflammation rises and falls over a 40-day period." +msgstr "" + +#: python-novice-inflammation/_episodes/01-numpy.md:733 +# blockquote, which can be cascaded +msgid "> ## Some IPython Magic" +msgstr "" + +#: python-novice-inflammation/_episodes/01-numpy.md:734 +msgid ">\n" +"> If you're using an IPython / Jupyter notebook,\n" +"> you'll need to execute the following command\n" +"> in order for your matplotlib images to appear\n" +"> in the notebook when `show()` is called:\n" +">\n" +"> ~~~\n" +"> %matplotlib inline\n" +"> ~~~\n" +"> {: .language-python}\n" +">\n" +"> The `%` indicates an IPython magic function -\n" +"> a function that is only valid within the notebook environment.\n" +"> Note that you only have to execute this function once per notebook." +msgstr "" + +#: python-novice-inflammation/_episodes/01-numpy.md:750 +msgid "Let's take a look at the average inflammation over time:" +msgstr "" + +#: python-novice-inflammation/_episodes/01-numpy.md:752 +# code block +msgid "~~~\n" +"ave_inflammation = numpy.mean(data, axis=0)\n" +"ave_plot = matplotlib.pyplot.plot(ave_inflammation)\n" +"matplotlib.pyplot.show()\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/01-numpy.md:759 +msgid "![Average Inflammation Over Time](../fig/01-numpy_73_0.png)" +msgstr "" + +#: python-novice-inflammation/_episodes/01-numpy.md:761 +msgid "Here, we have put the average per day across all patients in the variable `ave_inflammation`, then\n" +"asked `matplotlib.pyplot` to create and display a line graph of those values. The result is a\n" +"roughly linear rise and fall, which is suspicious: we might instead expect a sharper rise and slower\n" +"fall. Let's have a look at two other statistics:" +msgstr "" + +#: python-novice-inflammation/_episodes/01-numpy.md:766 +# code block +msgid "~~~\n" +"max_plot = matplotlib.pyplot.plot(numpy.max(data, axis=0))\n" +"matplotlib.pyplot.show()\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/01-numpy.md:772 +msgid "![Maximum Value Along The First Axis](../fig/01-numpy_75_1.png)" +msgstr "" + +#: python-novice-inflammation/_episodes/01-numpy.md:774 +# code block +msgid "~~~\n" +"min_plot = matplotlib.pyplot.plot(numpy.min(data, axis=0))\n" +"matplotlib.pyplot.show()\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/01-numpy.md:780 +msgid "![Minimum Value Along The First Axis](../fig/01-numpy_75_3.png)" +msgstr "" + +#: python-novice-inflammation/_episodes/01-numpy.md:782 +msgid "The maximum value rises and falls smoothly, while the minimum seems to be a step function. Neither\n" +"trend seems particularly likely, so either there's a mistake in our calculations or something is\n" +"wrong with our data. This insight would have been difficult to reach by examining the numbers\n" +"themselves without visualization tools." +msgstr "" + +#: python-novice-inflammation/_episodes/01-numpy.md:787 +# header +msgid "### Grouping plots" +msgstr "" + +#: python-novice-inflammation/_episodes/01-numpy.md:788 +msgid "You can group similar plots in a single figure using subplots.\n" +"This script below uses a number of new commands. The function `matplotlib.pyplot.figure()`\n" +"creates a space into which we will place all of our plots. The parameter `figsize`\n" +"tells Python how big to make this space. Each subplot is placed into the figure using\n" +"its `add_subplot` [method]({{ page.root }}/reference/#method). The `add_subplot` method takes 3\n" +"parameters. The first denotes how many total rows of subplots there are, the second parameter\n" +"refers to the total number of subplot columns, and the final parameter denotes which subplot\n" +"your variable is referencing (left-to-right, top-to-bottom). Each subplot is stored in a\n" +"different variable (`axes1`, `axes2`, `axes3`). Once a subplot is created, the axes can\n" +"be titled using the `set_xlabel()` command (or `set_ylabel()`).\n" +"Here are our three plots side by side:" +msgstr "" + +#: python-novice-inflammation/_episodes/01-numpy.md:800 +# code block +msgid "~~~\n" +"import numpy\n" +"import matplotlib.pyplot\n" +"\n" +"data = numpy.loadtxt(fname='inflammation-01.csv', delimiter=',')\n" +"\n" +"fig = matplotlib.pyplot.figure(figsize=(10.0, 3.0))\n" +"\n" +"axes1 = fig.add_subplot(1, 3, 1)\n" +"axes2 = fig.add_subplot(1, 3, 2)\n" +"axes3 = fig.add_subplot(1, 3, 3)\n" +"\n" +"axes1.set_ylabel('average')\n" +"axes1.plot(numpy.mean(data, axis=0))\n" +"\n" +"axes2.set_ylabel('max')\n" +"axes2.plot(numpy.max(data, axis=0))\n" +"\n" +"axes3.set_ylabel('min')\n" +"axes3.plot(numpy.min(data, axis=0))\n" +"\n" +"fig.tight_layout()\n" +"\n" +"matplotlib.pyplot.show()\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/01-numpy.md:827 +msgid "![The Previous Plots as Subplots](../fig/01-numpy_80_0.png)" +msgstr "" + +#: python-novice-inflammation/_episodes/01-numpy.md:829 +msgid "The [call]({{ page.root }}/reference/#function-call) to `loadtxt` reads our data,\n" +"and the rest of the program tells the plotting library\n" +"how large we want the figure to be,\n" +"that we're creating three subplots,\n" +"what to draw for each one,\n" +"and that we want a tight layout.\n" +"(If we leave out that call to `fig.tight_layout()`,\n" +"the graphs will actually be squeezed together more closely.)" +msgstr "" + +#: python-novice-inflammation/_episodes/01-numpy.md:838 +# blockquote, which can be cascaded +msgid "> ## Scientists Dislike Typing" +msgstr "" + +#: python-novice-inflammation/_episodes/01-numpy.md:839 +msgid ">\n" +"> We will always use the syntax `import numpy` to import NumPy.\n" +"> However, in order to save typing, it is\n" +"> [often suggested](http://www.scipy.org/getting-started.html#an-example-script)\n" +"> to make a shortcut like so: `import numpy as np`.\n" +"> If you ever see Python code online using a NumPy function with `np`\n" +"> (for example, `np.loadtxt(...)`), it's because they've used this shortcut.\n" +"> When working with other people, it is important to agree on a convention of how common libraries\n" +"> are imported." +msgstr "" + +#: python-novice-inflammation/_episodes/01-numpy.md:850 +# blockquote, which can be cascaded +msgid "> ## Check Your Understanding" +msgstr "" + +#: python-novice-inflammation/_episodes/01-numpy.md:851 +msgid ">\n" +"> What values do the variables `mass` and `age` have after each statement in the following program?\n" +"> Test your answers by executing the commands.\n" +">\n" +"> ~~~\n" +"> mass = 47.5\n" +"> age = 122\n" +"> mass = mass * 2.0\n" +"> age = age - 20\n" +"> ~~~\n" +"> {: .language-python}" +msgstr "" + +#: python-novice-inflammation/_episodes/01-numpy.md:862 +#: python-novice-inflammation/_episodes/01-numpy.md:881 +#: python-novice-inflammation/_episodes/01-numpy.md:932 +#: python-novice-inflammation/_episodes/01-numpy.md:949 +#: python-novice-inflammation/_episodes/01-numpy.md:991 +#: python-novice-inflammation/_episodes/01-numpy.md:1032 +#: python-novice-inflammation/_episodes/01-numpy.md:1046 +#: python-novice-inflammation/_episodes/01-numpy.md:1083 +#: python-novice-inflammation/_episodes/01-numpy.md:1175 +#: python-novice-inflammation/_episodes/01-numpy.md:1279 +#: python-novice-inflammation/_episodes/02-loop.md:291 +#: python-novice-inflammation/_episodes/02-loop.md:319 +#: python-novice-inflammation/_episodes/02-loop.md:338 +#: python-novice-inflammation/_episodes/02-loop.md:382 +#: python-novice-inflammation/_episodes/03-lists.md:325 +#: python-novice-inflammation/_episodes/03-lists.md:386 +#: python-novice-inflammation/_episodes/03-lists.md:460 +#: python-novice-inflammation/_episodes/03-lists.md:540 +#: python-novice-inflammation/_episodes/04-files.md:136 +#: python-novice-inflammation/_episodes/04-files.md:191 +#: python-novice-inflammation/_episodes/05-cond.md:257 +#: python-novice-inflammation/_episodes/05-cond.md:281 +#: python-novice-inflammation/_episodes/05-cond.md:300 +#: python-novice-inflammation/_episodes/05-cond.md:331 +#: python-novice-inflammation/_episodes/05-cond.md:376 +#: python-novice-inflammation/_episodes/05-cond.md:448 +#: python-novice-inflammation/_episodes/05-cond.md:471 +#: python-novice-inflammation/_episodes/06-func.md:725 +#: python-novice-inflammation/_episodes/06-func.md:760 +#: python-novice-inflammation/_episodes/06-func.md:788 +#: python-novice-inflammation/_episodes/06-func.md:807 +#: python-novice-inflammation/_episodes/06-func.md:832 +#: python-novice-inflammation/_episodes/06-func.md:853 +#: python-novice-inflammation/_episodes/06-func.md:887 +#: python-novice-inflammation/_episodes/06-func.md:936 +#: python-novice-inflammation/_episodes/06-func.md:972 +#: python-novice-inflammation/_episodes/06-func.md:980 +#: python-novice-inflammation/_episodes/07-errors.md:484 +#: python-novice-inflammation/_episodes/07-errors.md:514 +#: python-novice-inflammation/_episodes/07-errors.md:555 +#: python-novice-inflammation/_episodes/07-errors.md:579 +#: python-novice-inflammation/_episodes/08-defensive.md:473 +#: python-novice-inflammation/_episodes/08-defensive.md:524 +#: python-novice-inflammation/_episodes/08-defensive.md:550 +#: python-novice-inflammation/_episodes/09-debugging.md:243 +#: python-novice-inflammation/_episodes/09-debugging.md:284 +#: python-novice-inflammation/_episodes/10-cmdline.md:725 +#: python-novice-inflammation/_episodes/10-cmdline.md:765 +#: python-novice-inflammation/_episodes/10-cmdline.md:808 +#: python-novice-inflammation/_episodes/10-cmdline.md:859 +#: python-novice-inflammation/_episodes/10-cmdline.md:904 +#: python-novice-inflammation/_episodes/10-cmdline.md:948 +#: python-novice-inflammation/_episodes/10-cmdline.md:997 +#: python-novice-inflammation/_episodes/10-cmdline.md:1024 +#: python-novice-inflammation/_extras/discuss.md:175 +#: python-novice-inflammation/_extras/discuss.md:356 +#: python-novice-inflammation/_extras/discuss.md:361 +#: python-novice-inflammation/_extras/discuss.md:368 +#: python-novice-inflammation/_extras/discuss.md:374 +#: python-novice-inflammation/_extras/discuss.md:380 +#: python-novice-inflammation/_extras/extra_exercises.md:51 +# SC/DC Template label +msgid "{: .challenge}" +msgstr "" + +#: python-novice-inflammation/_episodes/01-numpy.md:864 +# blockquote, which can be cascaded +msgid "> ## Sorting Out References" +msgstr "" + +#: python-novice-inflammation/_episodes/01-numpy.md:865 +msgid ">\n" +"> What does the following program print out?\n" +">\n" +"> ~~~\n" +"> first, second = 'Grace', 'Hopper'\n" +"> third, fourth = second, first\n" +"> print(third, fourth)\n" +"> ~~~\n" +"> {: .language-python}\n" +">\n" +"> > ## Solution\n" +"> > ~~~\n" +"> > Hopper Grace\n" +"> > ~~~\n" +"> > {: .output}" +msgstr "" + +#: python-novice-inflammation/_episodes/01-numpy.md:880 +#: python-novice-inflammation/_episodes/01-numpy.md:912 +#: python-novice-inflammation/_episodes/01-numpy.md:923 +#: python-novice-inflammation/_episodes/01-numpy.md:931 +#: python-novice-inflammation/_episodes/01-numpy.md:948 +#: python-novice-inflammation/_episodes/01-numpy.md:958 +#: python-novice-inflammation/_episodes/01-numpy.md:979 +#: python-novice-inflammation/_episodes/01-numpy.md:990 +#: python-novice-inflammation/_episodes/01-numpy.md:1031 +#: python-novice-inflammation/_episodes/01-numpy.md:1045 +#: python-novice-inflammation/_episodes/01-numpy.md:1082 +#: python-novice-inflammation/_episodes/01-numpy.md:1153 +#: python-novice-inflammation/_episodes/01-numpy.md:1174 +#: python-novice-inflammation/_episodes/01-numpy.md:1222 +#: python-novice-inflammation/_episodes/01-numpy.md:1231 +#: python-novice-inflammation/_episodes/01-numpy.md:1278 +#: python-novice-inflammation/_episodes/02-loop.md:290 +#: python-novice-inflammation/_episodes/02-loop.md:318 +#: python-novice-inflammation/_episodes/02-loop.md:337 +#: python-novice-inflammation/_episodes/02-loop.md:381 +#: python-novice-inflammation/_episodes/03-lists.md:324 +#: python-novice-inflammation/_episodes/03-lists.md:385 +#: python-novice-inflammation/_episodes/03-lists.md:459 +#: python-novice-inflammation/_episodes/03-lists.md:539 +#: python-novice-inflammation/_episodes/04-files.md:135 +#: python-novice-inflammation/_episodes/05-cond.md:256 +#: python-novice-inflammation/_episodes/05-cond.md:320 +#: python-novice-inflammation/_episodes/05-cond.md:330 +#: python-novice-inflammation/_episodes/05-cond.md:375 +#: python-novice-inflammation/_episodes/05-cond.md:447 +#: python-novice-inflammation/_episodes/05-cond.md:470 +#: python-novice-inflammation/_episodes/06-func.md:724 +#: python-novice-inflammation/_episodes/06-func.md:759 +#: python-novice-inflammation/_episodes/06-func.md:787 +#: python-novice-inflammation/_episodes/06-func.md:806 +#: python-novice-inflammation/_episodes/06-func.md:831 +#: python-novice-inflammation/_episodes/06-func.md:852 +#: python-novice-inflammation/_episodes/06-func.md:886 +#: python-novice-inflammation/_episodes/06-func.md:935 +#: python-novice-inflammation/_episodes/06-func.md:971 +#: python-novice-inflammation/_episodes/07-errors.md:483 +#: python-novice-inflammation/_episodes/07-errors.md:513 +#: python-novice-inflammation/_episodes/07-errors.md:554 +#: python-novice-inflammation/_episodes/07-errors.md:578 +#: python-novice-inflammation/_episodes/08-defensive.md:472 +#: python-novice-inflammation/_episodes/08-defensive.md:523 +#: python-novice-inflammation/_episodes/08-defensive.md:549 +#: python-novice-inflammation/_episodes/09-debugging.md:283 +#: python-novice-inflammation/_episodes/10-cmdline.md:724 +#: python-novice-inflammation/_episodes/10-cmdline.md:764 +#: python-novice-inflammation/_episodes/10-cmdline.md:807 +#: python-novice-inflammation/_episodes/10-cmdline.md:858 +#: python-novice-inflammation/_episodes/10-cmdline.md:903 +#: python-novice-inflammation/_episodes/10-cmdline.md:947 +#: python-novice-inflammation/_episodes/10-cmdline.md:996 +#: python-novice-inflammation/_extras/extra_exercises.md:50 +# SC/DC Template label +msgid "> {: .solution}" +msgstr "" + +#: python-novice-inflammation/_episodes/01-numpy.md:883 +# blockquote, which can be cascaded +msgid "> ## Slicing Strings" +msgstr "" + +#: python-novice-inflammation/_episodes/01-numpy.md:884 +msgid ">\n" +"> A section of an array is called a [slice]({{ page.root }}/reference/#slice).\n" +"> We can take slices of character strings as well:\n" +">\n" +"> ~~~\n" +"> element = 'oxygen'\n" +"> print('first three characters:', element[0:3])\n" +"> print('last three characters:', element[3:6])\n" +"> ~~~\n" +"> {: .language-python}\n" +">\n" +"> ~~~\n" +"> first three characters: oxy\n" +"> last three characters: gen\n" +"> ~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/01-numpy.md:900 +msgid ">\n" +"> What is the value of `element[:4]`?\n" +"> What about `element[4:]`?\n" +"> Or `element[:]`?\n" +">\n" +"> > ## Solution\n" +"> > ~~~\n" +"> > oxyg\n" +"> > en\n" +"> > oxygen\n" +"> > ~~~\n" +"> > {: .output}" +msgstr "" + +#: python-novice-inflammation/_episodes/01-numpy.md:913 +msgid ">\n" +"> What is `element[-1]`?\n" +"> What is `element[-2]`?\n" +">\n" +"> > ## Solution\n" +"> > ~~~\n" +"> > n\n" +"> > e\n" +"> > ~~~\n" +"> > {: .output}" +msgstr "" + +#: python-novice-inflammation/_episodes/01-numpy.md:924 +msgid ">\n" +"> Given those answers,\n" +"> explain what `element[1:-1]` does.\n" +">\n" +"> > ## Solution\n" +"> > Creates a substring from index 1 up to (not including) the final index,\n" +"> > effectively removing the first and last letters from 'oxygen'" +msgstr "" + +#: python-novice-inflammation/_episodes/01-numpy.md:934 +# blockquote, which can be cascaded +msgid "> ## Thin Slices" +msgstr "" + +#: python-novice-inflammation/_episodes/01-numpy.md:935 +msgid ">\n" +"> The expression `element[3:3]` produces an [empty string]({{ page.root }}/reference/#empty-string),\n" +"> i.e., a string that contains no characters.\n" +"> If `data` holds our array of patient data,\n" +"> what does `data[3:3, 4:4]` produce?\n" +"> What about `data[3:3, :]`?\n" +">\n" +"> > ## Solution\n" +"> > ~~~\n" +"> > []\n" +"> > []\n" +"> > ~~~\n" +"> > {: .output}" +msgstr "" + +#: python-novice-inflammation/_episodes/01-numpy.md:951 +# blockquote, which can be cascaded +msgid "> ## Plot Scaling" +msgstr "" + +#: python-novice-inflammation/_episodes/01-numpy.md:952 +msgid ">\n" +"> Why do all of our plots stop just short of the upper end of our graph?\n" +">\n" +"> > ## Solution\n" +"> > Because matplotlib normally sets x and y axes limits to the min and max of our data\n" +"> > (depending on data range)" +msgstr "" + +#: python-novice-inflammation/_episodes/01-numpy.md:959 +msgid ">\n" +"> If we want to change this, we can use the `set_ylim(min, max)` method of each 'axes',\n" +"> for example:\n" +">\n" +"> ~~~\n" +"> axes3.set_ylim(0,6)\n" +"> ~~~\n" +"> {: .language-python}\n" +">\n" +"> Update your plotting code to automatically set a more appropriate scale.\n" +"> (Hint: you can make use of the `max` and `min` methods to help.)\n" +">\n" +"> > ## Solution\n" +"> > ~~~\n" +"> > # One method\n" +"> > axes3.set_ylabel('min')\n" +"> > axes3.plot(numpy.min(data, axis=0))\n" +"> > axes3.set_ylim(0,6)\n" +"> > ~~~\n" +"> > {: .language-python}" +msgstr "" + +#: python-novice-inflammation/_episodes/01-numpy.md:980 +msgid ">\n" +"> > ## Solution\n" +"> > ~~~\n" +"> > # A more automated approach\n" +"> > min_data = numpy.min(data, axis=0)\n" +"> > axes3.set_ylabel('min')\n" +"> > axes3.plot(min_data)\n" +"> > axes3.set_ylim(numpy.min(min_data), numpy.max(min_data) * 1.1)\n" +"> > ~~~\n" +"> > {: .language-python}" +msgstr "" + +#: python-novice-inflammation/_episodes/01-numpy.md:993 +# blockquote, which can be cascaded +msgid "> ## Drawing Straight Lines" +msgstr "" + +#: python-novice-inflammation/_episodes/01-numpy.md:994 +msgid ">\n" +"> In the center and right subplots above, we expect all lines to look like step functions because\n" +"> non-integer value are not realistic for the minimum and maximum values. However, you can see\n" +"> that the lines are not always vertical or horizontal, and in particular the step function\n" +"> in the subplot on the right looks slanted. Why is this?\n" +">\n" +"> > ## Solution\n" +"> > Because matplotlib interpolates (draws a straight line) between the points.\n" +"> > One way to do avoid this is to use the Matplotlib `drawstyle` option:\n" +"> >\n" +"> > ~~~\n" +"> > import numpy\n" +"> > import matplotlib.pyplot\n" +"> >\n" +"> > data = numpy.loadtxt(fname='inflammation-01.csv', delimiter=',')\n" +"> >\n" +"> > fig = matplotlib.pyplot.figure(figsize=(10.0, 3.0))\n" +"> >\n" +"> > axes1 = fig.add_subplot(1, 3, 1)\n" +"> > axes2 = fig.add_subplot(1, 3, 2)\n" +"> > axes3 = fig.add_subplot(1, 3, 3)\n" +"> >\n" +"> > axes1.set_ylabel('average')\n" +"> > axes1.plot(numpy.mean(data, axis=0), drawstyle='steps-mid')\n" +"> >\n" +"> > axes2.set_ylabel('max')\n" +"> > axes2.plot(numpy.max(data, axis=0), drawstyle='steps-mid')\n" +"> >\n" +"> > axes3.set_ylabel('min')\n" +"> > axes3.plot(numpy.min(data, axis=0), drawstyle='steps-mid')\n" +"> >\n" +"> > fig.tight_layout()\n" +"> >\n" +"> > matplotlib.pyplot.show()\n" +"> > ~~~\n" +"> > {: .language-python}\n" +"> ![Plot with step lines](../fig/01-numpy_exercise_0.png)" +msgstr "" + +#: python-novice-inflammation/_episodes/01-numpy.md:1034 +# blockquote, which can be cascaded +msgid "> ## Make Your Own Plot" +msgstr "" + +#: python-novice-inflammation/_episodes/01-numpy.md:1035 +msgid ">\n" +"> Create a plot showing the standard deviation (`numpy.std`)\n" +"> of the inflammation data for each day across all patients.\n" +">\n" +"> > ## Solution\n" +"> > ~~~\n" +"> > std_plot = matplotlib.pyplot.plot(numpy.std(data, axis=0))\n" +"> > matplotlib.pyplot.show()\n" +"> > ~~~\n" +"> > {: .language-python}" +msgstr "" + +#: python-novice-inflammation/_episodes/01-numpy.md:1048 +# blockquote, which can be cascaded +msgid "> ## Moving Plots Around" +msgstr "" + +#: python-novice-inflammation/_episodes/01-numpy.md:1049 +msgid ">\n" +"> Modify the program to display the three plots on top of one another\n" +"> instead of side by side.\n" +">\n" +"> > ## Solution\n" +"> > ~~~\n" +"> > import numpy\n" +"> > import matplotlib.pyplot\n" +"> >\n" +"> > data = numpy.loadtxt(fname='inflammation-01.csv', delimiter=',')\n" +"> >\n" +"> > # change figsize (swap width and height)\n" +"> > fig = matplotlib.pyplot.figure(figsize=(3.0, 10.0))\n" +"> >\n" +"> > # change add_subplot (swap first two parameters)\n" +"> > axes1 = fig.add_subplot(3, 1, 1)\n" +"> > axes2 = fig.add_subplot(3, 1, 2)\n" +"> > axes3 = fig.add_subplot(3, 1, 3)\n" +"> >\n" +"> > axes1.set_ylabel('average')\n" +"> > axes1.plot(numpy.mean(data, axis=0))\n" +"> >\n" +"> > axes2.set_ylabel('max')\n" +"> > axes2.plot(numpy.max(data, axis=0))\n" +"> >\n" +"> > axes3.set_ylabel('min')\n" +"> > axes3.plot(numpy.min(data, axis=0))\n" +"> >\n" +"> > fig.tight_layout()\n" +"> >\n" +"> > matplotlib.pyplot.show()\n" +"> > ~~~\n" +"> > {: .language-python}" +msgstr "" + +#: python-novice-inflammation/_episodes/01-numpy.md:1085 +# blockquote, which can be cascaded +msgid "> ## Stacking Arrays" +msgstr "" + +#: python-novice-inflammation/_episodes/01-numpy.md:1086 +msgid ">\n" +"> Arrays can be concatenated and stacked on top of one another,\n" +"> using NumPy's `vstack` and `hstack` functions for vertical and horizontal stacking, respectively.\n" +">\n" +"> ~~~\n" +"> import numpy\n" +">\n" +"> A = numpy.array([[1,2,3], [4,5,6], [7, 8, 9]])\n" +"> print('A = ')\n" +"> print(A)\n" +">\n" +"> B = numpy.hstack([A, A])\n" +"> print('B = ')\n" +"> print(B)\n" +">\n" +"> C = numpy.vstack([A, A])\n" +"> print('C = ')\n" +"> print(C)\n" +"> ~~~\n" +"> {: .language-python}\n" +">\n" +"> ~~~\n" +"> A =\n" +"> [[1 2 3]\n" +"> [4 5 6]\n" +"> [7 8 9]]\n" +"> B =\n" +"> [[1 2 3 1 2 3]\n" +"> [4 5 6 4 5 6]\n" +"> [7 8 9 7 8 9]]\n" +"> C =\n" +"> [[1 2 3]\n" +"> [4 5 6]\n" +"> [7 8 9]\n" +"> [1 2 3]\n" +"> [4 5 6]\n" +"> [7 8 9]]\n" +"> ~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/01-numpy.md:1125 +msgid ">\n" +"> Write some additional code that slices the first and last columns of `A`,\n" +"> and stacks them into a 3x2 array.\n" +"> Make sure to `print` the results to verify your solution.\n" +">\n" +"> > ## Solution\n" +"> >\n" +"> > A 'gotcha' with array indexing is that singleton dimensions\n" +"> > are dropped by default. That means `A[:, 0]` is a one dimensional\n" +"> > array, which won't stack as desired. To preserve singleton dimensions,\n" +"> > the index itself can be a slice or array. For example, `A[:, :1]` returns\n" +"> > a two dimensional array with one singleton dimension (i.e. a column\n" +"> > vector).\n" +"> >\n" +"> > ~~~\n" +"> > D = numpy.hstack((A[:, :1], A[:, -1:]))\n" +"> > print('D = ')\n" +"> > print(D)\n" +"> > ~~~\n" +"> > {: .language-python}\n" +"> >\n" +"> > ~~~\n" +"> > D =\n" +"> > [[1 3]\n" +"> > [4 6]\n" +"> > [7 9]]\n" +"> > ~~~\n" +"> > {: .output}" +msgstr "" + +#: python-novice-inflammation/_episodes/01-numpy.md:1154 +msgid ">\n" +"> > ## Solution\n" +"> >\n" +"> > An alternative way to achieve the same result is to use Numpy's\n" +"> > delete function to remove the second column of A.\n" +"> >\n" +"> > ~~~\n" +"> > D = numpy.delete(A, 1, 1)\n" +"> > print('D = ')\n" +"> > print(D)\n" +"> > ~~~\n" +"> > {: .language-python}\n" +"> >\n" +"> > ~~~\n" +"> > D =\n" +"> > [[1 3]\n" +"> > [4 6]\n" +"> > [7 9]]\n" +"> > ~~~\n" +"> > {: .output}" +msgstr "" + +#: python-novice-inflammation/_episodes/01-numpy.md:1177 +# blockquote, which can be cascaded +msgid "> ## Change In Inflammation" +msgstr "" + +#: python-novice-inflammation/_episodes/01-numpy.md:1178 +msgid ">\n" +"> This patient data is _longitudinal_ in the sense that each row represents a\n" +"> series of observations relating to one individual. This means that\n" +"> the change in inflammation over time is a meaningful concept.\n" +">\n" +"> The `numpy.diff()` function takes a NumPy array and returns the\n" +"> differences between two successive values along a specified axis. For\n" +"> example, a NumPy array that looks like this:\n" +">\n" +"> ~~~\n" +"> npdiff = numpy.array([ 0, 2, 5, 9, 14])\n" +"> ~~~\n" +"> {: .language-python}\n" +">\n" +"> Calling `numpy.diff(npdiff)` would do the following calculations and\n" +"> put the answers in another array.\n" +">\n" +"> ~~~\n" +"> [ 2 - 0, 5 - 2, 9 - 5, 14 - 9 ]\n" +"> ~~~\n" +"> {: .language-python}\n" +">\n" +"> ~~~\n" +"> numpy.diff(npdiff)\n" +"> ~~~\n" +"> {: .language-python}\n" +">\n" +"> ~~~\n" +"> array([2, 3, 4, 5])\n" +"> ~~~\n" +"> {: .language-python}\n" +">\n" +"> Which axis would it make sense to use this function along?\n" +">\n" +"> > ## Solution\n" +"> > Since the row axis (0) is patients, it does not make sense to get the\n" +"> > difference between two arbitrary patients. The column axis (1) is in\n" +"> > days, so the difference is the change in inflammation -- a meaningful\n" +"> > concept.\n" +"> >\n" +"> > ~~~\n" +"> > numpy.diff(data, axis=1)\n" +"> > ~~~\n" +"> > {: .language-python}" +msgstr "" + +#: python-novice-inflammation/_episodes/01-numpy.md:1223 +msgid ">\n" +"> If the shape of an individual data file is `(60, 40)` (60 rows and 40\n" +"> columns), what would the shape of the array be after you run the `diff()`\n" +"> function and why?\n" +">\n" +"> > ## Solution\n" +"> > The shape will be `(60, 39)` because there is one fewer difference between\n" +"> > columns than there are columns in the data." +msgstr "" + +#: python-novice-inflammation/_episodes/01-numpy.md:1232 +msgid ">\n" +"> How would you find the largest change in inflammation for each patient? Does\n" +"> it matter if the change in inflammation is an increase or a decrease?\n" +">\n" +"> > ## Solution\n" +"> > By using the `numpy.max()` function after you apply the `numpy.diff()`\n" +"> > function, you will get the largest difference between days.\n" +"> >\n" +"> > ~~~\n" +"> > numpy.max(numpy.diff(data, axis=1), axis=1)\n" +"> > ~~~\n" +"> > {: .language-python}\n" +"> >\n" +"> > ~~~\n" +"> > array([ 7., 12., 11., 10., 11., 13., 10., 8., 10., 10., 7.,\n" +"> > 7., 13., 7., 10., 10., 8., 10., 9., 10., 13., 7.,\n" +"> > 12., 9., 12., 11., 10., 10., 7., 10., 11., 10., 8.,\n" +"> > 11., 12., 10., 9., 10., 13., 10., 7., 7., 10., 13.,\n" +"> > 12., 8., 8., 10., 10., 9., 8., 13., 10., 7., 10.,\n" +"> > 8., 12., 10., 7., 12.])\n" +"> > ~~~\n" +"> > {: .language-python}\n" +"> >\n" +"> > If inflammation values *decrease* along an axis, then the difference from\n" +"> > one element to the next will be negative. If\n" +"> > you are interested in the **magnitude** of the change and not the\n" +"> > direction, the `numpy.absolute()` function will provide that.\n" +"> >\n" +"> > Notice the difference if you get the largest _absolute_ difference\n" +"> > between readings.\n" +"> >\n" +"> > ~~~\n" +"> > numpy.max(numpy.absolute(numpy.diff(data, axis=1)), axis=1)\n" +"> > ~~~\n" +"> > {: .language-python}\n" +"> >\n" +"> > ~~~\n" +"> > array([ 12., 14., 11., 13., 11., 13., 10., 12., 10., 10., 10.,\n" +"> > 12., 13., 10., 11., 10., 12., 13., 9., 10., 13., 9.,\n" +"> > 12., 9., 12., 11., 10., 13., 9., 13., 11., 11., 8.,\n" +"> > 11., 12., 13., 9., 10., 13., 11., 11., 13., 11., 13.,\n" +"> > 13., 10., 9., 10., 10., 9., 9., 13., 10., 9., 10.,\n" +"> > 11., 13., 10., 10., 12.])\n" +"> > ~~~\n" +"> > {: .language-python}\n" +"> >" +msgstr "" + +#: python-novice-inflammation/_episodes/02-loop.md:1 +# Front Matter +msgid "---\n" +"title: Repeating Actions with Loops\n" +"teaching: 30\n" +"exercises: 0\n" +"questions:\n" +"- \"How can I do the same operations on many different values?\"\n" +"objectives:\n" +"- \"Explain what a `for` loop does.\"\n" +"- \"Correctly write `for` loops to repeat simple calculations.\"\n" +"- \"Trace changes to a loop variable as the loop runs.\"\n" +"- \"Trace changes to other variables as they are updated by a `for` loop.\"\n" +"keypoints:\n" +"- \"Use `for variable in sequence` to process the elements of a sequence one at a time.\"\n" +"- \"The body of a `for` loop must be indented.\"\n" +"- \"Use `len(thing)` to determine the length of something that contains other values.\"\n" +"---" +msgstr "" + +#: python-novice-inflammation/_episodes/02-loop.md:18 +msgid "In the last lesson,\n" +"we wrote some code that plots some values of interest from our first inflammation dataset,\n" +"and reveals some suspicious features in it, such as from `inflammation-01.csv`" +msgstr "" + +#: python-novice-inflammation/_episodes/02-loop.md:22 +msgid "![Analysis of inflammation-01.csv](../fig/03-loop_2_0.png)" +msgstr "" + +#: python-novice-inflammation/_episodes/02-loop.md:24 +msgid "We have a dozen data sets right now, though, and more on the way.\n" +"We want to create plots for all of our data sets with a single statement.\n" +"To do that, we'll have to teach the computer how to repeat things." +msgstr "" + +#: python-novice-inflammation/_episodes/02-loop.md:28 +msgid "An example task that we might want to repeat is printing each character in a\n" +"word on a line of its own." +msgstr "" + +#: python-novice-inflammation/_episodes/02-loop.md:31 +# code block +msgid "~~~\n" +"word = 'lead'\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/02-loop.md:36 +msgid "We can access a character in a string using its index. For example, we can get the first\n" +"character of the word `'lead'`, by using `word[0]`. One way to print each character is to use\n" +"four `print` statements:" +msgstr "" + +#: python-novice-inflammation/_episodes/02-loop.md:40 +# code block +msgid "~~~\n" +"print(word[0])\n" +"print(word[1])\n" +"print(word[2])\n" +"print(word[3])\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/02-loop.md:48 +#: python-novice-inflammation/_episodes/02-loop.md:106 +# code block +msgid "~~~\n" +"l\n" +"e\n" +"a\n" +"d\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/02-loop.md:56 +msgid "This is a bad approach for two reasons:" +msgstr "" + +#: python-novice-inflammation/_episodes/02-loop.md:58 +# ordered list +msgid "1. It doesn't scale:" +msgstr "" + +#: python-novice-inflammation/_episodes/02-loop.md:59 +msgid " if we want to print the characters in a string that's hundreds of letters long,\n" +" we'd be better off just typing them in." +msgstr "" + +#: python-novice-inflammation/_episodes/02-loop.md:62 +# ordered list +msgid "1. It's fragile:" +msgstr "" + +#: python-novice-inflammation/_episodes/02-loop.md:63 +msgid " if we give it a longer string,\n" +" it only prints part of the data,\n" +" and if we give it a shorter one,\n" +" it produces an error because we're asking for characters that don't exist." +msgstr "" + +#: python-novice-inflammation/_episodes/02-loop.md:68 +# code block +msgid "~~~\n" +"word = 'tin'\n" +"print(word[0])\n" +"print(word[1])\n" +"print(word[2])\n" +"print(word[3])\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/02-loop.md:77 +# code block +msgid "~~~\n" +"t\n" +"i\n" +"n\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/02-loop.md:84 +# code block +msgid "~~~\n" +"---------------------------------------------------------------------------\n" +"IndexError Traceback (most recent call last)\n" +" in ()\n" +" 3 print(word[1])\n" +" 4 print(word[2])\n" +"----> 5 print(word[3])\n" +"\n" +"IndexError: string index out of range\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/02-loop.md:94 +#: python-novice-inflammation/_episodes/03-lists.md:106 +#: python-novice-inflammation/_episodes/06-func.md:430 +#: python-novice-inflammation/_episodes/07-errors.md:66 +#: python-novice-inflammation/_episodes/07-errors.md:151 +#: python-novice-inflammation/_episodes/07-errors.md:176 +#: python-novice-inflammation/_episodes/07-errors.md:232 +#: python-novice-inflammation/_episodes/07-errors.md:257 +#: python-novice-inflammation/_episodes/07-errors.md:280 +#: python-novice-inflammation/_episodes/07-errors.md:307 +#: python-novice-inflammation/_episodes/07-errors.md:346 +#: python-novice-inflammation/_episodes/07-errors.md:376 +#: python-novice-inflammation/_episodes/07-errors.md:411 +#: python-novice-inflammation/_episodes/08-defensive.md:87 +#: python-novice-inflammation/_episodes/08-defensive.md:158 +#: python-novice-inflammation/_episodes/08-defensive.md:180 +#: python-novice-inflammation/_episodes/08-defensive.md:219 +#: python-novice-inflammation/_episodes/08-defensive.md:313 +#: python-novice-inflammation/_episodes/08-defensive.md:386 +#: python-novice-inflammation/_episodes/08-defensive.md:443 +#: python-novice-inflammation/_extras/discuss.md:104 +#: python-novice-inflammation/_extras/discuss.md:286 +# SC/DC Template label +msgid "{: .error}" +msgstr "" + +#: python-novice-inflammation/_episodes/02-loop.md:96 +msgid "Here's a better approach:" +msgstr "" + +#: python-novice-inflammation/_episodes/02-loop.md:98 +# code block +msgid "~~~\n" +"word = 'lead'\n" +"for char in word:\n" +" print(char)\n" +"\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/02-loop.md:114 +msgid "This is shorter --- certainly shorter than something that prints every character in a\n" +"hundred-letter string --- and more robust as well:" +msgstr "" + +#: python-novice-inflammation/_episodes/02-loop.md:117 +# code block +msgid "~~~\n" +"word = 'oxygen'\n" +"for char in word:\n" +" print(char)\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/02-loop.md:124 +# code block +msgid "~~~\n" +"o\n" +"x\n" +"y\n" +"g\n" +"e\n" +"n\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/02-loop.md:134 +msgid "The improved version uses a [for loop]({{ page.root }}/reference/#for-loop)\n" +"to repeat an operation --- in this case, printing --- once for each thing in a sequence.\n" +"The general form of a loop is:" +msgstr "" + +#: python-novice-inflammation/_episodes/02-loop.md:138 +# code block +msgid "~~~\n" +"for variable in collection:\n" +" do things with variable\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/02-loop.md:144 +msgid "Using the oxygen example above, the loop might look like this:" +msgstr "" + +#: python-novice-inflammation/_episodes/02-loop.md:146 +msgid "![loop_image](../fig/loops_image.png)" +msgstr "" + +#: python-novice-inflammation/_episodes/02-loop.md:148 +msgid "where each character (`char`) in the variable `word` is looped through and printed one character\n" +"after another. The numbers in the diagram denote which loop cycle the character was printed in (1\n" +"being the first loop, and 6 being the final loop)." +msgstr "" + +#: python-novice-inflammation/_episodes/02-loop.md:152 +msgid "We can call the [loop variable]({{ page.root }}/reference/#loop-variable) anything we like, but\n" +"there must be a colon at the end of the line starting the loop, and we must indent anything we\n" +"want to run inside the loop. Unlike many other languages, there is no command to signify the end\n" +"of the loop body (e.g. `end for`); what is indented after the `for` statement belongs to the loop." +msgstr "" + +#: python-novice-inflammation/_episodes/02-loop.md:158 +# blockquote, which can be cascaded +msgid "> ## What's in a name?" +msgstr "" + +#: python-novice-inflammation/_episodes/02-loop.md:159 +msgid ">\n" +">\n" +"> In the example above, the loop variable was given the name `char` as a mnemonic;\n" +"> it is short for 'character'.\n" +"> We can choose any name we want for variables. We might just as easily have chosen the name\n" +"> `banana` for the loop variable, as long as we use the same name when we invoke the variable inside\n" +"> the loop:\n" +">\n" +"> ~~~\n" +"> word = 'oxygen'\n" +"> for banana in word:\n" +"> print(banana)\n" +"> ~~~\n" +"> {: .language-python}\n" +">\n" +"> ~~~\n" +"> o\n" +"> x\n" +"> y\n" +"> g\n" +"> e\n" +"> n\n" +"> ~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/02-loop.md:183 +msgid ">\n" +"> It is a good idea to choose variable names that are meaningful, otherwise it would be more\n" +"> difficult to understand what the loop is doing." +msgstr "" + +#: python-novice-inflammation/_episodes/02-loop.md:188 +msgid "Here's another loop that repeatedly updates a variable:" +msgstr "" + +#: python-novice-inflammation/_episodes/02-loop.md:190 +# code block +msgid "~~~\n" +"length = 0\n" +"for vowel in 'aeiou':\n" +" length = length + 1\n" +"print('There are', length, 'vowels')\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/02-loop.md:198 +# code block +msgid "~~~\n" +"There are 5 vowels\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/02-loop.md:203 +msgid "It's worth tracing the execution of this little program step by step.\n" +"Since there are five characters in `'aeiou'`,\n" +"the statement on line 3 will be executed five times.\n" +"The first time around,\n" +"`length` is zero (the value assigned to it on line 1)\n" +"and `vowel` is `'a'`.\n" +"The statement adds 1 to the old value of `length`,\n" +"producing 1,\n" +"and updates `length` to refer to that new value.\n" +"The next time around,\n" +"`vowel` is `'e'` and `length` is 1,\n" +"so `length` is updated to be 2.\n" +"After three more updates,\n" +"`length` is 5;\n" +"since there is nothing left in `'aeiou'` for Python to process,\n" +"the loop finishes\n" +"and the `print` statement on line 4 tells us our final answer." +msgstr "" + +#: python-novice-inflammation/_episodes/02-loop.md:221 +msgid "Note that a loop variable is just a variable that's being used to record progress in a loop.\n" +"It still exists after the loop is over,\n" +"and we can re-use variables previously defined as loop variables as well:" +msgstr "" + +#: python-novice-inflammation/_episodes/02-loop.md:225 +# code block +msgid "~~~\n" +"letter = 'z'\n" +"for letter in 'abc':\n" +" print(letter)\n" +"print('after the loop, letter is', letter)\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/02-loop.md:233 +# code block +msgid "~~~\n" +"a\n" +"b\n" +"c\n" +"after the loop, letter is c\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/02-loop.md:241 +msgid "Note also that finding the length of a string is such a common operation\n" +"that Python actually has a built-in function to do it called `len`:" +msgstr "" + +#: python-novice-inflammation/_episodes/02-loop.md:244 +# code block +msgid "~~~\n" +"print(len('aeiou'))\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/02-loop.md:249 +# code block +msgid "~~~\n" +"5\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/02-loop.md:254 +msgid "`len` is much faster than any function we could write ourselves,\n" +"and much easier to read than a two-line loop;\n" +"it will also give us the length of many other things that we haven't met yet,\n" +"so we should always use it when we can." +msgstr "" + +#: python-novice-inflammation/_episodes/02-loop.md:259 +# blockquote, which can be cascaded +msgid "> ## From 1 to N" +msgstr "" + +#: python-novice-inflammation/_episodes/02-loop.md:260 +msgid ">\n" +"> Python has a built-in function called `range` that creates a sequence of numbers. `range` can\n" +"> accept 1, 2, or 3 parameters.\n" +">\n" +"> * If one parameter is given, `range` creates an array of that length,\n" +"> starting at zero and incrementing by 1.\n" +"> For example, `range(3)` produces the numbers `0, 1, 2`.\n" +"> * If two parameters are given, `range` starts at\n" +"> the first and ends just before the second, incrementing by one.\n" +"> For example, `range(2, 5)` produces `2, 3, 4`.\n" +"> * If `range` is given 3 parameters,\n" +"> it starts at the first one, ends just before the second one, and increments by the third one.\n" +"> For exmaple `range(3, 10, 2)` produces `3, 5, 7, 9`.\n" +">\n" +"> Using `range`,\n" +"> write a loop that uses `range` to print the first 3 natural numbers:\n" +">\n" +"> ~~~\n" +"> 1\n" +"> 2\n" +"> 3\n" +"> ~~~\n" +"> {: .language-python}\n" +">\n" +"> > ## Solution\n" +"> > ~~~\n" +"> > for i in range(1, 4):\n" +"> > print(i)\n" +"> > ~~~\n" +"> > {: .language-python}" +msgstr "" + +#: python-novice-inflammation/_episodes/02-loop.md:293 +# blockquote, which can be cascaded +msgid "> ## Computing Powers With Loops" +msgstr "" + +#: python-novice-inflammation/_episodes/02-loop.md:294 +msgid ">\n" +"> Exponentiation is built into Python:\n" +">\n" +"> ~~~\n" +"> print(5 ** 3)\n" +"> ~~~\n" +"> {: .language-python}\n" +">\n" +"> ~~~\n" +"> 125\n" +"> ~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/02-loop.md:306 +msgid ">\n" +"> Write a loop that calculates the same result as `5 ** 3` using\n" +"> multiplication (and without exponentiation).\n" +">\n" +"> > ## Solution\n" +"> > ~~~\n" +"> > result = 1\n" +"> > for i in range(0, 3):\n" +"> > result = result * 5\n" +"> > print(result)\n" +"> > ~~~\n" +"> > {: .language-python}" +msgstr "" + +#: python-novice-inflammation/_episodes/02-loop.md:321 +# blockquote, which can be cascaded +msgid "> ## Reverse a String" +msgstr "" + +#: python-novice-inflammation/_episodes/02-loop.md:322 +msgid ">\n" +"> Knowing that two strings can be concatenated using the `+` operator,\n" +"> write a loop that takes a string\n" +"> and produces a new string with the characters in reverse order,\n" +"> so `'Newton'` becomes `'notweN'`.\n" +">\n" +"> > ## Solution\n" +"> > ~~~\n" +"> > newstring = ''\n" +"> > oldstring = 'Newton'\n" +"> > for char in oldstring:\n" +"> > newstring = char + newstring\n" +"> > print(newstring)\n" +"> > ~~~\n" +"> > {: .language-python}" +msgstr "" + +#: python-novice-inflammation/_episodes/02-loop.md:340 +# blockquote, which can be cascaded +msgid "> ## Computing the Value of a Polynomial" +msgstr "" + +#: python-novice-inflammation/_episodes/02-loop.md:341 +msgid ">\n" +"> The built-in function `enumerate` takes a sequence (e.g. a list) and generates a\n" +"> new sequence of the same length. Each element of the new sequence is a pair composed of the index\n" +"> (0, 1, 2,...) and the value from the original sequence:\n" +">\n" +"> ~~~\n" +"> for i, x in enumerate(xs):\n" +"> # Do something with i and x\n" +"> ~~~\n" +"> {: .language-python}\n" +">\n" +"> The code above loops through `xs`, assigning the index to `i` and the value to `x`.\n" +">\n" +"> Suppose you have encoded a polynomial as a list of coefficients in\n" +"> the following way: the first element is the constant term, the\n" +"> second element is the coefficient of the linear term, the third is the\n" +"> coefficient of the quadratic term, etc.\n" +">\n" +"> ~~~\n" +"> x = 5\n" +"> cc = [2, 4, 3]\n" +"> ~~~\n" +"> {: .language-python}\n" +">\n" +"> ~~~\n" +"> y = cc[0] * x**0 + cc[1] * x**1 + cc[2] * x**2\n" +"> y = 97\n" +"> ~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/02-loop.md:370 +msgid ">\n" +"> Write a loop using `enumerate(cc)` which computes the value `y` of any\n" +"> polynomial, given `x` and `cc`.\n" +">\n" +"> > ## Solution\n" +"> > ~~~\n" +"> > y = 0\n" +"> > for i, c in enumerate(cc):\n" +"> > y = y + x**i * c\n" +"> > ~~~\n" +"> > {: .language-python}" +msgstr "" + +#: python-novice-inflammation/_episodes/03-lists.md:1 +# Front Matter +msgid "---\n" +"title: Storing Multiple Values in Lists\n" +"teaching: 30\n" +"exercises: 0\n" +"questions:\n" +"- \"How can I store many values together?\"\n" +"objectives:\n" +"- \"Explain what a list is.\"\n" +"- \"Create and index lists of simple values.\"\n" +"- \"Change the values of individual elements\"\n" +"- \"Append values to an existing list\"\n" +"- \"Reorder and slice list elements\"\n" +"- \"Create and manipulate nested lists\"\n" +"keypoints:\n" +"- \"`[value1, value2, value3, ...]` creates a list.\"\n" +"- \"Lists can contain any Python object, including lists (i.e., list of lists).\"\n" +"- \"Lists are indexed and sliced with square brackets (e.g., list[0] and\n" +"list[2:9]), in the same way as strings and arrays.\"\n" +"- \"Lists are mutable (i.e., their values can be changed in place).\"\n" +"- \"Strings are immutable (i.e., the characters in them cannot be changed).\"\n" +"---" +msgstr "" + +#: python-novice-inflammation/_episodes/03-lists.md:23 +msgid "Just as a `for` loop is a way to do operations many times,\n" +"a list is a way to store many values.\n" +"Unlike NumPy arrays,\n" +"lists are built into the language (so we don't have to load a library\n" +"to use them).\n" +"We create a list by putting values inside square brackets and separating the values with commas:" +msgstr "" + +#: python-novice-inflammation/_episodes/03-lists.md:30 +# code block +msgid "~~~\n" +"odds = [1, 3, 5, 7]\n" +"print('odds are:', odds)\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/03-lists.md:36 +# code block +msgid "~~~\n" +"odds are: [1, 3, 5, 7]\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/03-lists.md:41 +msgid "We select individual elements from lists by indexing them:" +msgstr "" + +#: python-novice-inflammation/_episodes/03-lists.md:43 +# code block +msgid "~~~\n" +"print('first and last:', odds[0], odds[-1])\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/03-lists.md:48 +# code block +msgid "~~~\n" +"first and last: 1 7\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/03-lists.md:53 +msgid "and if we loop over a list,\n" +"the loop variable is assigned elements one at a time:" +msgstr "" + +#: python-novice-inflammation/_episodes/03-lists.md:56 +# code block +msgid "~~~\n" +"for number in odds:\n" +" print(number)\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/03-lists.md:62 +# code block +msgid "~~~\n" +"1\n" +"3\n" +"5\n" +"7\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/03-lists.md:70 +msgid "There is one important difference between lists and strings:\n" +"we can change the values in a list,\n" +"but we cannot change individual characters in a string.\n" +"For example:" +msgstr "" + +#: python-novice-inflammation/_episodes/03-lists.md:75 +# code block +msgid "~~~\n" +"names = ['Curie', 'Darwing', 'Turing'] # typo in Darwin's name\n" +"print('names is originally:', names)\n" +"names[1] = 'Darwin' # correct the name\n" +"print('final value of names:', names)\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/03-lists.md:83 +# code block +msgid "~~~\n" +"names is originally: ['Curie', 'Darwing', 'Turing']\n" +"final value of names: ['Curie', 'Darwin', 'Turing']\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/03-lists.md:89 +msgid "works, but:" +msgstr "" + +#: python-novice-inflammation/_episodes/03-lists.md:91 +# code block +msgid "~~~\n" +"name = 'Darwin'\n" +"name[0] = 'd'\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/03-lists.md:97 +# code block +msgid "~~~\n" +"---------------------------------------------------------------------------\n" +"TypeError Traceback (most recent call last)\n" +" in ()\n" +" 1 name = 'Darwin'\n" +"----> 2 name[0] = 'd'\n" +"\n" +"TypeError: 'str' object does not support item assignment\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/03-lists.md:108 +msgid "does not." +msgstr "" + +#: python-novice-inflammation/_episodes/03-lists.md:110 +# blockquote, which can be cascaded +msgid "> ## Ch-Ch-Ch-Ch-Changes" +msgstr "" + +#: python-novice-inflammation/_episodes/03-lists.md:111 +msgid ">\n" +"> Data which can be modified in place is called [mutable]({{ page.root }}/reference/#mutable),\n" +"> while data which cannot be modified is called [immutable]({{ page.root }}/reference/#immutable).\n" +"> Strings and numbers are immutable. This does not mean that variables with string or number values\n" +"> are constants, but when we want to change the value of a string or number variable, we can only\n" +"> replace the old value with a completely new value.\n" +">\n" +"> Lists and arrays, on the other hand, are mutable: we can modify them after they have been\n" +"> created. We can change individual elements, append new elements, or reorder the whole list. For\n" +"> some operations, like sorting, we can choose whether to use a function that modifies the data\n" +"> in-place or a function that returns a modified copy and leaves the original unchanged.\n" +">\n" +"> Be careful when modifying data in-place. If two variables refer to the same list, and you modify\n" +"> the list value, it will change for both variables!\n" +">\n" +"> ~~~\n" +"> salsa = ['peppers', 'onions', 'cilantro', 'tomatoes']\n" +"> my_salsa = salsa # <-- my_salsa and salsa point to the *same* list data in memory\n" +"> salsa[0] = 'hot peppers'\n" +"> print('Ingredients in my salsa:', my_salsa)\n" +"> ~~~\n" +"> {: .language-python}\n" +">\n" +"> ~~~\n" +"> Ingredients in my salsa: ['hot peppers', 'onions', 'cilantro', 'tomatoes']\n" +"> ~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/03-lists.md:138 +msgid ">\n" +"> If you want variables with mutable values to be independent, you\n" +"> must make a copy of the value when you assign it.\n" +">\n" +"> ~~~\n" +"> salsa = ['peppers', 'onions', 'cilantro', 'tomatoes']\n" +"> my_salsa = list(salsa) # <-- makes a *copy* of the list\n" +"> salsa[0] = 'hot peppers'\n" +"> print('Ingredients in my salsa:', my_salsa)\n" +"> ~~~\n" +"> {: .language-python}\n" +">\n" +"> ~~~\n" +"> Ingredients in my salsa: ['peppers', 'onions', 'cilantro', 'tomatoes']\n" +"> ~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/03-lists.md:154 +msgid ">\n" +"> Because of pitfalls like this, code which modifies data in place can be more difficult to\n" +"> understand. However, it is often far more efficient to modify a large data structure in place\n" +"> than to create a modified copy for every small change. You should consider both of these aspects\n" +"> when writing your code." +msgstr "" + +#: python-novice-inflammation/_episodes/03-lists.md:161 +# blockquote, which can be cascaded +msgid "> ## Nested Lists" +msgstr "" + +#: python-novice-inflammation/_episodes/03-lists.md:162 +# blockquote, which can be cascaded +msgid "> Since lists can contain any Python variable, it can even contain other lists." +msgstr "" + +#: python-novice-inflammation/_episodes/03-lists.md:163 +msgid ">\n" +"> For example, we could represent the products in the shelves of a small grocery shop:\n" +">\n" +"> ~~~\n" +"> x = [['pepper', 'zucchini', 'onion'],\n" +"> ['cabbage', 'lettuce', 'garlic'],\n" +"> ['apple', 'pear', 'banana']]\n" +"> ~~~\n" +"> {: .language-python}\n" +">\n" +"> Here is a visual example of how indexing a list of lists `x` works:\n" +">\n" +"> [![The first element of a list.\n" +"> Adapted from @hadleywickham.](../fig/indexing_lists_python.png)][hadleywickham-tweet]\n" +">\n" +"> Using the previously declared list `x`, these would be the results of the\n" +"> index operations shown in the image:\n" +">\n" +"> ~~~\n" +"> print([x[0]])\n" +"> ~~~\n" +"> {: .language-python}\n" +">\n" +"> ~~~\n" +"> [['pepper', 'zucchini', 'onion']]\n" +"> ~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/03-lists.md:190 +msgid ">\n" +"> ~~~\n" +"> print(x[0])\n" +"> ~~~\n" +"> {: .language-python}\n" +">\n" +"> ~~~\n" +"> ['pepper', 'zucchini', 'onion']\n" +"> ~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/03-lists.md:200 +msgid ">\n" +"> ~~~\n" +"> print(x[0][0])\n" +"> ~~~\n" +"> {: .language-python}\n" +">\n" +"> ~~~\n" +"> 'pepper'\n" +"> ~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/03-lists.md:210 +msgid ">\n" +"> Thanks to [Hadley Wickham][hadleywickham-tweet]\n" +"> for the image above." +msgstr "" + +#: python-novice-inflammation/_episodes/03-lists.md:215 +# blockquote, which can be cascaded +msgid "> ## Heterogeneous Lists" +msgstr "" + +#: python-novice-inflammation/_episodes/03-lists.md:216 +# blockquote, which can be cascaded +msgid "> Lists in Python can contain elements of different types. Example:" +msgstr "" + +#: python-novice-inflammation/_episodes/03-lists.md:217 +#: python-novice-inflammation/_episodes/03-lists.md:219 +#: python-novice-inflammation/_episodes/05-cond.md:400 +#: python-novice-inflammation/_episodes/05-cond.md:402 +#: python-novice-inflammation/_episodes/05-cond.md:404 +#: python-novice-inflammation/_episodes/05-cond.md:406 +# blockquote, which can be cascaded +msgid "> ~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/03-lists.md:218 +# blockquote, which can be cascaded +msgid "> sample_ages = [10, 12.5, 'Unknown']" +msgstr "" + +#: python-novice-inflammation/_episodes/03-lists.md:222 +msgid "There are many ways to change the contents of lists besides assigning new values to\n" +"individual elements:" +msgstr "" + +#: python-novice-inflammation/_episodes/03-lists.md:225 +# code block +msgid "~~~\n" +"odds.append(11)\n" +"print('odds after adding a value:', odds)\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/03-lists.md:231 +# code block +msgid "~~~\n" +"odds after adding a value: [1, 3, 5, 7, 11]\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/03-lists.md:236 +# code block +msgid "~~~\n" +"del odds[0]\n" +"print('odds after removing the first element:', odds)\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/03-lists.md:242 +# code block +msgid "~~~\n" +"odds after removing the first element: [3, 5, 7, 11]\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/03-lists.md:247 +# code block +msgid "~~~\n" +"odds.reverse()\n" +"print('odds after reversing:', odds)\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/03-lists.md:253 +# code block +msgid "~~~\n" +"odds after reversing: [11, 7, 5, 3]\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/03-lists.md:258 +msgid "While modifying in place, it is useful to remember that Python treats lists in a slightly\n" +"counter-intuitive way." +msgstr "" + +#: python-novice-inflammation/_episodes/03-lists.md:261 +msgid "If we make a list and (attempt to) copy it then modify in place, we can cause all sorts of trouble:" +msgstr "" + +#: python-novice-inflammation/_episodes/03-lists.md:263 +# code block +msgid "~~~\n" +"odds = [1, 3, 5, 7]\n" +"primes = odds\n" +"primes.append(2)\n" +"print('primes:', primes)\n" +"print('odds:', odds)\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/03-lists.md:272 +# code block +msgid "~~~\n" +"primes: [1, 3, 5, 7, 2]\n" +"odds: [1, 3, 5, 7, 2]\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/03-lists.md:278 +msgid "This is because Python stores a list in memory, and then can use multiple names to refer to the\n" +"same list. If all we want to do is copy a (simple) list, we can use the `list` function, so we do\n" +"not modify a list we did not mean to:" +msgstr "" + +#: python-novice-inflammation/_episodes/03-lists.md:282 +# code block +msgid "~~~\n" +"odds = [1, 3, 5, 7]\n" +"primes = list(odds)\n" +"primes.append(2)\n" +"print('primes:', primes)\n" +"print('odds:', odds)\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/03-lists.md:291 +# code block +msgid "~~~\n" +"primes: [1, 3, 5, 7, 2]\n" +"odds: [1, 3, 5, 7]\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/03-lists.md:297 +msgid "This is different from how variables worked in lesson 1, and more similar to how a spreadsheet\n" +"works." +msgstr "" + +#: python-novice-inflammation/_episodes/03-lists.md:300 +# blockquote, which can be cascaded +msgid "> ## Turn a String Into a List" +msgstr "" + +#: python-novice-inflammation/_episodes/03-lists.md:301 +msgid ">\n" +"> Use a for-loop to convert the string \"hello\" into a list of letters:\n" +">\n" +"> ~~~\n" +"> [\"h\", \"e\", \"l\", \"l\", \"o\"]\n" +"> ~~~\n" +"> {: .language-python}\n" +">\n" +"> Hint: You can create an empty list like this:\n" +">\n" +"> ~~~\n" +"> my_list = []\n" +"> ~~~\n" +"> {: .language-python}\n" +">\n" +"> > ## Solution\n" +"> > ~~~\n" +"> > my_list = []\n" +"> > for char in \"hello\":\n" +"> > my_list.append(char)\n" +"> > print(my_list)\n" +"> > ~~~\n" +"> > {: .language-python}" +msgstr "" + +#: python-novice-inflammation/_episodes/03-lists.md:327 +msgid "Subsets of lists and strings can be accessed by specifying ranges of values in brackets,\n" +"similar to how we accessed ranges of positions in a NumPy array.\n" +"This is commonly referred to as \"slicing\" the list/string." +msgstr "" + +#: python-novice-inflammation/_episodes/03-lists.md:331 +# code block +msgid "~~~\n" +"binomial_name = \"Drosophila melanogaster\"\n" +"group = binomial_name[0:10]\n" +"print(\"group:\", group)\n" +"\n" +"species = binomial_name[11:24]\n" +"print(\"species:\", species)\n" +"\n" +"chromosomes = [\"X\", \"Y\", \"2\", \"3\", \"4\"]\n" +"autosomes = chromosomes[2:5]\n" +"print(\"autosomes:\", autosomes)\n" +"\n" +"last = chromosomes[-1]\n" +"print(\"last:\", last)\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/03-lists.md:348 +# code block +msgid "~~~\n" +"group: Drosophila\n" +"species: melanogaster\n" +"autosomes: [\"2\", \"3\", \"4\"]\n" +"last: 4\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/03-lists.md:356 +# blockquote, which can be cascaded +msgid "> ## Slicing From the End" +msgstr "" + +#: python-novice-inflammation/_episodes/03-lists.md:357 +msgid ">\n" +"> Use slicing to access only the last four characters of a string or entries of a list.\n" +">\n" +"> ~~~\n" +"> string_for_slicing = \"Observation date: 02-Feb-2013\"\n" +"> list_for_slicing = [[\"fluorine\", \"F\"], [\"chlorine\", \"Cl\"], [\"bromine\", \"Br\"], [\"iodine\", \"I\"], [\"astatine\", \"At\"]]\n" +"> ~~~\n" +"> {: .language-python}\n" +">\n" +"> ~~~\n" +"> \"2013\"\n" +"> [[\"chlorine\", \"Cl\"], [\"bromine\", \"Br\"], [\"iodine\", \"I\"], [\"astatine\", \"At\"]]\n" +"> ~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/03-lists.md:371 +msgid ">\n" +"> Would your solution work regardless of whether you knew beforehand\n" +"> the length of the string or list\n" +"> (e.g. if you wanted to apply the solution to a set of lists of different lengths)?\n" +"> If not, try to change your approach to make it more robust.\n" +">\n" +"> > ## Solution\n" +"> > Use negative indices to count elements from the end of a container (such as list or string):\n" +"> >\n" +"> > ~~~\n" +"> > string_for_slicing[-4:]\n" +"> > list_for_slicing[-4:]\n" +"> > ~~~\n" +"> > {: .language-python}" +msgstr "" + +#: python-novice-inflammation/_episodes/03-lists.md:388 +# blockquote, which can be cascaded +msgid "> ## Non-Continuous Slices" +msgstr "" + +#: python-novice-inflammation/_episodes/03-lists.md:389 +msgid ">\n" +"> So far we've seen how to use slicing to take single blocks\n" +"> of successive entries from a sequence.\n" +"> But what if we want to take a subset of entries\n" +"> that aren't next to each other in the sequence?\n" +">\n" +"> You can achieve this by providing a third argument\n" +"> to the range within the brackets, called the _step size_.\n" +"> The example below shows how you can take every third entry in a list:\n" +">\n" +"> ~~~\n" +"> primes = [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37]\n" +"> subset = primes[0:12:3]\n" +"> print(\"subset\", subset)\n" +"> ~~~\n" +"> {: .language-python}\n" +">\n" +"> ~~~\n" +"> subset [2, 7, 17, 29]\n" +"> ~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/03-lists.md:410 +msgid ">\n" +"> Notice that the slice taken begins with the first entry in the range,\n" +"> followed by entries taken at equally-spaced intervals (the steps) thereafter.\n" +"> If you wanted to begin the subset with the third entry,\n" +"> you would need to specify that as the starting point of the sliced range:\n" +">\n" +"> ~~~\n" +"> primes = [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37]\n" +"> subset = primes[2:12:3]\n" +"> print(\"subset\", subset)\n" +"> ~~~\n" +"> {: .language-python}\n" +">\n" +"> ~~~\n" +"> subset [5, 13, 23, 37]\n" +"> ~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/03-lists.md:427 +msgid ">\n" +"> Use the step size argument to create a new string\n" +"> that contains only every other character in the string\n" +"> \"In an octopus's garden in the shade\"\n" +">\n" +"> ~~~\n" +"> beatles = \"In an octopus's garden in the shade\"\n" +"> ~~~\n" +"> {: .language-python}\n" +">\n" +"> ~~~\n" +"> I notpssgre ntesae\n" +"> ~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/03-lists.md:441 +msgid ">\n" +"> > ## Solution\n" +"> > To obtain every other character you need to provide a slice with the step\n" +"> > size of 2:\n" +"> >\n" +"> > ~~~\n" +"> > beatles[0:35:2]\n" +"> > ~~~\n" +"> > {: .language-python}\n" +"> >\n" +"> > You can also leave out the beginning and end of the slice to take the whole string\n" +"> > and provide only the step argument to go every second\n" +"> > element:\n" +"> >\n" +"> > ~~~\n" +"> > beatles[::2]\n" +"> > ~~~\n" +"> > {: .language-python}" +msgstr "" + +#: python-novice-inflammation/_episodes/03-lists.md:462 +msgid "If you want to take a slice from the beginning of a sequence, you can omit the first index in the\n" +"range:" +msgstr "" + +#: python-novice-inflammation/_episodes/03-lists.md:465 +# code block +msgid "~~~\n" +"date = \"Monday 4 January 2016\"\n" +"day = date[0:6]\n" +"print(\"Using 0 to begin range:\", day)\n" +"day = date[:6]\n" +"print(\"Omitting beginning index:\", day)\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/03-lists.md:474 +# code block +msgid "~~~\n" +"Using 0 to begin range: Monday\n" +"Omitting beginning index: Monday\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/03-lists.md:480 +msgid "And similarly, you can omit the ending index in the range to take a slice to the very end of the\n" +"sequence:" +msgstr "" + +#: python-novice-inflammation/_episodes/03-lists.md:483 +# code block +msgid "~~~\n" +"months = [\"jan\", \"feb\", \"mar\", \"apr\", \"may\", \"jun\", \"jul\", \"aug\", \"sep\", \"oct\", \"nov\", \"dec\"]\n" +"sond = months[8:12]\n" +"print(\"With known last position:\", sond)\n" +"sond = months[8:len(months)]\n" +"print(\"Using len() to get last entry:\", sond)\n" +"sond = months[8:]\n" +"print(\"Omitting ending index:\", sond)\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/03-lists.md:494 +# code block +msgid "~~~\n" +"With known last position: [\"sep\", \"oct\", \"nov\", \"dec\"]\n" +"Using len() to get last entry: [\"sep\", \"oct\", \"nov\", \"dec\"]\n" +"Omitting ending index: [\"sep\", \"oct\", \"nov\", \"dec\"]\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/03-lists.md:501 +# blockquote, which can be cascaded +msgid "> ## Overloading" +msgstr "" + +#: python-novice-inflammation/_episodes/03-lists.md:502 +msgid ">\n" +"> `+` usually means addition, but when used on strings or lists, it means \"concatenate\".\n" +"> Given that, what do you think the multiplication operator `*` does on lists?\n" +"> In particular, what will be the output of the following code?\n" +">\n" +"> ~~~\n" +"> counts = [2, 4, 6, 8, 10]\n" +"> repeats = counts * 2\n" +"> print(repeats)\n" +"> ~~~\n" +"> {: .language-python}\n" +">\n" +"> 1. `[2, 4, 6, 8, 10, 2, 4, 6, 8, 10]`\n" +"> 2. `[4, 8, 12, 16, 20]`\n" +"> 3. `[[2, 4, 6, 8, 10],[2, 4, 6, 8, 10]]`\n" +"> 4. `[2, 4, 6, 8, 10, 4, 8, 12, 16, 20]`\n" +">\n" +"> The technical term for this is *operator overloading*:\n" +"> a single operator, like `+` or `*`,\n" +"> can do different things depending on what it's applied to.\n" +">\n" +"> > ## Solution\n" +"> >\n" +"> > The multiplication operator `*` used on a list replicates elements of the list and concatenates\n" +"> > them together:\n" +"> >\n" +"> > ~~~\n" +"> > [2, 4, 6, 8, 10, 2, 4, 6, 8, 10]\n" +"> > ~~~\n" +"> > {: .output}\n" +"> >\n" +"> > It's equivalent to:\n" +"> >\n" +"> > ~~~\n" +"> > counts + counts\n" +"> > ~~~\n" +"> > {: .language-python}" +msgstr "" + +#: python-novice-inflammation/_episodes/03-lists.md:542 +msgid "[hadleywickham-tweet]: https://twitter.com/hadleywickham/status/643381054758363136" +msgstr "" + +#: python-novice-inflammation/_episodes/04-files.md:1 +# Front Matter +msgid "---\n" +"title: Analyzing Data from Multiple Files\n" +"teaching: 20\n" +"exercises: 0\n" +"questions:\n" +"- \"How can I do the same operations on many different files?\"\n" +"objectives:\n" +"- \"Use a library function to get a list of filenames that match a wildcard pattern.\"\n" +"- \"Write a `for` loop to process multiple files.\"\n" +"keypoints:\n" +"- \"Use `glob.glob(pattern)` to create a list of files whose names match a pattern.\"\n" +"- \"Use `*` in a pattern to match zero or more characters, and `?` to match any single character.\"\n" +"---" +msgstr "" + +#: python-novice-inflammation/_episodes/04-files.md:15 +msgid "We now have almost everything we need to process all our data files.\n" +"The only thing that's missing is a library with a rather unpleasant name:" +msgstr "" + +#: python-novice-inflammation/_episodes/04-files.md:18 +# code block +msgid "~~~\n" +"import glob\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/04-files.md:23 +msgid "The `glob` library contains a function, also called `glob`,\n" +"that finds files and directories whose names match a pattern.\n" +"We provide those patterns as strings:\n" +"the character `*` matches zero or more characters,\n" +"while `?` matches any one character.\n" +"We can use this to get the names of all the CSV files in the current directory:" +msgstr "" + +#: python-novice-inflammation/_episodes/04-files.md:30 +# code block +msgid "~~~\n" +"print(glob.glob('inflammation*.csv'))\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/04-files.md:35 +# code block +msgid "~~~\n" +"['inflammation-05.csv', 'inflammation-11.csv', 'inflammation-12.csv', 'inflammation-08.csv',\n" +"'inflammation-03.csv', 'inflammation-06.csv', 'inflammation-09.csv', 'inflammation-07.csv',\n" +"'inflammation-10.csv', 'inflammation-02.csv', 'inflammation-04.csv', 'inflammation-01.csv']\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/04-files.md:42 +msgid "As these examples show,\n" +"`glob.glob`'s result is a list of file and directory paths in arbitrary order.\n" +"This means we can loop over it\n" +"to do something with each filename in turn.\n" +"In our case,\n" +"the \"something\" we want to do is generate a set of plots for each file in our inflammation dataset.\n" +"If we want to start by analyzing just the first three files in alphabetical order, we can use the\n" +"`sorted` built-in function to generate a new sorted list from the `glob.glob` output:" +msgstr "" + +#: python-novice-inflammation/_episodes/04-files.md:51 +# code block +msgid "~~~\n" +"import numpy\n" +"import matplotlib.pyplot\n" +"\n" +"filenames = sorted(glob.glob('inflammation*.csv'))\n" +"filenames = filenames[0:3]\n" +"for f in filenames:\n" +" print(f)\n" +"\n" +" data = numpy.loadtxt(fname=f, delimiter=',')\n" +"\n" +" fig = matplotlib.pyplot.figure(figsize=(10.0, 3.0))\n" +"\n" +" axes1 = fig.add_subplot(1, 3, 1)\n" +" axes2 = fig.add_subplot(1, 3, 2)\n" +" axes3 = fig.add_subplot(1, 3, 3)\n" +"\n" +" axes1.set_ylabel('average')\n" +" axes1.plot(numpy.mean(data, axis=0))\n" +"\n" +" axes2.set_ylabel('max')\n" +" axes2.plot(numpy.max(data, axis=0))\n" +"\n" +" axes3.set_ylabel('min')\n" +" axes3.plot(numpy.min(data, axis=0))\n" +"\n" +" fig.tight_layout()\n" +" matplotlib.pyplot.show()\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/04-files.md:82 +# code block +msgid "~~~\n" +"inflammation-01.csv\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/04-files.md:87 +msgid "![Analysis of inflammation-01.csv](../fig/03-loop_49_1.png)" +msgstr "" + +#: python-novice-inflammation/_episodes/04-files.md:89 +# code block +msgid "~~~\n" +"inflammation-02.csv\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/04-files.md:94 +msgid "![Analysis of inflammation-02.csv](../fig/03-loop_49_3.png)" +msgstr "" + +#: python-novice-inflammation/_episodes/04-files.md:96 +# code block +msgid "~~~\n" +"inflammation-03.csv\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/04-files.md:101 +msgid "![Analysis of inflammation-03.csv](../fig/03-loop_49_5.png)" +msgstr "" + +#: python-novice-inflammation/_episodes/04-files.md:103 +msgid "Sure enough,\n" +"the maxima of the first two data sets show exactly the same ramp as the first,\n" +"and their minima show the same staircase structure;\n" +"a different situation has been revealed in the third dataset,\n" +"where the maxima are a bit less regular, but the minima are consistently zero." +msgstr "" + +#: python-novice-inflammation/_episodes/04-files.md:109 +# blockquote, which can be cascaded +msgid "> ## Plotting Differences" +msgstr "" + +#: python-novice-inflammation/_episodes/04-files.md:110 +msgid ">\n" +"> Plot the difference between the average of the first dataset\n" +"> and the average of the second dataset,\n" +"> i.e., the difference between the leftmost plot of the first two figures.\n" +">\n" +"> > ## Solution\n" +"> > ~~~\n" +"> > import glob\n" +"> > import numpy\n" +"> > import matplotlib.pyplot\n" +"> >\n" +"> > filenames = sorted(glob.glob('inflammation*.csv'))\n" +"> >\n" +"> > data0 = numpy.loadtxt(fname=filenames[0], delimiter=',')\n" +"> > data1 = numpy.loadtxt(fname=filenames[1], delimiter=',')\n" +"> >\n" +"> > fig = matplotlib.pyplot.figure(figsize=(10.0, 3.0))\n" +"> >\n" +"> > matplotlib.pyplot.ylabel('Difference in average')\n" +"> > matplotlib.pyplot.plot(data0.mean(axis=0) - data1.mean(axis=0))\n" +"> >\n" +"> > fig.tight_layout()\n" +"> > matplotlib.pyplot.show()\n" +"> > ~~~\n" +"> > {: .language-python}" +msgstr "" + +#: python-novice-inflammation/_episodes/04-files.md:138 +# blockquote, which can be cascaded +msgid "> ## Generate Composite Statistics" +msgstr "" + +#: python-novice-inflammation/_episodes/04-files.md:139 +msgid ">\n" +"> Use each of the files once to generate a dataset containing values averaged over all patients:\n" +">\n" +"> ~~~\n" +"> filenames = glob.glob('inflammation*.csv')\n" +"> composite_data = numpy.zeros((60,40))\n" +"> for f in filenames:\n" +"> # sum each new file's data into composite_data as it's read\n" +"> #\n" +"> # and then divide the composite_data by number of samples\n" +"> composite_data /= len(filenames)\n" +"> ~~~\n" +"> {: .language-python}\n" +">\n" +"> Then use pyplot to generate average, max, and min for all patients.\n" +">\n" +"> > ## Solution\n" +"> > ~~~\n" +"> > import glob\n" +"> > import numpy\n" +"> > import matplotlib.pyplot\n" +"> >\n" +"> > filenames = glob.glob('inflammation*.csv')\n" +"> > composite_data = numpy.zeros((60,40))\n" +"> >\n" +"> > for f in filenames:\n" +"> > data = numpy.loadtxt(fname = f, delimiter=',')\n" +"> > composite_data += data\n" +"> >\n" +"> > composite_data/=len(filenames)\n" +"> >\n" +"> > fig = matplotlib.pyplot.figure(figsize=(10.0, 3.0))\n" +"> >\n" +"> > axes1 = fig.add_subplot(1, 3, 1)\n" +"> > axes2 = fig.add_subplot(1, 3, 2)\n" +"> > axes3 = fig.add_subplot(1, 3, 3)\n" +"> >\n" +"> > axes1.set_ylabel('average')\n" +"> > axes1.plot(numpy.mean(composite_data, axis=0))\n" +"> >\n" +"> > axes2.set_ylabel('max')\n" +"> > axes2.plot(numpy.max(composite_data, axis=0))\n" +"> >\n" +"> > axes3.set_ylabel('min')\n" +"> > axes3.plot(numpy.min(composite_data, axis=0))\n" +"> >\n" +"> > fig.tight_layout()\n" +"> >\n" +"> > matplotlib.pyplot.show()\n" +"> > ~~~\n" +"> > {: .language-python}" +msgstr "" + +#: python-novice-inflammation/_episodes/04-files.md:190 +# SC/DC Template label +msgid ">{: .solution}" +msgstr "" + +#: python-novice-inflammation/_episodes/05-cond.md:1 +# Front Matter +msgid "---\n" +"title: Making Choices\n" +"teaching: 30\n" +"exercises: 0\n" +"questions:\n" +"- \"How can my programs do different things based on data values?\"\n" +"objectives:\n" +"- \"Write conditional statements including `if`, `elif`, and `else` branches.\"\n" +"- \"Correctly evaluate expressions containing `and` and `or`.\"\n" +"keypoints:\n" +"- \"Use `if condition` to start a conditional statement, `elif condition` to provide additional tests, and `else` to provide a default.\"\n" +"- \"The bodies of the branches of conditional statements must be indented.\"\n" +"- \"Use `==` to test for equality.\"\n" +"- \"`X and Y` is only true if both `X` and `Y` are true.\"\n" +"- \"`X or Y` is true if either `X` or `Y`, or both, are true.\"\n" +"- \"Zero, the empty string, and the empty list are considered false; all other numbers, strings, and lists are considered true.\"\n" +"- \"`True` and `False` represent truth values.\"\n" +"---" +msgstr "" + +#: python-novice-inflammation/_episodes/05-cond.md:20 +msgid "In our last lesson, we discovered something suspicious was going on\n" +"in our inflammation data by drawing some plots.\n" +"How can we use Python to automatically recognize the different features we saw,\n" +"and take a different action for each? In this lesson, we'll learn how to write code that\n" +"runs only when certain conditions are true." +msgstr "" + +#: python-novice-inflammation/_episodes/05-cond.md:26 +# header +msgid "## Conditionals" +msgstr "" + +#: python-novice-inflammation/_episodes/05-cond.md:28 +msgid "We can ask Python to take different actions, depending on a condition, with an `if` statement:" +msgstr "" + +#: python-novice-inflammation/_episodes/05-cond.md:30 +# code block +msgid "~~~\n" +"num = 37\n" +"if num > 100:\n" +" print('greater')\n" +"else:\n" +" print('not greater')\n" +"print('done')\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/05-cond.md:40 +# code block +msgid "~~~\n" +"not greater\n" +"done\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/05-cond.md:46 +msgid "The second line of this code uses the keyword `if` to tell Python that we want to make a choice.\n" +"If the test that follows the `if` statement is true,\n" +"the body of the `if`\n" +"(i.e., the lines indented underneath it) are executed.\n" +"If the test is false,\n" +"the body of the `else` is executed instead.\n" +"Only one or the other is ever executed:" +msgstr "" + +#: python-novice-inflammation/_episodes/05-cond.md:54 +msgid "![Executing a Conditional](../fig/python-flowchart-conditional.png)" +msgstr "" + +#: python-novice-inflammation/_episodes/05-cond.md:56 +msgid "Conditional statements don't have to include an `else`.\n" +"If there isn't one,\n" +"Python simply does nothing if the test is false:" +msgstr "" + +#: python-novice-inflammation/_episodes/05-cond.md:60 +# code block +msgid "~~~\n" +"num = 53\n" +"print('before conditional...')\n" +"if num > 100:\n" +" print(num,' is greater than 100')\n" +"print('...after conditional')\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/05-cond.md:69 +# code block +msgid "~~~\n" +"before conditional...\n" +"...after conditional\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/05-cond.md:75 +msgid "We can also chain several tests together using `elif`,\n" +"which is short for \"else if\".\n" +"The following Python code uses `elif` to print the sign of a number." +msgstr "" + +#: python-novice-inflammation/_episodes/05-cond.md:79 +# code block +msgid "~~~\n" +"num = -3\n" +"\n" +"if num > 0:\n" +" print(num, 'is positive')\n" +"elif num == 0:\n" +" print(num, 'is zero')\n" +"else:\n" +" print(num, 'is negative')\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/05-cond.md:91 +# code block +msgid "~~~\n" +"\"-3 is negative\"\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/05-cond.md:96 +msgid "Note that to test for equality we use a double equals sign `==`\n" +"rather than a single equals sign `=` which is used to assign values." +msgstr "" + +#: python-novice-inflammation/_episodes/05-cond.md:99 +msgid "We can also combine tests using `and` and `or`.\n" +"`and` is only true if both parts are true:" +msgstr "" + +#: python-novice-inflammation/_episodes/05-cond.md:102 +# code block +msgid "~~~\n" +"if (1 > 0) and (-1 > 0):\n" +" print('both parts are true')\n" +"else:\n" +" print('at least one part is false')\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/05-cond.md:110 +# code block +msgid "~~~\n" +"at least one part is false\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/05-cond.md:115 +msgid "while `or` is true if at least one part is true:" +msgstr "" + +#: python-novice-inflammation/_episodes/05-cond.md:117 +# code block +msgid "~~~\n" +"if (1 < 0) or (-1 < 0):\n" +" print('at least one test is true')\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/05-cond.md:123 +# code block +msgid "~~~\n" +"at least one test is true\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/05-cond.md:128 +# blockquote, which can be cascaded +msgid "> ## `True` and `False`" +msgstr "" + +#: python-novice-inflammation/_episodes/05-cond.md:129 +# blockquote, which can be cascaded +msgid "> `True` and `False` are special words in Python called `booleans`," +msgstr "" + +#: python-novice-inflammation/_episodes/05-cond.md:130 +# blockquote, which can be cascaded +msgid "> which represent truth values. A statement such as `1 < 0` returns" +msgstr "" + +#: python-novice-inflammation/_episodes/05-cond.md:131 +# blockquote, which can be cascaded +msgid "> the value `False`, while `-1 < 0` returns the value `True`." +msgstr "" + +#: python-novice-inflammation/_episodes/05-cond.md:134 +# header +msgid "## Checking our Data" +msgstr "" + +#: python-novice-inflammation/_episodes/05-cond.md:136 +msgid "Now that we've seen how conditionals work,\n" +"we can use them to check for the suspicious features we saw in our inflammation data.\n" +"We are about to use functions provided by the `numpy` module again.\n" +"Therefore, if you're working in a new Python session, make sure to load the \n" +"module with:" +msgstr "" + +#: python-novice-inflammation/_episodes/05-cond.md:147 +msgid "From the first couple of plots, we saw that maximum daily inflammation exhibits\n" +"a strange behavior and raises one unit a day.\n" +"Wouldn't it be a good idea to detect such behavior and report it as suspicious?\n" +"Let's do that! \n" +"However, instead of checking every single day of the study, let's merely check\n" +"if maximum inflammation in the beginning (day 0) and in the middle (day 20) of \n" +"the study are equal to the corresponding day numbers." +msgstr "" + +#: python-novice-inflammation/_episodes/05-cond.md:155 +# code block +msgid "~~~\n" +"max_inflammation_0 = numpy.max(data, axis=0)[0]\n" +"max_inflammation_20 = numpy.max(data, axis=0)[20]\n" +"\n" +"if max_inflammation_0 == 0 and max_inflammation_20 == 20:\n" +" print('Suspicious looking maxima!')\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/05-cond.md:164 +msgid "We also saw a different problem in the third dataset;\n" +"the minima per day were all zero (looks like a healthy person snuck into our study).\n" +"We can also check for this with an `elif` condition:" +msgstr "" + +#: python-novice-inflammation/_episodes/05-cond.md:168 +# code block +msgid "~~~\n" +"elif numpy.sum(numpy.min(data, axis=0)) == 0:\n" +" print('Minima add up to zero!')\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/05-cond.md:174 +msgid "And if neither of these conditions are true, we can use `else` to give the all-clear:" +msgstr "" + +#: python-novice-inflammation/_episodes/05-cond.md:176 +# code block +msgid "~~~\n" +"else:\n" +" print('Seems OK!')\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/05-cond.md:182 +msgid "Let's test that out:" +msgstr "" + +#: python-novice-inflammation/_episodes/05-cond.md:184 +# code block +msgid "~~~\n" +"data = numpy.loadtxt(fname='inflammation-01.csv', delimiter=',')\n" +"\n" +"max_inflammation_0 = numpy.max(data, axis=0)[0]\n" +"max_inflammation_20 = numpy.max(data, axis=0)[20]\n" +"\n" +"if max_inflammation_0 == 0 and max_inflammation_20 == 20:\n" +" print('Suspicious looking maxima!')\n" +"elif numpy.sum(numpy.min(data, axis=0)) == 0:\n" +" print('Minima add up to zero!')\n" +"else:\n" +" print('Seems OK!')\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/05-cond.md:199 +# code block +msgid "~~~\n" +"Suspicious looking maxima!\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/05-cond.md:204 +# code block +msgid "~~~\n" +"data = numpy.loadtxt(fname='inflammation-03.csv', delimiter=',')\n" +"\n" +"max_inflammation_0 = numpy.max(data, axis=0)[0]\n" +"max_inflammation_20 = numpy.max(data, axis=0)[20]\n" +"\n" +"if max_inflammation_0 == 0 and max_inflammation_20 == 20:\n" +" print('Suspicious looking maxima!')\n" +"elif numpy.sum(numpy.min(data, axis=0)) == 0:\n" +" print('Minima add up to zero!')\n" +"else:\n" +" print('Seems OK!')\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/05-cond.md:219 +# code block +msgid "~~~\n" +"Minima add up to zero!\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/05-cond.md:224 +msgid "In this way,\n" +"we have asked Python to do something different depending on the condition of our data.\n" +"Here we printed messages in all cases,\n" +"but we could also imagine not using the `else` catch-all\n" +"so that messages are only printed when something is wrong,\n" +"freeing us from having to manually examine every plot for features we've seen before." +msgstr "" + +#: python-novice-inflammation/_episodes/05-cond.md:231 +# blockquote, which can be cascaded +msgid "> ## How Many Paths?" +msgstr "" + +#: python-novice-inflammation/_episodes/05-cond.md:232 +msgid ">\n" +"> Consider this code:\n" +">\n" +"> ~~~\n" +"> if 4 > 5:\n" +"> print('A')\n" +"> elif 4 == 5:\n" +"> print('B')\n" +"> elif 4 < 5:\n" +"> print('C')\n" +"> ~~~\n" +"> {: .language-python}\n" +">\n" +"> Which of the following would be printed if you were to run this code?\n" +"> Why did you pick this answer?\n" +">\n" +"> 1. A\n" +"> 2. B\n" +"> 3. C\n" +"> 4. B and C\n" +">\n" +"> > ## Solution\n" +"> > C gets printed because the first two conditions, `4 > 5` and `4 == 5`, are not true,\n" +"> > but `4 < 5` is true." +msgstr "" + +#: python-novice-inflammation/_episodes/05-cond.md:259 +# blockquote, which can be cascaded +msgid "> ## What Is Truth?" +msgstr "" + +#: python-novice-inflammation/_episodes/05-cond.md:260 +msgid ">\n" +"> `True` and `False` booleans are not the only values in Python that are true and false.\n" +"> In fact, *any* value can be used in an `if` or `elif`.\n" +"> After reading and running the code below,\n" +"> explain what the rule is for which values are considered true and which are considered false.\n" +">\n" +"> ~~~\n" +"> if '':\n" +"> print('empty string is true')\n" +"> if 'word':\n" +"> print('word is true')\n" +"> if []:\n" +"> print('empty list is true')\n" +"> if [1, 2, 3]:\n" +"> print('non-empty list is true')\n" +"> if 0:\n" +"> print('zero is true')\n" +"> if 1:\n" +"> print('one is true')\n" +"> ~~~\n" +"> {: .language-python}" +msgstr "" + +#: python-novice-inflammation/_episodes/05-cond.md:283 +# blockquote, which can be cascaded +msgid "> ## That's Not Not What I Meant" +msgstr "" + +#: python-novice-inflammation/_episodes/05-cond.md:284 +msgid ">\n" +"> Sometimes it is useful to check whether some condition is not true.\n" +"> The Boolean operator `not` can do this explicitly.\n" +"> After reading and running the code below,\n" +"> write some `if` statements that use `not` to test the rule\n" +"> that you formulated in the previous challenge.\n" +">\n" +"> ~~~\n" +"> if not '':\n" +"> print('empty string is not true')\n" +"> if not 'word':\n" +"> print('word is not true')\n" +"> if not not True:\n" +"> print('not not True is true')\n" +"> ~~~\n" +"> {: .language-python}" +msgstr "" + +#: python-novice-inflammation/_episodes/05-cond.md:302 +# blockquote, which can be cascaded +msgid "> ## Close Enough" +msgstr "" + +#: python-novice-inflammation/_episodes/05-cond.md:303 +msgid ">\n" +"> Write some conditions that print `True` if the variable `a` is within 10% of the variable `b`\n" +"> and `False` otherwise.\n" +"> Compare your implementation with your partner's:\n" +"> do you get the same answer for all possible pairs of numbers?\n" +">\n" +"> > ## Solution 1\n" +"> > ~~~\n" +"> > a = 5\n" +"> > b = 5.1\n" +"> >\n" +"> > if abs(a - b) < 0.1 * abs(b):\n" +"> > print('True')\n" +"> > else:\n" +"> > print('False')\n" +"> > ~~~\n" +"> > {: .language-python}" +msgstr "" + +#: python-novice-inflammation/_episodes/05-cond.md:321 +msgid ">\n" +"> > ## Solution 2\n" +"> > ~~~\n" +"> > print(abs(a - b) < 0.1 * abs(b))\n" +"> > ~~~\n" +"> > {: .language-python}\n" +"> >\n" +"> > This works because the Booleans `True` and `False`\n" +"> > have string representations which can be printed." +msgstr "" + +#: python-novice-inflammation/_episodes/05-cond.md:333 +# blockquote, which can be cascaded +msgid "> ## In-Place Operators" +msgstr "" + +#: python-novice-inflammation/_episodes/05-cond.md:334 +msgid ">\n" +"> Python (and most other languages in the C family) provides\n" +"> [in-place operators]({{ page.root }}/reference/#in-place-operators)\n" +"> that work like this:\n" +">\n" +"> ~~~\n" +"> x = 1 # original value\n" +"> x += 1 # add one to x, assigning result back to x\n" +"> x *= 3 # multiply x by 3\n" +"> print(x)\n" +"> ~~~\n" +"> {: .language-python}\n" +">\n" +"> ~~~\n" +"> 6\n" +"> ~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/05-cond.md:351 +msgid ">\n" +"> Write some code that sums the positive and negative numbers in a list separately,\n" +"> using in-place operators.\n" +"> Do you think the result is more or less readable than writing the same without in-place operators?\n" +">\n" +"> > ## Solution\n" +"> > ~~~\n" +"> > positive_sum = 0\n" +"> > negative_sum = 0\n" +"> > test_list = [3, 4, 6, 1, -1, -5, 0, 7, -8]\n" +"> > for num in test_list:\n" +"> > if num > 0:\n" +"> > positive_sum += num\n" +"> > elif num == 0:\n" +"> > pass\n" +"> > else:\n" +"> > negative_sum += num\n" +"> > print(positive_sum, negative_sum)\n" +"> > ~~~\n" +"> > {: .language-python}\n" +"> >\n" +"> > Here `pass` means \"don't do anything\".\n" +"> In this particular case, it's not actually needed, since if `num == 0` neither\n" +"> > sum needs to change, but it illustrates the use of `elif` and `pass`." +msgstr "" + +#: python-novice-inflammation/_episodes/05-cond.md:378 +# blockquote, which can be cascaded +msgid "> ## Sorting a List Into Buckets" +msgstr "" + +#: python-novice-inflammation/_episodes/05-cond.md:379 +msgid ">\n" +"> In our `data` folder, large data sets are stored in files whose names start with\n" +"> \"inflammation-\" and small data sets -- in files whose names start with \"small-\". We\n" +"> also have some other files that we do not care about at this point. We'd like to break all\n" +"> these files into three lists called `large_files`, `small_files`, and `other_files`,\n" +"> respectively.\n" +">\n" +"> Add code to the template below to do this. Note that the string method\n" +"> [`startswith`](https://docs.python.org/3.5/library/stdtypes.html#str.startswith)\n" +"> returns `True` if and only if the string it is called on starts with the string\n" +"> passed as an argument, that is:\n" +">\n" +"> ~~~\n" +"> \"String\".startswith(\"Str\")\n" +"> ~~~\n" +"> {: .language-python}\n" +"> ~~~\n" +"> True\n" +"> ~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/05-cond.md:399 +# blockquote, which can be cascaded +msgid "> But" +msgstr "" + +#: python-novice-inflammation/_episodes/05-cond.md:401 +# blockquote, which can be cascaded +msgid "> \"String\".startswith(\"str\")" +msgstr "" + +#: python-novice-inflammation/_episodes/05-cond.md:403 +# blockquote, which can be cascaded +msgid "> {: .language-python}" +msgstr "" + +#: python-novice-inflammation/_episodes/05-cond.md:405 +# blockquote, which can be cascaded +msgid "> False" +msgstr "" + +#: python-novice-inflammation/_episodes/05-cond.md:408 +msgid ">Use the following Python code as your starting point:\n" +"> ~~~\n" +"> files = ['inflammation-01.csv', 'myscript.py', 'inflammation-02.csv', 'small-01.csv', 'small-02.csv']\n" +"> large_files = []\n" +"> small_files = []\n" +"> other_files = []\n" +"> ~~~\n" +"> {: .language-python}\n" +">\n" +"> Your solution should:\n" +">\n" +"> 1. loop over the names of the files\n" +"> 2. figure out which group each filename belongs\n" +"> 3. append the filename to that list\n" +">\n" +"> In the end the three lists should be:\n" +">\n" +"> ~~~\n" +"> large_files = ['inflammation-01.csv', 'inflammation-02.csv']\n" +"> small_files = ['small-01.csv', 'small-02.csv']\n" +"> other_files = ['myscript.py']\n" +"> ~~~\n" +"> {: .language-python}\n" +">\n" +"> > ## Solution\n" +"> > ~~~\n" +"> > for file in files:\n" +"> > if file.startswith('inflammation-'):\n" +"> > large_files.append(file)\n" +"> > elif file.startswith('small-'):\n" +"> > small_files.append(file)\n" +"> > else:\n" +"> > other_files.append(file)\n" +"> >\n" +"> > print('large_files:', large_files)\n" +"> > print('small_files:', small_files)\n" +"> > print('other_files:', other_files)\n" +"> > ~~~\n" +"> > {: .language-python}" +msgstr "" + +#: python-novice-inflammation/_episodes/05-cond.md:450 +# blockquote, which can be cascaded +msgid "> ## Counting Vowels" +msgstr "" + +#: python-novice-inflammation/_episodes/05-cond.md:451 +msgid ">\n" +"> 1. Write a loop that counts the number of vowels in a character string.\n" +"> 2. Test it on a few individual words and full sentences.\n" +"> 3. Once you are done, compare your solution to your neighbor's.\n" +"> Did you make the same decisions about how to handle the letter 'y'\n" +"> (which some people think is a vowel, and some do not)?\n" +">\n" +"> > ## Solution\n" +"> > ~~~\n" +"> > vowels = 'aeiouAEIOU'\n" +"> > sentence = 'Mary had a little lamb.'\n" +"> > count = 0\n" +"> > for char in sentence:\n" +"> > if char in vowels:\n" +"> > count += 1\n" +"> >\n" +"> > print(\"The number of vowels in this string is \" + str(count))\n" +"> > ~~~\n" +"> > {: .language-python}" +msgstr "" + +#: python-novice-inflammation/_episodes/06-func.md:1 +# Front Matter +msgid "---\n" +"title: Creating Functions\n" +"teaching: 30\n" +"exercises: 0\n" +"questions:\n" +"- \"How can I define new functions?\"\n" +"- \"What's the difference between defining and calling a function?\"\n" +"- \"What happens when I call a function?\"\n" +"objectives:\n" +"- \"Define a function that takes parameters.\"\n" +"- \"Return a value from a function.\"\n" +"- \"Test and debug a function.\"\n" +"- \"Set default values for function parameters.\"\n" +"- \"Explain why we should divide programs into small, single-purpose functions.\"\n" +"keypoints:\n" +"- \"Define a function using `def function_name(parameter)`.\"\n" +"- \"The body of a function must be indented.\"\n" +"- \"Call a function using `function_name(value)`.\"\n" +"- \"Numbers are stored as integers or floating-point numbers.\"\n" +"- \"Variables defined within a function can only be seen and used within the body of the function.\"\n" +"- \"If a variable is not defined within the function it is used, Python looks for a definition before the function call\"\n" +"- \"Use `help(thing)` to view help for something.\"\n" +"- \"Put docstrings in functions to provide help for that function.\"\n" +"- \"Specify default values for parameters when defining a function using `name=value` in the parameter list.\"\n" +"- \"Parameters can be passed by matching based on name, by position, or by omitting them (in which case the default value is used).\"\n" +"- \"Put code whose parameters change frequently in a function, then call it with different parameter values to customize its behavior.\"\n" +"---" +msgstr "" + +#: python-novice-inflammation/_episodes/06-func.md:29 +msgid "At this point,\n" +"we've written code to draw some interesting features in our inflammation data,\n" +"loop over all our data files to quickly draw these plots for each of them,\n" +"and have Python make decisions based on what it sees in our data.\n" +"But, our code is getting pretty long and complicated;\n" +"what if we had thousands of datasets,\n" +"and didn't want to generate a figure for every single one?\n" +"Commenting out the figure-drawing code is a nuisance.\n" +"Also, what if we want to use that code again,\n" +"on a different dataset or at a different point in our program?\n" +"Cutting and pasting it is going to make our code get very long and very repetitive,\n" +"very quickly.\n" +"We'd like a way to package our code so that it is easier to reuse,\n" +"and Python provides for this by letting us define things called 'functions' ---\n" +"a shorthand way of re-executing longer pieces of code.\n" +"Let's start by defining a function `fahr_to_celsius` that converts temperatures\n" +"from Fahrenheit to Celsius:" +msgstr "" + +#: python-novice-inflammation/_episodes/06-func.md:47 +# code block +msgid "~~~\n" +"def fahr_to_celsius(temp):\n" +" return ((temp - 32) * (5/9))\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/06-func.md:53 +msgid "![The Blueprint for a Python Function](../fig/python-function.svg)" +msgstr "" + +#: python-novice-inflammation/_episodes/06-func.md:56 +msgid "The function definition opens with the keyword `def` followed by the\n" +"name of the function (`fahr_to_celsius`) and a parenthesized list of parameter names (`temp`). The\n" +"[body]({{ page.root }}/reference/#function-body) of the function --- the\n" +"statements that are executed when it runs --- is indented below the\n" +"definition line. The body concludes with a `return` keyword followed by the return value." +msgstr "" + +#: python-novice-inflammation/_episodes/06-func.md:62 +msgid "When we call the function,\n" +"the values we pass to it are assigned to those variables\n" +"so that we can use them inside the function.\n" +"Inside the function,\n" +"we use a [return statement]({{ page.root }}/reference/#return-statement) to send a result\n" +"back to whoever asked for it." +msgstr "" + +#: python-novice-inflammation/_episodes/06-func.md:69 +msgid "Let's try running our function." +msgstr "" + +#: python-novice-inflammation/_episodes/06-func.md:71 +# code block +msgid "~~~\n" +"fahr_to_celsius(32)\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/06-func.md:76 +msgid "This command should call our function, using \"32\" as the input and return the function value." +msgstr "" + +#: python-novice-inflammation/_episodes/06-func.md:78 +msgid "In fact, calling our own function is no different from calling any other function:\n" +"~~~\n" +"print('freezing point of water:', fahr_to_celsius(32), 'C')\n" +"print('boiling point of water:', fahr_to_celsius(212), 'C')\n" +"~~~\n" +"{: .language-python}" +msgstr "" + +#: python-novice-inflammation/_episodes/06-func.md:85 +# code block +msgid "~~~\n" +"freezing point of water: 0.0 C\n" +"boiling point of water: 100.0 C\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/06-func.md:91 +msgid "We've successfully called the function that we defined,\n" +"and we have access to the value that we returned." +msgstr "" + +#: python-novice-inflammation/_episodes/06-func.md:95 +# header +msgid "## Composing Functions" +msgstr "" + +#: python-novice-inflammation/_episodes/06-func.md:97 +msgid "Now that we've seen how to turn Fahrenheit into Celsius,\n" +"we can also write the function to turn Celsius into Kelvin:" +msgstr "" + +#: python-novice-inflammation/_episodes/06-func.md:100 +# code block +msgid "~~~\n" +"def celsius_to_kelvin(temp_c):\n" +" return temp_c + 273.15\n" +"\n" +"print('freezing point of water in Kelvin:', celsius_to_kelvin(0.))\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/06-func.md:108 +# code block +msgid "~~~\n" +"freezing point of water in Kelvin: 273.15\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/06-func.md:113 +msgid "What about converting Fahrenheit to Kelvin?\n" +"We could write out the formula,\n" +"but we don't need to.\n" +"Instead,\n" +"we can [compose]({{ page.root }}/reference/#compose) the two functions we have already created:" +msgstr "" + +#: python-novice-inflammation/_episodes/06-func.md:119 +# code block +msgid "~~~\n" +"def fahr_to_kelvin(temp_f):\n" +" temp_c = fahr_to_celsius(temp_f)\n" +" temp_k = celsius_to_kelvin(temp_c)\n" +" return temp_k\n" +"\n" +"print('boiling point of water in Kelvin:', fahr_to_kelvin(212.0))\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/06-func.md:129 +# code block +msgid "~~~\n" +"boiling point of water in Kelvin: 373.15\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/06-func.md:134 +msgid "This is our first taste of how larger programs are built:\n" +"we define basic operations,\n" +"then combine them in ever-large chunks to get the effect we want.\n" +"Real-life functions will usually be larger than the ones shown here --- typically half a dozen\n" +"to a few dozen lines --- but they shouldn't ever be much longer than that,\n" +"or the next person who reads it won't be able to understand what's going on." +msgstr "" + +#: python-novice-inflammation/_episodes/06-func.md:141 +# header +msgid "## Tidying up" +msgstr "" + +#: python-novice-inflammation/_episodes/06-func.md:143 +msgid "Now that we know how to wrap bits of code up in functions,\n" +"we can make our inflammation analysis easier to read and easier to reuse.\n" +"First, let's make an `analyze` function that generates our plots:" +msgstr "" + +#: python-novice-inflammation/_episodes/06-func.md:147 +# code block +msgid "~~~\n" +"def analyze(filename):\n" +"\n" +" data = numpy.loadtxt(fname=filename, delimiter=',')\n" +"\n" +" fig = matplotlib.pyplot.figure(figsize=(10.0, 3.0))\n" +"\n" +" axes1 = fig.add_subplot(1, 3, 1)\n" +" axes2 = fig.add_subplot(1, 3, 2)\n" +" axes3 = fig.add_subplot(1, 3, 3)\n" +"\n" +" axes1.set_ylabel('average')\n" +" axes1.plot(numpy.mean(data, axis=0))\n" +"\n" +" axes2.set_ylabel('max')\n" +" axes2.plot(numpy.max(data, axis=0))\n" +"\n" +" axes3.set_ylabel('min')\n" +" axes3.plot(numpy.min(data, axis=0))\n" +"\n" +" fig.tight_layout()\n" +" matplotlib.pyplot.show()\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/06-func.md:172 +msgid "and another function called `detect_problems` that checks for those systematics\n" +"we noticed:" +msgstr "" + +#: python-novice-inflammation/_episodes/06-func.md:175 +# code block +msgid "~~~\n" +"def detect_problems(filename):\n" +"\n" +" data = numpy.loadtxt(fname=filename, delimiter=',')\n" +"\n" +" if numpy.max(data, axis=0)[0] == 0 and numpy.max(data, axis=0)[20] == 20:\n" +" print('Suspicious looking maxima!')\n" +" elif numpy.sum(numpy.min(data, axis=0)) == 0:\n" +" print('Minima add up to zero!')\n" +" else:\n" +" print('Seems OK!')\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/06-func.md:189 +msgid "Notice that rather than jumbling this code together in one giant `for` loop,\n" +"we can now read and reuse both ideas separately.\n" +"We can reproduce the previous analysis with a much simpler `for` loop:" +msgstr "" + +#: python-novice-inflammation/_episodes/06-func.md:193 +# code block +msgid "~~~\n" +"filenames = sorted(glob.glob('inflammation*.csv'))\n" +"\n" +"for f in filenames[:3]:\n" +" print(f)\n" +" analyze(f)\n" +" detect_problems(f)\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/06-func.md:203 +msgid "By giving our functions human-readable names,\n" +"we can more easily read and understand what is happening in the `for` loop.\n" +"Even better, if at some later date we want to use either of those pieces of code again,\n" +"we can do so in a single line." +msgstr "" + +#: python-novice-inflammation/_episodes/06-func.md:208 +# header +msgid "## Testing and Documenting" +msgstr "" + +#: python-novice-inflammation/_episodes/06-func.md:210 +msgid "Once we start putting things in functions so that we can re-use them,\n" +"we need to start testing that those functions are working correctly.\n" +"To see how to do this,\n" +"let's write a function to offset a dataset so that it's mean value\n" +"shifts to a user-defined value:" +msgstr "" + +#: python-novice-inflammation/_episodes/06-func.md:216 +# code block +msgid "~~~\n" +"def offset_mean(data, target_mean_value):\n" +" return (data - numpy.mean(data)) + target_mean_value\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/06-func.md:222 +msgid "We could test this on our actual data,\n" +"but since we don't know what the values ought to be,\n" +"it will be hard to tell if the result was correct.\n" +"Instead,\n" +"let's use NumPy to create a matrix of 0's\n" +"and then offset its values to have a mean value of 3:" +msgstr "" + +#: python-novice-inflammation/_episodes/06-func.md:229 +# code block +msgid "~~~\n" +"z = numpy.zeros((2,2))\n" +"print(offset_mean(z, 3))\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/06-func.md:235 +#: python-novice-inflammation/_episodes/06-func.md:456 +# code block +msgid "~~~\n" +"[[ 3. 3.]\n" +" [ 3. 3.]]\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/06-func.md:241 +msgid "That looks right,\n" +"so let's try `offset_mean` on our real data:" +msgstr "" + +#: python-novice-inflammation/_episodes/06-func.md:244 +# code block +msgid "~~~\n" +"data = numpy.loadtxt(fname='inflammation-01.csv', delimiter=',')\n" +"print(offset_mean(data, 0))\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/06-func.md:250 +# code block +msgid "~~~\n" +"[[-6.14875 -6.14875 -5.14875 ..., -3.14875 -6.14875 -6.14875]\n" +" [-6.14875 -5.14875 -4.14875 ..., -5.14875 -6.14875 -5.14875]\n" +" [-6.14875 -5.14875 -5.14875 ..., -4.14875 -5.14875 -5.14875]\n" +" ...,\n" +" [-6.14875 -5.14875 -5.14875 ..., -5.14875 -5.14875 -5.14875]\n" +" [-6.14875 -6.14875 -6.14875 ..., -6.14875 -4.14875 -6.14875]\n" +" [-6.14875 -6.14875 -5.14875 ..., -5.14875 -5.14875 -6.14875]]\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/06-func.md:261 +msgid "It's hard to tell from the default output whether the result is correct,\n" +"but there are a few simple tests that will reassure us:" +msgstr "" + +#: python-novice-inflammation/_episodes/06-func.md:264 +# code block +msgid "~~~\n" +"print('original min, mean, and max are:', numpy.min(data), numpy.mean(data), numpy.max(data))\n" +"offset_data = offset_mean(data, 0)\n" +"print('min, mean, and max of offset data are:',\n" +" numpy.min(offset_data),\n" +" numpy.mean(offset_data),\n" +" numpy.max(offset_data))\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/06-func.md:274 +# code block +msgid "~~~\n" +"original min, mean, and max are: 0.0 6.14875 20.0\n" +"min, mean, and and max of offset data are: -6.14875 2.84217094304e-16 13.85125\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/06-func.md:280 +msgid "That seems almost right:\n" +"the original mean was about 6.1,\n" +"so the lower bound from zero is now about -6.1.\n" +"The mean of the offset data isn't quite zero --- we'll explore why not in the challenges --- but\n" +"it's pretty close.\n" +"We can even go further and check that the standard deviation hasn't changed:" +msgstr "" + +#: python-novice-inflammation/_episodes/06-func.md:287 +# code block +msgid "~~~\n" +"print('std dev before and after:', numpy.std(data), numpy.std(offset_data))\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/06-func.md:292 +# code block +msgid "~~~\n" +"std dev before and after: 4.61383319712 4.61383319712\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/06-func.md:297 +msgid "Those values look the same,\n" +"but we probably wouldn't notice if they were different in the sixth decimal place.\n" +"Let's do this instead:" +msgstr "" + +#: python-novice-inflammation/_episodes/06-func.md:301 +# code block +msgid "~~~\n" +"print('difference in standard deviations before and after:',\n" +" numpy.std(data) - numpy.std(offset_data))\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/06-func.md:307 +# code block +msgid "~~~\n" +"difference in standard deviations before and after: -3.5527136788e-15\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/06-func.md:312 +msgid "Again,\n" +"the difference is very small.\n" +"It's still possible that our function is wrong,\n" +"but it seems unlikely enough that we should probably get back to doing our analysis.\n" +"We have one more task first, though:\n" +"we should write some [documentation]({{ page.root }}/reference/#documentation) for our function\n" +"to remind ourselves later what it's for and how to use it." +msgstr "" + +#: python-novice-inflammation/_episodes/06-func.md:320 +msgid "The usual way to put documentation in software is\n" +"to add [comments]({{ page.root }}/reference/#comment) like this:" +msgstr "" + +#: python-novice-inflammation/_episodes/06-func.md:323 +# code block +msgid "~~~\n" +"# offset_mean(data, target_mean_value):\n" +"# return a new array containing the original data with its mean offset to match the desired value.\n" +"def offset_mean(data, target_mean_value):\n" +" return (data - numpy.mean(data)) + target_mean_value\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/06-func.md:331 +msgid "There's a better way, though.\n" +"If the first thing in a function is a string that isn't assigned to a variable,\n" +"that string is attached to the function as its documentation:" +msgstr "" + +#: python-novice-inflammation/_episodes/06-func.md:335 +# code block +msgid "~~~\n" +"def offset_mean(data, target_mean_value):\n" +" '''Return a new array containing the original data\n" +" with its mean offset to match the desired value.'''\n" +" return (data - numpy.mean(data)) + target_mean_value\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/06-func.md:343 +msgid "This is better because we can now ask Python's built-in help system to show us\n" +"the documentation for the function:" +msgstr "" + +#: python-novice-inflammation/_episodes/06-func.md:346 +# code block +msgid "~~~\n" +"help(offset_mean)\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/06-func.md:351 +# code block +msgid "~~~\n" +"Help on function offset_mean in module __main__:\n" +"\n" +"offset_mean(data, target_mean_value)\n" +" Return a new array containing the original data with its mean offset to match the desired value.\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/06-func.md:359 +msgid "A string like this is called a [docstring]({{ page.root }}/reference/#docstring).\n" +"We don't need to use triple quotes when we write one,\n" +"but if we do,\n" +"we can break the string across multiple lines:" +msgstr "" + +#: python-novice-inflammation/_episodes/06-func.md:364 +# code block +msgid "~~~\n" +"def offset_mean(data, target_mean_value):\n" +" '''Return a new array containing the original data\n" +" with its mean offset to match the desired value.\n" +" Example: offset_mean([1, 2, 3], 0) => [-1, 0, 1]'''\n" +" return (data - numpy.mean(data)) + target_mean_value\n" +"\n" +"help(offset_mean)\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/06-func.md:375 +# code block +msgid "~~~\n" +"Help on function center in module __main__:\n" +"\n" +"offset_mean(data, target_mean_value)\n" +" Return a new array containing the original data with its mean offset to match the desired value.\n" +" Example: offset_mean([1, 2, 3], 0) => [-1, 0, 1]\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/06-func.md:384 +# header +msgid "## Defining Defaults" +msgstr "" + +#: python-novice-inflammation/_episodes/06-func.md:386 +msgid "We have passed parameters to functions in two ways:\n" +"directly, as in `type(data)`,\n" +"and by name, as in `numpy.loadtxt(fname='something.csv', delimiter=',')`.\n" +"In fact,\n" +"we can pass the filename to `loadtxt` without the `fname=`:" +msgstr "" + +#: python-novice-inflammation/_episodes/06-func.md:392 +# code block +msgid "~~~\n" +"numpy.loadtxt('inflammation-01.csv', delimiter=',')\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/06-func.md:408 +msgid "but we still need to say `delimiter=`:" +msgstr "" + +#: python-novice-inflammation/_episodes/06-func.md:410 +#: python-novice-inflammation/_episodes/06-func.md:641 +# code block +msgid "~~~\n" +"numpy.loadtxt('inflammation-01.csv', ',')\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/06-func.md:415 +# code block +msgid "~~~\n" +"---------------------------------------------------------------------------\n" +"TypeError Traceback (most recent call last)\n" +" in ()\n" +"----> 1 numpy.loadtxt('inflammation-01.csv', ',')\n" +"\n" +"/Users/gwilson/anaconda/lib/python2.7/site-packages/numpy/lib/npyio.pyc in loadtxt(fname, dtype, comments, delimiter, converters, skiprows, usecols, unpack, ndmin)\n" +" 775 try:\n" +" 776 # Make sure we're dealing with a proper dtype\n" +"--> 777 dtype = np.dtype(dtype)\n" +" 778 defconv = _getconv(dtype)\n" +" 779\n" +"\n" +"TypeError: data type \",\" not understood\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/06-func.md:432 +msgid "To understand what's going on,\n" +"and make our own functions easier to use,\n" +"let's re-define our `offset_mean` function like this:" +msgstr "" + +#: python-novice-inflammation/_episodes/06-func.md:436 +# code block +msgid "~~~\n" +"def offset_mean(data, target_mean_value=0.0):\n" +" '''Return a new array containing the original data with its mean offset to match the\n" +" desired value (0 by default).\n" +" Example: offset_mean([1, 2, 3], 0) => [-1, 0, 1]'''\n" +" return (data - numpy.mean(data)) + target_mean_value\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/06-func.md:445 +msgid "The key change is that the second parameter is now written `target_mean_value=0.0`\n" +"instead of just `target_mean_value`.\n" +"If we call the function with two arguments,\n" +"it works as it did before:" +msgstr "" + +#: python-novice-inflammation/_episodes/06-func.md:450 +# code block +msgid "~~~\n" +"test_data = numpy.zeros((2, 2))\n" +"print(offset_mean(test_data, 3))\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/06-func.md:462 +msgid "But we can also now call it with just one parameter,\n" +"in which case `target_mean_value` is automatically assigned\n" +"the [default value]({{ page.root }}/reference/#default-value) of 0.0:" +msgstr "" + +#: python-novice-inflammation/_episodes/06-func.md:466 +# code block +msgid "~~~\n" +"more_data = 5 + numpy.zeros((2, 2))\n" +"print('data before mean offset:')\n" +"print(more_data)\n" +"print('offset data:')\n" +"print(offset_mean(more_data))\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/06-func.md:475 +# code block +msgid "~~~\n" +"data before mean offset:\n" +"[[ 5. 5.]\n" +" [ 5. 5.]]\n" +"offset data:\n" +"[[ 0. 0.]\n" +" [ 0. 0.]]\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/06-func.md:485 +msgid "This is handy:\n" +"if we usually want a function to work one way,\n" +"but occasionally need it to do something else,\n" +"we can allow people to pass a parameter when they need to\n" +"but provide a default to make the normal case easier.\n" +"The example below shows how Python matches values to parameters:" +msgstr "" + +#: python-novice-inflammation/_episodes/06-func.md:492 +# code block +msgid "~~~\n" +"def display(a=1, b=2, c=3):\n" +" print('a:', a, 'b:', b, 'c:', c)\n" +"\n" +"print('no parameters:')\n" +"display()\n" +"print('one parameter:')\n" +"display(55)\n" +"print('two parameters:')\n" +"display(55, 66)\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/06-func.md:505 +# code block +msgid "~~~\n" +"no parameters:\n" +"a: 1 b: 2 c: 3\n" +"one parameter:\n" +"a: 55 b: 2 c: 3\n" +"two parameters:\n" +"a: 55 b: 66 c: 3\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/06-func.md:515 +msgid "As this example shows,\n" +"parameters are matched up from left to right,\n" +"and any that haven't been given a value explicitly get their default value.\n" +"We can override this behavior by naming the value as we pass it in:" +msgstr "" + +#: python-novice-inflammation/_episodes/06-func.md:520 +# code block +msgid "~~~\n" +"print('only setting the value of c')\n" +"display(c=77)\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/06-func.md:526 +# code block +msgid "~~~\n" +"only setting the value of c\n" +"a: 1 b: 2 c: 77\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/06-func.md:532 +msgid "With that in hand,\n" +"let's look at the help for `numpy.loadtxt`:" +msgstr "" + +#: python-novice-inflammation/_episodes/06-func.md:535 +# code block +msgid "~~~\n" +"help(numpy.loadtxt)\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/06-func.md:540 +# code block +msgid "~~~\n" +"Help on function loadtxt in module numpy.lib.npyio:\n" +"\n" +"loadtxt(fname, dtype=, comments='#', delimiter=None, converters=None, skiprows=0, usecols=None, unpack=False, ndmin=0)\n" +"\n" +" Load data from a text file.\n" +"\n" +" Each row in the text file must have the same number of values.\n" +"\n" +" Parameters\n" +" ----------\n" +" fname : file or str\n" +" File, filename, or generator to read. If the filename extension is\n" +" ``.gz`` or ``.bz2``, the file is first decompressed. Note that\n" +" generators should return byte strings for Python 3k.\n" +" dtype : data-type, optional\n" +" Data-type of the resulting array; default: float. If this is a\n" +" record data-type, the resulting array will be 1-dimensional, and\n" +" each row will be interpreted as an element of the array. In this\n" +" case, the number of columns used must match the number of fields in\n" +" the data-type.\n" +" comments : str, optional\n" +" The character used to indicate the start of a comment;\n" +" default: '#'.\n" +" delimiter : str, optional\n" +" The string used to separate values. By default, this is any\n" +" whitespace.\n" +" converters : dict, optional\n" +" A dictionary mapping column number to a function that will convert\n" +" that column to a float. E.g., if column 0 is a date string:\n" +" ``converters = {0: datestr2num}``. Converters can also be used to\n" +" provide a default value for missing data (but see also `genfromtxt`):\n" +" ``converters = {3: lambda s: float(s.strip() or 0)}``. Default: None.\n" +" skiprows : int, optional\n" +" Skip the first `skiprows` lines; default: 0.\n" +" usecols : sequence, optional\n" +" Which columns to read, with 0 being the first. For example,\n" +" ``usecols = (1,4,5)`` will extract the 2nd, 5th and 6th columns.\n" +" The default, None, results in all columns being read.\n" +" unpack : bool, optional\n" +" If True, the returned array is transposed, so that arguments may be\n" +" unpacked using ``x, y, z = loadtxt(...)``. When used with a record\n" +" data-type, arrays are returned for each field. Default is False.\n" +" ndmin : int, optional\n" +" The returned array will have at least `ndmin` dimensions.\n" +" Otherwise mono-dimensional axes will be squeezed.\n" +" Legal values: 0 (default), 1 or 2.\n" +" .. versionadded:: 1.6.0\n" +"\n" +" Returns\n" +" -------\n" +" out : ndarray\n" +" Data read from the text file.\n" +"\n" +" See Also\n" +" --------\n" +" load, fromstring, fromregex\n" +" genfromtxt : Load data with missing values handled as specified.\n" +" scipy.io.loadmat : reads MATLAB data files\n" +"\n" +" Notes\n" +" -----\n" +" This function aims to be a fast reader for simply formatted files. The\n" +" `genfromtxt` function provides more sophisticated handling of, e.g.,\n" +" lines with missing values.\n" +"\n" +" Examples\n" +" --------\n" +" >>> from StringIO import StringIO # StringIO behaves like a file object\n" +" >>> c = StringIO(\"0 1\\n2 3\")\n" +" >>> np.loadtxt(c)\n" +" array([[ 0., 1.],\n" +" [ 2., 3.]])\n" +"\n" +" >>> d = StringIO(\"M 21 72\\nF 35 58\")\n" +" >>> np.loadtxt(d, dtype={'names': ('gender', 'age', 'weight'),\n" +" ... 'formats': ('S1', 'i4', 'f4')})\n" +" array([('M', 21, 72.0), ('F', 35, 58.0)],\n" +" dtype=[('gender', '|S1'), ('age', '>> c = StringIO(\"1,0,2\\n3,0,4\")\n" +" >>> x, y = np.loadtxt(c, delimiter=',', usecols=(0, 2), unpack=True)\n" +" >>> x\n" +" array([ 1., 3.])\n" +" >>> y\n" +" array([ 2., 4.])\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/06-func.md:629 +msgid "There's a lot of information here,\n" +"but the most important part is the first couple of lines:" +msgstr "" + +#: python-novice-inflammation/_episodes/06-func.md:632 +# code block +msgid "~~~\n" +"loadtxt(fname, dtype=, comments='#', delimiter=None, converters=None, skiprows=0, usecols=None, unpack=False, ndmin=0)\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/06-func.md:637 +msgid "This tells us that `loadtxt` has one parameter called `fname` that doesn't have a default value,\n" +"and eight others that do.\n" +"If we call the function like this:" +msgstr "" + +#: python-novice-inflammation/_episodes/06-func.md:646 +msgid "then the filename is assigned to `fname` (which is what we want),\n" +"but the delimiter string `','` is assigned to `dtype` rather than `delimiter`,\n" +"because `dtype` is the second parameter in the list. However `','` isn't a known `dtype` so\n" +"our code produced an error message when we tried to run it.\n" +"When we call `loadtxt` we don't have to provide `fname=` for the filename because it's the\n" +"first item in the list, but if we want the `','` to be assigned to the variable `delimiter`,\n" +"we *do* have to provide `delimiter=` for the second parameter since `delimiter` is not\n" +"the second parameter in the list." +msgstr "" + +#: python-novice-inflammation/_episodes/06-func.md:655 +# header +msgid "## Readable functions" +msgstr "" + +#: python-novice-inflammation/_episodes/06-func.md:657 +msgid "Consider these two functions:" +msgstr "" + +#: python-novice-inflammation/_episodes/06-func.md:659 +# code block +msgid "~~~\n" +"def s(p):\n" +" a = 0\n" +" for v in p:\n" +" a += v\n" +" m = a / len(p)\n" +" d = 0\n" +" for v in p:\n" +" d += (v - m) * (v - m)\n" +" return numpy.sqrt(d / (len(p) - 1))\n" +"\n" +"def std_dev(sample):\n" +" sample_sum = 0\n" +" for value in sample:\n" +" sample_sum += value\n" +"\n" +" sample_mean = sample_sum / len(sample)\n" +"\n" +" sum_squared_devs = 0\n" +" for value in sample:\n" +" sum_squared_devs += (value - sample_mean) * (value - sample_mean)\n" +"\n" +" return numpy.sqrt(sum_squared_devs / (len(sample) - 1))\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/06-func.md:685 +msgid "The functions `s` and `std_dev` are computationally equivalent (they\n" +"both calculate the sample standard deviation), but to a human reader,\n" +"they look very different. You probably found `std_dev` much easier to\n" +"read and understand than `s`." +msgstr "" + +#: python-novice-inflammation/_episodes/06-func.md:690 +msgid "As this example illustrates, both documentation and a programmer's\n" +"_coding style_ combine to determine how easy it is for others to read\n" +"and understand the programmer's code. Choosing meaningful variable\n" +"names and using blank spaces to break the code into logical \"chunks\"\n" +"are helpful techniques for producing _readable code_. This is useful\n" +"not only for sharing code with others, but also for the original\n" +"programmer. If you need to revisit code that you wrote months ago and\n" +"haven't thought about since then, you will appreciate the value of\n" +"readable code!" +msgstr "" + +#: python-novice-inflammation/_episodes/06-func.md:700 +# blockquote, which can be cascaded +msgid "> ## Combining Strings" +msgstr "" + +#: python-novice-inflammation/_episodes/06-func.md:701 +msgid ">\n" +"> \"Adding\" two strings produces their concatenation:\n" +"> `'a' + 'b'` is `'ab'`.\n" +"> Write a function called `fence` that takes two parameters called `original` and `wrapper`\n" +"> and returns a new string that has the wrapper character at the beginning and end of the original.\n" +"> A call to your function should look like this:\n" +">\n" +"> ~~~\n" +"> print(fence('name', '*'))\n" +"> ~~~\n" +"> {: .language-python}\n" +">\n" +"> ~~~\n" +"> *name*\n" +"> ~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/06-func.md:717 +msgid ">\n" +"> > ## Solution\n" +"> > ~~~\n" +"> > def fence(original, wrapper):\n" +"> > return wrapper + original + wrapper\n" +"> > ~~~\n" +"> > {: .language-python}" +msgstr "" + +#: python-novice-inflammation/_episodes/06-func.md:727 +# blockquote, which can be cascaded +msgid "> ## Return versus print" +msgstr "" + +#: python-novice-inflammation/_episodes/06-func.md:728 +msgid ">\n" +"> Note that `return` and `print` are not interchangeable.\n" +"> `print` is a Python function that *prints* data to the screen.\n" +"> It enables us, *users*, see the data.\n" +"> `return` statement, on the other hand, makes data visible to the program.\n" +"> Let's have a look at the following function:\n" +">\n" +"> ~~~\n" +"> def add(a, b):\n" +"> print(a + b)\n" +"> ~~~\n" +"> {: .language-python}\n" +">\n" +"> **Question**: What will we see if we execute the following commands?\n" +"> ~~~\n" +"> A = add(7, 3)\n" +"> print(A)\n" +"> ~~~\n" +"> {: .language-python}\n" +">\n" +"> > ## Solution\n" +"> > Python will first execute the function `add` with `a = 7` and `b = 3`,\n" +"> > and, therefore, print `10`. However, because function `add` does not have a\n" +"> > line that starts with `return` (no `return` \"statement\"), it will, by default, return\n" +"> > nothing which, in Python world, is called `None`. Therefore, `A` will be assigned to `None`\n" +"> > and the last line (`print(A)`) will print `None`. As a result, we will see:\n" +"> > ~~~\n" +"> > 10\n" +"> > None\n" +"> > ~~~\n" +"> > {: .output}" +msgstr "" + +#: python-novice-inflammation/_episodes/06-func.md:762 +# blockquote, which can be cascaded +msgid "> ## Selecting Characters From Strings" +msgstr "" + +#: python-novice-inflammation/_episodes/06-func.md:763 +msgid ">\n" +"> If the variable `s` refers to a string,\n" +"> then `s[0]` is the string's first character\n" +"> and `s[-1]` is its last.\n" +"> Write a function called `outer`\n" +"> that returns a string made up of just the first and last characters of its input.\n" +"> A call to your function should look like this:\n" +">\n" +"> ~~~\n" +"> print(outer('helium'))\n" +"> ~~~\n" +"> {: .language-python}\n" +">\n" +"> ~~~\n" +"> hm\n" +"> ~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/06-func.md:780 +msgid ">\n" +"> > ## Solution\n" +"> > ~~~\n" +"> > def outer(input_string):\n" +"> > return input_string[0] + input_string[-1]\n" +"> > ~~~\n" +"> > {: .language-python}" +msgstr "" + +#: python-novice-inflammation/_episodes/06-func.md:790 +# blockquote, which can be cascaded +msgid "> ## Rescaling an Array" +msgstr "" + +#: python-novice-inflammation/_episodes/06-func.md:791 +msgid ">\n" +"> Write a function `rescale` that takes an array as input\n" +"> and returns a corresponding array of values scaled to lie in the range 0.0 to 1.0.\n" +"> (Hint: If `L` and `H` are the lowest and highest values in the original array,\n" +"> then the replacement for a value `v` should be `(v-L) / (H-L)`.)\n" +">\n" +"> > ## Solution\n" +"> > ~~~\n" +"> > def rescale(input_array):\n" +"> > L = numpy.min(input_array)\n" +"> > H = numpy.max(input_array)\n" +"> > output_array = (input_array - L) / (H - L)\n" +"> > return output_array\n" +"> > ~~~\n" +"> > {: .language-python}" +msgstr "" + +#: python-novice-inflammation/_episodes/06-func.md:809 +# blockquote, which can be cascaded +msgid "> ## Testing and Documenting Your Function" +msgstr "" + +#: python-novice-inflammation/_episodes/06-func.md:810 +msgid ">\n" +"> Run the commands `help(numpy.arange)` and `help(numpy.linspace)`\n" +"> to see how to use these functions to generate regularly-spaced values,\n" +"> then use those values to test your `rescale` function.\n" +"> Once you've successfully tested your function,\n" +"> add a docstring that explains what it does.\n" +">\n" +"> > ## Solution\n" +"> > ~~~\n" +"> > '''Takes an array as input, and returns a corresponding array scaled so\n" +"> > that 0 corresponds to the minimum and 1 to the maximum value of the input array.\n" +"> >\n" +"> > Examples:\n" +"> > >>> rescale(numpy.arange(10.0))\n" +"> > array([ 0. , 0.11111111, 0.22222222, 0.33333333, 0.44444444,\n" +"> > 0.55555556, 0.66666667, 0.77777778, 0.88888889, 1. ])\n" +"> > >>> rescale(numpy.linspace(0, 100, 5))\n" +"> > array([ 0. , 0.25, 0.5 , 0.75, 1. ])\n" +"> > '''\n" +"> > ~~~\n" +"> > {: .language-python}" +msgstr "" + +#: python-novice-inflammation/_episodes/06-func.md:834 +# blockquote, which can be cascaded +msgid "> ## Defining Defaults" +msgstr "" + +#: python-novice-inflammation/_episodes/06-func.md:835 +msgid ">\n" +"> Rewrite the `rescale` function so that it scales data to lie between `0.0` and `1.0` by default,\n" +"> but will allow the caller to specify lower and upper bounds if they want.\n" +"> Compare your implementation to your neighbor's:\n" +"> do the two functions always behave the same way?\n" +">\n" +"> > ## Solution\n" +"> > ~~~\n" +"> > def rescale(input_array, low_val=0.0, high_val=1.0):\n" +"> > '''rescales input array values to lie between low_val and high_val'''\n" +"> > L = numpy.min(input_array)\n" +"> > H = numpy.max(input_array)\n" +"> > intermed_array = (input_array - L) / (H - L)\n" +"> > output_array = intermed_array * (high_val - low_val) + low_val\n" +"> > return output_array\n" +"> > ~~~\n" +"> > {: .language-python}" +msgstr "" + +#: python-novice-inflammation/_episodes/06-func.md:855 +# blockquote, which can be cascaded +msgid "> ## Variables Inside and Outside Functions" +msgstr "" + +#: python-novice-inflammation/_episodes/06-func.md:856 +msgid ">\n" +"> What does the following piece of code display when run --- and why?\n" +">\n" +"> ~~~\n" +"> f = 0\n" +"> k = 0\n" +">\n" +"> def f2k(f):\n" +"> k = ((f-32)*(5.0/9.0)) + 273.15\n" +"> return k\n" +">\n" +"> f2k(8)\n" +"> f2k(41)\n" +"> f2k(32)\n" +">\n" +"> print(k)\n" +"> ~~~\n" +"> {: .language-python}\n" +">\n" +"> > ## Solution\n" +"> >\n" +"> > ~~~\n" +"> > 259.81666666666666\n" +"> > 287.15\n" +"> > 273.15\n" +"> > 0\n" +"> > ~~~\n" +"> > {: .output}\n" +"> > `k` is 0 because the `k` inside the function `f2k` doesn't know\n" +"> > about the `k` defined outside the function." +msgstr "" + +#: python-novice-inflammation/_episodes/06-func.md:889 +# blockquote, which can be cascaded +msgid "> ## Mixing Default and Non-Default Parameters" +msgstr "" + +#: python-novice-inflammation/_episodes/06-func.md:890 +msgid ">\n" +"> Given the following code:\n" +">\n" +"> ~~~\n" +"> def numbers(one, two=2, three, four=4):\n" +"> n = str(one) + str(two) + str(three) + str(four)\n" +"> return n\n" +">\n" +"> print(numbers(1, three=3))\n" +"> ~~~\n" +"> {: .language-python}\n" +">\n" +"> what do you expect will be printed? What is actually printed?\n" +"> What rule do you think Python is following?\n" +">\n" +"> 1. `1234`\n" +"> 2. `one2three4`\n" +"> 3. `1239`\n" +"> 4. `SyntaxError`\n" +">\n" +"> Given that, what does the following piece of code display when run?\n" +">\n" +"> ~~~\n" +"> def func(a, b=3, c=6):\n" +"> print('a: ', a, 'b: ', b, 'c:', c)\n" +">\n" +"> func(-1, 2)\n" +"> ~~~\n" +"> {: .language-python}\n" +">\n" +"> 1. `a: b: 3 c: 6`\n" +"> 2. `a: -1 b: 3 c: 6`\n" +"> 3. `a: -1 b: 2 c: 6`\n" +"> 4. `a: b: -1 c: 2`\n" +">\n" +"> > ## Solution\n" +"> > Attempting to define the `numbers` function results in `4. SyntaxError`.\n" +"> > The defined parameters `two` and `four` are given default values. Because\n" +"> > `one` and `three` are not given default values, they are required to be\n" +"> > included as arguments when the function is called and must be placed\n" +"> > before any parameters that have default values in the function definition.\n" +"> >\n" +"> > The given call to `func` displays `a: -1 b: 2 c: 6`. -1 is assigned to\n" +"> > the first parameter `a`, 2 is assigned to the next parameter `b`, and `c` is\n" +"> > not passed a value, so it uses its default value 6." +msgstr "" + +#: python-novice-inflammation/_episodes/06-func.md:938 +# blockquote, which can be cascaded +msgid "> ## The Old Switcheroo" +msgstr "" + +#: python-novice-inflammation/_episodes/06-func.md:939 +msgid ">\n" +"> Consider this code:\n" +">\n" +"> ~~~\n" +"> a = 3\n" +"> b = 7\n" +">\n" +"> def swap(a, b):\n" +"> temp = a\n" +"> a = b\n" +"> b = temp\n" +">\n" +"> swap(a, b)\n" +">\n" +"> print(a, b)\n" +"> ~~~\n" +"> {: .language-python}\n" +">\n" +"> Which of the following would be printed if you were to run this code?\n" +"> Why did you pick this answer?\n" +">\n" +"> 1. `7 3`\n" +"> 2. `3 7`\n" +"> 3. `3 3`\n" +"> 4. `7 7`\n" +">\n" +"> > ## Solution\n" +"> > `3, 7` is correct. Initially `a` has a value of 3 and `b` has a value of 7.\n" +"> > When the swap function is called, it creates local variables (also called\n" +"> > `a` and `b` in this case) and trades their values. The function does not\n" +"> > return any values and does not alter `a` or `b` outside of its local copy.\n" +"> > Therefore the original values of `a` and `b` remain unchanged." +msgstr "" + +#: python-novice-inflammation/_episodes/06-func.md:974 +# blockquote, which can be cascaded +msgid "> ## Readable Code" +msgstr "" + +#: python-novice-inflammation/_episodes/06-func.md:975 +msgid ">\n" +"> Revise a function you wrote for one of the previous exercises to try to make\n" +"> the code more readable. Then, collaborate with one of your neighbors\n" +"> to critique each other's functions and discuss how your function implementations\n" +"> could be further improved to make them more readable." +msgstr "" + +#: python-novice-inflammation/_episodes/07-errors.md:1 +# Front Matter +msgid "---\n" +"title: Errors and Exceptions\n" +"teaching: 30\n" +"exercises: 0\n" +"questions:\n" +"- \"How does Python report errors?\"\n" +"- \"How can I handle errors in Python programs?\"\n" +"objectives:\n" +"- \"To be able to read a traceback, and determine where the error took place and what type it is.\"\n" +"- \"To be able to describe the types of situations in which syntax errors, indentation errors, name errors, index errors, and missing file errors occur.\"\n" +"keypoints:\n" +"- \"Tracebacks can look intimidating, but they give us a lot of useful information about what went wrong in our program, including where the error occurred and what type of error it was.\"\n" +"- \"An error having to do with the 'grammar' or syntax of the program is called a `SyntaxError`. If the issue has to do with how the code is indented, then it will be called an `IndentationError`.\"\n" +"- \"A `NameError` will occur if you use a variable that has not been defined, either because you meant to use quotes around a string, you forgot to define the variable, or you just made a typo.\"\n" +"- \"Containers like lists and strings will generate errors if you try to access items in them that do not exist. This type of error is called an `IndexError`.\"\n" +"- \"Trying to read a file that does not exist will give you an `FileNotFoundError`. Trying to read a file that is open for writing, or writing to a file that is open for reading, will give you an `IOError`.\"\n" +"---" +msgstr "" + +#: python-novice-inflammation/_episodes/07-errors.md:19 +msgid "Every programmer encounters errors,\n" +"both those who are just beginning,\n" +"and those who have been programming for years.\n" +"Encountering errors and exceptions can be very frustrating at times,\n" +"and can make coding feel like a hopeless endeavour.\n" +"However,\n" +"understanding what the different types of errors are\n" +"and when you are likely to encounter them can help a lot.\n" +"Once you know *why* you get certain types of errors,\n" +"they become much easier to fix." +msgstr "" + +#: python-novice-inflammation/_episodes/07-errors.md:30 +msgid "Errors in Python have a very specific form,\n" +"called a [traceback]({{ page.root }}/reference/#traceback).\n" +"Let's examine one:" +msgstr "" + +#: python-novice-inflammation/_episodes/07-errors.md:34 +# code block +msgid "~~~\n" +"# This code has an intentional error. You can type it directly or\n" +"# use it for reference to understand the error message below.\n" +"def favorite_ice_cream():\n" +" ice_creams = [\n" +" \"chocolate\",\n" +" \"vanilla\",\n" +" \"strawberry\"\n" +" ]\n" +" print(ice_creams[3])\n" +"\n" +"favorite_ice_cream()\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/07-errors.md:49 +# code block +msgid "~~~\n" +"---------------------------------------------------------------------------\n" +"IndexError Traceback (most recent call last)\n" +" in ()\n" +" 6 print(ice_creams[3])\n" +" 7\n" +"----> 8 favorite_ice_cream()\n" +"\n" +" in favorite_ice_cream()\n" +" 4 \"vanilla\", \"strawberry\"\n" +" 5 ]\n" +"----> 6 print(ice_creams[3])\n" +" 7\n" +" 8 favorite_ice_cream()\n" +"\n" +"IndexError: list index out of range\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/07-errors.md:68 +msgid "This particular traceback has two levels.\n" +"You can determine the number of levels by looking for the number of arrows on the left hand side.\n" +"In this case:" +msgstr "" + +#: python-novice-inflammation/_episodes/07-errors.md:72 +# ordered list +msgid "1. The first shows code from the cell above," +msgstr "" + +#: python-novice-inflammation/_episodes/07-errors.md:73 +msgid " with an arrow pointing to Line 8 (which is `favorite_ice_cream()`)." +msgstr "" + +#: python-novice-inflammation/_episodes/07-errors.md:75 +# ordered list +msgid "2. The second shows some code in the function `favorite_ice_cream`," +msgstr "" + +#: python-novice-inflammation/_episodes/07-errors.md:76 +msgid " with an arrow pointing to Line 6 (which is `print(ice_creams[3])`)." +msgstr "" + +#: python-novice-inflammation/_episodes/07-errors.md:78 +msgid "The last level is the actual place where the error occurred.\n" +"The other level(s) show what function the program executed to get to the next level down.\n" +"So, in this case, the program first performed a [function call]({{ page.root }}/reference/#function-call) to the function `favorite_ice_cream`.\n" +"Inside this function,\n" +"the program encountered an error on Line 6, when it tried to run the code `print(ice_creams[3])`." +msgstr "" + +#: python-novice-inflammation/_episodes/07-errors.md:84 +# blockquote, which can be cascaded +msgid "> ## Long Tracebacks" +msgstr "" + +#: python-novice-inflammation/_episodes/07-errors.md:85 +msgid ">\n" +"> Sometimes, you might see a traceback that is very long -- sometimes they might even be 20 levels deep!\n" +"> This can make it seem like something horrible happened,\n" +"> but really it just means that your program called many functions before it ran into the error.\n" +"> Most of the time,\n" +"> you can just pay attention to the bottom-most level,\n" +"> which is the actual place where the error occurred." +msgstr "" + +#: python-novice-inflammation/_episodes/07-errors.md:94 +msgid "So what error did the program actually encounter?\n" +"In the last line of the traceback,\n" +"Python helpfully tells us the category or type of error (in this case, it is an `IndexError`)\n" +"and a more detailed error message (in this case, it says \"list index out of range\")." +msgstr "" + +#: python-novice-inflammation/_episodes/07-errors.md:99 +msgid "If you encounter an error and don't know what it means,\n" +"it is still important to read the traceback closely.\n" +"That way,\n" +"if you fix the error,\n" +"but encounter a new one,\n" +"you can tell that the error changed.\n" +"Additionally,\n" +"sometimes just knowing *where* the error occurred is enough to fix it,\n" +"even if you don't entirely understand the message." +msgstr "" + +#: python-novice-inflammation/_episodes/07-errors.md:109 +msgid "If you do encounter an error you don't recognize,\n" +"try looking at the [official documentation on errors](http://docs.python.org/3/library/exceptions.html).\n" +"However,\n" +"note that you may not always be able to find the error there,\n" +"as it is possible to create custom errors.\n" +"In that case,\n" +"hopefully the custom error message is informative enough to help you figure out what went wrong." +msgstr "" + +#: python-novice-inflammation/_episodes/07-errors.md:117 +# header +msgid "## Syntax Errors" +msgstr "" + +#: python-novice-inflammation/_episodes/07-errors.md:119 +msgid "When you forget a colon at the end of a line,\n" +"accidentally add one space too many when indenting under an `if` statement,\n" +"or forget a parenthesis,\n" +"you will encounter a [syntax error]({{ page.root }}/reference/#syntax-error).\n" +"This means that Python couldn't figure out how to read your program.\n" +"This is similar to forgetting punctuation in English:\n" +"for example,\n" +"this text is difficult to read there is no punctuation there is also no capitalization\n" +"why is this hard because you have to figure out where each sentence ends\n" +"you also have to figure out where each sentence begins\n" +"to some extent it might be ambiguous if there should be a sentence break or not" +msgstr "" + +#: python-novice-inflammation/_episodes/07-errors.md:131 +msgid "People can typically figure out what is meant by text with no punctuation,\n" +"but people are much smarter than computers.\n" +"If Python doesn't know how to read the program,\n" +"it will just give up and inform you with an error.\n" +"For example:" +msgstr "" + +#: python-novice-inflammation/_episodes/07-errors.md:137 +# code block +msgid "~~~\n" +"def some_function()\n" +" msg = \"hello, world!\"\n" +" print(msg)\n" +" return msg\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/07-errors.md:145 +# code block +msgid "~~~\n" +" File \"\", line 1\n" +" def some_function()\n" +" ^\n" +"SyntaxError: invalid syntax\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/07-errors.md:153 +msgid "Here, Python tells us that there is a `SyntaxError` on line 1,\n" +"and even puts a little arrow in the place where there is an issue.\n" +"In this case the problem is that the function definition is missing a colon at the end." +msgstr "" + +#: python-novice-inflammation/_episodes/07-errors.md:157 +msgid "Actually, the function above has *two* issues with syntax.\n" +"If we fix the problem with the colon,\n" +"we see that there is *also* an `IndentationError`,\n" +"which means that the lines in the function definition do not all have the same indentation:" +msgstr "" + +#: python-novice-inflammation/_episodes/07-errors.md:162 +# code block +msgid "~~~\n" +"def some_function():\n" +" msg = \"hello, world!\"\n" +" print(msg)\n" +" return msg\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/07-errors.md:170 +# code block +msgid "~~~\n" +" File \"\", line 4\n" +" return msg\n" +" ^\n" +"IndentationError: unexpected indent\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/07-errors.md:178 +msgid "Both `SyntaxError` and `IndentationError` indicate a problem with the syntax of your program,\n" +"but an `IndentationError` is more specific:\n" +"it *always* means that there is a problem with how your code is indented." +msgstr "" + +#: python-novice-inflammation/_episodes/07-errors.md:182 +# blockquote, which can be cascaded +msgid "> ## Tabs and Spaces" +msgstr "" + +#: python-novice-inflammation/_episodes/07-errors.md:183 +msgid ">\n" +"> Some indentation errors are harder to spot than others.\n" +"> In particular, mixing spaces and tabs can be difficult to spot\n" +"> because they are both [whitespace]({{ page.root }}/reference/#whitespace).\n" +"> In the example below, the first two lines in the body of the function\n" +"> `some_function` are indented with tabs, while the third line — with spaces.\n" +"> If you're working in a Jupyter notebook, be sure to copy and paste this example\n" +"> rather than trying to type it in manually because Jupyter automatically replaces\n" +"> tabs with spaces.\n" +">\n" +"> ~~~\n" +"> def some_function():\n" +"> msg = \"hello, world!\"\n" +"> print(msg)\n" +"> return msg\n" +"> ~~~\n" +"> {: .language-python}\n" +">\n" +"> Visually it is impossible to spot the error.\n" +"> Fortunately, Python does not allow you to mix tabs and spaces.\n" +">\n" +"> ~~~\n" +"> File \"\", line 4\n" +"> return msg\n" +"> ^\n" +"> TabError: inconsistent use of tabs and spaces in indentation\n" +"> ~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/07-errors.md:210 +#: python-novice-inflammation/_episodes/07-errors.md:475 +# SC/DC Template label +msgid "> {: .error}" +msgstr "" + +#: python-novice-inflammation/_episodes/07-errors.md:213 +# header +msgid "## Variable Name Errors" +msgstr "" + +#: python-novice-inflammation/_episodes/07-errors.md:215 +msgid "Another very common type of error is called a `NameError`,\n" +"and occurs when you try to use a variable that does not exist.\n" +"For example:" +msgstr "" + +#: python-novice-inflammation/_episodes/07-errors.md:219 +# code block +msgid "~~~\n" +"print(a)\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/07-errors.md:224 +# code block +msgid "~~~\n" +"---------------------------------------------------------------------------\n" +"NameError Traceback (most recent call last)\n" +" in ()\n" +"----> 1 print(a)\n" +"\n" +"NameError: name 'a' is not defined\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/07-errors.md:234 +msgid "Variable name errors come with some of the most informative error messages,\n" +"which are usually of the form \"name 'the_variable_name' is not defined\"." +msgstr "" + +#: python-novice-inflammation/_episodes/07-errors.md:237 +msgid "Why does this error message occur?\n" +"That's a harder question to answer,\n" +"because it depends on what your code is supposed to do.\n" +"However,\n" +"there are a few very common reasons why you might have an undefined variable.\n" +"The first is that you meant to use a [string]({{ page.root }}/reference/#string), but forgot to put quotes around it:" +msgstr "" + +#: python-novice-inflammation/_episodes/07-errors.md:244 +# code block +msgid "~~~\n" +"print(hello)\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/07-errors.md:249 +# code block +msgid "~~~\n" +"---------------------------------------------------------------------------\n" +"NameError Traceback (most recent call last)\n" +" in ()\n" +"----> 1 print(hello)\n" +"\n" +"NameError: name 'hello' is not defined\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/07-errors.md:259 +msgid "The second is that you just forgot to create the variable before using it.\n" +"In the following example,\n" +"`count` should have been defined (e.g., with `count = 0`) before the for loop:" +msgstr "" + +#: python-novice-inflammation/_episodes/07-errors.md:263 +# code block +msgid "~~~\n" +"for number in range(10):\n" +" count = count + number\n" +"print(\"The count is:\", count)\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/07-errors.md:270 +# code block +msgid "~~~\n" +"---------------------------------------------------------------------------\n" +"NameError Traceback (most recent call last)\n" +" in ()\n" +" 1 for number in range(10):\n" +"----> 2 count = count + number\n" +" 3 print(\"The count is:\", count)\n" +"\n" +"NameError: name 'count' is not defined\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/07-errors.md:282 +msgid "Finally, the third possibility is that you made a typo when you were writing your code.\n" +"Let's say we fixed the error above by adding the line `Count = 0` before the for loop.\n" +"Frustratingly, this actually does not fix the error.\n" +"Remember that variables are [case-sensitive]({{ page.root }}/reference/#case-sensitive),\n" +"so the variable `count` is different from `Count`. We still get the same error, because we still have not defined `count`:" +msgstr "" + +#: python-novice-inflammation/_episodes/07-errors.md:288 +# code block +msgid "~~~\n" +"Count = 0\n" +"for number in range(10):\n" +" count = count + number\n" +"print(\"The count is:\", count)\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/07-errors.md:296 +# code block +msgid "~~~\n" +"---------------------------------------------------------------------------\n" +"NameError Traceback (most recent call last)\n" +" in ()\n" +" 1 Count = 0\n" +" 2 for number in range(10):\n" +"----> 3 count = count + number\n" +" 4 print(\"The count is:\", count)\n" +"\n" +"NameError: name 'count' is not defined\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/07-errors.md:309 +# header +msgid "## Index Errors" +msgstr "" + +#: python-novice-inflammation/_episodes/07-errors.md:311 +msgid "Next up are errors having to do with containers (like lists and strings) and the items within them.\n" +"If you try to access an item in a list or a string that does not exist,\n" +"then you will get an error.\n" +"This makes sense:\n" +"if you asked someone what day they would like to get coffee,\n" +"and they answered \"caturday\",\n" +"you might be a bit annoyed.\n" +"Python gets similarly annoyed if you try to ask it for an item that doesn't exist:" +msgstr "" + +#: python-novice-inflammation/_episodes/07-errors.md:320 +# code block +msgid "~~~\n" +"letters = ['a', 'b', 'c']\n" +"print(\"Letter #1 is\", letters[0])\n" +"print(\"Letter #2 is\", letters[1])\n" +"print(\"Letter #3 is\", letters[2])\n" +"print(\"Letter #4 is\", letters[3])\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/07-errors.md:329 +# code block +msgid "~~~\n" +"Letter #1 is a\n" +"Letter #2 is b\n" +"Letter #3 is c\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/07-errors.md:336 +# code block +msgid "~~~\n" +"---------------------------------------------------------------------------\n" +"IndexError Traceback (most recent call last)\n" +" in ()\n" +" 3 print(\"Letter #2 is\", letters[1])\n" +" 4 print(\"Letter #3 is\", letters[2])\n" +"----> 5 print(\"Letter #4 is\", letters[3])\n" +"\n" +"IndexError: list index out of range\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/07-errors.md:348 +msgid "Here,\n" +"Python is telling us that there is an `IndexError` in our code,\n" +"meaning we tried to access a list index that did not exist." +msgstr "" + +#: python-novice-inflammation/_episodes/07-errors.md:352 +# header +msgid "## File Errors" +msgstr "" + +#: python-novice-inflammation/_episodes/07-errors.md:354 +msgid "The last type of error we'll cover today\n" +"are those associated with reading and writing files: `FileNotFoundError`.\n" +"If you try to read a file that does not exist,\n" +"you will receive a `FileNotFoundError` telling you so.\n" +"If you attempt to write to a file that was opened read-only, Python 3\n" +"returns an `UnsupportedOperationError`.\n" +"More generally, problems with input and output manifest as\n" +"`IOError`s or `OSError`s, depending on the version of Python you use." +msgstr "" + +#: python-novice-inflammation/_episodes/07-errors.md:363 +# code block +msgid "~~~\n" +"file_handle = open('myfile.txt', 'r')\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/07-errors.md:368 +# code block +msgid "~~~\n" +"---------------------------------------------------------------------------\n" +"FileNotFoundError Traceback (most recent call last)\n" +" in ()\n" +"----> 1 file_handle = open('myfile.txt', 'r')\n" +"\n" +"FileNotFoundError: [Errno 2] No such file or directory: 'myfile.txt'\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/07-errors.md:378 +msgid "One reason for receiving this error is that you specified an incorrect path to the file.\n" +"For example,\n" +"if I am currently in a folder called `myproject`,\n" +"and I have a file in `myproject/writing/myfile.txt`,\n" +"but I try to just open `myfile.txt`,\n" +"this will fail.\n" +"The correct path would be `writing/myfile.txt`.\n" +"It is also possible (like with `NameError`) that you just made a typo." +msgstr "" + +#: python-novice-inflammation/_episodes/07-errors.md:387 +msgid "A related issue can occur if you use the \"read\" flag instead of the \"write\" flag.\n" +"Python will not give you an error if you try to open a file for writing when the file does not exist.\n" +"However,\n" +"if you meant to open a file for reading,\n" +"but accidentally opened it for writing,\n" +"and then try to read from it,\n" +"you will get an `UnsupportedOperation` error\n" +"telling you that the file was not opened for reading:" +msgstr "" + +#: python-novice-inflammation/_episodes/07-errors.md:396 +# code block +msgid "~~~\n" +"file_handle = open('myfile.txt', 'w')\n" +"file_handle.read()\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/07-errors.md:402 +# code block +msgid "~~~\n" +"---------------------------------------------------------------------------\n" +"UnsupportedOperation Traceback (most recent call last)\n" +" in ()\n" +" 1 file_handle = open('myfile.txt', 'w')\n" +"----> 2 file_handle.read()\n" +"\n" +"UnsupportedOperation: not readable\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/07-errors.md:413 +msgid "These are the most common errors with files,\n" +"though many others exist.\n" +"If you get an error that you've never seen before,\n" +"searching the Internet for that error type\n" +"often reveals common reasons why you might get that error." +msgstr "" + +#: python-novice-inflammation/_episodes/07-errors.md:419 +# blockquote, which can be cascaded +msgid "> ## Reading Error Messages" +msgstr "" + +#: python-novice-inflammation/_episodes/07-errors.md:420 +msgid ">\n" +"> Read the python code and the resulting traceback below, and answer the following questions:\n" +">\n" +"> 1. How many levels does the traceback have?\n" +"> 2. What is the function name where the error occurred?\n" +"> 3. On which line number in this function did the error occurr?\n" +"> 4. What is the type of error?\n" +"> 5. What is the error message?\n" +">\n" +"> ~~~\n" +"> # This code has an intentional error. Do not type it directly;\n" +"> # use it for reference to understand the error message below.\n" +"> def print_message(day):\n" +"> messages = {\n" +"> \"monday\": \"Hello, world!\",\n" +"> \"tuesday\": \"Today is tuesday!\",\n" +"> \"wednesday\": \"It is the middle of the week.\",\n" +"> \"thursday\": \"Today is Donnerstag in German!\",\n" +"> \"friday\": \"Last day of the week!\",\n" +"> \"saturday\": \"Hooray for the weekend!\",\n" +"> \"sunday\": \"Aw, the weekend is almost over.\"\n" +"> }\n" +"> print(messages[day])\n" +">\n" +"> def print_friday_message():\n" +"> print_message(\"Friday\")\n" +">\n" +"> print_friday_message()\n" +"> ~~~\n" +"> {: .language-python}\n" +">\n" +"> ~~~\n" +"> ---------------------------------------------------------------------------\n" +"> KeyError Traceback (most recent call last)\n" +"> in ()\n" +"> 14 print_message(\"Friday\")\n" +"> 15\n" +"> ---> 16 print_friday_message()\n" +">\n" +"> in print_friday_message()\n" +"> 12\n" +"> 13 def print_friday_message():\n" +"> ---> 14 print_message(\"Friday\")\n" +"> 15\n" +"> 16 print_friday_message()\n" +">\n" +"> in print_message(day)\n" +"> 9 \"sunday\": \"Aw, the weekend is almost over.\"\n" +"> 10 }\n" +"> ---> 11 print(messages[day])\n" +"> 12\n" +"> 13 def print_friday_message():\n" +">\n" +"> KeyError: 'Friday'\n" +"> ~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/07-errors.md:476 +msgid ">\n" +"> > ## Solution\n" +"> > 1. 3 levels\n" +"> > 2. `print_message`\n" +"> > 3. 11\n" +"> > 4. `KeyError`\n" +"> > 5. There isn't really a message; you're supposed to infer that `Friday` is not a key in `messages`." +msgstr "" + +#: python-novice-inflammation/_episodes/07-errors.md:486 +# blockquote, which can be cascaded +msgid "> ## Identifying Syntax Errors" +msgstr "" + +#: python-novice-inflammation/_episodes/07-errors.md:487 +msgid ">\n" +"> 1. Read the code below, and (without running it) try to identify what the errors are.\n" +"> 2. Run the code, and read the error message. Is it a `SyntaxError` or an `IndentationError`?\n" +"> 3. Fix the error.\n" +"> 4. Repeat steps 2 and 3, until you have fixed all the errors.\n" +">\n" +"> ~~~\n" +"> def another_function\n" +"> print(\"Syntax errors are annoying.\")\n" +"> print(\"But at least python tells us about them!\")\n" +"> print(\"So they are usually not too hard to fix.\")\n" +"> ~~~\n" +"> {: .language-python}\n" +">\n" +"> > ## Solution\n" +"> > `SyntaxError` for missing `():` at end of first line,\n" +"> `IndentationError` for mismatch between second and third lines.\n" +"> > A fixed version is:\n" +"> >\n" +"> > ~~~\n" +"> > def another_function():\n" +"> > print(\"Syntax errors are annoying.\")\n" +"> > print(\"But at least python tells us about them!\")\n" +"> > print(\"So they are usually not too hard to fix.\")\n" +"> > ~~~\n" +"> > {: .language-python}" +msgstr "" + +#: python-novice-inflammation/_episodes/07-errors.md:516 +# blockquote, which can be cascaded +msgid "> ## Identifying Variable Name Errors" +msgstr "" + +#: python-novice-inflammation/_episodes/07-errors.md:517 +msgid ">\n" +"> 1. Read the code below, and (without running it) try to identify what the errors are.\n" +"> 2. Run the code, and read the error message.\n" +"> What type of `NameError` do you think this is?\n" +"> In other words, is it a string with no quotes,\n" +"> a misspelled variable,\n" +"> or a variable that should have been defined but was not?\n" +"> 3. Fix the error.\n" +"> 4. Repeat steps 2 and 3, until you have fixed all the errors.\n" +">\n" +"> ~~~\n" +"> for number in range(10):\n" +"> # use a if the number is a multiple of 3, otherwise use b\n" +"> if (Number % 3) == 0:\n" +"> message = message + a\n" +"> else:\n" +"> message = message + \"b\"\n" +"> print(message)\n" +"> ~~~\n" +"> {: .language-python}\n" +">\n" +"> > ## Solution\n" +"> > 3 `NameError`s for `number` being misspelled, for `message` not defined, and for `a` not being in quotes.\n" +"> >\n" +"> > Fixed version:\n" +"> >\n" +"> > ~~~\n" +"> > message = \"\"\n" +"> > for number in range(10):\n" +"> > # use a if the number is a multiple of 3, otherwise use b\n" +"> > if (number % 3) == 0:\n" +"> > message = message + \"a\"\n" +"> > else:\n" +"> > message = message + \"b\"\n" +"> > print(message)\n" +"> > ~~~\n" +"> > {: .language-python}" +msgstr "" + +#: python-novice-inflammation/_episodes/07-errors.md:557 +# blockquote, which can be cascaded +msgid "> ## Identifying Index Errors" +msgstr "" + +#: python-novice-inflammation/_episodes/07-errors.md:558 +msgid ">\n" +"> 1. Read the code below, and (without running it) try to identify what the errors are.\n" +"> 2. Run the code, and read the error message. What type of error is it?\n" +"> 3. Fix the error.\n" +">\n" +"> ~~~\n" +"> seasons = ['Spring', 'Summer', 'Fall', 'Winter']\n" +"> print('My favorite season is ', seasons[4])\n" +"> ~~~\n" +"> {: .language-python}\n" +">\n" +"> > ## Solution\n" +"> > `IndexError`; the last entry is `seasons[3]`, so `seasons[4]` doesn't make sense.\n" +"> > A fixed version is:\n" +"> >\n" +"> > ~~~\n" +"> > seasons = ['Spring', 'Summer', 'Fall', 'Winter']\n" +"> > print('My favorite season is ', seasons[-1])\n" +"> > ~~~\n" +"> > {: .language-python}" +msgstr "" + +#: python-novice-inflammation/_episodes/08-defensive.md:1 +# Front Matter +msgid "---\n" +"title: Defensive Programming\n" +"teaching: 30\n" +"exercises: 0\n" +"questions:\n" +"- \"How can I make my programs more reliable?\"\n" +"objectives:\n" +"- \"Explain what an assertion is.\"\n" +"- \"Add assertions that check the program's state is correct.\"\n" +"- \"Correctly add precondition and postcondition assertions to functions.\"\n" +"- \"Explain what test-driven development is, and use it when creating new functions.\"\n" +"- \"Explain why variables should be initialized using actual data values rather than arbitrary constants.\"\n" +"keypoints:\n" +"- \"Program defensively, i.e., assume that errors are going to arise, and write code to detect them when they do.\"\n" +"- \"Put assertions in programs to check their state as they run, and to help readers understand how those programs are supposed to work.\"\n" +"- \"Use preconditions to check that the inputs to a function are safe to use.\"\n" +"- \"Use postconditions to check that the output from a function is safe to use.\"\n" +"- \"Write tests before writing code in order to help determine exactly what that code is supposed to do.\"\n" +"---" +msgstr "" + +#: python-novice-inflammation/_episodes/08-defensive.md:21 +msgid "Our previous lessons have introduced the basic tools of programming:\n" +"variables and lists,\n" +"file I/O,\n" +"loops,\n" +"conditionals,\n" +"and functions.\n" +"What they *haven't* done is show us how to tell\n" +"whether a program is getting the right answer,\n" +"and how to tell if it's *still* getting the right answer\n" +"as we make changes to it." +msgstr "" + +#: python-novice-inflammation/_episodes/08-defensive.md:32 +msgid "To achieve that,\n" +"we need to:" +msgstr "" + +#: python-novice-inflammation/_episodes/08-defensive.md:35 +# unordered list +msgid "* Write programs that check their own operation." +msgstr "" + +#: python-novice-inflammation/_episodes/08-defensive.md:36 +# unordered list +msgid "* Write and run tests for widely-used functions." +msgstr "" + +#: python-novice-inflammation/_episodes/08-defensive.md:37 +# unordered list +msgid "* Make sure we know what \"correct\" actually means." +msgstr "" + +#: python-novice-inflammation/_episodes/08-defensive.md:39 +msgid "The good news is,\n" +"doing these things will speed up our programming,\n" +"not slow it down.\n" +"As in real carpentry --- the kind done with lumber --- the time saved\n" +"by measuring carefully before cutting a piece of wood\n" +"is much greater than the time that measuring takes." +msgstr "" + +#: python-novice-inflammation/_episodes/08-defensive.md:46 +# header +msgid "## Assertions" +msgstr "" + +#: python-novice-inflammation/_episodes/08-defensive.md:48 +msgid "The first step toward getting the right answers from our programs\n" +"is to assume that mistakes *will* happen\n" +"and to guard against them.\n" +"This is called [defensive programming]({{ page.root }}/reference/#defensive-programming),\n" +"and the most common way to do it is to add [assertions]({{ page.root }}/reference/#assertion) to our code\n" +"so that it checks itself as it runs.\n" +"An assertion is simply a statement that something must be true at a certain point in a program.\n" +"When Python sees one,\n" +"it evaluates the assertion's condition.\n" +"If it's true,\n" +"Python does nothing,\n" +"but if it's false,\n" +"Python halts the program immediately\n" +"and prints the error message if one is provided.\n" +"For example,\n" +"this piece of code halts as soon as the loop encounters a value that isn't positive:" +msgstr "" + +#: python-novice-inflammation/_episodes/08-defensive.md:65 +# code block +msgid "~~~\n" +"numbers = [1.5, 2.3, 0.7, -0.001, 4.4]\n" +"total = 0.0\n" +"for n in numbers:\n" +" assert n > 0.0, 'Data should only contain positive values'\n" +" total += n\n" +"print('total is:', total)\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/08-defensive.md:75 +# code block +msgid "~~~\n" +"---------------------------------------------------------------------------\n" +"AssertionError Traceback (most recent call last)\n" +" in ()\n" +" 2 total = 0.0\n" +" 3 for n in numbers:\n" +"----> 4 assert n > 0.0, 'Data should only contain positive values'\n" +" 5 total += n\n" +" 6 print('total is:', total)\n" +"\n" +"AssertionError: Data should only contain positive values\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/08-defensive.md:89 +msgid "Programs like the Firefox browser are full of assertions:\n" +"10-20% of the code they contain\n" +"are there to check that the other 80–90% are working correctly.\n" +"Broadly speaking,\n" +"assertions fall into three categories:" +msgstr "" + +#: python-novice-inflammation/_episodes/08-defensive.md:95 +# unordered list +msgid "* A [precondition]({{ page.root }}/reference/#precondition) is something that must be true at the start of a function in order for it to work correctly." +msgstr "" + +#: python-novice-inflammation/_episodes/08-defensive.md:97 +# unordered list +msgid "* A [postcondition]({{ page.root }}/reference/#postcondition) is something that the function guarantees is true when it finishes." +msgstr "" + +#: python-novice-inflammation/_episodes/08-defensive.md:99 +# unordered list +msgid "* An [invariant]({{ page.root }}/reference/#invariant) is something that is always true at a particular point inside a piece of code." +msgstr "" + +#: python-novice-inflammation/_episodes/08-defensive.md:101 +msgid "For example,\n" +"suppose we are representing rectangles using a [tuple]({{ page.root }}/reference/#tuple) of four coordinates `(x0, y0, x1, y1)`,\n" +"representing the lower left and upper right corners of the rectangle.\n" +"In order to do some calculations,\n" +"we need to normalize the rectangle so that the lower left corner is at the origin\n" +"and the longest side is 1.0 units long.\n" +"This function does that,\n" +"but checks that its input is correctly formatted and that its result makes sense:" +msgstr "" + +#: python-novice-inflammation/_episodes/08-defensive.md:110 +# code block +msgid "~~~\n" +"def normalize_rectangle(rect):\n" +" '''Normalizes a rectangle so that it is at the origin and 1.0 units long on its longest axis.\n" +" Input should be of the format (x0, y0, x1, y1).\n" +" (x0, y0) and (x1, y1) define the lower left and upper right corners of the rectangle, respectively.'''\n" +" assert len(rect) == 4, 'Rectangles must contain 4 coordinates'\n" +" x0, y0, x1, y1 = rect\n" +" assert x0 < x1, 'Invalid X coordinates'\n" +" assert y0 < y1, 'Invalid Y coordinates'\n" +"\n" +" dx = x1 - x0\n" +" dy = y1 - y0\n" +" if dx > dy:\n" +" scaled = float(dx) / dy\n" +" upper_x, upper_y = 1.0, scaled\n" +" else:\n" +" scaled = float(dx) / dy\n" +" upper_x, upper_y = scaled, 1.0\n" +"\n" +" assert 0 < upper_x <= 1.0, 'Calculated upper X coordinate invalid'\n" +" assert 0 < upper_y <= 1.0, 'Calculated upper Y coordinate invalid'\n" +"\n" +" return (0, 0, upper_x, upper_y)\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/08-defensive.md:136 +msgid "The preconditions on lines 3, 5, and 6 catch invalid inputs:" +msgstr "" + +#: python-novice-inflammation/_episodes/08-defensive.md:138 +# code block +msgid "~~~\n" +"print(normalize_rectangle( (0.0, 1.0, 2.0) )) # missing the fourth coordinate\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/08-defensive.md:143 +# code block +msgid "~~~\n" +"---------------------------------------------------------------------------\n" +"AssertionError Traceback (most recent call last)\n" +" in ()\n" +"----> 1 print(normalize_rectangle( (0.0, 1.0, 2.0) )) # missing the fourth coordinate\n" +"\n" +" in normalize_rectangle(rect)\n" +" 1 def normalize_rectangle(rect):\n" +" 2 '''Normalizes a rectangle so that it is at the origin and 1.0 units long on its longest axis.'''\n" +"----> 3 assert len(rect) == 4, 'Rectangles must contain 4 coordinates'\n" +" 4 x0, y0, x1, y1 = rect\n" +" 5 assert x0 < x1, 'Invalid X coordinates'\n" +"\n" +"AssertionError: Rectangles must contain 4 coordinates\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/08-defensive.md:160 +# code block +msgid "~~~\n" +"print(normalize_rectangle( (4.0, 2.0, 1.0, 5.0) )) # X axis inverted\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/08-defensive.md:165 +# code block +msgid "~~~\n" +"---------------------------------------------------------------------------\n" +"AssertionError Traceback (most recent call last)\n" +" in ()\n" +"----> 1 print(normalize_rectangle( (4.0, 2.0, 1.0, 5.0) )) # X axis inverted\n" +"\n" +" in normalize_rectangle(rect)\n" +" 3 assert len(rect) == 4, 'Rectangles must contain 4 coordinates'\n" +" 4 x0, y0, x1, y1 = rect\n" +"----> 5 assert x0 < x1, 'Invalid X coordinates'\n" +" 6 assert y0 < y1, 'Invalid Y coordinates'\n" +" 7\n" +"\n" +"AssertionError: Invalid X coordinates\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/08-defensive.md:182 +msgid "The post-conditions on lines 17 and 18 help us catch bugs by telling us when our calculations cannot have been correct.\n" +"For example,\n" +"if we normalize a rectangle that is taller than it is wide everything seems OK:" +msgstr "" + +#: python-novice-inflammation/_episodes/08-defensive.md:186 +# code block +msgid "~~~\n" +"print(normalize_rectangle( (0.0, 0.0, 1.0, 5.0) ))\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/08-defensive.md:191 +# code block +msgid "~~~\n" +"(0, 0, 0.2, 1.0)\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/08-defensive.md:196 +msgid "but if we normalize one that's wider than it is tall,\n" +"the assertion is triggered:" +msgstr "" + +#: python-novice-inflammation/_episodes/08-defensive.md:199 +# code block +msgid "~~~\n" +"print(normalize_rectangle( (0.0, 0.0, 5.0, 1.0) ))\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/08-defensive.md:204 +# code block +msgid "~~~\n" +"---------------------------------------------------------------------------\n" +"AssertionError Traceback (most recent call last)\n" +" in ()\n" +"----> 1 print(normalize_rectangle( (0.0, 0.0, 5.0, 1.0) ))\n" +"\n" +" in normalize_rectangle(rect)\n" +" 16\n" +" 17 assert 0 < upper_x <= 1.0, 'Calculated upper X coordinate invalid'\n" +"---> 18 assert 0 < upper_y <= 1.0, 'Calculated upper Y coordinate invalid'\n" +" 19\n" +" 20 return (0, 0, upper_x, upper_y)\n" +"\n" +"AssertionError: Calculated upper Y coordinate invalid\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/08-defensive.md:221 +msgid "Re-reading our function,\n" +"we realize that line 11 should divide `dy` by `dx` rather than `dx` by `dy`.\n" +"(You can display line numbers by typing Ctrl-M, then L.)\n" +"If we had left out the assertion at the end of the function,\n" +"we would have created and returned something that had the right shape as a valid answer,\n" +"but wasn't.\n" +"Detecting and debugging that would almost certainly have taken more time in the long run\n" +"than writing the assertion." +msgstr "" + +#: python-novice-inflammation/_episodes/08-defensive.md:230 +msgid "But assertions aren't just about catching errors:\n" +"they also help people understand programs.\n" +"Each assertion gives the person reading the program\n" +"a chance to check (consciously or otherwise)\n" +"that their understanding matches what the code is doing." +msgstr "" + +#: python-novice-inflammation/_episodes/08-defensive.md:236 +msgid "Most good programmers follow two rules when adding assertions to their code.\n" +"The first is, *fail early, fail often*.\n" +"The greater the distance between when and where an error occurs and when it's noticed,\n" +"the harder the error will be to debug,\n" +"so good code catches mistakes as early as possible." +msgstr "" + +#: python-novice-inflammation/_episodes/08-defensive.md:242 +msgid "The second rule is, *turn bugs into assertions or tests*.\n" +"Whenever you fix a bug, write an assertion that catches the mistake\n" +"should you make it again.\n" +"If you made a mistake in a piece of code,\n" +"the odds are good that you have made other mistakes nearby,\n" +"or will make the same mistake (or a related one)\n" +"the next time you change it.\n" +"Writing assertions to check that you haven't [regressed]({{ page.root }}/reference/#regression)\n" +"(i.e., haven't re-introduced an old problem)\n" +"can save a lot of time in the long run,\n" +"and helps to warn people who are reading the code\n" +"(including your future self)\n" +"that this bit is tricky." +msgstr "" + +#: python-novice-inflammation/_episodes/08-defensive.md:256 +# header +msgid "## Test-Driven Development" +msgstr "" + +#: python-novice-inflammation/_episodes/08-defensive.md:258 +msgid "An assertion checks that something is true at a particular point in the program.\n" +"The next step is to check the overall behavior of a piece of code,\n" +"i.e.,\n" +"to make sure that it produces the right output when it's given a particular input.\n" +"For example,\n" +"suppose we need to find where two or more time series overlap.\n" +"The range of each time series is represented as a pair of numbers,\n" +"which are the time the interval started and ended.\n" +"The output is the largest range that they all include:" +msgstr "" + +#: python-novice-inflammation/_episodes/08-defensive.md:268 +msgid "![Overlapping Ranges](../fig/python-overlapping-ranges.svg)" +msgstr "" + +#: python-novice-inflammation/_episodes/08-defensive.md:270 +msgid "Most novice programmers would solve this problem like this:" +msgstr "" + +#: python-novice-inflammation/_episodes/08-defensive.md:272 +# ordered list +msgid "1. Write a function `range_overlap`." +msgstr "" + +#: python-novice-inflammation/_episodes/08-defensive.md:273 +# ordered list +msgid "2. Call it interactively on two or three different inputs." +msgstr "" + +#: python-novice-inflammation/_episodes/08-defensive.md:274 +# ordered list +msgid "3. If it produces the wrong answer, fix the function and re-run that test." +msgstr "" + +#: python-novice-inflammation/_episodes/08-defensive.md:276 +msgid "This clearly works --- after all, thousands of scientists are doing it right now --- but\n" +"there's a better way:" +msgstr "" + +#: python-novice-inflammation/_episodes/08-defensive.md:279 +# ordered list +msgid "1. Write a short function for each test." +msgstr "" + +#: python-novice-inflammation/_episodes/08-defensive.md:280 +# ordered list +msgid "2. Write a `range_overlap` function that should pass those tests." +msgstr "" + +#: python-novice-inflammation/_episodes/08-defensive.md:281 +# ordered list +msgid "3. If `range_overlap` produces any wrong answers, fix it and re-run the test functions." +msgstr "" + +#: python-novice-inflammation/_episodes/08-defensive.md:283 +msgid "Writing the tests *before* writing the function they exercise\n" +"is called [test-driven development]({{ page.root }}/reference/#test-driven-development) (TDD).\n" +"Its advocates believe it produces better code faster because:" +msgstr "" + +#: python-novice-inflammation/_episodes/08-defensive.md:287 +# ordered list +msgid "1. If people write tests after writing the thing to be tested," +msgstr "" + +#: python-novice-inflammation/_episodes/08-defensive.md:288 +msgid " they are subject to confirmation bias,\n" +" i.e.,\n" +" they subconsciously write tests to show that their code is correct,\n" +" rather than to find errors.\n" +"2. Writing tests helps programmers figure out what the function is actually supposed to do." +msgstr "" + +#: python-novice-inflammation/_episodes/08-defensive.md:294 +msgid "Here are three test functions for `range_overlap`:" +msgstr "" + +#: python-novice-inflammation/_episodes/08-defensive.md:296 +# code block +msgid "~~~\n" +"assert range_overlap([ (0.0, 1.0) ]) == (0.0, 1.0)\n" +"assert range_overlap([ (2.0, 3.0), (2.0, 4.0) ]) == (2.0, 3.0)\n" +"assert range_overlap([ (0.0, 1.0), (0.0, 2.0), (-1.0, 1.0) ]) == (0.0, 1.0)\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/08-defensive.md:303 +# code block +msgid "~~~\n" +"---------------------------------------------------------------------------\n" +"AssertionError Traceback (most recent call last)\n" +" in ()\n" +"----> 1 assert range_overlap([ (0.0, 1.0) ]) == (0.0, 1.0)\n" +" 2 assert range_overlap([ (2.0, 3.0), (2.0, 4.0) ]) == (2.0, 3.0)\n" +" 3 assert range_overlap([ (0.0, 1.0), (0.0, 2.0), (-1.0, 1.0) ]) == (0.0, 1.0)\n" +"\n" +"AssertionError:\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/08-defensive.md:315 +msgid "The error is actually reassuring:\n" +"we haven't written `range_overlap` yet,\n" +"so if the tests passed,\n" +"it would be a sign that someone else had\n" +"and that we were accidentally using their function." +msgstr "" + +#: python-novice-inflammation/_episodes/08-defensive.md:321 +msgid "And as a bonus of writing these tests,\n" +"we've implicitly defined what our input and output look like:\n" +"we expect a list of pairs as input,\n" +"and produce a single pair as output." +msgstr "" + +#: python-novice-inflammation/_episodes/08-defensive.md:326 +msgid "Something important is missing, though.\n" +"We don't have any tests for the case where the ranges don't overlap at all:" +msgstr "" + +#: python-novice-inflammation/_episodes/08-defensive.md:329 +# code block +msgid "~~~\n" +"assert range_overlap([ (0.0, 1.0), (5.0, 6.0) ]) == ???\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/08-defensive.md:334 +msgid "What should `range_overlap` do in this case:\n" +"fail with an error message,\n" +"produce a special value like `(0.0, 0.0)` to signal that there's no overlap,\n" +"or something else?\n" +"Any actual implementation of the function will do one of these things;\n" +"writing the tests first helps us figure out which is best\n" +"*before* we're emotionally invested in whatever we happened to write\n" +"before we realized there was an issue." +msgstr "" + +#: python-novice-inflammation/_episodes/08-defensive.md:343 +msgid "And what about this case?" +msgstr "" + +#: python-novice-inflammation/_episodes/08-defensive.md:345 +# code block +msgid "~~~\n" +"assert range_overlap([ (0.0, 1.0), (1.0, 2.0) ]) == ???\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/08-defensive.md:350 +msgid "Do two segments that touch at their endpoints overlap or not?\n" +"Mathematicians usually say \"yes\",\n" +"but engineers usually say \"no\".\n" +"The best answer is \"whatever is most useful in the rest of our program\",\n" +"but again,\n" +"any actual implementation of `range_overlap` is going to do *something*,\n" +"and whatever it is ought to be consistent with what it does when there's no overlap at all." +msgstr "" + +#: python-novice-inflammation/_episodes/08-defensive.md:358 +msgid "Since we're planning to use the range this function returns\n" +"as the X axis in a time series chart,\n" +"we decide that:" +msgstr "" + +#: python-novice-inflammation/_episodes/08-defensive.md:362 +# ordered list +msgid "1. every overlap has to have non-zero width, and" +msgstr "" + +#: python-novice-inflammation/_episodes/08-defensive.md:363 +# ordered list +msgid "2. we will return the special value `None` when there's no overlap." +msgstr "" + +#: python-novice-inflammation/_episodes/08-defensive.md:365 +msgid "`None` is built into Python,\n" +"and means \"nothing here\".\n" +"(Other languages often call the equivalent value `null` or `nil`).\n" +"With that decision made,\n" +"we can finish writing our last two tests:" +msgstr "" + +#: python-novice-inflammation/_episodes/08-defensive.md:371 +# code block +msgid "~~~\n" +"assert range_overlap([ (0.0, 1.0), (5.0, 6.0) ]) == None\n" +"assert range_overlap([ (0.0, 1.0), (1.0, 2.0) ]) == None\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/08-defensive.md:377 +# code block +msgid "~~~\n" +"---------------------------------------------------------------------------\n" +"AssertionError Traceback (most recent call last)\n" +" in ()\n" +"----> 1 assert range_overlap([ (0.0, 1.0), (5.0, 6.0) ]) == None\n" +" 2 assert range_overlap([ (0.0, 1.0), (1.0, 2.0) ]) == None\n" +"\n" +"AssertionError:\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/08-defensive.md:388 +msgid "Again,\n" +"we get an error because we haven't written our function,\n" +"but we're now ready to do so:" +msgstr "" + +#: python-novice-inflammation/_episodes/08-defensive.md:392 +# code block +msgid "~~~\n" +"def range_overlap(ranges):\n" +" '''Return common overlap among a set of [low, high] ranges.'''\n" +" lowest = 0.0\n" +" highest = 1.0\n" +" for (low, high) in ranges:\n" +" lowest = max(lowest, low)\n" +" highest = min(highest, high)\n" +" return (lowest, highest)\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/08-defensive.md:404 +msgid "(Take a moment to think about why we use `max` to raise `lowest`\n" +"and `min` to lower `highest`).\n" +"We'd now like to re-run our tests,\n" +"but they're scattered across three different cells.\n" +"To make running them easier,\n" +"let's put them all in a function:" +msgstr "" + +#: python-novice-inflammation/_episodes/08-defensive.md:411 +# code block +msgid "~~~\n" +"def test_range_overlap():\n" +" assert range_overlap([ (0.0, 1.0), (5.0, 6.0) ]) == None\n" +" assert range_overlap([ (0.0, 1.0), (1.0, 2.0) ]) == None\n" +" assert range_overlap([ (0.0, 1.0) ]) == (0.0, 1.0)\n" +" assert range_overlap([ (2.0, 3.0), (2.0, 4.0) ]) == (2.0, 3.0)\n" +" assert range_overlap([ (0.0, 1.0), (0.0, 2.0), (-1.0, 1.0) ]) == (0.0, 1.0)\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/08-defensive.md:421 +msgid "We can now test `range_overlap` with a single function call:" +msgstr "" + +#: python-novice-inflammation/_episodes/08-defensive.md:423 +# code block +msgid "~~~\n" +"test_range_overlap()\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/08-defensive.md:428 +# code block +msgid "~~~\n" +"---------------------------------------------------------------------------\n" +"AssertionError Traceback (most recent call last)\n" +" in ()\n" +"----> 1 test_range_overlap()\n" +"\n" +" in test_range_overlap()\n" +" 1 def test_range_overlap():\n" +"----> 2 assert range_overlap([ (0.0, 1.0), (5.0, 6.0) ]) == None\n" +" 3 assert range_overlap([ (0.0, 1.0), (1.0, 2.0) ]) == None\n" +" 4 assert range_overlap([ (0.0, 1.0) ]) == (0.0, 1.0)\n" +" 5 assert range_overlap([ (2.0, 3.0), (2.0, 4.0) ]) == (2.0, 3.0)\n" +"\n" +"AssertionError:\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/08-defensive.md:445 +msgid "The first test that was supposed to produce `None` fails,\n" +"so we know something is wrong with our function.\n" +"We *don't* know whether the other tests passed or failed\n" +"because Python halted the program as soon as it spotted the first error.\n" +"Still,\n" +"some information is better than none,\n" +"and if we trace the behavior of the function with that input,\n" +"we realize that we're initializing `lowest` and `highest` to 0.0 and 1.0 respectively,\n" +"regardless of the input values.\n" +"This violates another important rule of programming:\n" +"*always initialize from data*." +msgstr "" + +#: python-novice-inflammation/_episodes/08-defensive.md:457 +# blockquote, which can be cascaded +msgid "> ## Pre- and Post-Conditions" +msgstr "" + +#: python-novice-inflammation/_episodes/08-defensive.md:458 +msgid ">\n" +"> Suppose you are writing a function called `average` that calculates the average of the numbers in a list.\n" +"> What pre-conditions and post-conditions would you write for it?\n" +"> Compare your answer to your neighbor's:\n" +"> can you think of a function that will pass your tests but not his/hers or vice versa?\n" +">\n" +"> > ## Solution\n" +"> > ~~~\n" +"> > # a possible pre-condition:\n" +"> > assert len(input_list) > 0, 'List length must be non-zero'\n" +"> > # a possible post-condition:\n" +"> > assert numpy.min(input_list) <= average <= numpy.max(input_list), 'Average should be between min and max of input values (inclusive)'\n" +"> > ~~~\n" +"> > {: .language-python}" +msgstr "" + +#: python-novice-inflammation/_episodes/08-defensive.md:475 +# blockquote, which can be cascaded +msgid "> ## Testing Assertions" +msgstr "" + +#: python-novice-inflammation/_episodes/08-defensive.md:476 +msgid ">\n" +"> Given a sequence of a number of cars, the function `get_total_cars` returns\n" +"> the total number of cars.\n" +">\n" +"> ~~~\n" +"> get_total_cars([1, 2, 3, 4])\n" +"> ~~~\n" +"> {: .language-python}\n" +">\n" +"> ~~~\n" +"> 10\n" +"> ~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/08-defensive.md:489 +msgid ">\n" +"> ~~~\n" +"> get_total_cars(['a', 'b', 'c'])\n" +"> ~~~\n" +"> {: .language-python}\n" +">\n" +"> ~~~\n" +"> ValueError: invalid literal for int() with base 10: 'a'\n" +"> ~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/08-defensive.md:499 +msgid ">\n" +"> Explain in words what the assertions in this function check,\n" +"> and for each one,\n" +"> give an example of input that will make that assertion fail.\n" +">\n" +"> ~~~\n" +"> def get_total(values):\n" +"> assert len(values) > 0\n" +"> for element in values:\n" +"> assert int(element)\n" +"> values = [int(element) for element in values]\n" +"> total = sum(values)\n" +"> assert total > 0\n" +"> return total\n" +"> ~~~\n" +"> {: .language-python}\n" +">\n" +"> > ## Solution\n" +"> > * The first assertion checks that the input sequence `values` is not empty.\n" +"> > An empty sequence such as `[]` will make it fail.\n" +"> > * The second assertion checks that each value in the list can be turned into an integer.\n" +"> > Input such as `[1, 2,'c', 3]` will make it fail.\n" +"> > * The third assertion checks that the total of the list is greater than 0.\n" +"> > Input such as `[-10, 2, 3]` will make it fail." +msgstr "" + +#: python-novice-inflammation/_episodes/08-defensive.md:526 +# blockquote, which can be cascaded +msgid "> ## Fixing and Testing" +msgstr "" + +#: python-novice-inflammation/_episodes/08-defensive.md:527 +msgid ">\n" +"> Fix `range_overlap`. Re-run `test_range_overlap` after each change you make.\n" +">\n" +"> > ## Solution\n" +"> > ~~~\n" +"> > import numpy\n" +"> >\n" +"> > def range_overlap(ranges):\n" +"> > '''Return common overlap among a set of [low, high] ranges.'''\n" +"> > if not ranges:\n" +"> > # ranges is None or an empty list\n" +"> > return None\n" +"> > lowest, highest = ranges[0]\n" +"> > for (low, high) in ranges[1:]:\n" +"> > lowest = max(lowest, low)\n" +"> > highest = min(highest, high)\n" +"> > if lowest >= highest: # no overlap\n" +"> > return None\n" +"> > else:\n" +"> > return (lowest, highest)\n" +"> > ~~~\n" +"> > {: .language-python}" +msgstr "" + +#: python-novice-inflammation/_episodes/09-debugging.md:1 +# Front Matter +msgid "---\n" +"title: Debugging\n" +"teaching: 30\n" +"exercises: 0\n" +"questions:\n" +"- \"How can I debug my program?\"\n" +"objectives:\n" +"- \"Debug code containing an error systematically.\"\n" +"- \"Identify ways of making code less error-prone and more easily tested.\"\n" +"keypoints:\n" +"- \"Know what code is supposed to do *before* trying to debug it.\"\n" +"- \"Make it fail every time.\"\n" +"- \"Make it fail fast.\"\n" +"- \"Change one thing at a time, and for a reason.\"\n" +"- \"Keep track of what you've done.\"\n" +"- \"Be humble.\"\n" +"---" +msgstr "" + +#: python-novice-inflammation/_episodes/09-debugging.md:19 +msgid "Once testing has uncovered problems,\n" +"the next step is to fix them.\n" +"Many novices do this by making more-or-less random changes to their code\n" +"until it seems to produce the right answer,\n" +"but that's very inefficient\n" +"(and the result is usually only correct for the one case they're testing).\n" +"The more experienced a programmer is,\n" +"the more systematically they debug,\n" +"and most follow some variation on the rules explained below." +msgstr "" + +#: python-novice-inflammation/_episodes/09-debugging.md:29 +# header +msgid "## Know What It's Supposed to Do" +msgstr "" + +#: python-novice-inflammation/_episodes/09-debugging.md:31 +msgid "The first step in debugging something is to\n" +"*know what it's supposed to do*.\n" +"\"My program doesn't work\" isn't good enough:\n" +"in order to diagnose and fix problems,\n" +"we need to be able to tell correct output from incorrect.\n" +"If we can write a test case for the failing case --- i.e.,\n" +"if we can assert that with *these* inputs,\n" +"the function should produce *that* result ---\n" +"then we're ready to start debugging.\n" +"If we can't,\n" +"then we need to figure out how we're going to know when we've fixed things." +msgstr "" + +#: python-novice-inflammation/_episodes/09-debugging.md:43 +msgid "But writing test cases for scientific software is frequently harder than\n" +"writing test cases for commercial applications,\n" +"because if we knew what the output of the scientific code was supposed to be,\n" +"we wouldn't be running the software:\n" +"we'd be writing up our results and moving on to the next program.\n" +"In practice,\n" +"scientists tend to do the following:" +msgstr "" + +#: python-novice-inflammation/_episodes/09-debugging.md:51 +# ordered list +msgid "1. *Test with simplified data.*" +msgstr "" + +#: python-novice-inflammation/_episodes/09-debugging.md:52 +msgid " Before doing statistics on a real data set,\n" +" we should try calculating statistics for a single record,\n" +" for two identical records,\n" +" for two records whose values are one step apart,\n" +" or for some other case where we can calculate the right answer by hand." +msgstr "" + +#: python-novice-inflammation/_episodes/09-debugging.md:58 +# ordered list +msgid "2. *Test a simplified case.*" +msgstr "" + +#: python-novice-inflammation/_episodes/09-debugging.md:59 +msgid " If our program is supposed to simulate\n" +" magnetic eddies in rapidly-rotating blobs of supercooled helium,\n" +" our first test should be a blob of helium that isn't rotating,\n" +" and isn't being subjected to any external electromagnetic fields.\n" +" Similarly,\n" +" if we're looking at the effects of climate change on speciation,\n" +" our first test should hold temperature, precipitation, and other factors constant." +msgstr "" + +#: python-novice-inflammation/_episodes/09-debugging.md:67 +# ordered list +msgid "3. *Compare to an oracle.*" +msgstr "" + +#: python-novice-inflammation/_episodes/09-debugging.md:68 +msgid " A [test oracle]({{ page.root }}/reference/#test-oracle) is something whose results are trusted,\n" +" such as experimental data, an older program, or a human expert.\n" +" We use test oracles to determine if our new program produces the correct results.\n" +" If we have a test oracle,\n" +" we should store its output for particular cases\n" +" so that we can compare it with our new results as often as we like\n" +" without re-running that program." +msgstr "" + +#: python-novice-inflammation/_episodes/09-debugging.md:76 +# ordered list +msgid "4. *Check conservation laws.*" +msgstr "" + +#: python-novice-inflammation/_episodes/09-debugging.md:77 +msgid " Mass, energy, and other quantities are conserved in physical systems,\n" +" so they should be in programs as well.\n" +" Similarly,\n" +" if we are analyzing patient data,\n" +" the number of records should either stay the same or decrease\n" +" as we move from one analysis to the next\n" +" (since we might throw away outliers or records with missing values).\n" +" If \"new\" patients start appearing out of nowhere as we move through our pipeline,\n" +" it's probably a sign that something is wrong." +msgstr "" + +#: python-novice-inflammation/_episodes/09-debugging.md:87 +# ordered list +msgid "5. *Visualize.*" +msgstr "" + +#: python-novice-inflammation/_episodes/09-debugging.md:88 +msgid " Data analysts frequently use simple visualizations to check both\n" +" the science they're doing\n" +" and the correctness of their code\n" +" (just as we did in the [opening lesson]({{ page.root }}/01-numpy/) of this tutorial).\n" +" This should only be used for debugging as a last resort,\n" +" though,\n" +" since it's very hard to compare two visualizations automatically." +msgstr "" + +#: python-novice-inflammation/_episodes/09-debugging.md:96 +# header +msgid "## Make It Fail Every Time" +msgstr "" + +#: python-novice-inflammation/_episodes/09-debugging.md:98 +msgid "We can only debug something when it fails,\n" +"so the second step is always to find a test case that\n" +"*makes it fail every time*.\n" +"The \"every time\" part is important because\n" +"few things are more frustrating than debugging an intermittent problem:\n" +"if we have to call a function a dozen times to get a single failure,\n" +"the odds are good that we'll scroll past the failure when it actually occurs." +msgstr "" + +#: python-novice-inflammation/_episodes/09-debugging.md:106 +msgid "As part of this,\n" +"it's always important to check that our code is \"plugged in\",\n" +"i.e.,\n" +"that we're actually exercising the problem that we think we are.\n" +"Every programmer has spent hours chasing a bug,\n" +"only to realize that they were actually calling their code on the wrong data set\n" +"or with the wrong configuration parameters,\n" +"or are using the wrong version of the software entirely.\n" +"Mistakes like these are particularly likely to happen when we're tired,\n" +"frustrated,\n" +"and up against a deadline,\n" +"which is one of the reasons late-night (or overnight) coding sessions\n" +"are almost never worthwhile." +msgstr "" + +#: python-novice-inflammation/_episodes/09-debugging.md:120 +# header +msgid "## Make It Fail Fast" +msgstr "" + +#: python-novice-inflammation/_episodes/09-debugging.md:122 +msgid "If it takes 20 minutes for the bug to surface,\n" +"we can only do three experiments an hour.\n" +"That doesn't just mean we'll get less data in more time:\n" +"we're also more likely to be distracted by other things as we wait for our program to fail,\n" +"which means the time we *are* spending on the problem is less focused.\n" +"It's therefore critical to *make it fail fast*." +msgstr "" + +#: python-novice-inflammation/_episodes/09-debugging.md:129 +msgid "As well as making the program fail fast in time,\n" +"we want to make it fail fast in space,\n" +"i.e.,\n" +"we want to localize the failure to the smallest possible region of code:" +msgstr "" + +#: python-novice-inflammation/_episodes/09-debugging.md:134 +# ordered list +msgid "1. The smaller the gap between cause and effect," +msgstr "" + +#: python-novice-inflammation/_episodes/09-debugging.md:135 +msgid " the easier the connection is to find.\n" +" Many programmers therefore use a divide and conquer strategy to find bugs,\n" +" i.e.,\n" +" if the output of a function is wrong,\n" +" they check whether things are OK in the middle,\n" +" then concentrate on either the first or second half,\n" +" and so on." +msgstr "" + +#: python-novice-inflammation/_episodes/09-debugging.md:143 +# ordered list +msgid "2. N things can interact in N2 different ways," +msgstr "" + +#: python-novice-inflammation/_episodes/09-debugging.md:144 +msgid " so every line of code that *isn't* run as part of a test\n" +" means more than one thing we don't need to worry about." +msgstr "" + +#: python-novice-inflammation/_episodes/09-debugging.md:147 +# header +msgid "## Change One Thing at a Time, For a Reason" +msgstr "" + +#: python-novice-inflammation/_episodes/09-debugging.md:149 +msgid "Replacing random chunks of code is unlikely to do much good.\n" +"(After all,\n" +"if you got it wrong the first time,\n" +"you'll probably get it wrong the second and third as well.)\n" +"Good programmers therefore\n" +"*change one thing at a time, for a reason*.\n" +"They are either trying to gather more information\n" +"(\"is the bug still there if we change the order of the loops?\")\n" +"or test a fix\n" +"(\"can we make the bug go away by sorting our data before processing it?\")." +msgstr "" + +#: python-novice-inflammation/_episodes/09-debugging.md:160 +msgid "Every time we make a change,\n" +"however small,\n" +"we should re-run our tests immediately,\n" +"because the more things we change at once,\n" +"the harder it is to know what's responsible for what\n" +"(those N2 interactions again).\n" +"And we should re-run *all* of our tests:\n" +"more than half of fixes made to code introduce (or re-introduce) bugs,\n" +"so re-running all of our tests tells us whether we have regressed." +msgstr "" + +#: python-novice-inflammation/_episodes/09-debugging.md:170 +# header +msgid "## Keep Track of What You've Done" +msgstr "" + +#: python-novice-inflammation/_episodes/09-debugging.md:172 +msgid "Good scientists keep track of what they've done\n" +"so that they can reproduce their work,\n" +"and so that they don't waste time repeating the same experiments\n" +"or running ones whose results won't be interesting.\n" +"Similarly,\n" +"debugging works best when we\n" +"*keep track of what we've done*\n" +"and how well it worked.\n" +"If we find ourselves asking,\n" +"\"Did left followed by right with an odd number of lines cause the crash?\n" +"Or was it right followed by left?\n" +"Or was I using an even number of lines?\"\n" +"then it's time to step away from the computer,\n" +"take a deep breath,\n" +"and start working more systematically." +msgstr "" + +#: python-novice-inflammation/_episodes/09-debugging.md:188 +msgid "Records are particularly useful when the time comes to ask for help.\n" +"People are more likely to listen to us\n" +"when we can explain clearly what we did,\n" +"and we're better able to give them the information they need to be useful." +msgstr "" + +#: python-novice-inflammation/_episodes/09-debugging.md:193 +# blockquote, which can be cascaded +msgid "> ## Version Control Revisited" +msgstr "" + +#: python-novice-inflammation/_episodes/09-debugging.md:194 +msgid ">\n" +"> Version control is often used to reset software to a known state during debugging,\n" +"> and to explore recent changes to code that might be responsible for bugs.\n" +"> In particular,\n" +"> most version control systems have a `blame` command\n" +"> that will show who last changed particular lines of code..." +msgstr "" + +#: python-novice-inflammation/_episodes/09-debugging.md:202 +# header +msgid "## Be Humble" +msgstr "" + +#: python-novice-inflammation/_episodes/09-debugging.md:204 +msgid "And speaking of help:\n" +"if we can't find a bug in 10 minutes,\n" +"we should *be humble* and ask for help.\n" +"Just explaining the problem aloud is often useful,\n" +"since hearing what we're thinking helps us spot inconsistencies and hidden assumptions." +msgstr "" + +#: python-novice-inflammation/_episodes/09-debugging.md:210 +msgid "Asking for help also helps alleviate confirmation bias.\n" +"If we have just spent an hour writing a complicated program,\n" +"we want it to work,\n" +"so we're likely to keep telling ourselves why it should,\n" +"rather than searching for the reason it doesn't.\n" +"People who aren't emotionally invested in the code can be more objective,\n" +"which is why they're often able to spot the simple mistakes we have overlooked." +msgstr "" + +#: python-novice-inflammation/_episodes/09-debugging.md:218 +msgid "Part of being humble is learning from our mistakes.\n" +"Programmers tend to get the same things wrong over and over:\n" +"either they don't understand the language and libraries they're working with,\n" +"or their model of how things work is wrong.\n" +"In either case,\n" +"taking note of why the error occurred\n" +"and checking for it next time\n" +"quickly turns into not making the mistake at all." +msgstr "" + +#: python-novice-inflammation/_episodes/09-debugging.md:227 +msgid "And that is what makes us most productive in the long run.\n" +"As the saying goes,\n" +"*A week of hard work can sometimes save you an hour of thought*.\n" +"If we train ourselves to avoid making some kinds of mistakes,\n" +"to break our code into modular, testable chunks,\n" +"and to turn every assumption (or mistake) into an assertion,\n" +"it will actually take us *less* time to produce working programs,\n" +"not more." +msgstr "" + +#: python-novice-inflammation/_episodes/09-debugging.md:236 +# blockquote, which can be cascaded +msgid "> ## Debug With a Neighbor" +msgstr "" + +#: python-novice-inflammation/_episodes/09-debugging.md:237 +msgid ">\n" +"> Take a function that you have written today, and introduce a tricky bug.\n" +"> Your function should still run, but will give the wrong output.\n" +"> Switch seats with your neighbor and attempt to debug\n" +"> the bug that they introduced into their function.\n" +"> Which of the principles discussed above did you find helpful?" +msgstr "" + +#: python-novice-inflammation/_episodes/09-debugging.md:245 +# blockquote, which can be cascaded +msgid "> ## Not Supposed to be the Same" +msgstr "" + +#: python-novice-inflammation/_episodes/09-debugging.md:246 +msgid ">\n" +"> You are assisting a researcher with Python code that computes the\n" +"> Body Mass Index (BMI) of patients. The researcher is concerned because\n" +"> all patients seemingly have unusual and identical BMIs, despite having different\n" +"> physiques. BMI is calculated as **weight in kilograms**\n" +"> divided by the square of **height in metres**.\n" +">\n" +"> Use the debugging principles in this exercise and locate problems\n" +"> with the code. What suggestions would you give the researcher for\n" +"> ensuring any later changes they make work correctly?\n" +">\n" +"> ~~~\n" +"> patients = [[70, 1.8], [80, 1.9], [150, 1.7]]\n" +">\n" +"> def calculate_bmi(weight, height):\n" +"> return weight / (height ** 2)\n" +">\n" +"> for patient in patients:\n" +"> weight, height = patients[0]\n" +"> bmi = calculate_bmi(height, weight)\n" +"> print(\"Patient's BMI is: %f\" % bmi)\n" +"> ~~~\n" +"> {: .language-python}\n" +">\n" +"> ~~~\n" +"> Patient's BMI is: 0.000367\n" +"> Patient's BMI is: 0.000367\n" +"> Patient's BMI is: 0.000367\n" +"> ~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/09-debugging.md:276 +msgid ">\n" +"> > ## Solution\n" +"> > * The loop is not being utilised correctly. `height` and `weight` are always\n" +"> > set as the first patient's data during each iteration of the loop.\n" +"> >\n" +"> > * The height/weight variables are reversed in the function call to\n" +"> > `calculate_bmi(...)`, the correct BMIs are 21.604938, 22.160665 and 51.903114." +msgstr "" + +#: python-novice-inflammation/_episodes/10-cmdline.md:1 +# Front Matter +msgid "---\n" +"title: Command-Line Programs\n" +"teaching: 30\n" +"exercises: 0\n" +"questions:\n" +"- \"How can I write Python programs that will work like Unix command-line tools?\"\n" +"objectives:\n" +"- \"Use the values of command-line arguments in a program.\"\n" +"- \"Handle flags and files separately in a command-line program.\"\n" +"- \"Read data from standard input in a program so that it can be used in a pipeline.\"\n" +"keypoints:\n" +"- \"The `sys` library connects a Python program to the system it is running on.\"\n" +"- \"The list `sys.argv` contains the command-line arguments that a program was run with.\"\n" +"- \"Avoid silent failures.\"\n" +"- \"The pseudo-file `sys.stdin` connects to a program's standard input.\"\n" +"- \"The pseudo-file `sys.stdout` connects to a program's standard output.\"\n" +"---" +msgstr "" + +#: python-novice-inflammation/_episodes/10-cmdline.md:19 +msgid "The Jupyter Notebook and other interactive tools are great for prototyping code and exploring data,\n" +"but sooner or later we will want to use our program in a pipeline\n" +"or run it in a shell script to process thousands of data files.\n" +"In order to do that,\n" +"we need to make our programs work like other Unix command-line tools.\n" +"For example,\n" +"we may want a program that reads a dataset\n" +"and prints the average inflammation per patient." +msgstr "" + +#: python-novice-inflammation/_episodes/10-cmdline.md:28 +# blockquote, which can be cascaded +msgid "> ## Switching to Shell Commands" +msgstr "" + +#: python-novice-inflammation/_episodes/10-cmdline.md:29 +msgid ">\n" +"> In this lesson we are switching from typing commands in a Python interpreter to typing\n" +"> commands in a shell terminal window (such as bash). When you see a `$` in front of a\n" +"> command that tells you to run that command in the shell rather than the Python interpreter." +msgstr "" + +#: python-novice-inflammation/_episodes/10-cmdline.md:35 +msgid "This program does exactly what we want - it prints the average inflammation per patient\n" +"for a given file." +msgstr "" + +#: python-novice-inflammation/_episodes/10-cmdline.md:38 +# code block +msgid "~~~\n" +"$ python ../code/readings_04.py --mean inflammation-01.csv\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/10-cmdline.md:41 +#: python-novice-inflammation/_episodes/10-cmdline.md:59 +#: python-novice-inflammation/_episodes/10-cmdline.md:66 +#: python-novice-inflammation/_episodes/10-cmdline.md:101 +#: python-novice-inflammation/_episodes/10-cmdline.md:127 +#: python-novice-inflammation/_episodes/10-cmdline.md:141 +#: python-novice-inflammation/_episodes/10-cmdline.md:160 +#: python-novice-inflammation/_episodes/10-cmdline.md:183 +#: python-novice-inflammation/_episodes/10-cmdline.md:192 +#: python-novice-inflammation/_episodes/10-cmdline.md:215 +#: python-novice-inflammation/_episodes/10-cmdline.md:333 +#: python-novice-inflammation/_episodes/10-cmdline.md:343 +#: python-novice-inflammation/_episodes/10-cmdline.md:354 +#: python-novice-inflammation/_episodes/10-cmdline.md:392 +#: python-novice-inflammation/_episodes/10-cmdline.md:415 +#: python-novice-inflammation/_episodes/10-cmdline.md:448 +#: python-novice-inflammation/_episodes/10-cmdline.md:482 +#: python-novice-inflammation/_episodes/10-cmdline.md:511 +#: python-novice-inflammation/_episodes/10-cmdline.md:558 +#: python-novice-inflammation/_episodes/10-cmdline.md:581 +#: python-novice-inflammation/_episodes/10-cmdline.md:593 +#: python-novice-inflammation/_episodes/10-cmdline.md:613 +#: python-novice-inflammation/_episodes/10-cmdline.md:654 +msgid "{: .language-bash}" +msgstr "" + +#: python-novice-inflammation/_episodes/10-cmdline.md:43 +# code block +msgid "~~~\n" +"5.45\n" +"5.425\n" +"6.1\n" +"...\n" +"6.4\n" +"7.05\n" +"5.9\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/10-cmdline.md:54 +msgid "We might also want to look at the minimum of the first four lines" +msgstr "" + +#: python-novice-inflammation/_episodes/10-cmdline.md:56 +# code block +msgid "~~~\n" +"$ head -4 inflammation-01.csv | python ../code/readings_06.py --min\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/10-cmdline.md:61 +msgid "or the maximum inflammations in several files one after another:" +msgstr "" + +#: python-novice-inflammation/_episodes/10-cmdline.md:63 +# code block +msgid "~~~\n" +"$ python ../code/readings_04.py --max inflammation-*.csv\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/10-cmdline.md:68 +msgid "Our scripts should do the following:" +msgstr "" + +#: python-novice-inflammation/_episodes/10-cmdline.md:70 +# ordered list +msgid "1. If no filename is given on the command line, read data from" +msgstr "" + +#: python-novice-inflammation/_episodes/10-cmdline.md:71 +msgid "[standard input]({{ page.root }}/reference/#standard-input).\n" +"2. If one or more filenames are given, read data from them and report statistics for each file\n" +"separately.\n" +"3. Use the `--min`, `--mean`, or `--max` flag to determine what statistic to print." +msgstr "" + +#: python-novice-inflammation/_episodes/10-cmdline.md:76 +msgid "To make this work,\n" +"we need to know how to handle command-line arguments in a program,\n" +"and how to get at standard input.\n" +"We'll tackle these questions in turn below." +msgstr "" + +#: python-novice-inflammation/_episodes/10-cmdline.md:81 +# header +msgid "## Command-Line Arguments" +msgstr "" + +#: python-novice-inflammation/_episodes/10-cmdline.md:83 +msgid "Using the text editor of your choice,\n" +"save the following in a text file called `sys_version.py`:" +msgstr "" + +#: python-novice-inflammation/_episodes/10-cmdline.md:86 +# code block +msgid "~~~\n" +"import sys\n" +"print('version is', sys.version)\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/10-cmdline.md:92 +msgid "The first line imports a library called `sys`,\n" +"which is short for \"system\".\n" +"It defines values such as `sys.version`,\n" +"which describes which version of Python we are running.\n" +"We can run this script from the command line like this:" +msgstr "" + +#: python-novice-inflammation/_episodes/10-cmdline.md:98 +# code block +msgid "~~~\n" +"$ python sys_version.py\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/10-cmdline.md:103 +# code block +msgid "~~~\n" +"version is 3.4.3+ (default, Jul 28 2015, 13:17:50)\n" +"[GCC 4.9.3]\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/10-cmdline.md:109 +msgid "Create another file called `argv_list.py` and save the following text to it." +msgstr "" + +#: python-novice-inflammation/_episodes/10-cmdline.md:111 +# code block +msgid "~~~\n" +"import sys\n" +"print('sys.argv is', sys.argv)\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/10-cmdline.md:117 +msgid "The strange name `argv` stands for \"argument values\".\n" +"Whenever Python runs a program,\n" +"it takes all of the values given on the command line\n" +"and puts them in the list `sys.argv`\n" +"so that the program can determine what they were.\n" +"If we run this program with no arguments:" +msgstr "" + +#: python-novice-inflammation/_episodes/10-cmdline.md:124 +# code block +msgid "~~~\n" +"$ python argv_list.py\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/10-cmdline.md:129 +# code block +msgid "~~~\n" +"sys.argv is ['argv_list.py']\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/10-cmdline.md:134 +msgid "the only thing in the list is the full path to our script,\n" +"which is always `sys.argv[0]`.\n" +"If we run it with a few arguments, however:" +msgstr "" + +#: python-novice-inflammation/_episodes/10-cmdline.md:138 +# code block +msgid "~~~\n" +"$ python argv_list.py first second third\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/10-cmdline.md:143 +# code block +msgid "~~~\n" +"sys.argv is ['argv_list.py', 'first', 'second', 'third']\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/10-cmdline.md:148 +msgid "then Python adds each of those arguments to that magic list." +msgstr "" + +#: python-novice-inflammation/_episodes/10-cmdline.md:150 +msgid "With this in hand, let's build a version of `readings.py` that always prints\n" +"the per-patient mean of a single data file.\n" +"The first step is to write a function that outlines our implementation,\n" +"and a placeholder for the function that does the actual work.\n" +"By convention this function is usually called `main`,\n" +"though we can call it whatever we want:" +msgstr "" + +#: python-novice-inflammation/_episodes/10-cmdline.md:157 +# code block +msgid "~~~\n" +"$ cat ../code/readings_01.py\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/10-cmdline.md:162 +# code block +msgid "~~~\n" +"import sys\n" +"import numpy\n" +"\n" +"def main():\n" +" script = sys.argv[0]\n" +" filename = sys.argv[1]\n" +" data = numpy.loadtxt(filename, delimiter=',')\n" +" for m in numpy.mean(data, axis=1):\n" +" print(m)\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/10-cmdline.md:175 +msgid "This function gets the name of the script from `sys.argv[0]`,\n" +"because that's where it's always put,\n" +"and the name of the file to process from `sys.argv[1]`.\n" +"Here's a simple test:" +msgstr "" + +#: python-novice-inflammation/_episodes/10-cmdline.md:180 +# code block +msgid "~~~\n" +"$ python ../code/readings_01.py inflammation-01.csv\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/10-cmdline.md:185 +msgid "There is no output because we have defined a function,\n" +"but haven't actually called it.\n" +"Let's add a call to `main`:" +msgstr "" + +#: python-novice-inflammation/_episodes/10-cmdline.md:189 +# code block +msgid "~~~\n" +"$ cat ../code/readings_02.py\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/10-cmdline.md:194 +# code block +msgid "~~~\n" +"import sys\n" +"import numpy\n" +"\n" +"def main():\n" +" script = sys.argv[0]\n" +" filename = sys.argv[1]\n" +" data = numpy.loadtxt(filename, delimiter=',')\n" +" for m in numpy.mean(data, axis=1):\n" +" print(m)\n" +"\n" +"if __name__ == '__main__':\n" +" main()\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/10-cmdline.md:210 +msgid "and run that:" +msgstr "" + +#: python-novice-inflammation/_episodes/10-cmdline.md:212 +# code block +msgid "~~~\n" +"$ python ../code/readings_02.py inflammation-01.csv\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/10-cmdline.md:217 +# code block +msgid "~~~\n" +"5.45\n" +"5.425\n" +"6.1\n" +"5.9\n" +"5.55\n" +"6.225\n" +"5.975\n" +"6.65\n" +"6.625\n" +"6.525\n" +"6.775\n" +"5.8\n" +"6.225\n" +"5.75\n" +"5.225\n" +"6.3\n" +"6.55\n" +"5.7\n" +"5.85\n" +"6.55\n" +"5.775\n" +"5.825\n" +"6.175\n" +"6.1\n" +"5.8\n" +"6.425\n" +"6.05\n" +"6.025\n" +"6.175\n" +"6.55\n" +"6.175\n" +"6.35\n" +"6.725\n" +"6.125\n" +"7.075\n" +"5.725\n" +"5.925\n" +"6.15\n" +"6.075\n" +"5.75\n" +"5.975\n" +"5.725\n" +"6.3\n" +"5.9\n" +"6.75\n" +"5.925\n" +"7.225\n" +"6.15\n" +"5.95\n" +"6.275\n" +"5.7\n" +"6.1\n" +"6.825\n" +"5.975\n" +"6.725\n" +"5.7\n" +"6.25\n" +"6.4\n" +"7.05\n" +"5.9\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/10-cmdline.md:281 +# blockquote, which can be cascaded +msgid "> ## Running Versus Importing" +msgstr "" + +#: python-novice-inflammation/_episodes/10-cmdline.md:282 +msgid ">\n" +"> Running a Python script in bash is very similar to\n" +"> importing that file in Python.\n" +"> The biggest difference is that we don't expect anything\n" +"> to happen when we import a file,\n" +"> whereas when running a script, we expect to see some\n" +"> output printed to the console.\n" +">\n" +"> In order for a Python script to work as expected\n" +"> when imported or when run as a script,\n" +"> we typically put the part of the script\n" +"> that produces output in the following if statement:\n" +">\n" +"> ~~~\n" +"> if __name__ == '__main__':\n" +"> main() # Or whatever function produces output\n" +"> ~~~\n" +"> {: .language-python}\n" +">\n" +"> When you import a Python file, `__name__` is the name\n" +"> of that file (e.g., when importing `readings.py`,\n" +"> `__name__` is `'readings'`). However, when running a\n" +"> script in bash, `__name__` is always set to `'__main__'`\n" +"> in that script so that you can determine if the file\n" +"> is being imported or run as a script." +msgstr "" + +#: python-novice-inflammation/_episodes/10-cmdline.md:309 +#: python-novice-inflammation/_episodes/10-cmdline.md:425 +# blockquote, which can be cascaded +msgid "> ## The Right Way to Do It" +msgstr "" + +#: python-novice-inflammation/_episodes/10-cmdline.md:310 +msgid ">\n" +"> If our programs can take complex parameters or multiple filenames,\n" +"> we shouldn't handle `sys.argv` directly.\n" +"> Instead,\n" +"> we should use Python's `argparse` library,\n" +"> which handles common cases in a systematic way,\n" +"> and also makes it easy for us to provide sensible error messages for our users.\n" +"> We will not cover this module in this lesson\n" +"> but you can go to Tshepang Lekhonkhobe's\n" +"> [Argparse tutorial](http://docs.python.org/dev/howto/argparse.html)\n" +"> that is part of Python's Official Documentation." +msgstr "" + +#: python-novice-inflammation/_episodes/10-cmdline.md:323 +# header +msgid "## Handling Multiple Files" +msgstr "" + +#: python-novice-inflammation/_episodes/10-cmdline.md:325 +msgid "The next step is to teach our program how to handle multiple files.\n" +"Since 60 lines of output per file is a lot to page through,\n" +"we'll start by using three smaller files,\n" +"each of which has three days of data for two patients:" +msgstr "" + +#: python-novice-inflammation/_episodes/10-cmdline.md:330 +# code block +msgid "~~~\n" +"$ ls small-*.csv\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/10-cmdline.md:335 +# code block +msgid "~~~\n" +"small-01.csv small-02.csv small-03.csv\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/10-cmdline.md:340 +# code block +msgid "~~~\n" +"$ cat small-01.csv\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/10-cmdline.md:345 +# code block +msgid "~~~\n" +"0,0,1\n" +"0,1,2\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/10-cmdline.md:351 +# code block +msgid "~~~\n" +"$ python ../code/readings_02.py small-01.csv\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/10-cmdline.md:356 +#: python-novice-inflammation/_episodes/10-cmdline.md:656 +# code block +msgid "~~~\n" +"0.333333333333\n" +"1.0\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/10-cmdline.md:362 +msgid "Using small data files as input also allows us to check our results more easily:\n" +"here,\n" +"for example,\n" +"we can see that our program is calculating the mean correctly for each line,\n" +"whereas we were really taking it on faith before.\n" +"This is yet another rule of programming:\n" +"*test the simple things first*." +msgstr "" + +#: python-novice-inflammation/_episodes/10-cmdline.md:370 +msgid "We want our program to process each file separately,\n" +"so we need a loop that executes once for each filename.\n" +"If we specify the files on the command line,\n" +"the filenames will be in `sys.argv`,\n" +"but we need to be careful:\n" +"`sys.argv[0]` will always be the name of our script,\n" +"rather than the name of a file.\n" +"We also need to handle an unknown number of filenames,\n" +"since our program could be run for any number of files." +msgstr "" + +#: python-novice-inflammation/_episodes/10-cmdline.md:380 +msgid "The solution to both problems is to loop over the contents of `sys.argv[1:]`.\n" +"The '1' tells Python to start the slice at location 1,\n" +"so the program's name isn't included;\n" +"since we've left off the upper bound,\n" +"the slice runs to the end of the list,\n" +"and includes all the filenames.\n" +"Here's our changed program\n" +"`readings_03.py`:" +msgstr "" + +#: python-novice-inflammation/_episodes/10-cmdline.md:389 +# code block +msgid "~~~\n" +"$ cat ../code/readings_03.py\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/10-cmdline.md:394 +# code block +msgid "~~~\n" +"import sys\n" +"import numpy\n" +"\n" +"def main():\n" +" script = sys.argv[0]\n" +" for filename in sys.argv[1:]:\n" +" data = numpy.loadtxt(filename, delimiter=',')\n" +" for m in numpy.mean(data, axis=1):\n" +" print(m)\n" +"\n" +"if __name__ == '__main__':\n" +" main()\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/10-cmdline.md:410 +msgid "and here it is in action:" +msgstr "" + +#: python-novice-inflammation/_episodes/10-cmdline.md:412 +# code block +msgid "~~~\n" +"$ python ../code/readings_03.py small-01.csv small-02.csv\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/10-cmdline.md:417 +# code block +msgid "~~~\n" +"0.333333333333\n" +"1.0\n" +"13.6666666667\n" +"11.0\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/10-cmdline.md:426 +msgid ">\n" +"> At this point,\n" +"> we have created three versions of our script called `readings_01.py`,\n" +"> `readings_02.py`, and `readings_03.py`.\n" +"> We wouldn't do this in real life:\n" +"> instead,\n" +"> we would have one file called `readings.py` that we committed to version control\n" +"> every time we got an enhancement working.\n" +"> For teaching,\n" +"> though,\n" +"> we need all the successive versions side by side." +msgstr "" + +#: python-novice-inflammation/_episodes/10-cmdline.md:439 +# header +msgid "## Handling Command-Line Flags" +msgstr "" + +#: python-novice-inflammation/_episodes/10-cmdline.md:441 +msgid "The next step is to teach our program to pay attention to the `--min`, `--mean`, and `--max` flags.\n" +"These always appear before the names of the files,\n" +"so we could just do this:" +msgstr "" + +#: python-novice-inflammation/_episodes/10-cmdline.md:445 +# code block +msgid "~~~\n" +"$ cat ../code/readings_04.py\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/10-cmdline.md:450 +# code block +msgid "~~~\n" +"import sys\n" +"import numpy\n" +"\n" +"def main():\n" +" script = sys.argv[0]\n" +" action = sys.argv[1]\n" +" filenames = sys.argv[2:]\n" +"\n" +" for f in filenames:\n" +" data = numpy.loadtxt(f, delimiter=',')\n" +"\n" +" if action == '--min':\n" +" values = numpy.min(data, axis=1)\n" +" elif action == '--mean':\n" +" values = numpy.mean(data, axis=1)\n" +" elif action == '--max':\n" +" values = numpy.max(data, axis=1)\n" +"\n" +" for m in values:\n" +" print(m)\n" +"\n" +"if __name__ == '__main__':\n" +" main()\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/10-cmdline.md:477 +msgid "This works:" +msgstr "" + +#: python-novice-inflammation/_episodes/10-cmdline.md:479 +# code block +msgid "~~~\n" +"$ python ../code/readings_04.py --max small-01.csv\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/10-cmdline.md:484 +# code block +msgid "~~~\n" +"1.0\n" +"2.0\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/10-cmdline.md:490 +msgid "but there are several things wrong with it:" +msgstr "" + +#: python-novice-inflammation/_episodes/10-cmdline.md:492 +# ordered list +msgid "1. `main` is too large to read comfortably." +msgstr "" + +#: python-novice-inflammation/_episodes/10-cmdline.md:494 +# ordered list +msgid "2. If we do not specify at least two additional arguments on the" +msgstr "" + +#: python-novice-inflammation/_episodes/10-cmdline.md:495 +msgid " command-line, one for the **flag** and one for the **filename**, but only\n" +" one, the program will not throw an exception but will run. It assumes that the file\n" +" list is empty, as `sys.argv[1]` will be considered the `action`, even if it\n" +" is a filename. [Silent failures]({{ page.root }}/reference/#silence-failure) like this\n" +" are always hard to debug." +msgstr "" + +#: python-novice-inflammation/_episodes/10-cmdline.md:501 +# ordered list +msgid "3. The program should check if the submitted `action` is one of the three recognized flags." +msgstr "" + +#: python-novice-inflammation/_episodes/10-cmdline.md:503 +msgid "This version pulls the processing of each file out of the loop into a function of its own.\n" +"It also checks that `action` is one of the allowed flags\n" +"before doing any processing,\n" +"so that the program fails fast:" +msgstr "" + +#: python-novice-inflammation/_episodes/10-cmdline.md:508 +# code block +msgid "~~~\n" +"$ cat ../code/readings_05.py\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/10-cmdline.md:513 +# code block +msgid "~~~\n" +"import sys\n" +"import numpy\n" +"\n" +"def main():\n" +" script = sys.argv[0]\n" +" action = sys.argv[1]\n" +" filenames = sys.argv[2:]\n" +" assert action in ['--min', '--mean', '--max'], \\\n" +" 'Action is not one of --min, --mean, or --max: ' + action\n" +" for f in filenames:\n" +" process(f, action)\n" +"\n" +"def process(filename, action):\n" +" data = numpy.loadtxt(filename, delimiter=',')\n" +"\n" +" if action == '--min':\n" +" values = numpy.min(data, axis=1)\n" +" elif action == '--mean':\n" +" values = numpy.mean(data, axis=1)\n" +" elif action == '--max':\n" +" values = numpy.max(data, axis=1)\n" +"\n" +" for m in values:\n" +" print(m)\n" +"\n" +"if __name__ == '__main__':\n" +" main()\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/10-cmdline.md:544 +msgid "This is four lines longer than its predecessor,\n" +"but broken into more digestible chunks of 8 and 12 lines." +msgstr "" + +#: python-novice-inflammation/_episodes/10-cmdline.md:547 +# header +msgid "## Handling Standard Input" +msgstr "" + +#: python-novice-inflammation/_episodes/10-cmdline.md:549 +msgid "The next thing our program has to do is read data from standard input if no filenames are given\n" +"so that we can put it in a pipeline,\n" +"redirect input to it,\n" +"and so on.\n" +"Let's experiment in another script called `count_stdin.py`:" +msgstr "" + +#: python-novice-inflammation/_episodes/10-cmdline.md:555 +# code block +msgid "~~~\n" +"$ cat ../code/count_stdin.py\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/10-cmdline.md:560 +# code block +msgid "~~~\n" +"import sys\n" +"\n" +"count = 0\n" +"for line in sys.stdin:\n" +" count += 1\n" +"\n" +"print(count, 'lines in standard input')\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/10-cmdline.md:571 +msgid "This little program reads lines from a special \"file\" called `sys.stdin`,\n" +"which is automatically connected to the program's standard input.\n" +"We don't have to open it --- Python and the operating system\n" +"take care of that when the program starts up ---\n" +"but we can do almost anything with it that we could do to a regular file.\n" +"Let's try running it as if it were a regular command-line program:" +msgstr "" + +#: python-novice-inflammation/_episodes/10-cmdline.md:578 +# code block +msgid "~~~\n" +"$ python ../code/count_stdin.py < small-01.csv\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/10-cmdline.md:583 +# code block +msgid "~~~\n" +"2 lines in standard input\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/10-cmdline.md:588 +msgid "A common mistake is to try to run something that reads from standard input like this:" +msgstr "" + +#: python-novice-inflammation/_episodes/10-cmdline.md:590 +# code block +msgid "~~~\n" +"$ python ../code/count_stdin.py small-01.csv\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/10-cmdline.md:595 +msgid "i.e., to forget the `<` character that redirects the file to standard input.\n" +"In this case,\n" +"there's nothing in standard input,\n" +"so the program waits at the start of the loop for someone to type something on the keyboard.\n" +"Since there's no way for us to do this,\n" +"our program is stuck,\n" +"and we have to halt it using the `Interrupt` option from the `Kernel` menu in the Notebook." +msgstr "" + +#: python-novice-inflammation/_episodes/10-cmdline.md:603 +msgid "We now need to rewrite the program so that it loads data from `sys.stdin`\n" +"if no filenames are provided.\n" +"Luckily,\n" +"`numpy.loadtxt` can handle either a filename or an open file as its first parameter,\n" +"so we don't actually need to change `process`.\n" +"Only `main` changes:" +msgstr "" + +#: python-novice-inflammation/_episodes/10-cmdline.md:610 +# code block +msgid "~~~\n" +"$ cat ../code/readings_06.py\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/10-cmdline.md:615 +# code block +msgid "~~~\n" +"import sys\n" +"import numpy\n" +"\n" +"def main():\n" +" script = sys.argv[0]\n" +" action = sys.argv[1]\n" +" filenames = sys.argv[2:]\n" +" assert action in ['--min', '--mean', '--max'], \\\n" +" 'Action is not one of --min, --mean, or --max: ' + action\n" +" if len(filenames) == 0:\n" +" process(sys.stdin, action)\n" +" else:\n" +" for f in filenames:\n" +" process(f, action)\n" +"\n" +"def process(filename, action):\n" +" data = numpy.loadtxt(filename, delimiter=',')\n" +"\n" +" if action == '--min':\n" +" values = numpy.min(data, axis=1)\n" +" elif action == '--mean':\n" +" values = numpy.mean(data, axis=1)\n" +" elif action == '--max':\n" +" values = numpy.max(data, axis=1)\n" +"\n" +" for m in values:\n" +" print(m)\n" +"\n" +"if __name__ == '__main__':\n" +" main()\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/10-cmdline.md:649 +msgid "Let's try it out:" +msgstr "" + +#: python-novice-inflammation/_episodes/10-cmdline.md:651 +# code block +msgid "~~~\n" +"$ python ../code/readings_06.py --mean < small-01.csv\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/10-cmdline.md:662 +msgid "That's better.\n" +"In fact,\n" +"that's done:\n" +"the program now does everything we set out to do." +msgstr "" + +#: python-novice-inflammation/_episodes/10-cmdline.md:667 +# blockquote, which can be cascaded +msgid "> ## Arithmetic on the Command Line" +msgstr "" + +#: python-novice-inflammation/_episodes/10-cmdline.md:668 +msgid ">\n" +"> Write a command-line program that does addition and subtraction:\n" +">\n" +"> ~~~\n" +"> $ python arith.py add 1 2\n" +"> ~~~\n" +"> {: .language-python}\n" +">\n" +"> ~~~\n" +"> 3\n" +"> ~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/10-cmdline.md:680 +msgid ">\n" +"> ~~~\n" +"> $ python arith.py subtract 3 4\n" +"> ~~~\n" +"> {: .language-python}\n" +">\n" +"> ~~~\n" +"> -1\n" +"> ~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/10-cmdline.md:690 +msgid ">\n" +"> > ## Solution\n" +"> > ~~~\n" +"> > import sys\n" +"> >\n" +"> > def main():\n" +"> > assert len(sys.argv) == 4, 'Need exactly 3 arguments'\n" +"> >\n" +"> > operator = sys.argv[1]\n" +"> > assert operator in ['add', 'subtract', 'multiply', 'divide'], \\\n" +"> > 'Operator is not one of add, subtract, multiply, or divide: bailing out'\n" +"> > try:\n" +"> > operand1, operand2 = float(sys.argv[2]), float(sys.argv[3])\n" +"> > except ValueError:\n" +"> > print('cannot convert input to a number: bailing out')\n" +"> > return\n" +"> >\n" +"> > do_arithmetic(operand1, operator, operand2)\n" +"> >\n" +"> > def do_arithmetic(operand1, operator, operand2):\n" +"> >\n" +"> > if operator == 'add':\n" +"> > value = operand1 + operand2\n" +"> > elif operator == 'subtract':\n" +"> > value = operand1 - operand2\n" +"> > elif operator == 'multiply':\n" +"> > value = operand1 * operand2\n" +"> > elif operator == 'divide':\n" +"> > value = operand1 / operand2\n" +"> > print(value)\n" +"> >\n" +"> > main()\n" +"> > ~~~\n" +"> > {: .language-python}" +msgstr "" + +#: python-novice-inflammation/_episodes/10-cmdline.md:727 +# blockquote, which can be cascaded +msgid "> ## Finding Particular Files" +msgstr "" + +#: python-novice-inflammation/_episodes/10-cmdline.md:728 +msgid ">\n" +"> Using the `glob` module introduced [earlier]({{ page.root }}/04-files/),\n" +"> write a simple version of `ls` that shows files in the current directory\n" +"> with a particular suffix.\n" +"> A call to this script should look like this:\n" +">\n" +"> ~~~\n" +"> $ python my_ls.py py\n" +"> ~~~\n" +"> {: .language-python}\n" +">\n" +"> ~~~\n" +"> left.py\n" +"> right.py\n" +"> zero.py\n" +"> ~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/10-cmdline.md:745 +msgid ">\n" +"> > ## Solution\n" +"> > ~~~\n" +"> > import sys\n" +"> > import glob\n" +"> >\n" +"> > def main():\n" +"> > '''prints names of all files with sys.argv as suffix'''\n" +"> > assert len(sys.argv) >= 2, 'Argument list cannot be empty'\n" +"> > suffix = sys.argv[1] # NB: behaviour is not as you'd expect if sys.argv[1] is *\n" +"> > glob_input = '*.' + suffix # construct the input\n" +"> > glob_output = sorted(glob.glob(glob_input)) # call the glob function\n" +"> > for item in glob_output: # print the output\n" +"> > print(item)\n" +"> > return\n" +"> >\n" +"> > main()\n" +"> > ~~~\n" +"> > {: .language-python}" +msgstr "" + +#: python-novice-inflammation/_episodes/10-cmdline.md:767 +# blockquote, which can be cascaded +msgid "> ## Changing Flags" +msgstr "" + +#: python-novice-inflammation/_episodes/10-cmdline.md:768 +msgid ">\n" +"> Rewrite `readings.py` so that it uses `-n`, `-m`, and `-x`\n" +"> instead of `--min`, `--mean`, and `--max` respectively.\n" +"> Is the code easier to read?\n" +"> Is the program easier to understand?\n" +">\n" +"> > ## Solution\n" +"> > ~~~\n" +"> > import sys\n" +"> > import numpy\n" +"> >\n" +"> > def main():\n" +"> > script = sys.argv[0]\n" +"> > action = sys.argv[1]\n" +"> > filenames = sys.argv[2:]\n" +"> > assert action in ['-n', '-m', '-x'], \\\n" +"> > 'Action is not one of -n, -m, or -x: ' + action\n" +"> > if len(filenames) == 0:\n" +"> > process(sys.stdin, action)\n" +"> > else:\n" +"> > for f in filenames:\n" +"> > process(f, action)\n" +"> >\n" +"> > def process(filename, action):\n" +"> > data = numpy.loadtxt(filename, delimiter=',')\n" +"> >\n" +"> > if action == '-n':\n" +"> > values = numpy.min(data, axis=1)\n" +"> > elif action == '-m':\n" +"> > values = numpy.mean(data, axis=1)\n" +"> > elif action == '-x':\n" +"> > values = numpy.max(data, axis=1)\n" +"> >\n" +"> > for m in values:\n" +"> > print(m)\n" +"> >\n" +"> > main()\n" +"> > ~~~\n" +"> > {: .language-python}" +msgstr "" + +#: python-novice-inflammation/_episodes/10-cmdline.md:810 +# blockquote, which can be cascaded +msgid "> ## Adding a Help Message" +msgstr "" + +#: python-novice-inflammation/_episodes/10-cmdline.md:811 +msgid ">\n" +"> Separately,\n" +"> modify `readings.py` so that if no parameters are given\n" +"> (i.e., no action is specified and no filenames are given),\n" +"> it prints a message explaining how it should be used.\n" +">\n" +"> > ## Solution\n" +"> > ~~~\n" +"> > # this is code/readings_08.py\n" +"> > import sys\n" +"> > import numpy\n" +"> >\n" +"> > def main():\n" +"> > script = sys.argv[0]\n" +"> > if len(sys.argv) == 1: # no arguments, so print help message\n" +"> > print(\"\"\"Usage: python readings_08.py action filenames\n" +"> > action must be one of --min --mean --max\n" +"> > if filenames is blank, input is taken from stdin;\n" +"> > otherwise, each filename in the list of arguments is processed in turn\"\"\")\n" +"> > return\n" +"> >\n" +"> > action = sys.argv[1]\n" +"> > filenames = sys.argv[2:]\n" +"> > assert action in ['--min', '--mean', '--max'], \\\n" +"> > 'Action is not one of --min, --mean, or --max: ' + action\n" +"> > if len(filenames) == 0:\n" +"> > process(sys.stdin, action)\n" +"> > else:\n" +"> > for f in filenames:\n" +"> > process(f, action)\n" +"> >\n" +"> > def process(filename, action):\n" +"> > data = numpy.loadtxt(filename, delimiter=',')\n" +"> >\n" +"> > if action == '--min':\n" +"> > values = numpy.min(data, axis=1)\n" +"> > elif action == '--mean':\n" +"> > values = numpy.mean(data, axis=1)\n" +"> > elif action == '--max':\n" +"> > values = numpy.max(data, axis=1)\n" +"> >\n" +"> > for m in values:\n" +"> > print(m)\n" +"> >\n" +"> > main()\n" +"> > ~~~\n" +"> > {: .language-python}" +msgstr "" + +#: python-novice-inflammation/_episodes/10-cmdline.md:861 +# blockquote, which can be cascaded +msgid "> ## Adding a Default Action" +msgstr "" + +#: python-novice-inflammation/_episodes/10-cmdline.md:862 +msgid ">\n" +"> Separately,\n" +"> modify `readings.py` so that if no action is given\n" +"> it displays the means of the data.\n" +">\n" +"> > ## Solution\n" +"> > ~~~\n" +"> > import sys\n" +"> > import numpy\n" +"> >\n" +"> > def main():\n" +"> > script = sys.argv[0]\n" +"> > action = sys.argv[1]\n" +"> > if action not in ['--min', '--mean', '--max']: # if no action given\n" +"> > action = '--mean' # set a default action, that being mean\n" +"> > filenames = sys.argv[1:] # start the filenames one place earlier in the argv list\n" +"> > else:\n" +"> > filenames = sys.argv[2:]\n" +"> >\n" +"> > if len(filenames) == 0:\n" +"> > process(sys.stdin, action)\n" +"> > else:\n" +"> > for f in filenames:\n" +"> > process(f, action)\n" +"> >\n" +"> > def process(filename, action):\n" +"> > data = numpy.loadtxt(filename, delimiter=',')\n" +"> >\n" +"> > if action == '--min':\n" +"> > values = numpy.min(data, axis=1)\n" +"> > elif action == '--mean':\n" +"> > values = numpy.mean(data, axis=1)\n" +"> > elif action == '--max':\n" +"> > values = numpy.max(data, axis=1)\n" +"> >\n" +"> > for m in values:\n" +"> > print(m)\n" +"> >\n" +"> > main()\n" +"> > ~~~\n" +"> > {: .language-python}" +msgstr "" + +#: python-novice-inflammation/_episodes/10-cmdline.md:906 +# blockquote, which can be cascaded +msgid "> ## A File-Checker" +msgstr "" + +#: python-novice-inflammation/_episodes/10-cmdline.md:907 +msgid ">\n" +"> Write a program called `check.py` that takes the names of one or more\n" +"> inflammation data files as arguments\n" +"> and checks that all the files have the same number of rows and columns.\n" +"> What is the best way to test your program?\n" +">\n" +"> > ## Solution\n" +"> > ~~~\n" +"> > import sys\n" +"> > import numpy\n" +"> >\n" +"> > def main():\n" +"> > script = sys.argv[0]\n" +"> > filenames = sys.argv[1:]\n" +"> > if len(filenames) <=1: #nothing to check\n" +"> > print('Only 1 file specified on input')\n" +"> > else:\n" +"> > nrow0, ncol0 = row_col_count(filenames[0])\n" +"> > print('First file %s: %d rows and %d columns' % (filenames[0], nrow0, ncol0))\n" +"> > for f in filenames[1:]:\n" +"> > nrow, ncol = row_col_count(f)\n" +"> > if nrow != nrow0 or ncol != ncol0:\n" +"> > print('File %s does not check: %d rows and %d columns' % (f, nrow, ncol))\n" +"> > else:\n" +"> > print('File %s checks' % f)\n" +"> > return\n" +"> >\n" +"> > def row_col_count(filename):\n" +"> > try:\n" +"> > nrow, ncol = numpy.loadtxt(filename, delimiter=',').shape\n" +"> > except ValueError:\n" +"> > # 'ValueError' error is raised when numpy encounters lines that\n" +"> > # have different number of data elements in them than the rest of the lines,\n" +"> > # or when lines have non-numeric elements\n" +"> > nrow, ncol = (0, 0)\n" +"> > return nrow, ncol\n" +"> >\n" +"> > main()\n" +"> > ~~~\n" +"> > {: .language-python}" +msgstr "" + +#: python-novice-inflammation/_episodes/10-cmdline.md:950 +# blockquote, which can be cascaded +msgid "> ## Counting Lines" +msgstr "" + +#: python-novice-inflammation/_episodes/10-cmdline.md:951 +msgid ">\n" +"> Write a program called `line_count.py` that works like the Unix `wc` command:\n" +">\n" +"> * If no filenames are given, it reports the number of lines in standard input.\n" +"> * If one or more filenames are given, it reports the number of lines in each,\n" +"> followed by the total number of lines.\n" +">\n" +"> > ## Solution\n" +"> > ~~~\n" +"> > import sys\n" +"> >\n" +"> > def main():\n" +"> > '''print each input filename and the number of lines in it,\n" +"> > and print the sum of the number of lines'''\n" +"> > filenames = sys.argv[1:]\n" +"> > sum_nlines = 0 #initialize counting variable\n" +"> >\n" +"> > if len(filenames) == 0: # no filenames, just stdin\n" +"> > sum_nlines = count_file_like(sys.stdin)\n" +"> > print('stdin: %d' % sum_nlines)\n" +"> > else:\n" +"> > for f in filenames:\n" +"> > n = count_file(f)\n" +"> > print('%s %d' % (f, n))\n" +"> > sum_nlines += n\n" +"> > print('total: %d' % sum_nlines)\n" +"> >\n" +"> > def count_file(filename):\n" +"> > '''count the number of lines in a file'''\n" +"> > f = open(filename,'r')\n" +"> > nlines = len(f.readlines())\n" +"> > f.close()\n" +"> > return(nlines)\n" +"> >\n" +"> > def count_file_like(file_like):\n" +"> > '''count the number of lines in a file-like object (eg stdin)'''\n" +"> > n = 0\n" +"> > for line in file_like:\n" +"> > n = n+1\n" +"> > return n\n" +"> >\n" +"> > main()\n" +"> >\n" +"> > ~~~\n" +"> > {: .language-python}" +msgstr "" + +#: python-novice-inflammation/_episodes/10-cmdline.md:999 +# blockquote, which can be cascaded +msgid "> ## Generate an Error Message" +msgstr "" + +#: python-novice-inflammation/_episodes/10-cmdline.md:1000 +msgid ">\n" +"> Write a program called `check_arguments.py` that prints usage\n" +"> then exits the program if no arguments are provided.\n" +"> (Hint: You can use `sys.exit()` to exit the program.)\n" +">\n" +"> ~~~\n" +"> $ python check_arguments.py\n" +"> ~~~\n" +"> {: .language-bash}\n" +">\n" +"> ~~~\n" +"> usage: python check_argument.py filename.txt\n" +"> ~~~" +msgstr "" + +#: python-novice-inflammation/_episodes/10-cmdline.md:1014 +msgid ">\n" +"> ~~~\n" +"> $ python check_arguments.py filename.txt\n" +"> ~~~\n" +"> {: .language-bash}\n" +">\n" +"> ~~~\n" +"> Thanks for specifying arguments!\n" +"> ~~~" +msgstr "" + +#: python-novice-inflammation/_extras/about.md:1 +# Front Matter +msgid "---\n" +"layout: page\n" +"title: About\n" +"permalink: /about/\n" +"---" +msgstr "" + +#: python-novice-inflammation/_extras/about.md:6 +msgid "{% include carpentries.html %}" +msgstr "" + +#: python-novice-inflammation/_extras/additional_material.md:1 +# Front Matter +msgid "---\n" +"layout: page\n" +"title: \"Additional material\"\n" +"permalink: /extra_material/\n" +"---" +msgstr "" + +#: python-novice-inflammation/_extras/additional_material.md:6 +msgid "A collection of facts about Python that do not fit into the main lesson either due to the scope or time constraints of the main lesson." +msgstr "" + +#: python-novice-inflammation/_extras/additional_material.md:9 +# header +msgid "## Jupyter Notebook/IPython: Who's Who in Memory" +msgstr "" + +#: python-novice-inflammation/_extras/additional_material.md:11 +msgid "You can use the `%whos` command at any time to see what\n" +"variables you have created and what modules you have loaded into the computer's memory.\n" +"As this is an IPython command, it will only work if you are in an IPython terminal or the\n" +"Jupyter Notebook." +msgstr "" + +#: python-novice-inflammation/_extras/additional_material.md:16 +# code block +msgid "~~~\n" +"%whos\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_extras/additional_material.md:21 +# code block +msgid "~~~\n" +"Variable Type Data/Info\n" +"--------------------------------\n" +"weight_kg float 100.0\n" +"weight_lb float 143.0\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_extras/additional_material.md:30 +msgid "
\n" +"## Integer Division" +msgstr "" + +#: python-novice-inflammation/_extras/additional_material.md:33 +msgid "We are using Python 3, where division always returns a floating point number:" +msgstr "" + +#: python-novice-inflammation/_extras/additional_material.md:35 +# code block +msgid "~~~\n" +"5/9\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_extras/additional_material.md:38 +msgid "{: .language-python}\n" +"~~~\n" +"0.5555555555555556\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_extras/additional_material.md:44 +msgid "Unfortunately, this wasn't the case in Python 2:\n" +"~~~\n" +"5/9\n" +"~~~\n" +"{: .language-python}\n" +"~~~\n" +"0\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_extras/additional_material.md:54 +msgid "If you are using Python 2 and want to keep the fractional part of division\n" +"you need to convert one or the other number to floating point:" +msgstr "" + +#: python-novice-inflammation/_extras/additional_material.md:57 +# code block +msgid "~~~\n" +"float(5)/9\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_extras/additional_material.md:62 +#: python-novice-inflammation/_extras/additional_material.md:72 +#: python-novice-inflammation/_extras/additional_material.md:82 +#: python-novice-inflammation/_extras/additional_material.md:91 +# code block +msgid "~~~\n" +"0.555555555556\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_extras/additional_material.md:67 +# code block +msgid "~~~\n" +"5/float(9)\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_extras/additional_material.md:77 +# code block +msgid "~~~\n" +"5.0/9\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_extras/additional_material.md:86 +# code block +msgid "~~~\n" +"5/9.0\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_extras/additional_material.md:96 +msgid "And if you want an integer result from division in Python 3,\n" +"use a double-slash:" +msgstr "" + +#: python-novice-inflammation/_extras/additional_material.md:99 +# code block +msgid "~~~\n" +"4//2\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_extras/additional_material.md:104 +# code block +msgid "~~~\n" +"2\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_extras/additional_material.md:109 +# code block +msgid "~~~\n" +"3//2\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_extras/additional_material.md:114 +# code block +msgid "~~~\n" +"1\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_extras/discuss.md:1 +# Front Matter +msgid "---\n" +"layout: page\n" +"title: Discussion\n" +"permalink: /discuss/\n" +"---" +msgstr "" + +#: python-novice-inflammation/_extras/discuss.md:6 +# header +msgid "## Rules of Debugging" +msgstr "" + +#: python-novice-inflammation/_extras/discuss.md:8 +# ordered list +msgid "1. Fail early, fail often." +msgstr "" + +#: python-novice-inflammation/_extras/discuss.md:9 +# ordered list +msgid "2. Always initialize from data." +msgstr "" + +#: python-novice-inflammation/_extras/discuss.md:10 +# ordered list +msgid "3. Know what it's supposed to do." +msgstr "" + +#: python-novice-inflammation/_extras/discuss.md:11 +# ordered list +msgid "4. Make it fail every time." +msgstr "" + +#: python-novice-inflammation/_extras/discuss.md:12 +# ordered list +msgid "5. Make it fail fast." +msgstr "" + +#: python-novice-inflammation/_extras/discuss.md:13 +# ordered list +msgid "6. Change one thing at a time, for a reason." +msgstr "" + +#: python-novice-inflammation/_extras/discuss.md:14 +# ordered list +msgid "7. Keep track of what we've done." +msgstr "" + +#: python-novice-inflammation/_extras/discuss.md:15 +# ordered list +msgid "8. Be humble." +msgstr "" + +#: python-novice-inflammation/_extras/discuss.md:16 +# ordered list +msgid "9. Test the simple things first." +msgstr "" + +#: python-novice-inflammation/_extras/discuss.md:18 +msgid "And remember,\n" +"a week of hard work can sometimes save you an hour of thought." +msgstr "" + +#: python-novice-inflammation/_extras/discuss.md:21 +# header +msgid "## The Call Stack" +msgstr "" + +#: python-novice-inflammation/_extras/discuss.md:23 +msgid "Let's take a closer look at what happens when we call `fahr_to_celsius(32.0)`.\n" +"To make things clearer,\n" +"we'll start by putting the initial value 32.0 in a variable\n" +"and store the final result in one as well:" +msgstr "" + +#: python-novice-inflammation/_extras/discuss.md:28 +# code block +msgid "~~~\n" +"original = 32.0\n" +"final = fahr_to_celsius(original)\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_extras/discuss.md:34 +msgid "The diagram below shows what memory looks like after the first line has been executed:" +msgstr "" + +#: python-novice-inflammation/_extras/discuss.md:36 +msgid "![Call Stack (Initial State)](../fig/python-call-stack-01.svg)" +msgstr "" + +#: python-novice-inflammation/_extras/discuss.md:38 +msgid "When we call `fahr_to_celsius`,\n" +"Python *doesn't* create the variable `temp` right away.\n" +"Instead,\n" +"it creates something called a [stack frame]({{ page.root }}/reference/#stack-frame)\n" +"to keep track of the variables defined by `fahr_to_kelvin`.\n" +"Initially,\n" +"this stack frame only holds the value of `temp`:" +msgstr "" + +#: python-novice-inflammation/_extras/discuss.md:46 +msgid "![Call Stack Immediately After First Function Call](../fig/python-call-stack-02.svg)" +msgstr "" + +#: python-novice-inflammation/_extras/discuss.md:48 +msgid "When we call `fahr_to_kelvin` inside `fahr_to_celsius`,\n" +"Python creates another stack frame to hold `fahr_to_kelvin`'s variables:" +msgstr "" + +#: python-novice-inflammation/_extras/discuss.md:51 +msgid "![Call Stack During First Nested Function Call](../fig/python-call-stack-03.svg)" +msgstr "" + +#: python-novice-inflammation/_extras/discuss.md:53 +msgid "It does this because there are now two variables in play called `temp`:\n" +"the parameter to `fahr_to_celsius`,\n" +"and the parameter to `fahr_to_kelvin`.\n" +"Having two variables with the same name in the same part of the program would be ambiguous,\n" +"so Python (and every other modern programming language) creates a new stack frame for each function call\n" +"to keep that function's variables separate from those defined by other functions." +msgstr "" + +#: python-novice-inflammation/_extras/discuss.md:60 +msgid "When the call to `fahr_to_kelvin` returns a value,\n" +"Python throws away `fahr_to_kelvin`'s stack frame\n" +"and creates a new variable in the stack frame for `fahr_to_celsius` to hold the temperature in Kelvin:" +msgstr "" + +#: python-novice-inflammation/_extras/discuss.md:64 +msgid "![Call Stack After Return From First Nested Function Call](../fig/python-call-stack-04.svg)" +msgstr "" + +#: python-novice-inflammation/_extras/discuss.md:66 +msgid "It then calls `kelvin_to_celsius`,\n" +"which means it creates a stack frame to hold that function's variables:" +msgstr "" + +#: python-novice-inflammation/_extras/discuss.md:69 +msgid "![Call Stack During Call to Second Nested Function](../fig/python-call-stack-05.svg)" +msgstr "" + +#: python-novice-inflammation/_extras/discuss.md:71 +msgid "Once again,\n" +"Python throws away that stack frame when `kelvin_to_celsius` is done\n" +"and creates the variable `result` in the stack frame for `fahr_to_celsius`:" +msgstr "" + +#: python-novice-inflammation/_extras/discuss.md:75 +msgid "![Call Stack After Second Nested Function Returns](../fig/python-call-stack-06.svg)" +msgstr "" + +#: python-novice-inflammation/_extras/discuss.md:77 +msgid "Finally,\n" +"when `fahr_to_celsius` is done,\n" +"Python throws away *its* stack frame\n" +"and puts its result in a new variable called `final`\n" +"that lives in the stack frame we started with:" +msgstr "" + +#: python-novice-inflammation/_extras/discuss.md:83 +msgid "![Call Stack After All Functions Have Finished](../fig/python-call-stack-07.svg)" +msgstr "" + +#: python-novice-inflammation/_extras/discuss.md:85 +msgid "This final stack frame is always there;\n" +"it holds the variables we defined outside the functions in our code.\n" +"What it *doesn't* hold is the variables that were in the various stack frames.\n" +"If we try to get the value of `temp` after our functions have finished running,\n" +"Python tells us that there's no such thing:" +msgstr "" + +#: python-novice-inflammation/_extras/discuss.md:91 +# code block +msgid "~~~\n" +"print('final value of temp after all function calls:', temp)\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_extras/discuss.md:96 +# code block +msgid "~~~\n" +"---------------------------------------------------------------------------\n" +"NameError Traceback (most recent call last)\n" +" in ()\n" +"----> 1 print('final value of temp after all function calls:', temp)\n" +"\n" +"NameError: name 'temp' is not defined\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_extras/discuss.md:106 +# code block +msgid "~~~\n" +"final value of temp after all function calls:\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_extras/discuss.md:111 +msgid "Why go to all this trouble?\n" +"Well,\n" +"here's a function called `span` that calculates the difference between\n" +"the minimum and maximum values in an array:" +msgstr "" + +#: python-novice-inflammation/_extras/discuss.md:116 +# code block +msgid "~~~\n" +"import numpy\n" +"\n" +"def span(a):\n" +" diff = numpy.max(a) - numpy.min(a)\n" +" return diff\n" +"\n" +"data = numpy.loadtxt(fname='inflammation-01.csv', delimiter=',')\n" +"print('span of data:', span(data))\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_extras/discuss.md:128 +#: python-novice-inflammation/_extras/discuss.md:142 +# code block +msgid "~~~\n" +"span of data: 20.0\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_extras/discuss.md:133 +msgid "Notice that `span` assigns a value to a variable called `diff`.\n" +"We might very well use a variable with the same name to hold data:" +msgstr "" + +#: python-novice-inflammation/_extras/discuss.md:136 +# code block +msgid "~~~\n" +"diff = numpy.loadtxt(fname='inflammation-01.csv', delimiter=',')\n" +"print('span of data:', span(diff))\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_extras/discuss.md:147 +msgid "We don't expect `diff` to have the value 20.0 after this function call,\n" +"so the name `diff` cannot refer to the same thing inside `span` as it does in the main body of our program.\n" +"And yes,\n" +"we could probably choose a different name than `diff` in our main program in this case,\n" +"but we don't want to have to read every line of NumPy to see what variable names its functions use\n" +"before calling any of those functions,\n" +"just in case they change the values of our variables." +msgstr "" + +#: python-novice-inflammation/_extras/discuss.md:155 +msgid "The big idea here is [encapsulation]({{ page.root }}/reference/#encapsulation),\n" +"and it's the key to writing correct, comprehensible programs.\n" +"A function's job is to turn several operations into one\n" +"so that we can think about a single function call\n" +"instead of a dozen or a hundred statements\n" +"each time we want to do something.\n" +"That only works if functions don't interfere with each other;\n" +"if they do,\n" +"we have to pay attention to the details once again,\n" +"which quickly overloads our short-term memory." +msgstr "" + +#: python-novice-inflammation/_extras/discuss.md:166 +# blockquote, which can be cascaded +msgid "> ## Following the Call Stack" +msgstr "" + +#: python-novice-inflammation/_extras/discuss.md:167 +msgid ">\n" +"> We previously wrote functions called `fence` and `outer`.\n" +"> Draw a diagram showing how the call stack changes when we run the following:\n" +">\n" +"> ~~~\n" +"> print(outer(fence('carbon', '+')))\n" +"> ~~~\n" +"> {: .language-python}" +msgstr "" + +#: python-novice-inflammation/_extras/discuss.md:177 +# header +msgid "## Image Grids" +msgstr "" + +#: python-novice-inflammation/_extras/discuss.md:179 +msgid "Let's start by creating some simple heat maps of our own\n" +"using a library called `ipythonblocks`.\n" +"The first step is to create our own \"image\":" +msgstr "" + +#: python-novice-inflammation/_extras/discuss.md:183 +# code block +msgid "~~~\n" +"from ipythonblocks import ImageGrid\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_extras/discuss.md:188 +msgid "Unlike the `import` statements we have seen earlier,\n" +"this one doesn't load the entire `ipythonblocks` library.\n" +"Instead,\n" +"it just loads `ImageGrid` from that library,\n" +"since that's the only thing we need (for now)." +msgstr "" + +#: python-novice-inflammation/_extras/discuss.md:194 +msgid "Once we have `ImageGrid` loaded,\n" +"we can use it to create a very simple grid of colored cells:" +msgstr "" + +#: python-novice-inflammation/_extras/discuss.md:197 +# code block +msgid "~~~\n" +"grid = ImageGrid(5, 3)\n" +"grid.show()\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_extras/discuss.md:203 +msgid "![](../fig/grid-01.png)" +msgstr "" + +#: python-novice-inflammation/_extras/discuss.md:205 +msgid "Just like a NumPy array,\n" +"an `ImageGrid` has some properties that hold information about it:" +msgstr "" + +#: python-novice-inflammation/_extras/discuss.md:208 +# code block +msgid "~~~\n" +"print('grid width:', grid.width)\n" +"print('grid height:', grid.height)\n" +"print('grid lines on:', grid.lines_on)\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_extras/discuss.md:215 +# code block +msgid "~~~\n" +"grid width: 5\n" +"grid height: 3\n" +"grid lines on: True\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_extras/discuss.md:222 +msgid "The obvious thing to do with a grid like this is color in its cells,\n" +"but in order to do that,\n" +"we need to know how computers represent color.\n" +"The most common schemes are [RGB]({{ page.root }}/reference/#rgb),\n" +"which is short for \"red, green, blue\".\n" +"RGB is an [additive color model]({{ page.root }}/reference/#additive-color-model):\n" +"every shade is some combination of red, green, and blue intensities.\n" +"We can think of these three values as being the axes in a cube:" +msgstr "" + +#: python-novice-inflammation/_extras/discuss.md:231 +msgid "![RGB Color Cube](../fig/color-cube.png)" +msgstr "" + +#: python-novice-inflammation/_extras/discuss.md:233 +msgid "An RGB color is an example of a multi-part value:\n" +"like a Cartesian coordinate,\n" +"it is one thing with several parts.\n" +"We can represent such a value in Python using a [tuple]({{ page.root }}/reference/#tuple),\n" +"which we write using parentheses instead of the square brackets used for a list:" +msgstr "" + +#: python-novice-inflammation/_extras/discuss.md:239 +# code block +msgid "~~~\n" +"position = (12.3, 45.6)\n" +"print('position is:', position)\n" +"color = (10, 20, 30)\n" +"print('color is:', color)\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_extras/discuss.md:247 +# code block +msgid "~~~\n" +"position is: (12.3, 45.6)\n" +"color is: (10, 20, 30)\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_extras/discuss.md:253 +msgid "We can select elements from tuples using indexing,\n" +"just as we do with lists and arrays:" +msgstr "" + +#: python-novice-inflammation/_extras/discuss.md:256 +# code block +msgid "~~~\n" +"print('first element of color is:', color[0])\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_extras/discuss.md:261 +# code block +msgid "~~~\n" +"first element of color is: 10\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_extras/discuss.md:266 +msgid "Unlike lists and arrays,\n" +"though,\n" +"tuples cannot be changed after they are created --- in technical terms,\n" +"they are [immutable]({{ page.root }}/reference/#immutable):" +msgstr "" + +#: python-novice-inflammation/_extras/discuss.md:271 +# code block +msgid "~~~\n" +"color[0] = 40\n" +"print('first element of color after change:', color[0])\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_extras/discuss.md:277 +# code block +msgid "~~~\n" +"---------------------------------------------------------------------------\n" +"TypeError Traceback (most recent call last)\n" +" in ()\n" +"----> 1 color[0] = 40\n" +"2 print('first element of color after change:', color[0])\n" +"\n" +"TypeError: 'tuple' object does not support item assignment\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_extras/discuss.md:288 +msgid "If a tuple represents an RGB color,\n" +"its red, green, and blue components can take on values between 0 and 255.\n" +"The upper bound may seem odd,\n" +"but it's the largest number that can be represented in an 8-bit byte\n" +"(i.e., 28-1).\n" +"This makes it easy for computers to manipulate colors,\n" +"while providing fine enough gradations to fool most human eyes,\n" +"most of the time." +msgstr "" + +#: python-novice-inflammation/_extras/discuss.md:297 +msgid "Let's see what a few RGB colors actually look like:" +msgstr "" + +#: python-novice-inflammation/_extras/discuss.md:299 +# code block +msgid "~~~\n" +"row = ImageGrid(8, 1)\n" +"row[0, 0] = (0, 0, 0) # no color => black\n" +"row[1, 0] = (255, 255, 255) # all colors => white\n" +"row[2, 0] = (255, 0, 0) # all red\n" +"row[3, 0] = (0, 255, 0) # all green\n" +"row[4, 0] = (0, 0, 255) # all blue\n" +"row[5, 0] = (255, 255, 0) # red and green\n" +"row[6, 0] = (255, 0, 255) # red and blue\n" +"row[7, 0] = (0, 255, 255) # green and blue\n" +"row.show()\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_extras/discuss.md:313 +msgid "![](../fig/grid-02.png)" +msgstr "" + +#: python-novice-inflammation/_extras/discuss.md:315 +msgid "Simple color values like `(0,255,0)` are easy enough to decipher with a bit of practice,\n" +"but what color is `(214,90,127)`?\n" +"To help us,\n" +"`ipythonblocks` provides a function called `show_color`:" +msgstr "" + +#: python-novice-inflammation/_extras/discuss.md:320 +# code block +msgid "~~~\n" +"from ipythonblocks import show_color\n" +"show_color(214, 90, 127)\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_extras/discuss.md:326 +msgid "![](../fig/ipythonblocks_show_color_example.png)" +msgstr "" + +#: python-novice-inflammation/_extras/discuss.md:328 +msgid "It also provides a table of standard colors:" +msgstr "" + +#: python-novice-inflammation/_extras/discuss.md:330 +# code block +msgid "~~~\n" +"from ipythonblocks import colors\n" +"c = ImageGrid(3, 2)\n" +"c[0, 0] = colors['Fuchsia']\n" +"c[0, 1] = colors['Salmon']\n" +"c[1, 0] = colors['Orchid']\n" +"c[1, 1] = colors['Lavender']\n" +"c[2, 0] = colors['LimeGreen']\n" +"c[2, 1] = colors['HotPink']\n" +"c.show()\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/_extras/discuss.md:343 +msgid "![](../fig/grid-03.png)" +msgstr "" + +#: python-novice-inflammation/_extras/discuss.md:345 +# blockquote, which can be cascaded +msgid "> ## Making a Colorbar" +msgstr "" + +#: python-novice-inflammation/_extras/discuss.md:346 +msgid ">\n" +"> Fill in the `____` in the code below to create a bar that changes color from dark blue to black.\n" +">\n" +"> ~~~\n" +"> bar = ImageGrid(10, 1)\n" +"> for x in range(10):\n" +"> bar[x, 0] = (0, 0, ____)\n" +"> bar.show()\n" +"> ~~~\n" +"> {: .language-python}" +msgstr "" + +#: python-novice-inflammation/_extras/discuss.md:358 +# blockquote, which can be cascaded +msgid "> ## Why RGB?" +msgstr "" + +#: python-novice-inflammation/_extras/discuss.md:359 +msgid ">\n" +"> Why do computers use red, green, and blue as their primary colors?" +msgstr "" + +#: python-novice-inflammation/_extras/discuss.md:363 +# blockquote, which can be cascaded +msgid "> ## Nested Loops" +msgstr "" + +#: python-novice-inflammation/_extras/discuss.md:364 +msgid ">\n" +"> Will changing the nesting of the loops in the code above --- i.e.,\n" +"> wrapping the Y-axis loop around the X-axis loop --- change the final image?\n" +"> Why or why not?" +msgstr "" + +#: python-novice-inflammation/_extras/discuss.md:370 +# blockquote, which can be cascaded +msgid "> ## Where to Change Data" +msgstr "" + +#: python-novice-inflammation/_extras/discuss.md:371 +msgid ">\n" +"> Why did we transpose our data outside our heat map function?\n" +"> Why not have the function perform the transpose?" +msgstr "" + +#: python-novice-inflammation/_extras/discuss.md:376 +# blockquote, which can be cascaded +msgid "> ## Return Versus Display" +msgstr "" + +#: python-novice-inflammation/_extras/discuss.md:377 +msgid ">\n" +"> Why does the heat map function return the grid rather than displaying it immediately?\n" +"> Do you think this is a good or bad design choice?" +msgstr "" + +#: python-novice-inflammation/_extras/extra_exercises.md:1 +# Front Matter +msgid "---\n" +"layout: page\n" +"title: \"Additional Exercises\"\n" +"permalink: /extra_exercises/\n" +"---" +msgstr "" + +#: python-novice-inflammation/_extras/extra_exercises.md:6 +msgid "A collection of exercises that have been either removed from\n" +"or not (yet) added to the main lesson." +msgstr "" + +#: python-novice-inflammation/_extras/extra_exercises.md:10 +# blockquote, which can be cascaded +msgid "> ## Swapping the contents of variables (5 min)" +msgstr "" + +#: python-novice-inflammation/_extras/extra_exercises.md:11 +msgid ">\n" +"> Explain what the overall effect of this code is:\n" +">\n" +"> ~~~\n" +"> left = 'L'\n" +"> right = 'R'\n" +">\n" +"> temp = left\n" +"> left = right\n" +"> right = temp\n" +"> ~~~\n" +"> {: .language-python}\n" +">\n" +"> Compare it to:\n" +">\n" +"> ~~~\n" +"> left, right = [right, left]\n" +"> ~~~\n" +"> {: .language-python}\n" +">\n" +"> Do they always do the same thing?\n" +"> Which do you find easier to read?\n" +">\n" +"> > ## Solution\n" +"> > Both examples exchange the values of `left` and `right`:\n" +"> >\n" +"> > ~~~\n" +"> > print(left, right)\n" +"> > ~~~\n" +"> > {: .language-python}\n" +"> >\n" +"> > ~~~\n" +"> > R L\n" +"> > ~~~\n" +"> > {: .output}\n" +"> >\n" +"> > In the first case we used a temporary variable `temp` to keep the value of `left` before we\n" +"> > overwrite it with the value of `right`. In the second case, `right` and `left` are packed into a\n" +"> > list and then unpacked into `left` and `right`." +msgstr "" + +#: python-novice-inflammation/_extras/figures.md:1 +#: python-novice-inflammation/bin/boilerplate/_extras/figures.md:1 +# Front Matter +msgid "---\n" +"title: Figures\n" +"---" +msgstr "" + +#: python-novice-inflammation/_extras/figures.md:5 +#: python-novice-inflammation/aio.md:4 +#: python-novice-inflammation/bin/boilerplate/_extras/figures.md:5 +#: python-novice-inflammation/bin/boilerplate/aio.md:4 +msgid "{% include base_path.html %}" +msgstr "" + +#: python-novice-inflammation/_extras/figures.md:7 +#: python-novice-inflammation/bin/boilerplate/_extras/figures.md:7 +# inline html +msgid "" +msgstr "" + +#: python-novice-inflammation/_extras/figures.md:61 +#: python-novice-inflammation/bin/boilerplate/_extras/figures.md:61 +msgid "{% comment %}\n" +"Create anchor for each one of the episodes.\n" +"{% endcomment %}\n" +"{% for episode in site.episodes %}\n" +"
\n" +"{% endfor %}" +msgstr "" + +#: python-novice-inflammation/_extras/guide.md:1 +# Front Matter +msgid "---\n" +"layout: page\n" +"title: \"Instructor Notes\"\n" +"permalink: /guide/\n" +"---" +msgstr "" + +#: python-novice-inflammation/_extras/guide.md:7 +# header +msgid "## About the lesson" +msgstr "" + +#: python-novice-inflammation/_extras/guide.md:9 +msgid "Our real goal isn't to teach workshop attendees Python as a programming language,\n" +"but to teach them the basic concepts that all programming depends on.\n" +"We use Python in our lessons because:" +msgstr "" + +#: python-novice-inflammation/_extras/guide.md:13 +# ordered list +msgid "1. It is free and open-source software." +msgstr "" + +#: python-novice-inflammation/_extras/guide.md:14 +# ordered list +msgid "2. It is well-documented and runs on all platforms." +msgstr "" + +#: python-novice-inflammation/_extras/guide.md:15 +# ordered list +msgid "3. It has a large and constantly growing user-base which includes scientists." +msgstr "" + +#: python-novice-inflammation/_extras/guide.md:16 +# ordered list +msgid "4. It is easier for novices to pick up than most other languages." +msgstr "" + +#: python-novice-inflammation/_extras/guide.md:18 +# header +msgid "## Legend" +msgstr "" + +#: python-novice-inflammation/_extras/guide.md:20 +msgid "We are using a dataset with records on inflammation from patients following an\n" +"arthritis treatment." +msgstr "" + +#: python-novice-inflammation/_extras/guide.md:23 +msgid "We make reference in the lesson that this data is somehow strange. It is strange\n" +"because it is fabricated! The script used to generate the inflammation data\n" +"is included as [`code/gen_inflammation.py`](../code/gen_inflammation.py)." +msgstr "" + +#: python-novice-inflammation/_extras/guide.md:27 +# header +msgid "## Overall" +msgstr "" + +#: python-novice-inflammation/_extras/guide.md:29 +msgid "This lesson is written as an introduction to Python,\n" +"but its real purpose is to introduce the single most important idea in programming:\n" +"how to solve problems by building functions,\n" +"each of which can fit in a programmer's working memory.\n" +"In order to teach that,\n" +"we must teach people a little about\n" +"the mechanics of manipulating data with lists and file I/O\n" +"so that their functions can do things they actually care about.\n" +"Our teaching order tries to show practical uses of every idea as soon as it is introduced;\n" +"instructors should resist the temptation to explain\n" +"the \"other 90%\" of the language\n" +"as well." +msgstr "" + +#: python-novice-inflammation/_extras/guide.md:42 +msgid "The final example asks them to build a command-line tool\n" +"that works with the Unix pipe-and-filter model.\n" +"We do this because it is a useful skill\n" +"and because it helps learners see that the software they use isn't magical.\n" +"Tools like `grep` might be more sophisticated than\n" +"the programs our learners can write at this point in their careers,\n" +"but it's crucial they realize this is a difference of scale rather than kind." +msgstr "" + +#: python-novice-inflammation/_extras/guide.md:50 +msgid "Explain that we use Python because:" +msgstr "" + +#: python-novice-inflammation/_extras/guide.md:52 +# unordered list +msgid "* It's free." +msgstr "" + +#: python-novice-inflammation/_extras/guide.md:53 +# unordered list +msgid "* It has a lot of scientific libraries, and more are constantly being added." +msgstr "" + +#: python-novice-inflammation/_extras/guide.md:54 +# unordered list +msgid "* It has a large scientific user community." +msgstr "" + +#: python-novice-inflammation/_extras/guide.md:55 +# unordered list +msgid "* It's easier for novices to learn than most of the mature alternatives." +msgstr "" + +#: python-novice-inflammation/_extras/guide.md:56 +msgid " (Software Carpentry originally used Perl;\n" +" when we switched,\n" +" we found that we could cover as much material in two days in Python\n" +" as we'd covered in three days in Perl,\n" +" and that retention was higher.)" +msgstr "" + +#: python-novice-inflammation/_extras/guide.md:62 +msgid "We do *not* include instructions on running the Jupyter Notebook in the tutorial\n" +"because we want to focus on the language rather than the tools.\n" +"Instructors should, however, walk learners through some basic operations:" +msgstr "" + +#: python-novice-inflammation/_extras/guide.md:66 +# unordered list +msgid "* Launch from the command line with `jupyter notebook`." +msgstr "" + +#: python-novice-inflammation/_extras/guide.md:67 +# unordered list +msgid "* Create a new notebook." +msgstr "" + +#: python-novice-inflammation/_extras/guide.md:68 +# unordered list +msgid "* Enter code or data in a cell and execute it." +msgstr "" + +#: python-novice-inflammation/_extras/guide.md:69 +# unordered list +msgid "* Explain the difference between `In[#]` and `Out[#]`." +msgstr "" + +#: python-novice-inflammation/_extras/guide.md:71 +msgid "Watching the instructor grow programs step by step\n" +"is as helpful to learners as anything to do with Python.\n" +"Resist the urge to update a single cell repeatedly\n" +"(which is what you'd probably do in real life).\n" +"Instead,\n" +"clone the previous cell and write the update in the new copy\n" +"so that learners have a complete record of how the program grew.\n" +"Once you've done this,\n" +"you can say,\n" +"\"Now why don't we just break things into small functions right from the start?\"" +msgstr "" + +#: python-novice-inflammation/_extras/guide.md:82 +msgid "The discussion of command-line scripts\n" +"assumes that students understand standard I/O and building filters,\n" +"which are covered in the lesson on the shell." +msgstr "" + +#: python-novice-inflammation/_extras/guide.md:86 +# header +msgid "## Frequently Argued Issues (FAI)" +msgstr "" + +#: python-novice-inflammation/_extras/guide.md:88 +# unordered list +msgid "* `import ... as ...` syntax." +msgstr "" + +#: python-novice-inflammation/_extras/guide.md:90 +msgid " This syntax is commonly used in the scientific Python community;\n" +" it is explicitly recommended in documentation to `import numpy as np`\n" +" and `import matplotlib.pyplot as plt`. Despite that, we have decided\n" +" not to introduce aliasing imports in this novice lesson due to the\n" +" additional cognitive load it puts on students, despite the typing that\n" +" it saves. A good summary of arguments for and against can be found in\n" +" [PR #61](https://github.com/swcarpentry/python-novice-inflammation/pull/61)." +msgstr "" + +#: python-novice-inflammation/_extras/guide.md:98 +msgid " It is up to you as an individual instructor whether you want to introduce\n" +" these aliases when you teach this lesson, but we encourage you to please\n" +" read those arguments thoroughly before deciding one way or the other." +msgstr "" + +#: python-novice-inflammation/_extras/guide.md:102 +# unordered list +msgid "* NumPy methods." +msgstr "" + +#: python-novice-inflammation/_extras/guide.md:104 +msgid " We used to use NumPy array methods in the first [NumPy topic]({{ page.root }}/01-numpy/).\n" +" We switched these methods to the equivalent functions because a majority\n" +" of instructors supported the change; see\n" +" [PR #244](https://github.com/swcarpentry/python-novice-inflammation/pull/244)\n" +" for detailed arguments for and against the change." +msgstr "" + +#: python-novice-inflammation/_extras/guide.md:110 +# unordered list +msgid "* Underscores vs. hyphens in filenames" +msgstr "" + +#: python-novice-inflammation/_extras/guide.md:112 +msgid " We used to use hyphens in filenames in order to signify that these Python\n" +" files should only be run as scripts and never imported. However, after some\n" +" [discussion](https://github.com/swcarpentry/python-novice-inflammation/pull/254),\n" +" including an informal Twitter poll, we switched over to underscores because\n" +" many files that start off as Python scripts end up being imported eventually.\n" +" For that reason, we also added `if __name__ == '__main__'` guards around\n" +" `main()` calls, which is how real-world Python scripts ensure that imports\n" +" do not result in side-effects." +msgstr "" + +#: python-novice-inflammation/_extras/guide.md:121 +msgid "After discussing the challenges is a good time to introduce the `b *= 2` syntax." +msgstr "" + +#: python-novice-inflammation/_includes/links.md:1 +msgid "{% include gh_variables.html %}" +msgstr "" + +#: python-novice-inflammation/_includes/links.md:3 +msgid "[cc-by-human]: https://creativecommons.org/licenses/by/4.0/\n" +"[cc-by-legal]: https://creativecommons.org/licenses/by/4.0/legalcode\n" +"[ci]: http://communityin.org/\n" +"[coc-reporting]: https://docs.carpentries.org/topic_folders/policies/code-of-conduct.html#reporting-guidelines\n" +"[coc]: https://docs.carpentries.org/topic_folders/policies/code-of-conduct.html\n" +"[concept-maps]: https://carpentries.github.io/instructor-training/05-memory/\n" +"[contrib-covenant]: https://contributor-covenant.org/\n" +"[contributing]: {{ repo_url }}/blob/{{ source_branch }}/CONTRIBUTING.md\n" +"[cran-checkpoint]: https://cran.r-project.org/package=checkpoint\n" +"[cran-knitr]: https://cran.r-project.org/package=knitr\n" +"[cran-stringr]: https://cran.r-project.org/package=stringr\n" +"[dc-lessons]: http://www.datacarpentry.org/lessons/\n" +"[email]: mailto:team@carpentries.org\n" +"[github-importer]: https://import.github.com/\n" +"[importer]: https://github.com/new/import\n" +"[jekyll-collection]: https://jekyllrb.com/docs/collections/\n" +"[jekyll-install]: https://jekyllrb.com/docs/installation/\n" +"[jekyll-windows]: http://jekyll-windows.juthilo.com/\n" +"[jekyll]: https://jekyllrb.com/\n" +"[jupyter]: https://jupyter.org/\n" +"[lc-lessons]: https://librarycarpentry.org/#portfolio\n" +"[lesson-example]: https://carpentries.github.io/lesson-example/\n" +"[mit-license]: https://opensource.org/licenses/mit-license.html\n" +"[morea]: https://morea-framework.github.io/\n" +"[numfocus]: https://numfocus.org/\n" +"[osi]: https://opensource.org\n" +"[pandoc]: https://pandoc.org/\n" +"[paper-now]: https://github.com/PeerJ/paper-now\n" +"[python-gapminder]: https://swcarpentry.github.io/python-novice-gapminder/\n" +"[pyyaml]: https://pypi.python.org/pypi/PyYAML\n" +"[r-markdown]: https://rmarkdown.rstudio.com/\n" +"[rstudio]: https://www.rstudio.com/\n" +"[ruby-install-guide]: https://www.ruby-lang.org/en/downloads/\n" +"[ruby-installer]: https://rubyinstaller.org/\n" +"[rubygems]: https://rubygems.org/pages/download/\n" +"[styles]: https://github.com/carpentries/styles/\n" +"[swc-lessons]: https://software-carpentry.org/lessons/ \n" +"[swc-releases]: https://github.com/swcarpentry/swc-releases\n" +"[workshop-repo]: {{ site.workshop_repo }}\n" +"[yaml]: http://yaml.org/" +msgstr "" + +#: python-novice-inflammation/aio.md:1 +#: python-novice-inflammation/bin/boilerplate/aio.md:1 +# Front Matter +msgid "---\n" +"---" +msgstr "" + +#: python-novice-inflammation/aio.md:6 +#: python-novice-inflammation/bin/boilerplate/aio.md:6 +# inline html +msgid "" +msgstr "" + +#: python-novice-inflammation/aio.md:32 +#: python-novice-inflammation/bin/boilerplate/aio.md:32 +msgid "{% comment %}\n" +"Create anchor for each one of the episodes.\n" +"{% endcomment %}\n" +"{% for episode in site.episodes %}\n" +"
\n" +"{% endfor %}" +msgstr "" + +#: python-novice-inflammation/bin/boilerplate/CONTRIBUTING.md:49 +msgid " please work in ,\n" +" which can be viewed at ." +msgstr "" + +#: python-novice-inflammation/bin/boilerplate/README.md:1 +# header +msgid "# FIXME Lesson title" +msgstr "" + +#: python-novice-inflammation/bin/boilerplate/README.md:3 +msgid "[![Create a Slack Account with us](https://img.shields.io/badge/Create_Slack_Account-The_Carpentries-071159.svg)](https://swc-slack-invite.herokuapp.com/)" +msgstr "" + +#: python-novice-inflammation/bin/boilerplate/README.md:5 +#: python-novice-inflammation/bin/boilerplate/_episodes/01-introduction.md:12 +#: python-novice-inflammation/bin/boilerplate/_extras/discuss.md:4 +#: python-novice-inflammation/bin/boilerplate/_extras/guide.md:4 +#: python-novice-inflammation/bin/boilerplate/reference.md:7 +#: python-novice-inflammation/bin/boilerplate/setup.md:4 +msgid "FIXME" +msgstr "" + +#: python-novice-inflammation/bin/boilerplate/README.md:9 +msgid "We welcome all contributions to improve the lesson! Maintainers will do their best to help you if you have any\n" +"questions, concerns, or experience any difficulties along the way." +msgstr "" + +#: python-novice-inflammation/bin/boilerplate/README.md:12 +msgid "We'd like to ask you to familiarize yourself with our [Contribution Guide](CONTRIBUTING.md) and have a look at\n" +"the [more detailed guidelines][lesson-example] on proper formatting, ways to render the lesson locally, and even\n" +"how to write new episodes." +msgstr "" + +#: python-novice-inflammation/bin/boilerplate/README.md:16 +# header +msgid "## Maintainer(s)" +msgstr "" + +#: python-novice-inflammation/bin/boilerplate/README.md:18 +# unordered list +msgid "* FIXME" +msgstr "" + +#: python-novice-inflammation/bin/boilerplate/README.md:28 +msgid "[lesson-example]: https://carpentries.github.io/lesson-example" +msgstr "" + +#: python-novice-inflammation/bin/boilerplate/_episodes/01-introduction.md:1 +# Front Matter +msgid "---\n" +"title: \"Introduction\"\n" +"teaching: 0\n" +"exercises: 0\n" +"questions:\n" +"- \"Key question (FIXME)\"\n" +"objectives:\n" +"- \"First objective. (FIXME)\"\n" +"keypoints:\n" +"- \"First key point. (FIXME)\"\n" +"---" +msgstr "" + +#: python-novice-inflammation/bin/boilerplate/_extras/about.md:1 +# Front Matter +msgid "---\n" +"title: About\n" +"---" +msgstr "" + +#: python-novice-inflammation/bin/boilerplate/_extras/about.md:4 +msgid "{% include carpentries.html %}\n" +"{% include links.md %}" +msgstr "" + +#: python-novice-inflammation/bin/boilerplate/_extras/discuss.md:1 +# Front Matter +msgid "---\n" +"title: Discussion\n" +"---" +msgstr "" + +#: python-novice-inflammation/bin/boilerplate/_extras/guide.md:1 +# Front Matter +msgid "---\n" +"title: \"Instructor Notes\"\n" +"---" +msgstr "" + +#: python-novice-inflammation/bin/boilerplate/index.md:1 +# Front Matter +msgid "---\n" +"layout: lesson\n" +"root: . # Is the only page that don't follow the partner /:path/index.html\n" +"permalink: index.html # Is the only page that don't follow the partner /:path/index.html\n" +"---" +msgstr "" + +#: python-novice-inflammation/bin/boilerplate/index.md:6 +msgid "FIXME: home page introduction" +msgstr "" + +#: python-novice-inflammation/bin/boilerplate/index.md:8 +#: python-novice-inflammation/index.md:33 +# blockquote, which can be cascaded +msgid "> ## Prerequisites" +msgstr "" + +#: python-novice-inflammation/bin/boilerplate/index.md:9 +msgid ">\n" +"> FIXME" +msgstr "" + +#: python-novice-inflammation/bin/boilerplate/index.md:11 +#: python-novice-inflammation/index.md:40 +# SC/DC Template label +msgid "{: .prereq}" +msgstr "" + +#: python-novice-inflammation/bin/boilerplate/reference.md:1 +# Front Matter +msgid "---\n" +"layout: reference\n" +"---" +msgstr "" + +#: python-novice-inflammation/bin/boilerplate/reference.md:5 +#: python-novice-inflammation/reference.md:7 +# header +msgid "## Glossary" +msgstr "" + +#: python-novice-inflammation/bin/boilerplate/setup.md:1 +# Front Matter +msgid "---\n" +"title: Setup\n" +"---" +msgstr "" + +#: python-novice-inflammation/fig/README.md:1 +# header +msgid "# Working with SVG figures" +msgstr "" + +#: python-novice-inflammation/fig/README.md:3 +msgid "Feel free use any text editor or a third-party application to create new or modify existing figures.\n" +"However, please inspect the figures with a text editor making note of all comments. \n" +"Be sure to add them back in (with appropriate changes) after you finish editing the figure. " +msgstr "" + +#: python-novice-inflammation/fig/README.md:8 +# header +msgid "## Using third-party SVG editors" +msgstr "" + +#: python-novice-inflammation/fig/README.md:10 +msgid "When using any third-party editor, please:" +msgstr "" + +#: python-novice-inflammation/fig/README.md:12 +# unordered list +msgid "- save the figure as \"plain\" SVG rather than editor-specific SVG." +msgstr "" + +#: python-novice-inflammation/fig/README.md:13 +# unordered list +msgid "- don't group elements (``) unless necessary" +msgstr "" + +#: python-novice-inflammation/fig/README.md:14 +# unordered list +msgid "- don't embed other SVG images using ``" +msgstr "" + +#: python-novice-inflammation/fig/README.md:15 +# unordered list +msgid "- don't use `version` attribute for the main `` element" +msgstr "" + +#: python-novice-inflammation/fig/README.md:17 +msgid "Once you finish editing the figure, open it in a text\n" +"editor and follow these steps:" +msgstr "" + +#: python-novice-inflammation/fig/README.md:20 +# unordered list +msgid "- Wrap lines to be under 100 characters (or less). For example, change this:" +msgstr "" + +#: python-novice-inflammation/fig/README.md:22 +# code block +msgid " ```xml\n" +" 65.0\n" +" ```" +msgstr "" + +#: python-novice-inflammation/fig/README.md:25 +msgid " to this:" +msgstr "" + +#: python-novice-inflammation/fig/README.md:27 +# code block +msgid " ```xml\n" +" 65.0\n" +" ```" +msgstr "" + +#: python-novice-inflammation/fig/README.md:35 +# unordered list +msgid "- Comment about the nature of each element using ``, for example:" +msgstr "" + +#: python-novice-inflammation/fig/README.md:37 +# code block +msgid "```xml\n" +" \n" +" " +msgstr "" + +#: python-novice-inflammation/fig/README.md:57 +# header +msgid "## Not an SVG expert" +msgstr "" + +#: python-novice-inflammation/fig/README.md:59 +msgid "Please don't be discouraged by the guidelines above. If you can't follow\n" +"them, please submit your contribution \"as is\" and mention that you could not\n" +"follow the guidelines for SVG. Maintainers will be happy to help you. Be sure,\n" +"however, that you allow maintainers to commit to the branch you used to submit\n" +"your contribution." +msgstr "" + +#: python-novice-inflammation/index.md:1 +# Front Matter +msgid "---\n" +"layout: lesson\n" +"root: .\n" +"---" +msgstr "" + +#: python-novice-inflammation/index.md:6 +msgid "The best way to learn how to program is to do something useful,\n" +"so this introduction to Python is built around a common scientific task:\n" +"**data analysis**." +msgstr "" + +#: python-novice-inflammation/index.md:10 +# header +msgid "### Arthritis Inflammation" +msgstr "" + +#: python-novice-inflammation/index.md:11 +msgid "We are studying **inflammation in patients** who have been given a new treatment for arthritis, and\n" +"need to analyze the first dozen data sets of their daily inflammation. The data sets are stored in\n" +"[comma-separated values]({{ page.root }}/reference/#comma-separated-values) (CSV) format:" +msgstr "" + +#: python-novice-inflammation/index.md:15 +# unordered list +msgid "- each row holds information for a single patient," +msgstr "" + +#: python-novice-inflammation/index.md:16 +# unordered list +msgid "- columns represent successive days." +msgstr "" + +#: python-novice-inflammation/index.md:18 +msgid "The first three rows of our first file look like this:\n" +"~~~\n" +"0,0,1,3,1,2,4,7,8,3,3,3,10,5,7,4,7,7,12,18,6,13,11,11,7,7,4,6,8,8,4,4,5,7,3,4,2,3,0,0\n" +"0,1,2,1,2,1,3,2,2,6,10,11,5,9,4,4,7,16,8,6,18,4,12,5,12,7,11,5,11,3,3,5,4,4,5,5,1,1,0,1\n" +"0,1,1,3,3,2,6,2,5,9,5,7,4,5,4,15,5,11,9,10,19,14,12,17,7,12,11,7,4,2,10,5,4,2,2,3,2,2,1,1\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/index.md:24 +#: python-novice-inflammation/setup.md:29 +#: python-novice-inflammation/setup.md:37 +#: python-novice-inflammation/setup.md:48 +#: python-novice-inflammation/setup.md:54 +#: python-novice-inflammation/setup.md:68 +#: python-novice-inflammation/setup.md:88 +# SC/DC Template label +msgid "{: .source}" +msgstr "" + +#: python-novice-inflammation/index.md:26 +msgid "So, we want to:" +msgstr "" + +#: python-novice-inflammation/index.md:28 +# ordered list +msgid "1. Calculate the average inflammation per day across all patients." +msgstr "" + +#: python-novice-inflammation/index.md:29 +# ordered list +msgid "2. Plot the result to discuss and share with colleagues." +msgstr "" + +#: python-novice-inflammation/index.md:31 +msgid "To do all that, we'll have to learn a little bit about programming." +msgstr "" + +#: python-novice-inflammation/index.md:34 +msgid ">\n" +"> You need to understand the concepts of **files** and **directories** and how to start a Python\n" +"> interpreter before tackling this lesson. This lesson sometimes references Jupyter\n" +"> Notebook although you can use any Python interpreter mentioned in the [Setup](setup/).\n" +">\n" +"> The commands in this lesson pertain to **Python 3**." +msgstr "" + +#: python-novice-inflammation/index.md:42 +# header +msgid "### Getting Started" +msgstr "" + +#: python-novice-inflammation/index.md:43 +msgid "To get started, follow the directions on the \"[Setup](setup/)\" page to download data\n" +"and install a Python interpreter." +msgstr "" + +#: python-novice-inflammation/reference.md:1 +# Front Matter +msgid "---\n" +"layout: reference\n" +"permalink: /reference/\n" +"root: ..\n" +"---" +msgstr "" + +#: python-novice-inflammation/reference.md:9 +msgid "{:auto_ids}\n" +"additive color model\n" +": A way to represent colors as the sum of contributions from primary colors\n" +" such as [red, green, and blue](#rgb)." +msgstr "" + +#: python-novice-inflammation/reference.md:14 +msgid "argument\n" +": A value given to a function or program when it runs.\n" +" The term is often used interchangeably (and inconsistently) with [parameter](#parameter)." +msgstr "" + +#: python-novice-inflammation/reference.md:18 +msgid "assertion\n" +": An expression which is supposed to be true at a particular point in a program.\n" +" Programmers typically put assertions in their code to check for errors;\n" +" if the assertion fails (i.e., if the expression evaluates as false),\n" +" the program halts and produces an error message.\n" +" See also: [invariant](#invariant), [precondition](#precondition), [postcondition](#postcondition)." +msgstr "" + +#: python-novice-inflammation/reference.md:25 +msgid "assign\n" +": To give a value a name by associating a variable with it." +msgstr "" + +#: python-novice-inflammation/reference.md:28 +msgid "body\n" +": (of a function): the statements that are executed when a function runs." +msgstr "" + +#: python-novice-inflammation/reference.md:31 +msgid "call stack\n" +": A data structure inside a running program that keeps track of active function calls." +msgstr "" + +#: python-novice-inflammation/reference.md:34 +msgid "case-insensitive\n" +": Treating text as if upper and lower case characters of the same letter were the same.\n" +" See also: [case-sensitive](#case-sensitive)." +msgstr "" + +#: python-novice-inflammation/reference.md:38 +msgid "case-sensitive\n" +": Treating text as if upper and lower case characters of the same letter are different.\n" +" See also: [case-insensitive](#case-insensitive)." +msgstr "" + +#: python-novice-inflammation/reference.md:42 +msgid "comment\n" +": A remark in a program that is intended to help human readers understand what is going on,\n" +" but is ignored by the computer.\n" +" Comments in Python, R, and the Unix shell start with a `#` character and run to the end of the line;\n" +" comments in SQL start with `--`,\n" +" and other languages have other conventions." +msgstr "" + +#: python-novice-inflammation/reference.md:49 +msgid "compose\n" +": To apply one function to the result of another, such as `f(g(x))`." +msgstr "" + +#: python-novice-inflammation/reference.md:52 +msgid "conditional statement\n" +": A statement in a program that might or might not be executed\n" +" depending on whether a test is true or false." +msgstr "" + +#: python-novice-inflammation/reference.md:56 +msgid "comma-separated values\n" +": (CSV) A common textual representation for tables\n" +" in which the values in each row are separated by commas." +msgstr "" + +#: python-novice-inflammation/reference.md:60 +msgid "default value\n" +": A value to use for a [parameter](#parameter) if nothing is specified explicitly." +msgstr "" + +#: python-novice-inflammation/reference.md:63 +msgid "defensive programming\n" +": The practice of writing programs that check their own operation to catch errors as early as possible." +msgstr "" + +#: python-novice-inflammation/reference.md:66 +msgid "delimiter\n" +": A character or characters used to separate individual values,\n" +" such as the commas between columns in a [CSV](#comma-separated-values) file." +msgstr "" + +#: python-novice-inflammation/reference.md:70 +msgid "docstring\n" +": Short for \"documentation string\",\n" +" this refers to textual documentation embedded in Python programs.\n" +" Unlike comments, docstrings are preserved in the running program\n" +" and can be examined in interactive sessions." +msgstr "" + +#: python-novice-inflammation/reference.md:76 +msgid "documentation\n" +": Human-language text written to explain what software does,\n" +" how it works, or how to use it." +msgstr "" + +#: python-novice-inflammation/reference.md:80 +msgid "dotted notation\n" +": A two-part notation used in many programming languages\n" +" in which `thing.component` refers to the `component` belonging to `thing`." +msgstr "" + +#: python-novice-inflammation/reference.md:84 +msgid "empty string\n" +": A character string containing no characters,\n" +" often thought of as the \"zero\" of text." +msgstr "" + +#: python-novice-inflammation/reference.md:88 +msgid "encapsulation\n" +": The practice of hiding something's implementation details\n" +" so that the rest of a program can worry about *what* it does\n" +" rather than *how* it does it." +msgstr "" + +#: python-novice-inflammation/reference.md:93 +msgid "floating-point number\n" +": A number containing a fractional part and an exponent.\n" +" See also: [integer](#integer)." +msgstr "" + +#: python-novice-inflammation/reference.md:97 +msgid "for loop\n" +": A loop that is executed once for each value in some kind of set, list, or range.\n" +" See also: [while loop](#while-loop)." +msgstr "" + +#: python-novice-inflammation/reference.md:101 +msgid "function\n" +": A group of instructions (i.e., lines of code) that transform\n" +" some input [arguments](#argument) to some output." +msgstr "" + +#: python-novice-inflammation/reference.md:105 +msgid "function call\n" +": A use of a function in another piece of software." +msgstr "" + +#: python-novice-inflammation/reference.md:108 +msgid "immutable\n" +": Unchangeable.\n" +" The value of immutable data cannot be altered after it has been created.\n" +" See also: [mutable](#mutable)." +msgstr "" + +#: python-novice-inflammation/reference.md:113 +msgid "import\n" +": To load a [library](#library) into a program." +msgstr "" + +#: python-novice-inflammation/reference.md:116 +msgid "in-place operators\n" +": An operator such as `+=` that provides a shorthand notation for\n" +" the common case in which the variable being assigned to\n" +" is also an operand on the right hand side of the assignment.\n" +" For example, the statement `x += 3` means the same thing as `x = x + 3`." +msgstr "" + +#: python-novice-inflammation/reference.md:122 +msgid "index\n" +": A subscript that specifies the location of a single value in a collection,\n" +" such as a single pixel in an image." +msgstr "" + +#: python-novice-inflammation/reference.md:126 +msgid "inner loop\n" +": A loop that is inside another loop. See also: [outer loop](#outer-loop)." +msgstr "" + +#: python-novice-inflammation/reference.md:129 +msgid "integer\n" +": A whole number, such as -12343. See also: [floating-point number](#floating-point-number)." +msgstr "" + +#: python-novice-inflammation/reference.md:132 +msgid "invariant\n" +": An expression whose value doesn't change during the execution of a program,\n" +" typically used in an [assertion](#assertion).\n" +" See also: [precondition](#precondition), [postcondition](#postcondition)." +msgstr "" + +#: python-novice-inflammation/reference.md:137 +msgid "library\n" +": A family of code units (functions, classes, variables) that implement a set of\n" +" related tasks." +msgstr "" + +#: python-novice-inflammation/reference.md:141 +msgid "loop variable\n" +": The variable that keeps track of the progress of the loop." +msgstr "" + +#: python-novice-inflammation/reference.md:144 +msgid "member\n" +": A variable contained within an [object](#object)." +msgstr "" + +#: python-novice-inflammation/reference.md:147 +msgid "method\n" +": A function which is tied to a particular [object](#object).\n" +" Each of an object's methods typically implements one of the things it can do,\n" +" or one of the questions it can answer." +msgstr "" + +#: python-novice-inflammation/reference.md:152 +msgid "mutable\n" +": Changeable. The value of mutable data can be altered after it has been\n" +" created. See [immutable](#immutable).\"" +msgstr "" + +#: python-novice-inflammation/reference.md:156 +msgid "object\n" +": A collection of conceptually related variables ([members](#member)) and\n" +" functions using those variables ([methods](#method))." +msgstr "" + +#: python-novice-inflammation/reference.md:160 +msgid "outer loop\n" +": A loop that contains another loop.\n" +" See also: [inner loop](#inner-loop)." +msgstr "" + +#: python-novice-inflammation/reference.md:164 +msgid "parameter\n" +": A variable named in the function's declaration that is used to hold a value passed into the call.\n" +" The term is often used interchangeably (and inconsistently) with [argument](#argument)." +msgstr "" + +#: python-novice-inflammation/reference.md:168 +msgid "pipe\n" +": A connection from the output of one program to the input of another.\n" +" When two or more programs are connected in this way, they are called a \"pipeline\"." +msgstr "" + +#: python-novice-inflammation/reference.md:172 +msgid "postcondition\n" +": A condition that a function (or other block of code) guarantees is true\n" +" once it has finished running.\n" +" Postconditions are often represented using [assertions](#assertion)." +msgstr "" + +#: python-novice-inflammation/reference.md:177 +msgid "precondition\n" +": A condition that must be true in order for a function (or other block of code) to run correctly." +msgstr "" + +#: python-novice-inflammation/reference.md:180 +msgid "regression\n" +": To re-introduce a bug that was once fixed." +msgstr "" + +#: python-novice-inflammation/reference.md:183 +msgid "return statement\n" +": A statement that causes a function to stop executing and return a value to its caller immediately." +msgstr "" + +#: python-novice-inflammation/reference.md:186 +msgid "RGB\n" +": An [additive model](#additive-color-model)\n" +" that represents colors as combinations of red, green, and blue.\n" +" Each color's value is typically in the range 0..255\n" +" (i.e., a one-byte integer)." +msgstr "" + +#: python-novice-inflammation/reference.md:192 +msgid "sequence\n" +": A collection of information that is presented in a specific order.\n" +" For example, in Python, a [string](#string) is a sequence of characters,\n" +" while a list is a sequence of any variable." +msgstr "" + +#: python-novice-inflammation/reference.md:197 +msgid "shape\n" +": An array's dimensions, represented as a vector.\n" +" For example, a 5×3 array's shape is `(5,3)`." +msgstr "" + +#: python-novice-inflammation/reference.md:201 +msgid "silent failure\n" +": Failing without producing any warning messages.\n" +" Silent failures are hard to detect and debug." +msgstr "" + +#: python-novice-inflammation/reference.md:205 +msgid "slice\n" +": A regular subsequence of a larger sequence,\n" +" such as the first five elements or every second element." +msgstr "" + +#: python-novice-inflammation/reference.md:209 +msgid "stack frame\n" +": A data structure that provides storage for a function's local variables.\n" +" Each time a function is called, a new stack frame is created\n" +" and put on the top of the [call stack](#call-stack). When the function returns,\n" +" the stack frame is discarded." +msgstr "" + +#: python-novice-inflammation/reference.md:215 +msgid "standard input\n" +": A process's default input stream.\n" +" In interactive command-line applications,\n" +" it is typically connected to the keyboard; in a [pipe](#pipe),\n" +" it receives data from the [standard output](#standard-output) of the preceding process." +msgstr "" + +#: python-novice-inflammation/reference.md:221 +msgid "standard output\n" +": A process's default output stream.\n" +" In interactive command-line applications,\n" +" data sent to standard output is displayed on the screen;\n" +" in a [pipe](#pipe),\n" +" it is passed to the [standard input](#standard-input) of the next process." +msgstr "" + +#: python-novice-inflammation/reference.md:228 +msgid "string\n" +": Short for \"character string\",\n" +" a [sequence](#sequence) of zero or more characters." +msgstr "" + +#: python-novice-inflammation/reference.md:232 +msgid "syntax error\n" +": A programming error that occurs when statements are in an order or contain characters\n" +" not expected by the programming language." +msgstr "" + +#: python-novice-inflammation/reference.md:236 +msgid "test oracle\n" +": A program, device, data set, or human being\n" +" against which the results of a test can be compared." +msgstr "" + +#: python-novice-inflammation/reference.md:240 +msgid "test-driven development\n" +": The practice of writing unit tests *before* writing the code they test." +msgstr "" + +#: python-novice-inflammation/reference.md:243 +msgid "traceback\n" +": The sequence of function calls that led to an error." +msgstr "" + +#: python-novice-inflammation/reference.md:246 +msgid "tuple\n" +": An [immutable](#immutable) [sequence](#sequence) of values." +msgstr "" + +#: python-novice-inflammation/reference.md:249 +msgid "type\n" +": The classification of something in a program (for example, the contents of a variable)\n" +" as a kind of number (e.g. [floating-point](#float), [integer](#integer)), [string](#string), or something else." +msgstr "" + +#: python-novice-inflammation/reference.md:253 +msgid "type of error\n" +": Indicates the nature of an error in a program. For example, in Python,\n" +" an `IOError` to problems with file input/output.\n" +" See also: [syntax error](#syntax-error)." +msgstr "" + +#: python-novice-inflammation/reference.md:258 +msgid "variable\n" +": A value that has a name associated with it." +msgstr "" + +#: python-novice-inflammation/reference.md:261 +msgid "while loop\n" +": A loop that keeps executing as long as some condition is true.\n" +" See also: [for loop](#for-loop)." +msgstr "" + +#: python-novice-inflammation/setup.md:1 +# Front Matter +msgid "---\n" +"layout: page\n" +"title: Setup\n" +"permalink: /setup/\n" +"root: ..\n" +"---" +msgstr "" + +#: python-novice-inflammation/setup.md:8 +# header +msgid "### Obtain lesson materials" +msgstr "" + +#: python-novice-inflammation/setup.md:10 +# ordered list +msgid "1. Download [python-novice-inflammation-data.zip][zipfile1]" +msgstr "" + +#: python-novice-inflammation/setup.md:11 +msgid " and [python-novice-inflammation-code.zip][zipfile2].\n" +"2. Create a folder called `swc-python` on your Desktop.\n" +"3. Move downloaded files into this newly created folder.\n" +"4. Unzip the files." +msgstr "" + +#: python-novice-inflammation/setup.md:16 +msgid "You should now see two new folders called `data` and `code` in your `swc-python` directory on your\n" +"Desktop." +msgstr "" + +#: python-novice-inflammation/setup.md:19 +#: python-novice-inflammation/setup.md:39 +#: python-novice-inflammation/setup.md:56 +#: python-novice-inflammation/setup.md:75 +msgid "  " +msgstr "" + +#: python-novice-inflammation/setup.md:21 +# header +msgid "### Navigate to the `data` folder" +msgstr "" + +#: python-novice-inflammation/setup.md:23 +msgid "If you're using a Unix shell application, such as Terminal app in macOS, Console or Terminal in\n" +"Linux, or [Git Bash](https://gitforwindows.org/) on Windows, execute the following command:" +msgstr "" + +#: python-novice-inflammation/setup.md:26 +# code block +msgid "~~~\n" +"$ cd ~/Desktop/swc-python/data\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/setup.md:31 +msgid "On Windows, you can use its native Command Prompt program. The easiest way to start it up is by\n" +"pressing Windows Logo Key+R, entering `cmd`, and hitting Enter. In\n" +"the Command Prompt, use the following command to navigate to the `data` folder:\n" +"~~~\n" +"$ cd /D %userprofile%\\Desktop\\swc-python\\data\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/setup.md:41 +# header +msgid "### Option 1: Launch Plain Vanilla Python interpreter" +msgstr "" + +#: python-novice-inflammation/setup.md:43 +msgid "To start working with Python, we need to launch a program that will interpret and execute our Python\n" +"commands. To launch a \"plain vanilla\" Python interpreter, execute:\n" +"~~~\n" +"$ python\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/setup.md:50 +msgid "If you are using Git Bash on Windows, you have to call Python _via_ `winpty`:\n" +"~~~\n" +"$ winpty python\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/setup.md:58 +# header +msgid "### Option 2: Start Jupyter notebook" +msgstr "" + +#: python-novice-inflammation/setup.md:60 +msgid "Jupyter notebooks provide a browser-based interface for working with Python. If you would like to\n" +"use a notebook during the lesson, make sure to install [Anaconda\n" +"Distribution](http://carpentries.github.io/workshop-template/#python)." +msgstr "" + +#: python-novice-inflammation/setup.md:64 +msgid "To start a Jupyter server, execute:\n" +"~~~\n" +"$ jupyter notebook\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/setup.md:70 +msgid "Then create a new notebook by clicking \"New\" button on the right and selecting \"Python 3\" from the\n" +"drop-down menu:" +msgstr "" + +#: python-novice-inflammation/setup.md:73 +msgid "![](../fig/new-notebook.png)" +msgstr "" + +#: python-novice-inflammation/setup.md:77 +# header +msgid "### Option 3: Start IPython interpreter" +msgstr "" + +#: python-novice-inflammation/setup.md:79 +msgid "IPython is an alternative solution situated somewhere in between the plain vanilla Python\n" +"interpreter and Jupyter notebooks. It provides an interactive command-line based interpreter with\n" +"various convenience features and commands. You should have IPython on your system if you installed\n" +"[Anaconda Distribution](http://carpentries.github.io/workshop-template/#python)." +msgstr "" + +#: python-novice-inflammation/setup.md:84 +msgid "To start using IPython, execute:\n" +"~~~\n" +"$ ipython\n" +"~~~" +msgstr "" + +#: python-novice-inflammation/setup.md:90 +msgid "[zipfile1]: {{ page.root }}/data/python-novice-inflammation-data.zip\n" +"[zipfile2]: {{ page.root }}/code/python-novice-inflammation-code.zip" +msgstr "" + diff --git a/r-novice-gapminder.ja.po b/po/.ancestors/.r-novice-gapminder.ja.po.ancestor similarity index 55% rename from r-novice-gapminder.ja.po rename to po/.ancestors/.r-novice-gapminder.ja.po.ancestor index 58eacdd2..61a65b80 100644 --- a/r-novice-gapminder.ja.po +++ b/po/.ancestors/.r-novice-gapminder.ja.po.ancestor @@ -1,54 +1,40 @@ -# Japanese translation of the Software Carpentry R for Reproducible Scientific Analysis Lesson -# Copyright (C) 2018 Software Carpentry Foundation; Japanese Translation Team +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# Software-Carpentry Japanese-Team , 2018. -# +# FIRST AUTHOR , YEAR. +# msgid "" msgstr "" "Project-Id-Version: i18n\n" "Report-Msgid-Bugs-To: https://github.com/haiwen/seafile-docs/issues\n" -"POT-Creation-Date: 2018-09-15 22:59:57+0900\n" -"PO-Revision-Date: 2018-11-26 18:01+0900\n" +"POT-Creation-Date: 2018-09-16 01:25:36+0900\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=1; plural=0;\n" -"Last-Translator: \n" -"Language-Team: Japanese \n" -"Language: ja\n" -"X-Generator: Poedit 2.2\n" -# Front Matter #: r-novice-gapminder/CODE_OF_CONDUCT.md:1 #: r-novice-gapminder/bin/boilerplate/CODE_OF_CONDUCT.md:1 -msgid "" -"---\n" +# Front Matter +msgid "---\n" "layout: page\n" "title: \"Contributor Code of Conduct\"\n" "---" msgstr "" -"---\n" -"layout: page\n" -"title: \"Contributor Code of Conduct\"\n" -"---" #: r-novice-gapminder/CODE_OF_CONDUCT.md:5 #: r-novice-gapminder/bin/boilerplate/CODE_OF_CONDUCT.md:5 -msgid "" -"As contributors and maintainers of this project,\n" +msgid "As contributors and maintainers of this project,\n" "we pledge to follow the [Carpentry Code of Conduct][coc]." msgstr "" -"As contributors and maintainers of this project,\n" -"we pledge to follow the [Carpentry Code of Conduct][coc]." #: r-novice-gapminder/CODE_OF_CONDUCT.md:8 #: r-novice-gapminder/bin/boilerplate/CODE_OF_CONDUCT.md:8 -msgid "" -"Instances of abusive, harassing, or otherwise unacceptable behavior\n" +msgid "Instances of abusive, harassing, or otherwise unacceptable behavior\n" "may be reported by following our [reporting guidelines][coc-reporting]." msgstr "" -"Instances of abusive, harassing, or otherwise unacceptable behavior\n" -"may be reported by following our [reporting guidelines][coc-reporting]." #: r-novice-gapminder/CODE_OF_CONDUCT.md:11 #: r-novice-gapminder/bin/boilerplate/CODE_OF_CONDUCT.md:11 @@ -60,40 +46,32 @@ msgstr "" #: r-novice-gapminder/bin/boilerplate/reference.md:9 #: r-novice-gapminder/bin/boilerplate/setup.md:7 msgid "{% include links.md %}" -msgstr "{% include links.md %}" +msgstr "" -# header #: r-novice-gapminder/CONTRIBUTING.md:1 #: r-novice-gapminder/bin/boilerplate/CONTRIBUTING.md:1 +# header msgid "# Contributing" -msgstr "# Contributing" +msgstr "" #: r-novice-gapminder/CONTRIBUTING.md:3 #: r-novice-gapminder/bin/boilerplate/CONTRIBUTING.md:3 -msgid "" -"[Software Carpentry][swc-site] and [Data Carpentry][dc-site] are open source projects,\n" +msgid "[Software Carpentry][swc-site] and [Data Carpentry][dc-site] are open source projects,\n" "and we welcome contributions of all kinds:\n" "new lessons,\n" "fixes to existing material,\n" "bug reports,\n" "and reviews of proposed changes are all welcome." msgstr "" -"[Software Carpentry][swc-site] and [Data Carpentry][dc-site] are open source projects,\n" -"and we welcome contributions of all kinds:\n" -"new lessons,\n" -"fixes to existing material,\n" -"bug reports,\n" -"and reviews of proposed changes are all welcome." -# header #: r-novice-gapminder/CONTRIBUTING.md:10 #: r-novice-gapminder/bin/boilerplate/CONTRIBUTING.md:10 +# header msgid "## Contributor Agreement" -msgstr "## Contributor Agreement" +msgstr "" #: r-novice-gapminder/CONTRIBUTING.md:12 -msgid "" -"By contributing,\n" +msgid "By contributing,\n" "you agree that we may redistribute your work under [our license](LICENSE.md).\n" "In exchange,\n" "we will address your issues and/or assess your change proposal as promptly as we can,\n" @@ -101,171 +79,127 @@ msgid "" "Everyone involved in [Software Carpentry][swc-site] and [Data Carpentry][dc-site]\n" "agrees to abide by our [code of conduct](CONDUCT.md)." msgstr "" -"By contributing,\n" -"you agree that we may redistribute your work under [our license](LICENSE.md).\n" -"In exchange,\n" -"we will address your issues and/or assess your change proposal as promptly as we can,\n" -"and help you become a member of our community.\n" -"Everyone involved in [Software Carpentry][swc-site] and [Data Carpentry][dc-site]\n" -"agrees to abide by our [code of conduct](CONDUCT.md)." -# header #: r-novice-gapminder/CONTRIBUTING.md:20 #: r-novice-gapminder/bin/boilerplate/CONTRIBUTING.md:20 +# header msgid "## How to Contribute" -msgstr "## How to Contribute" +msgstr "" #: r-novice-gapminder/CONTRIBUTING.md:22 #: r-novice-gapminder/bin/boilerplate/CONTRIBUTING.md:22 -msgid "" -"The easiest way to get started is to file an issue\n" +msgid "The easiest way to get started is to file an issue\n" "to tell us about a spelling mistake,\n" "some awkward wording,\n" "or a factual error.\n" "This is a good way to introduce yourself\n" "and to meet some of our community members." msgstr "" -"The easiest way to get started is to file an issue\n" -"to tell us about a spelling mistake,\n" -"some awkward wording,\n" -"or a factual error.\n" -"This is a good way to introduce yourself\n" -"and to meet some of our community members." -# ordered list #: r-novice-gapminder/CONTRIBUTING.md:29 #: r-novice-gapminder/bin/boilerplate/CONTRIBUTING.md:29 +# ordered list msgid "1. If you do not have a [GitHub][github] account," -msgstr "1. If you do not have a [GitHub][github] account," +msgstr "" #: r-novice-gapminder/CONTRIBUTING.md:30 -msgid "" -" you can [send us comments by email][contact].\n" +msgid " you can [send us comments by email][contact].\n" " However,\n" " we will be able to respond more quickly if you use one of the other methods described below." msgstr "" -" you can [send us comments by email][contact].\n" -" However,\n" -" we will be able to respond more quickly if you use one of the other methods described below." -# ordered list #: r-novice-gapminder/CONTRIBUTING.md:34 #: r-novice-gapminder/bin/boilerplate/CONTRIBUTING.md:34 +# ordered list msgid "2. If you have a [GitHub][github] account," -msgstr "2. If you have a [GitHub][github] account," +msgstr "" #: r-novice-gapminder/CONTRIBUTING.md:35 #: r-novice-gapminder/bin/boilerplate/CONTRIBUTING.md:35 -msgid "" -" or are willing to [create one][github-join],\n" +msgid " or are willing to [create one][github-join],\n" " but do not know how to use Git,\n" " you can report problems or suggest improvements by [creating an issue][issues].\n" " This allows us to assign the item to someone\n" " and to respond to it in a threaded discussion." msgstr "" -" or are willing to [create one][github-join],\n" -" but do not know how to use Git,\n" -" you can report problems or suggest improvements by [creating an issue][issues].\n" -" This allows us to assign the item to someone\n" -" and to respond to it in a threaded discussion." -# ordered list #: r-novice-gapminder/CONTRIBUTING.md:41 #: r-novice-gapminder/bin/boilerplate/CONTRIBUTING.md:41 +# ordered list msgid "3. If you are comfortable with Git," -msgstr "3. If you are comfortable with Git," +msgstr "" #: r-novice-gapminder/CONTRIBUTING.md:42 #: r-novice-gapminder/bin/boilerplate/CONTRIBUTING.md:42 -msgid "" -" and would like to add or change material,\n" +msgid " and would like to add or change material,\n" " you can submit a pull request (PR).\n" " Instructions for doing this are [included below](#using-github)." msgstr "" -" and would like to add or change material,\n" -" you can submit a pull request (PR).\n" -" Instructions for doing this are [included below](#using-github)." -# header #: r-novice-gapminder/CONTRIBUTING.md:46 #: r-novice-gapminder/bin/boilerplate/CONTRIBUTING.md:46 +# header msgid "## Where to Contribute" -msgstr "## Where to Contribute" +msgstr "" -# ordered list #: r-novice-gapminder/CONTRIBUTING.md:48 #: r-novice-gapminder/bin/boilerplate/CONTRIBUTING.md:48 +# ordered list msgid "1. If you wish to change this lesson," -msgstr "1. If you wish to change this lesson," +msgstr "" #: r-novice-gapminder/CONTRIBUTING.md:49 -msgid "" -" please work in ,\n" +msgid " please work in ,\n" " which can be viewed at ." msgstr "" -" please work in ,\n" -" which can be viewed at ." -# ordered list #: r-novice-gapminder/CONTRIBUTING.md:52 #: r-novice-gapminder/bin/boilerplate/CONTRIBUTING.md:52 +# ordered list msgid "2. If you wish to change the example lesson," -msgstr "2. If you wish to change the example lesson," +msgstr "" #: r-novice-gapminder/CONTRIBUTING.md:53 #: r-novice-gapminder/bin/boilerplate/CONTRIBUTING.md:53 -msgid "" -" please work in ,\n" +msgid " please work in ,\n" " which documents the format of our lessons\n" " and can be viewed at ." msgstr "" -" please work in ,\n" -" which documents the format of our lessons\n" -" and can be viewed at ." -# ordered list #: r-novice-gapminder/CONTRIBUTING.md:57 #: r-novice-gapminder/bin/boilerplate/CONTRIBUTING.md:57 +# ordered list msgid "3. If you wish to change the template used for workshop websites," -msgstr "3. If you wish to change the template used for workshop websites," +msgstr "" #: r-novice-gapminder/CONTRIBUTING.md:58 #: r-novice-gapminder/bin/boilerplate/CONTRIBUTING.md:58 -msgid "" -" please work in .\n" +msgid " please work in .\n" " The home page of that repository explains how to set up workshop websites,\n" " while the extra pages in \n" " provide more background on our design choices." msgstr "" -" please work in .\n" -" The home page of that repository explains how to set up workshop websites,\n" -" while the extra pages in \n" -" provide more background on our design choices." -# ordered list #: r-novice-gapminder/CONTRIBUTING.md:63 #: r-novice-gapminder/bin/boilerplate/CONTRIBUTING.md:63 +# ordered list msgid "4. If you wish to change CSS style files, tools," -msgstr "4. If you wish to change CSS style files, tools," +msgstr "" #: r-novice-gapminder/CONTRIBUTING.md:64 #: r-novice-gapminder/bin/boilerplate/CONTRIBUTING.md:64 -msgid "" -" or HTML boilerplate for lessons or workshops stored in `_includes` or `_layouts`,\n" +msgid " or HTML boilerplate for lessons or workshops stored in `_includes` or `_layouts`,\n" " please work in ." msgstr "" -" or HTML boilerplate for lessons or workshops stored in `_includes` or `_layouts`,\n" -" please work in ." -# header #: r-novice-gapminder/CONTRIBUTING.md:67 #: r-novice-gapminder/bin/boilerplate/CONTRIBUTING.md:67 +# header msgid "## What to Contribute" -msgstr "## What to Contribute" +msgstr "" #: r-novice-gapminder/CONTRIBUTING.md:69 -msgid "" -"There are many ways to contribute,\n" +msgid "There are many ways to contribute,\n" "from writing new exercises and improving existing ones\n" "to updating or filling in the documentation\n" "and submitting [bug reports][issues]\n" @@ -275,43 +209,26 @@ msgid "" "or the issues for [Data Carpentry][dc-issues]\n" "and [Software Carpentry][swc-issues] projects." msgstr "" -"There are many ways to contribute,\n" -"from writing new exercises and improving existing ones\n" -"to updating or filling in the documentation\n" -"and submitting [bug reports][issues]\n" -"about things that don't work, aren't clear, or are missing.\n" -"If you are looking for ideas,\n" -"please see [the list of issues for this repository][issues],\n" -"or the issues for [Data Carpentry][dc-issues]\n" -"and [Software Carpentry][swc-issues] projects." #: r-novice-gapminder/CONTRIBUTING.md:79 #: r-novice-gapminder/bin/boilerplate/CONTRIBUTING.md:79 -msgid "" -"Comments on issues and reviews of pull requests are just as welcome:\n" +msgid "Comments on issues and reviews of pull requests are just as welcome:\n" "we are smarter together than we are on our own.\n" "Reviews from novices and newcomers are particularly valuable:\n" "it's easy for people who have been using these lessons for a while\n" "to forget how impenetrable some of this material can be,\n" "so fresh eyes are always welcome." msgstr "" -"Comments on issues and reviews of pull requests are just as welcome:\n" -"we are smarter together than we are on our own.\n" -"Reviews from novices and newcomers are particularly valuable:\n" -"it's easy for people who have been using these lessons for a while\n" -"to forget how impenetrable some of this material can be,\n" -"so fresh eyes are always welcome." -# header #: r-novice-gapminder/CONTRIBUTING.md:86 #: r-novice-gapminder/bin/boilerplate/CONTRIBUTING.md:86 +# header msgid "## What *Not* to Contribute" -msgstr "## What *Not* to Contribute" +msgstr "" #: r-novice-gapminder/CONTRIBUTING.md:88 #: r-novice-gapminder/bin/boilerplate/CONTRIBUTING.md:88 -msgid "" -"Our lessons already contain more material than we can cover in a typical workshop,\n" +msgid "Our lessons already contain more material than we can cover in a typical workshop,\n" "so we are usually *not* looking for more concepts or tools to add to them.\n" "As a rule,\n" "if you want to introduce a new idea,\n" @@ -320,75 +237,49 @@ msgid "" "The first encourages contributors to be honest about requirements;\n" "the second, to think hard about priorities." msgstr "" -"Our lessons already contain more material than we can cover in a typical workshop,\n" -"so we are usually *not* looking for more concepts or tools to add to them.\n" -"As a rule,\n" -"if you want to introduce a new idea,\n" -"you must (a) estimate how long it will take to teach\n" -"and (b) explain what you would take out to make room for it.\n" -"The first encourages contributors to be honest about requirements;\n" -"the second, to think hard about priorities." #: r-novice-gapminder/CONTRIBUTING.md:97 #: r-novice-gapminder/bin/boilerplate/CONTRIBUTING.md:97 -msgid "" -"We are also not looking for exercises or other material that only run on one platform.\n" +msgid "We are also not looking for exercises or other material that only run on one platform.\n" "Our workshops typically contain a mixture of Windows, Mac OS X, and Linux users;\n" "in order to be usable,\n" "our lessons must run equally well on all three." msgstr "" -"We are also not looking for exercises or other material that only run on one platform.\n" -"Our workshops typically contain a mixture of Windows, Mac OS X, and Linux users;\n" -"in order to be usable,\n" -"our lessons must run equally well on all three." -# header #: r-novice-gapminder/CONTRIBUTING.md:102 #: r-novice-gapminder/bin/boilerplate/CONTRIBUTING.md:102 +# header msgid "## Using GitHub" -msgstr "## Using GitHub" +msgstr "" #: r-novice-gapminder/CONTRIBUTING.md:104 -msgid "" -"If you choose to contribute via GitHub,\n" +msgid "If you choose to contribute via GitHub,\n" "you may want to look at\n" "[How to Contribute to an Open Source Project on GitHub][how-contribute].\n" "In brief:" msgstr "" -"If you choose to contribute via GitHub,\n" -"you may want to look at\n" -"[How to Contribute to an Open Source Project on GitHub][how-contribute].\n" -"In brief:" -# ordered list #: r-novice-gapminder/CONTRIBUTING.md:109 +# ordered list msgid "1. The published copy of the lesson is in the `gh-pages` branch of the repository" -msgstr "1. The published copy of the lesson is in the `gh-pages` branch of the repository" +msgstr "" #: r-novice-gapminder/CONTRIBUTING.md:110 -msgid "" -" (so that GitHub will regenerate it automatically).\n" +msgid " (so that GitHub will regenerate it automatically).\n" " Please create all branches from that,\n" " and merge the [master repository][repo]'s `gh-pages` branch into your `gh-pages` branch\n" " before starting work.\n" " Please do *not* work directly in your `gh-pages` branch,\n" " since that will make it difficult for you to work on other contributions." msgstr "" -" (so that GitHub will regenerate it automatically).\n" -" Please create all branches from that,\n" -" and merge the [master repository][repo]'s `gh-pages` branch into your `gh-pages` branch\n" -" before starting work.\n" -" Please do *not* work directly in your `gh-pages` branch,\n" -" since that will make it difficult for you to work on other contributions." -# ordered list #: r-novice-gapminder/CONTRIBUTING.md:117 +# ordered list msgid "2. We use [GitHub flow][github-flow] to manage changes:" -msgstr "2. We use [GitHub flow][github-flow] to manage changes:" +msgstr "" #: r-novice-gapminder/CONTRIBUTING.md:118 -msgid "" -" 1. Create a new branch in your desktop copy of this repository for each significant change.\n" +msgid " 1. Create a new branch in your desktop copy of this repository for each significant change.\n" " 2. Commit the change in that branch.\n" " 3. Push that branch to your fork of this repository on GitHub.\n" " 4. Submit a pull request from that branch to the [master repository][repo].\n" @@ -396,47 +287,29 @@ msgid "" " make changes on your desktop and push to your branch on GitHub:\n" " the pull request will update automatically." msgstr "" -" 1. Create a new branch in your desktop copy of this repository for each significant change.\n" -" 2. Commit the change in that branch.\n" -" 3. Push that branch to your fork of this repository on GitHub.\n" -" 4. Submit a pull request from that branch to the [master repository][repo].\n" -" 5. If you receive feedback,\n" -" make changes on your desktop and push to your branch on GitHub:\n" -" the pull request will update automatically." #: r-novice-gapminder/CONTRIBUTING.md:126 -msgid "" -"Each lesson has two maintainers who review issues and pull requests\n" +msgid "Each lesson has two maintainers who review issues and pull requests\n" "or encourage others to do so.\n" "The maintainers are community volunteers,\n" "and have final say over what gets merged into the lesson." msgstr "" -"Each lesson has two maintainers who review issues and pull requests\n" -"or encourage others to do so.\n" -"The maintainers are community volunteers,\n" -"and have final say over what gets merged into the lesson." -# header #: r-novice-gapminder/CONTRIBUTING.md:131 #: r-novice-gapminder/bin/boilerplate/CONTRIBUTING.md:129 +# header msgid "## Other Resources" -msgstr "## Other Resources" +msgstr "" #: r-novice-gapminder/CONTRIBUTING.md:133 -msgid "" -"General discussion of [Software Carpentry][swc-site] and [Data Carpentry][dc-site]\n" +msgid "General discussion of [Software Carpentry][swc-site] and [Data Carpentry][dc-site]\n" "happens on the [discussion mailing list][discuss-list],\n" "which everyone is welcome to join.\n" "You can also [reach us by email][contact]." msgstr "" -"General discussion of [Software Carpentry][swc-site] and [Data Carpentry][dc-site]\n" -"happens on the [discussion mailing list][discuss-list],\n" -"which everyone is welcome to join.\n" -"You can also [reach us by email][contact]." #: r-novice-gapminder/CONTRIBUTING.md:138 -msgid "" -"[contact]: mailto:admin@software-carpentry.org\n" +msgid "[contact]: mailto:admin@software-carpentry.org\n" "[dc-issues]: https://github.com/issues?q=user%3Adatacarpentry\n" "[dc-lessons]: http://datacarpentry.org/lessons/\n" "[dc-site]: http://datacarpentry.org/\n" @@ -451,161 +324,108 @@ msgid "" "[swc-lessons]: http://software-carpentry.org/lessons/\n" "[swc-site]: http://software-carpentry.org/" msgstr "" -"[contact]: mailto:admin@software-carpentry.org\n" -"[dc-issues]: https://github.com/issues?q=user%3Adatacarpentry\n" -"[dc-lessons]: http://datacarpentry.org/lessons/\n" -"[dc-site]: http://datacarpentry.org/\n" -"[discuss-list]: http://lists.software-carpentry.org/listinfo/discuss\n" -"[github]: http://github.com\n" -"[github-flow]: https://guides.github.com/introduction/flow/\n" -"[github-join]: https://github.com/join\n" -"[how-contribute]: https://egghead.io/series/how-to-contribute-to-an-open-source-project-on-github\n" -"[issues]: https://github.com/swcarpentry/r-novice-gapminder/issues\n" -"[repo]: https://github.com/swcarpentry/r-novice-gapminder\n" -"[swc-issues]: https://github.com/issues?q=user%3Aswcarpentry\n" -"[swc-lessons]: http://software-carpentry.org/lessons/\n" -"[swc-site]: http://software-carpentry.org/" -# Front Matter #: r-novice-gapminder/LICENSE.md:1 -msgid "" -"---\n" +# Front Matter +msgid "---\n" "layout: page\n" "title: \"Licenses\"\n" "root: .\n" "---" msgstr "" -"---\n" -"layout: page\n" -"title: \"Licenses\"\n" -"root: .\n" -"---" -# header #: r-novice-gapminder/LICENSE.md:6 +# header msgid "## Instructional Material" -msgstr "## Instructional Material" +msgstr "" #: r-novice-gapminder/LICENSE.md:8 -msgid "" -"All Software Carpentry and Data Carpentry instructional material is\n" +msgid "All Software Carpentry and Data Carpentry instructional material is\n" "made available under the [Creative Commons Attribution\n" "license][cc-by-human]. The following is a human-readable summary of\n" "(and not a substitute for) the [full legal text of the CC BY 4.0\n" "license][cc-by-legal]." msgstr "" -"All Software Carpentry and Data Carpentry instructional material is\n" -"made available under the [Creative Commons Attribution\n" -"license][cc-by-human]. The following is a human-readable summary of\n" -"(and not a substitute for) the [full legal text of the CC BY 4.0\n" -"license][cc-by-legal]." #: r-novice-gapminder/LICENSE.md:14 msgid "You are free:" -msgstr "You are free:" +msgstr "" -# unordered list #: r-novice-gapminder/LICENSE.md:16 +# unordered list msgid "* to **Share**---copy and redistribute the material in any medium or format" -msgstr "* to **Share**---copy and redistribute the material in any medium or format" +msgstr "" -# unordered list #: r-novice-gapminder/LICENSE.md:17 +# unordered list msgid "* to **Adapt**---remix, transform, and build upon the material" -msgstr "* to **Adapt**---remix, transform, and build upon the material" +msgstr "" #: r-novice-gapminder/LICENSE.md:19 msgid "for any purpose, even commercially." -msgstr "for any purpose, even commercially." +msgstr "" #: r-novice-gapminder/LICENSE.md:21 -msgid "" -"The licensor cannot revoke these freedoms as long as you follow the\n" +msgid "The licensor cannot revoke these freedoms as long as you follow the\n" "license terms." msgstr "" -"The licensor cannot revoke these freedoms as long as you follow the\n" -"license terms." #: r-novice-gapminder/LICENSE.md:24 msgid "Under the following terms:" -msgstr "Under the following terms:" +msgstr "" -# unordered list #: r-novice-gapminder/LICENSE.md:26 +# unordered list msgid "* **Attribution**---You must give appropriate credit (mentioning that" -msgstr "* **Attribution**---You must give appropriate credit (mentioning that" +msgstr "" #: r-novice-gapminder/LICENSE.md:27 -msgid "" -" your work is derived from work that is Copyright © Software\n" +msgid " your work is derived from work that is Copyright © Software\n" " Carpentry and, where practical, linking to\n" " http://software-carpentry.org/), provide a [link to the\n" " license][cc-by-human], and indicate if changes were made. You may do\n" " so in any reasonable manner, but not in any way that suggests the\n" " licensor endorses you or your use." msgstr "" -" your work is derived from work that is Copyright © Software\n" -" Carpentry and, where practical, linking to\n" -" http://software-carpentry.org/), provide a [link to the\n" -" license][cc-by-human], and indicate if changes were made. You may do\n" -" so in any reasonable manner, but not in any way that suggests the\n" -" licensor endorses you or your use." #: r-novice-gapminder/LICENSE.md:34 -msgid "" -"**No additional restrictions**---You may not apply legal terms or\n" +msgid "**No additional restrictions**---You may not apply legal terms or\n" "technological measures that legally restrict others from doing\n" "anything the license permits. With the understanding that:" msgstr "" -"**No additional restrictions**---You may not apply legal terms or\n" -"technological measures that legally restrict others from doing\n" -"anything the license permits. With the understanding that:" #: r-novice-gapminder/LICENSE.md:38 msgid "Notices:" -msgstr "Notices:" +msgstr "" -# unordered list #: r-novice-gapminder/LICENSE.md:40 +# unordered list msgid "* You do not have to comply with the license for elements of the" -msgstr "* You do not have to comply with the license for elements of the" +msgstr "" #: r-novice-gapminder/LICENSE.md:41 -msgid "" -" material in the public domain or where your use is permitted by an\n" +msgid " material in the public domain or where your use is permitted by an\n" " applicable exception or limitation.\n" "* No warranties are given. The license may not give you all of the\n" " permissions necessary for your intended use. For example, other\n" " rights such as publicity, privacy, or moral rights may limit how you\n" " use the material." msgstr "" -" material in the public domain or where your use is permitted by an\n" -" applicable exception or limitation.\n" -"* No warranties are given. The license may not give you all of the\n" -" permissions necessary for your intended use. For example, other\n" -" rights such as publicity, privacy, or moral rights may limit how you\n" -" use the material." -# header #: r-novice-gapminder/LICENSE.md:48 +# header msgid "## Software" -msgstr "## Software" +msgstr "" #: r-novice-gapminder/LICENSE.md:50 -msgid "" -"Except where otherwise noted, the example programs and other software\n" +msgid "Except where otherwise noted, the example programs and other software\n" "provided by Software Carpentry and Data Carpentry are made available under the\n" "[OSI][osi]-approved\n" "[MIT license][mit-license]." msgstr "" -"Except where otherwise noted, the example programs and other software\n" -"provided by Software Carpentry and Data Carpentry are made available under the\n" -"[OSI][osi]-approved\n" -"[MIT license][mit-license]." #: r-novice-gapminder/LICENSE.md:55 -msgid "" -"Permission is hereby granted, free of charge, to any person obtaining\n" +msgid "Permission is hereby granted, free of charge, to any person obtaining\n" "a copy of this software and associated documentation files (the\n" "\"Software\"), to deal in the Software without restriction, including\n" "without limitation the rights to use, copy, modify, merge, publish,\n" @@ -613,25 +433,14 @@ msgid "" "permit persons to whom the Software is furnished to do so, subject to\n" "the following conditions:" msgstr "" -"Permission is hereby granted, free of charge, to any person obtaining\n" -"a copy of this software and associated documentation files (the\n" -"\"Software\"), to deal in the Software without restriction, including\n" -"without limitation the rights to use, copy, modify, merge, publish,\n" -"distribute, sublicense, and/or sell copies of the Software, and to\n" -"permit persons to whom the Software is furnished to do so, subject to\n" -"the following conditions:" #: r-novice-gapminder/LICENSE.md:63 -msgid "" -"The above copyright notice and this permission notice shall be\n" +msgid "The above copyright notice and this permission notice shall be\n" "included in all copies or substantial portions of the Software." msgstr "" -"The above copyright notice and this permission notice shall be\n" -"included in all copies or substantial portions of the Software." #: r-novice-gapminder/LICENSE.md:66 -msgid "" -"THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n" +msgid "THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n" "EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n" "MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n" "NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\n" @@ -639,78 +448,46 @@ msgid "" "OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\n" "WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." msgstr "" -"THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n" -"EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n" -"MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n" -"NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\n" -"LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\n" -"OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\n" -"WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." -# header #: r-novice-gapminder/LICENSE.md:74 +# header msgid "## Trademark" -msgstr "## Trademark" +msgstr "" #: r-novice-gapminder/LICENSE.md:76 -msgid "" -"\"Software Carpentry\" and \"Data Carpentry\" and their respective logos\n" +msgid "\"Software Carpentry\" and \"Data Carpentry\" and their respective logos\n" "are registered trademarks of [Community Initiatives][CI]." msgstr "" -"\"Software Carpentry\" and \"Data Carpentry\" and their respective logos\n" -"are registered trademarks of [Community Initiatives][CI]." #: r-novice-gapminder/LICENSE.md:79 -msgid "" -"[cc-by-human]: https://creativecommons.org/licenses/by/4.0/\n" +msgid "[cc-by-human]: https://creativecommons.org/licenses/by/4.0/\n" "[cc-by-legal]: https://creativecommons.org/licenses/by/4.0/legalcode\n" "[mit-license]: https://opensource.org/licenses/mit-license.html\n" "[ci]: http://communityin.org/\n" "[osi]: https://opensource.org" msgstr "" -"[cc-by-human]: https://creativecommons.org/licenses/by/4.0/\n" -"[cc-by-legal]: https://creativecommons.org/licenses/by/4.0/legalcode\n" -"[mit-license]: https://opensource.org/licenses/mit-license.html\n" -"[ci]: http://communityin.org/\n" -"[osi]: https://opensource.org" #: r-novice-gapminder/README.md:1 -msgid "" -"[![Create a Slack Account with us](https://img.shields.io/badge/Create_Slack_Account-The_Carpentries-071159.svg)](https://swc-slack-invite.herokuapp.com/) \n" +msgid "[![Create a Slack Account with us](https://img.shields.io/badge/Create_Slack_Account-The_Carpentries-071159.svg)](https://swc-slack-invite.herokuapp.com/) \n" " [![Slack Status](https://img.shields.io/badge/Slack_Channel-swc--r--gapminder-E01563.svg)](https://swcarpentry.slack.com/messages/C9Y0M3YKG) " msgstr "" -"[![Create a Slack Account with us](https://img.shields.io/badge/Create_Slack_Account-The_Carpentries-071159.svg)](https://swc-slack-invite.herokuapp.com/) \n" -" [![Slack Status](https://img.shields.io/badge/Slack_Channel-swc--r--gapminder-E01563.svg)](https://swcarpentry.slack.com/messages/C9Y0M3YKG) " #: r-novice-gapminder/README.md:4 -msgid "" -"R for Reproducible Scientific Analysis\n" +msgid "R for Reproducible Scientific Analysis\n" "======================================" msgstr "" -"再現可能な科学的分析のためのR\n" -"======================================" #: r-novice-gapminder/README.md:7 -#, fuzzy -msgid "" -"An introduction to R for non-programmers using the [Gapminder][gapminder] data.\n" +msgid "An introduction to R for non-programmers using the [Gapminder][gapminder] data.\n" "Please see for a rendered version of this material,\n" "[the lesson template documentation][lesson-example]\n" "for instructions on formatting, building, and submitting material,\n" "or run `make` in this directory for a list of helpful commands." msgstr "" -"[Gapminder] [gapminder]データを使用している非プログラマー向けのR入門。\n" -"この資料のレンダリング版についてはhttps://swcarpentry.github.io/r-novice-gapminder、資料の書式設定、構築、提出に関する手順についてはレッスンテンプレートのマニュアルを参照してください。 役に立つコマンド。\n" -"\n" -"\n" -"この資料のレンダリング版については、を参照してください。.\n" -"[レッスンテンプレートのドキュメント][lesson-example]\n" -"for instructions on formatting, building, and submitting material,\n" -"or run `make` in this directory for a list of helpful commands." -#: r-novice-gapminder/README.md:13 r-novice-gapminder/index.md:8 -msgid "" -"The goal of this lesson is to teach novice programmers to write modular code\n" +#: r-novice-gapminder/README.md:13 +#: r-novice-gapminder/index.md:8 +msgid "The goal of this lesson is to teach novice programmers to write modular code\n" "and best practices for using R for data analysis. R is commonly used in many\n" "scientific disciplines for statistical analysis and its array of third-party\n" "packages. We find that many scientists who come to Software Carpentry workshops\n" @@ -719,85 +496,60 @@ msgid "" "practices for scientific computing: breaking down analyses into modular units,\n" "task automation, and encapsulation." msgstr "" -"The goal of this lesson is to teach novice programmers to write modular code\n" -"and best practices for using R for data analysis. R is commonly used in many\n" -"scientific disciplines for statistical analysis and its array of third-party\n" -"packages. We find that many scientists who come to Software Carpentry workshops\n" -"use R and want to learn more. The emphasis of these materials is to give\n" -"attendees a strong foundation in the fundamentals of R, and to teach best\n" -"practices for scientific computing: breaking down analyses into modular units,\n" -"task automation, and encapsulation." #: r-novice-gapminder/README.md:22 -msgid "" -"Note that this workshop focuses on the fundamentals of the programming\n" +msgid "Note that this workshop focuses on the fundamentals of the programming\n" "language R, and not on statistical analysis." msgstr "" -"Note that this workshop focuses on the fundamentals of the programming\n" -"language R, and not on statistical analysis." -#: r-novice-gapminder/README.md:25 r-novice-gapminder/index.md:20 +#: r-novice-gapminder/README.md:25 +#: r-novice-gapminder/index.md:20 msgid "The lesson contains more material than can be taught in a day. The [instructor notes page]({{ page.root }}/guide) has some suggested lesson plans suitable for a one or half day workshop." msgstr "" -"レッスンには、1日に教えることができる以上の素材が含まれています。\n" -"[講師ノートのページ]({{ page.root }}/guide)には、\n" -"1日または1日半のワークショップに適したレッスンプランがいくつかあります。" #: r-novice-gapminder/README.md:27 -msgid "" -"A variety of third party packages are used throughout this workshop. These\n" +msgid "A variety of third party packages are used throughout this workshop. These\n" "are not necessarily the best, nor are they comprehensive, but they are \n" "packages we find useful, and have been chosen primarily for their \n" "usability." msgstr "" -"このワークショップでは、さまざまなサードパーティパッケージが使用されています。\n" -"これらは必ずしも最高のものではなく、包括的でもありませんが、有用であり、\n" -"使いやすさのために主に選ばれたパッケージです。" #: r-novice-gapminder/README.md:32 msgid "Maintainers:" -msgstr "Maintainers:" +msgstr "" -# unordered list #: r-novice-gapminder/README.md:34 +# unordered list msgid "* [David Mawdsley][mawdsley_david]" -msgstr "* [Full Name][GitHubUser]" +msgstr "" -# unordered list #: r-novice-gapminder/README.md:35 +# unordered list msgid "* [Jeff Oliver][oliver_jeffrey]" -msgstr "* [Full Name][GitHubUser]" +msgstr "" -# unordered list #: r-novice-gapminder/README.md:36 +# unordered list msgid "* [Tom Wright][wright_tom]" -msgstr "* [Full Name][GitHubUser]" +msgstr "" -# unordered list #: r-novice-gapminder/README.md:37 +# unordered list msgid "* [Naupaka Zimmerman][zimmerman_naupaka]" -msgstr "* [Naupaka Zimmerman][zimmerman_naupaka]" +msgstr "" #: r-novice-gapminder/README.md:39 -msgid "" -"[gapminder]: http://www.gapminder.org/\n" +msgid "[gapminder]: http://www.gapminder.org/\n" "[lesson-example]: https://carpentries.github.io/lesson-example\n" "[mawdsley_david]: https://software-carpentry.org/team/#mawdsley_david\n" "[oliver_jeffrey]: https://software-carpentry.org/team/#oliver_jeffrey\n" "[wright_tom]: https://software-carpentry.org/team/#wright_thomas\n" "[zimmerman_naupaka]: https://software-carpentry.org/team/#zimmerman_naupaka" msgstr "" -"[gapminder]: http://www.gapminder.org/\n" -"[lesson-example]: https://carpentries.github.io/lesson-example\n" -"[mawdsley_david]: https://software-carpentry.org/team/#mawdsley_david\n" -"[oliver_jeffrey]: https://software-carpentry.org/team/#oliver_jeffrey\n" -"[wright_tom]: https://software-carpentry.org/team/#wright_thomas\n" -"[zimmerman_naupaka]: https://software-carpentry.org/team/#zimmerman_naupaka" -# Front Matter #: r-novice-gapminder/_episodes/01-rstudio-intro.md:1 -msgid "" -"---\n" +# Front Matter +msgid "---\n" "# Please do not edit this file directly; it is auto generated.\n" "# Instead, please edit 01-rstudio-intro.md in _episodes_rmd/\n" "title: \"Introduction to R and RStudio\"\n" @@ -827,44 +579,14 @@ msgid "" "source: Rmd\n" "---" msgstr "" -"---\n" -"# Please do not edit this file directly; it is auto generated.\n" -"# Instead, please edit 01-rstudio-intro.md in _episodes_rmd/\n" -"title: \"Introduction to R and RStudio\"\n" -"teaching: 45\n" -"exercises: 10\n" -"questions:\n" -"- \"How to find your way around RStudio?\"\n" -"- \"How to interact with R?\"\n" -"- \"How to manage your environment?\"\n" -"- \"How to install packages?\"\n" -"objectives:\n" -"- \"Describe the purpose and use of each pane in the RStudio IDE\"\n" -"- \"Locate buttons and options in the RStudio IDE\"\n" -"- \"Define a variable\"\n" -"- \"Assign data to a variable\"\n" -"- \"Manage a workspace in an interactive R session\"\n" -"- \"Use mathematical and comparison operators\"\n" -"- \"Call functions\"\n" -"- \"Manage packages\"\n" -"keypoints:\n" -"- \"Use RStudio to write and run R programs.\"\n" -"- \"R has the usual arithmetic operators and mathematical functions.\"\n" -"- \"Use `<-` to assign values to variables.\"\n" -"- \"Use `ls()` to list the variables in a program.\"\n" -"- \"Use `rm()` to delete objects in a program.\"\n" -"- \"Use `install.packages()` to install packages (libraries).\"\n" -"source: Rmd\n" -"---" -# header #: r-novice-gapminder/_episodes/01-rstudio-intro.md:34 +# header msgid "## Motivation" -msgstr "## 動機" +msgstr "" #: r-novice-gapminder/_episodes/01-rstudio-intro.md:36 -msgid "" -"Science is a multi-step process: once you've designed an experiment and collected\n" +msgid "Science is a multi-step process: once you've designed an experiment and collected\n" "data, the real fun begins! This lesson will teach you how to start this process using\n" "R and RStudio. We will begin with raw data, perform exploratory analyses, and learn\n" "how to plot results graphically. This example starts with a dataset from\n" @@ -874,117 +596,95 @@ msgid "" "By the end of these lessons you will be able to do things like plot the populations\n" "for all of these countries in under a minute!" msgstr "" -"科学は複数の段階からなる作業です:実験を計画したら、データを収集し、\n" -"そこから本当の楽しみが始まります!このレッスンでは、その過程をRとRStudioを使って\n" -"どう進めるのかをお伝えします。まず生のデータから、予備解析をし、結果をどう\n" -"グラフ上にプロットするかを学びます。ここでの例は[gapminder.org](https://www.gapminder.org)\n" -"のデータセットを使います。このデータセットには、多くの国の人口の時系列データが入っています。\n" -"データをRに読み込むことができますか?セネガルの人口をプロットできますか?\n" -"アジア大陸にある国の平均所得を計算できますか?\n" -"これらのレッスンの終わるまでに、これらの全ての国の人口をプロットしたりするようなことが\n" -"一分足らずでできるようになるでしょう!" -# header #: r-novice-gapminder/_episodes/01-rstudio-intro.md:46 +# header msgid "## Before Starting The Workshop" -msgstr "## ワークショップを始める前に" +msgstr "" #: r-novice-gapminder/_episodes/01-rstudio-intro.md:48 msgid "Please ensure you have the latest version of R and RStudio installed on your machine. This is important, as some packages used in the workshop may not install correctly (or at all) if R is not up to date." -msgstr "RとRStudioの最新バージョンが、自分のコンピューターにインストールされているか確認してください。最新バージョンであることが重要である理由は、ワークショップで使うパッケージには、Rが最新でないと、正常に(または全く)インストールされないものがあるからです。" +msgstr "" #: r-novice-gapminder/_episodes/01-rstudio-intro.md:50 -msgid "" -"[Download and install the latest version of R here](https://www.r-project.org/)\n" +msgid "[Download and install the latest version of R here](https://www.r-project.org/)\n" "[Download and install RStudio here](https://www.rstudio.com/)" msgstr "" -"[ここからRの最新バージョンをダウンロード及びインストール下さい](https://www.r-project.org/)\n" -"[ここからRStudioをダウンロード及びインストール下さい](https://www.rstudio.com/)" -# header #: r-novice-gapminder/_episodes/01-rstudio-intro.md:53 +# header msgid "## Introduction to RStudio" -msgstr "## RStudio入門" +msgstr "" #: r-novice-gapminder/_episodes/01-rstudio-intro.md:55 msgid "Welcome to the R portion of the Software Carpentry workshop." -msgstr "Software CarpentryのR部分のワークショップへようこそ。" +msgstr "" #: r-novice-gapminder/_episodes/01-rstudio-intro.md:57 -msgid "" -"Throughout this lesson, we're going to teach you some of the fundamentals of\n" +msgid "Throughout this lesson, we're going to teach you some of the fundamentals of\n" "the R language as well as some best practices for organizing code for\n" "scientific projects that will make your life easier." msgstr "" -"このレッスンでは、R言語の基礎と、知っていると後々かなり楽になる科学的プロジェクトのために\n" -"コードを整える最適な方法をお教えしようと思います。" #: r-novice-gapminder/_episodes/01-rstudio-intro.md:61 -msgid "" -"We'll be using RStudio: a free, open source R integrated development\n" +msgid "We'll be using RStudio: a free, open source R integrated development\n" "environment. It provides a built in editor, works on all platforms (including\n" "on servers) and provides many advantages such as integration with version\n" "control and project management." msgstr "" -"このレッスンではRStudioを使います。RStudioは、無料であり、Rを組み込んだオープンソースの\n" -"開発環境です。RStudioには、全てのプラットフォーム(サーバーも含む)で起動できるエディタ\n" -"が入っていて、プロジェクト管理やバージョン管理にも対応しているなど、良いところが\n" -"いっぱいがあります。" #: r-novice-gapminder/_episodes/01-rstudio-intro.md:68 msgid "**Basic layout**" -msgstr "**基本的なレイアウト**" +msgstr "" #: r-novice-gapminder/_episodes/01-rstudio-intro.md:70 msgid "When you first open RStudio, you will be greeted by three panels:" -msgstr "最初にRStudioを開くと、3つのパネルが現れます:" +msgstr "" -# unordered list #: r-novice-gapminder/_episodes/01-rstudio-intro.md:72 +# unordered list msgid " * The interactive R console (entire left)" -msgstr " * インタラクティブなRコンソール(左側全部)" +msgstr "" -# unordered list #: r-novice-gapminder/_episodes/01-rstudio-intro.md:73 +# unordered list msgid " * Environment/History (tabbed in upper right)" -msgstr " * 環境/履歴(右上のタブ形式)" +msgstr "" -# unordered list #: r-novice-gapminder/_episodes/01-rstudio-intro.md:74 +# unordered list msgid " * Files/Plots/Packages/Help/Viewer (tabbed in lower right)" -msgstr " * ファイル/プロット/パッケージ/ヘルプ/ビューワー(右下のタブ形式)" +msgstr "" #: r-novice-gapminder/_episodes/01-rstudio-intro.md:76 msgid "![RStudio layout](../fig/01-rstudio.png)" -msgstr "![RStudioレイアウト](../fig/01-rstudio.png)" +msgstr "" #: r-novice-gapminder/_episodes/01-rstudio-intro.md:78 -msgid "" -"Once you open files, such as R scripts, an editor panel will also open\n" +msgid "Once you open files, such as R scripts, an editor panel will also open\n" "in the top left." -msgstr "Rスクリプトなどのファイルを開くと、左上にエディタパネルも開きます。" +msgstr "" #: r-novice-gapminder/_episodes/01-rstudio-intro.md:81 msgid "![RStudio layout with .R file open](../fig/01-rstudio-script.png)" -msgstr "![拡張子.Rのファイルを開いたときのRStudioレイアウト](../fig/01-rstudio-script.png)" +msgstr "" -# header #: r-novice-gapminder/_episodes/01-rstudio-intro.md:84 +# header msgid "## Work flow within RStudio" -msgstr "## RStudioでの作業の流れ" +msgstr "" #: r-novice-gapminder/_episodes/01-rstudio-intro.md:85 msgid "There are two main ways one can work within RStudio." -msgstr "RStudioで作業する2つの主な方法:" +msgstr "" -# ordered list #: r-novice-gapminder/_episodes/01-rstudio-intro.md:87 +# ordered list msgid "1. Test and play within the interactive R console then copy code into" -msgstr "1. インタラクティブなRコンソールで試したり、確認したりした後、コードを" +msgstr "" #: r-novice-gapminder/_episodes/01-rstudio-intro.md:88 -msgid "" -"a .R file to run later.\n" +msgid "a .R file to run later.\n" " * This works well when doing small tests and initially starting off.\n" " * It quickly becomes laborious\n" "2. Start writing in an .R file and use RStudio's short cut keys for the Run command\n" @@ -994,22 +694,14 @@ msgid "" " * You will be able to run the file you create from within RStudio\n" " or using R's `source()` function." msgstr "" -"後で走らせる.Rファイルにコピーする。\n" -" * まず始めてみるときや、小規模なテストをするのに適している。\n" -" * すぐ面倒になる。\n" -"2. まず.Rファイルに書き、インタラクティブなRコンソールへ、現在の行、選択した行、\n" -"修正した行を送るコマンドを走らせるために、RStudioのショートカットキーを使う。\n" -" * 始めるのによい方法。全てのコードが後々のために保存される。\n" -" * 作ったファイルを、RStudioから又は\"source()\"関数を使って走らせることができる。" -# blockquote, which can be cascaded #: r-novice-gapminder/_episodes/01-rstudio-intro.md:98 +# blockquote, which can be cascaded msgid "> ## Tip: Running segments of your code" -msgstr "> ## ヒント:ひとかたまりのコードを走らせる" +msgstr "" #: r-novice-gapminder/_episodes/01-rstudio-intro.md:99 -msgid "" -">\n" +msgid ">\n" "> RStudio offers you great flexibility in running code from within the editor\n" "> window. There are buttons, menu choices, and keyboard shortcuts. To run the\n" "> current line, you can \n" @@ -1024,22 +716,7 @@ msgid "" "> along, `Re-run the previous region`. This will run the previous code block\n" "> including the modifications you have made." msgstr "" -">\n" -"> RStudioには、エディタからコードを走らせる色々な方法があります。\n" -"> ボタン、メニュー選択、そしてキーボードのショートカットがあります。\n" -"> 現在の行を走らせるには、\n" -"> 1. エディタパネルの`Run`のボタンをクリックする\n" -"> 2. 「Code」メニューから「Run Lines」を選択する \n" -"> 3. WindowsかLinuxなら、Ctrl+Returnを押す\n" -"> または、OS Xなら、+Return。\n" -"> (このショートカットはボタンの上にマウスを合わせると表示される)\n" -"> コードのかたまりを走らせるには、まずその部分を選択してから `Run`を押します。\n" -"> もし、コードのかたまりを走らせた後で、その一部を修正した場合、\n" -"> その部分を選択して`Run`する必要はありません。その場合は次の\n" -"> `Re-run the previous region`ボタンが使えます。これは、前のコードのかたまりを\n" -"> 修正を行った部分を含めて走らせます。" -# SC/DC Template label #: r-novice-gapminder/_episodes/01-rstudio-intro.md:113 #: r-novice-gapminder/_episodes/01-rstudio-intro.md:179 #: r-novice-gapminder/_episodes/01-rstudio-intro.md:446 @@ -1075,61 +752,47 @@ msgstr "" #: r-novice-gapminder/_episodes/12-plyr.md:403 #: r-novice-gapminder/_episodes/15-knitr-markdown.md:349 #: r-novice-gapminder/_episodes/16-wrap-up.md:47 +# SC/DC Template label msgid "{: .callout}" -msgstr "{: .callout}" +msgstr "" -# header #: r-novice-gapminder/_episodes/01-rstudio-intro.md:115 +# header msgid "## Introduction to R" -msgstr "## R入門" +msgstr "" #: r-novice-gapminder/_episodes/01-rstudio-intro.md:117 -msgid "" -"Much of your time in R will be spent in the R interactive\n" +msgid "Much of your time in R will be spent in the R interactive\n" "console. This is where you will run all of your code, and can be a\n" "useful environment to try out ideas before adding them to an R script\n" "file. This console in RStudio is the same as the one you would get if\n" "you typed in `R` in your command-line environment." msgstr "" -"Rを使う時間のほとんどは、Rのインタラクティブコンソールでの作業となるでしょう。\n" -"ここが、全てのコードを走らせる、また、.Rファイルにコードを加える前にアイディアを\n" -"試してみるのに使える環境となります。\n" -"このRStudioのコンソールが、コマンドライン環境に`R` と入力するのと同じ環境になります。" #: r-novice-gapminder/_episodes/01-rstudio-intro.md:123 -msgid "" -"The first thing you will see in the R interactive session is a bunch\n" +msgid "The first thing you will see in the R interactive session is a bunch\n" "of information, followed by a \">\" and a blinking cursor. In many ways\n" "this is similar to the shell environment you learned about during the\n" "shell lessons: it operates on the same idea of a \"Read, evaluate,\n" "print loop\": you type in commands, R tries to execute them, and then\n" "returns a result." msgstr "" -"Rインタラクティブセッションでまず目に入ってくるのは、ひとかたまりの情報と\n" -"その後に続く、「>」と点滅するカーソルです。これは多くの観点で、\n" -"シェルのレッスンで学んだシェル環境と似ています。\n" -"つまり、「読み、実行し、出力するループ」の考えと同じように動くので、\n" -"コマンドを入力すれば、Rは、それを実行しようとし、そして結果を返すのです。" -# header #: r-novice-gapminder/_episodes/01-rstudio-intro.md:130 +# header msgid "## Using R as a calculator" -msgstr "## Rを計算機として使う" +msgstr "" #: r-novice-gapminder/_episodes/01-rstudio-intro.md:132 msgid "The simplest thing you could do with R is do arithmetic:" -msgstr "一番単純なRの使い方は、演算です:" +msgstr "" -# code block #: r-novice-gapminder/_episodes/01-rstudio-intro.md:135 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "1 + 100\n" "~~~" msgstr "" -"~~~\n" -"1 + 100\n" -"~~~" #: r-novice-gapminder/_episodes/01-rstudio-intro.md:138 #: r-novice-gapminder/_episodes/01-rstudio-intro.md:197 @@ -1427,20 +1090,15 @@ msgstr "" #: r-novice-gapminder/_episodes/14-tidyr.md:581 #: r-novice-gapminder/_episodes/14-tidyr.md:633 msgid "{: .language-r}" -msgstr "{: .language-r}" +msgstr "" -# code block #: r-novice-gapminder/_episodes/01-rstudio-intro.md:142 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "[1] 101\n" "~~~" msgstr "" -"~~~\n" -"[1] 101\n" -"~~~" -# SC/DC Template label #: r-novice-gapminder/_episodes/01-rstudio-intro.md:145 #: r-novice-gapminder/_episodes/01-rstudio-intro.md:161 #: r-novice-gapminder/_episodes/01-rstudio-intro.md:204 @@ -1655,69 +1313,53 @@ msgstr "" #: r-novice-gapminder/_episodes/14-tidyr.md:549 #: r-novice-gapminder/_episodes/14-tidyr.md:626 #: r-novice-gapminder/_episodes/14-tidyr.md:640 +# SC/DC Template label msgid "{: .output}" -msgstr "{: .output}" +msgstr "" #: r-novice-gapminder/_episodes/01-rstudio-intro.md:147 -msgid "" -"And R will print out the answer, with a preceding \"[1]\". Don't worry about this\n" +msgid "And R will print out the answer, with a preceding \"[1]\". Don't worry about this\n" "for now, we'll explain that later. For now think of it as indicating output." msgstr "" -"するとRは、「[1]」の後に回答を表示します。詳しくは後で説明するので、\n" -"今は気にしなくても大丈夫です。今のところ、出力されたものを示すものだと思ってください。" #: r-novice-gapminder/_episodes/01-rstudio-intro.md:150 -msgid "" -"Like bash, if you type in an incomplete command, R will wait for you to\n" +msgid "Like bash, if you type in an incomplete command, R will wait for you to\n" "complete it:" -msgstr "バッシュのように、Rは、不完全なコマンドが入力されると、それが完成されるまで待ちます:" +msgstr "" -# code block #: r-novice-gapminder/_episodes/01-rstudio-intro.md:153 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "> 1 +\n" "~~~" msgstr "" -"~~~\n" -"> 1 +\n" -"~~~" -# SC/DC Template label #: r-novice-gapminder/_episodes/01-rstudio-intro.md:156 +# SC/DC Template label msgid "{: .r}" -msgstr "{: .r}" +msgstr "" -# code block #: r-novice-gapminder/_episodes/01-rstudio-intro.md:158 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "+\n" "~~~" msgstr "" -"~~~\n" -"+\n" -"~~~" #: r-novice-gapminder/_episodes/01-rstudio-intro.md:163 -msgid "" -"Any time you hit return and the R session shows a \"+\" instead of a \">\", it\n" +msgid "Any time you hit return and the R session shows a \"+\" instead of a \">\", it\n" "means it's waiting for you to complete the command. If you want to cancel\n" "a command you can simply hit \"Esc\" and RStudio will give you back the \">\"\n" "prompt." msgstr "" -"Rセッションで改行キーを押す度に、「>」の代わりに「+」が出力される場合、\n" -"コマンドが完成されるのを待っていることを示しています。そのコマンドを取り消したい\n" -"場合は、単純に「Esc」を押せば、RStudioは「>」を返します。" -# blockquote, which can be cascaded #: r-novice-gapminder/_episodes/01-rstudio-intro.md:168 +# blockquote, which can be cascaded msgid "> ## Tip: Cancelling commands" -msgstr "> ## ヒント:コマンドの取り消し" +msgstr "" #: r-novice-gapminder/_episodes/01-rstudio-intro.md:169 -msgid "" -">\n" +msgid ">\n" "> If you're using R from the commandline instead of from within RStudio,\n" "> you need to use Ctrl+C instead of Esc\n" "> to cancel the command. This applies to Mac users as well!\n" @@ -1728,364 +1370,246 @@ msgid "" "> currently writing.\n" ">" msgstr "" -">\n" -"> RStudioではなく、コマンドラインからRを使う場合、\n" -"> コマンドを取り消す場合、Escの代わりにCtrl+C\n" -"> を使う必要があります。これは、Macユーザーも同じです!\n" -">\n" -"> コマンドの取り消しは、不完全なコマンドを消す他にも使えます。\n" -"> 走っているコードを止めてとRに伝えるにも使え(例えば、予想よりも\n" -"> かなり長くかかっている場合)、その他にも、今書いているコードを\n" -"> 消去するにも使えます。\n" -">" #: r-novice-gapminder/_episodes/01-rstudio-intro.md:181 -msgid "" -"When using R as a calculator, the order of operations is the same as you\n" +msgid "When using R as a calculator, the order of operations is the same as you\n" "would have learned back in school." msgstr "" -"Rを計算機として使う場合、演算の順番は、学校で学んだだろうものと\n" -"同じです。" #: r-novice-gapminder/_episodes/01-rstudio-intro.md:184 msgid "From highest to lowest precedence:" -msgstr "一番先に行われる処理から一番後に行われる処理:" +msgstr "" -# unordered list #: r-novice-gapminder/_episodes/01-rstudio-intro.md:186 +# unordered list msgid " * Parentheses: `(`, `)`" -msgstr " * 括弧: `(`、`)`" +msgstr "" -# unordered list #: r-novice-gapminder/_episodes/01-rstudio-intro.md:187 +# unordered list msgid " * Exponents: `^` or `**`" -msgstr " * 累乗:`^`か`**`" +msgstr "" -# unordered list #: r-novice-gapminder/_episodes/01-rstudio-intro.md:188 +# unordered list msgid " * Divide: `/`" -msgstr " * 割る:`/`" +msgstr "" -# unordered list #: r-novice-gapminder/_episodes/01-rstudio-intro.md:189 +# unordered list msgid " * Multiply: `*`" -msgstr " * 掛ける:`*`" +msgstr "" -# unordered list #: r-novice-gapminder/_episodes/01-rstudio-intro.md:190 +# unordered list msgid " * Add: `+`" -msgstr " * 加える:`+`" +msgstr "" -# unordered list #: r-novice-gapminder/_episodes/01-rstudio-intro.md:191 +# unordered list msgid " * Subtract: `-`" -msgstr " * 引く:`-`" +msgstr "" -# code block #: r-novice-gapminder/_episodes/01-rstudio-intro.md:194 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "3 + 5 * 2\n" "~~~" msgstr "" -"~~~\n" -"3 + 5 * 2\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/01-rstudio-intro.md:201 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "[1] 13\n" "~~~" msgstr "" -"~~~\n" -"[1] 13\n" -"~~~" #: r-novice-gapminder/_episodes/01-rstudio-intro.md:206 -msgid "" -"Use parentheses to group operations in order to force the order of\n" +msgid "Use parentheses to group operations in order to force the order of\n" "evaluation if it differs from the default, or to make clear what you\n" "intend." msgstr "" -"デフォルトと違う順番で計算させたい場合や、意図を明確にしたい場合は、\n" -"演算をまとめるために、括弧を使いましょう。" -# code block #: r-novice-gapminder/_episodes/01-rstudio-intro.md:211 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "(3 + 5) * 2\n" "~~~" msgstr "" -"~~~\n" -"(3 + 5) * 2\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/01-rstudio-intro.md:218 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "[1] 16\n" "~~~" msgstr "" -"~~~\n" -"[1] 16\n" -"~~~" #: r-novice-gapminder/_episodes/01-rstudio-intro.md:223 -msgid "" -"This can get unwieldy when not needed, but clarifies your intentions.\n" +msgid "This can get unwieldy when not needed, but clarifies your intentions.\n" "Remember that others may later read your code." msgstr "" -"括弧をつける必要ではないときは、面倒かもしれませんが、そうすることで自分の意図\n" -"するところがはっきり伝わります。\n" -"自分が書いたコードを、後々他の人が読むことになるかもしれないことを忘れないように。" -# code block #: r-novice-gapminder/_episodes/01-rstudio-intro.md:227 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "(3 + (5 * (2 ^ 2))) # hard to read\n" "3 + 5 * 2 ^ 2 # clear, if you remember the rules\n" "3 + 5 * (2 ^ 2) # if you forget some rules, this might help\n" "~~~" msgstr "" -"~~~\n" -"(3 + (5 * (2 ^ 2))) # 読みづらい\n" -"3 + 5 * 2 ^ 2 # ルールを覚えている人には明確\n" -"3 + 5 * (2 ^ 2) # ルールを忘れている人にも伝わるはず\n" -"~~~" #: r-novice-gapminder/_episodes/01-rstudio-intro.md:235 -msgid "" -"The text after each line of code is called a\n" +msgid "The text after each line of code is called a\n" "\"comment\". Anything that follows after the hash (or octothorpe) symbol\n" "`#` is ignored by R when it executes code." msgstr "" -"コードの後の文は、「コメント」と呼ばれます。\n" -"シャープ(ナンバー)記号`#` の後に来るものは、Rがコードを実行する際は無視されます。" #: r-novice-gapminder/_episodes/01-rstudio-intro.md:239 msgid "Really small or large numbers get a scientific notation:" -msgstr "とても大きい、又は小さい数には、指数表記が使われます:" +msgstr "" -# code block #: r-novice-gapminder/_episodes/01-rstudio-intro.md:242 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "2/10000\n" "~~~" msgstr "" -"~~~\n" -"2/10000\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/01-rstudio-intro.md:249 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "[1] 2e-04\n" "~~~" msgstr "" -"~~~\n" -"[1] 2e-04\n" -"~~~" #: r-novice-gapminder/_episodes/01-rstudio-intro.md:254 -msgid "" -"Which is shorthand for \"multiplied by `10^XX`\". So `2e-4`\n" +msgid "Which is shorthand for \"multiplied by `10^XX`\". So `2e-4`\n" "is shorthand for `2 * 10^(-4)`." msgstr "" -"これは、「`10^XX`で掛けたもの」を略したものです。つまり`2e-4`は、\n" -"`2 * 10^(-4)`の略です。" #: r-novice-gapminder/_episodes/01-rstudio-intro.md:257 msgid "You can write numbers in scientific notation too:" -msgstr "数を指数記号で書くこともできます:" +msgstr "" -# code block #: r-novice-gapminder/_episodes/01-rstudio-intro.md:260 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "5e3 # Note the lack of minus here\n" "~~~" msgstr "" -"~~~\n" -"5e3 # マイナスがないことに注意\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/01-rstudio-intro.md:267 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "[1] 5000\n" "~~~" msgstr "" -"~~~\n" -"[1] 5000\n" -"~~~" -# header #: r-novice-gapminder/_episodes/01-rstudio-intro.md:272 +# header msgid "## Mathematical functions" -msgstr "## 数学関数" +msgstr "" #: r-novice-gapminder/_episodes/01-rstudio-intro.md:274 -msgid "" -"R has many built in mathematical functions. To call a function,\n" +msgid "R has many built in mathematical functions. To call a function,\n" "we simply type its name, followed by open and closing parentheses.\n" "Anything we type inside the parentheses is called the function's\n" "arguments:" msgstr "" -"Rには、多くの数学関数が備え付けられています。関数を呼び出すには、\n" -"関数名と始め括弧と終わり括弧を書きます。\n" -"括弧の中に書いたものが、関数の引数となります:" -# code block #: r-novice-gapminder/_episodes/01-rstudio-intro.md:280 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "sin(1) # trigonometry functions\n" "~~~" msgstr "" -"~~~\n" -"sin(1) # 三角関数\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/01-rstudio-intro.md:287 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "[1] 0.841471\n" "~~~" msgstr "" -"~~~\n" -"[1] 0.841471\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/01-rstudio-intro.md:293 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "log(1) # natural logarithm\n" "~~~" msgstr "" -"~~~\n" -"log(1) # 自然対数\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/01-rstudio-intro.md:300 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "[1] 0\n" "~~~" msgstr "" -"~~~\n" -"[1] 0\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/01-rstudio-intro.md:306 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "log10(10) # base-10 logarithm\n" "~~~" msgstr "" -"~~~\n" -"log10(10) # 10を底とする対数\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/01-rstudio-intro.md:313 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "[1] 1\n" "~~~" msgstr "" -"~~~\n" -"[1] 1\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/01-rstudio-intro.md:319 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "exp(0.5) # e^(1/2)\n" "~~~" msgstr "" -"~~~\n" -"exp(0.5) # e^(1/2)\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/01-rstudio-intro.md:326 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "[1] 1.648721\n" "~~~" msgstr "" -"~~~\n" -"[1] 1.648721\n" -"~~~" #: r-novice-gapminder/_episodes/01-rstudio-intro.md:331 -msgid "" -"Don't worry about trying to remember every function in R. You\n" +msgid "Don't worry about trying to remember every function in R. You\n" "can simply look them up on Google, or if you can remember the\n" "start of the function's name, use the tab completion in RStudio." msgstr "" -"Rにある全ての関数を覚えようとして心配する必要はありません。\n" -"Googleで検索すればいいですし、関数の始まりさえ覚えていれば\n" -"RStudioのタブ入力補完機能が使えます。" #: r-novice-gapminder/_episodes/01-rstudio-intro.md:335 -msgid "" -"This is one advantage that RStudio has over R on its own, it\n" +msgid "This is one advantage that RStudio has over R on its own, it\n" "has auto-completion abilities that allow you to more easily\n" "look up functions, their arguments, and the values that they\n" "take." msgstr "" -"これがRStudioが、Rそのものを使うよりもいい理由のひとつです。\n" -"RStudioには、自動補完機能があり、関数、その引数、その取りうる値を\n" -"より簡単に見つけることができます。" #: r-novice-gapminder/_episodes/01-rstudio-intro.md:340 -msgid "" -"Typing a `?` before the name of a command will open the help page\n" +msgid "Typing a `?` before the name of a command will open the help page\n" "for that command. As well as providing a detailed description of\n" "the command and how it works, scrolling to the bottom of the\n" "help page will usually show a collection of code examples which\n" "illustrate command usage. We'll go through an example later." msgstr "" -"コマンド名の前に、`?` を付けることで、そのコマンドのヘルプのページを開くことができます。\n" -"そのコマンドの詳細についての説明やそれがどう動くかだけではなく、ヘルプページの最後まで\n" -"スクロールすると、通常、コマンドの使い方を伝えるコードを用いた事例集が参照できます。\n" -"これについては、後ほど、例で見てみることにしましょう。" -# header #: r-novice-gapminder/_episodes/01-rstudio-intro.md:346 +# header msgid "## Comparing things" -msgstr "## 何かを比較する" +msgstr "" #: r-novice-gapminder/_episodes/01-rstudio-intro.md:348 msgid "We can also do comparison in R:" -msgstr "Rを使って比較をすることもできます:" +msgstr "" -# code block #: r-novice-gapminder/_episodes/01-rstudio-intro.md:351 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "1 == 1 # equality (note two equals signs, read as \"is equal to\")\n" "~~~" msgstr "" -"~~~\n" -"1 == 1 # 等価(イコールが二つあることに注意。「は、~と等しい」と読む)\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/01-rstudio-intro.md:358 #: r-novice-gapminder/_episodes/01-rstudio-intro.md:371 #: r-novice-gapminder/_episodes/01-rstudio-intro.md:384 @@ -2094,78 +1618,54 @@ msgstr "" #: r-novice-gapminder/_episodes/01-rstudio-intro.md:423 #: r-novice-gapminder/_episodes/14-tidyr.md:440 #: r-novice-gapminder/_episodes/14-tidyr.md:637 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "[1] TRUE\n" "~~~" msgstr "" -"~~~\n" -"[1] TRUE\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/01-rstudio-intro.md:364 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "1 != 2 # inequality (read as \"is not equal to\")\n" "~~~" msgstr "" -"~~~\n" -"1 != 2 # 不等価(「は、~と等しくない」と読む)\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/01-rstudio-intro.md:377 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "1 < 2 # less than\n" "~~~" msgstr "" -"~~~\n" -"1 < 2 # より少ない\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/01-rstudio-intro.md:390 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "1 <= 1 # less than or equal to\n" "~~~" msgstr "" -"~~~\n" -"1 <= 1 # より少ない、又は等しい\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/01-rstudio-intro.md:403 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "1 > 0 # greater than\n" "~~~" msgstr "" -"~~~\n" -"1 > 0 # より大きい\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/01-rstudio-intro.md:416 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "1 >= -9 # greater than or equal to\n" "~~~" msgstr "" -"~~~\n" -"1 >= -9 # より大きい、又は等しい\n" -"~~~" -# blockquote, which can be cascaded #: r-novice-gapminder/_episodes/01-rstudio-intro.md:428 +# blockquote, which can be cascaded msgid "> ## Tip: Comparing Numbers" -msgstr "> ##ヒント: 数の比較" +msgstr "" #: r-novice-gapminder/_episodes/01-rstudio-intro.md:429 -msgid "" -">\n" +msgid ">\n" "> A word of warning about comparing numbers: you should\n" "> never use `==` to compare two numbers unless they are\n" "> integers (a data type which can specifically represent\n" @@ -2183,210 +1683,141 @@ msgid "" "> Further reading: [http://floating-point-gui.de/](http://floating-point-gui.de/)\n" ">" msgstr "" -">\n" -"> 数を比較するときの注意: 整数型(整数のみを表すデータ型)\n" -"> 以外では、2数の比較に決して `==` を使わないこと。\n" -">\n" -"> コンピュータは、小数点以下の数を限られた精度でしか示せない\n" -"> かもしれません。すると、二つの数がRで同じように表示されても\n" -"> 実際は、その背後で異なる形で表されており、したがって\n" -"> ごくわずかな誤差(機械の数値許容範囲)があるかもしれません。\n" -">\n" -"> 代わりに、`all.equal` 関数を使うといいでしょう。\n" -">\n" -"> 詳しくは: [http://floating-point-gui.de/](http://floating-point-gui.de/)\n" -">" -# header #: r-novice-gapminder/_episodes/01-rstudio-intro.md:448 +# header msgid "## Variables and assignment" -msgstr "## 変数及び代入" +msgstr "" #: r-novice-gapminder/_episodes/01-rstudio-intro.md:450 msgid "We can store values in variables using the assignment operator `<-`, like this:" -msgstr "代入演算子`<-`を用いて、次のように値を変数に入れることができます:" +msgstr "" -# code block #: r-novice-gapminder/_episodes/01-rstudio-intro.md:453 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "x <- 1/40\n" "~~~" msgstr "" -"~~~\n" -"x <- 1/40\n" -"~~~" #: r-novice-gapminder/_episodes/01-rstudio-intro.md:458 -msgid "" -"Notice that assignment does not print a value. Instead, we stored it for later\n" +msgid "Notice that assignment does not print a value. Instead, we stored it for later\n" "in something called a **variable**. `x` now contains the **value** `0.025`:" msgstr "" -"お気づきのように、代入では値は表示されません。代わりに、後々のために\n" -"**変数**と呼ばれるものに、値を入れます。`x` は、今、**値** `0.025`を持っています:" -# code block #: r-novice-gapminder/_episodes/01-rstudio-intro.md:462 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "x\n" "~~~" msgstr "" -"~~~\n" -"x\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/01-rstudio-intro.md:469 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "[1] 0.025\n" "~~~" msgstr "" -"~~~\n" -"[1] 0.025\n" -"~~~" #: r-novice-gapminder/_episodes/01-rstudio-intro.md:474 -msgid "" -"More precisely, the stored value is a *decimal approximation* of\n" +msgid "More precisely, the stored value is a *decimal approximation* of\n" "this fraction called a [floating point number](http://en.wikipedia.org/wiki/Floating_point)." msgstr "" -"より正確には、記録された値は、[浮動小数点数](http://en.wikipedia.org/wiki/Floating_point)\n" -"と呼ばれる*小数近似 (decimal approximation)*です。" #: r-novice-gapminder/_episodes/01-rstudio-intro.md:477 -msgid "" -"Look for the `Environment` tab in one of the panes of RStudio, and you will see that `x` and its value\n" +msgid "Look for the `Environment` tab in one of the panes of RStudio, and you will see that `x` and its value\n" "have appeared. Our variable `x` can be used in place of a number in any calculation that expects a number:" msgstr "" -"RStudioのパネルの中のひとつ、`Environment` (環境)タブで、`x`とその値が表示されている\n" -"ところを見て下さい。変数`x`は、数を出す演算で数の代わりに使うことができます:" -# code block #: r-novice-gapminder/_episodes/01-rstudio-intro.md:481 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "log(x)\n" "~~~" msgstr "" -"~~~\n" -"log(x)\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/01-rstudio-intro.md:488 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "[1] -3.688879\n" "~~~" msgstr "" -"~~~\n" -"[1] -3.688879\n" -"~~~" #: r-novice-gapminder/_episodes/01-rstudio-intro.md:493 msgid "Notice also that variables can be reassigned:" -msgstr "変数は、再度、代入することもできます:" +msgstr "" -# code block #: r-novice-gapminder/_episodes/01-rstudio-intro.md:496 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "x <- 100\n" "~~~" msgstr "" -"~~~\n" -"x <- 100\n" -"~~~" #: r-novice-gapminder/_episodes/01-rstudio-intro.md:501 msgid "`x` used to contain the value 0.025 and and now it has the value 100." -msgstr "`x`は、0.025という値でしたが、今は、100になりました。" +msgstr "" #: r-novice-gapminder/_episodes/01-rstudio-intro.md:503 msgid "Assignment values can contain the variable being assigned to:" -msgstr "代入する値は、既に代入されている変数でもいいです:" +msgstr "" -# code block #: r-novice-gapminder/_episodes/01-rstudio-intro.md:506 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "x <- x + 1 #notice how RStudio updates its description of x on the top right tab\n" "y <- x * 2\n" "~~~" msgstr "" -"~~~\n" -"x <- x + 1 #RStudioが、右上のタブにあるxの詳細をどう更新したかにも御留意下さい\n" -"y <- x * 2\n" -"~~~" #: r-novice-gapminder/_episodes/01-rstudio-intro.md:512 -msgid "" -"The right hand side of the assignment can be any valid R expression.\n" +msgid "The right hand side of the assignment can be any valid R expression.\n" "The right hand side is *fully evaluated* before the assignment occurs." msgstr "" -"代入の右側については、Rで使える表現であれば何でも大丈夫です。\n" -"右側については、代入される前に、*計算が完全に実施*されます。" #: r-novice-gapminder/_episodes/01-rstudio-intro.md:515 -msgid "" -"Variable names can contain letters, numbers, underscores and periods. They\n" +msgid "Variable names can contain letters, numbers, underscores and periods. They\n" "cannot start with a number nor contain spaces at all. Different people use\n" "different conventions for long variable names, these include" msgstr "" -"変数名には、文字、数字、下線、ピリオドを含むことができます。\n" -"数から始まることはできず、空白を含むことはできません。\n" -"長い変数名のつけ方は様々です。例えば、" -# unordered list #: r-novice-gapminder/_episodes/01-rstudio-intro.md:519 +# unordered list msgid " * periods.between.words" -msgstr " * ピリオドを.単語の.間に入れる" +msgstr "" -# unordered list #: r-novice-gapminder/_episodes/01-rstudio-intro.md:520 +# unordered list msgid " * underscores\\_between_words" -msgstr " * 下線を\\_単語の_間に入れる" +msgstr "" -# unordered list #: r-novice-gapminder/_episodes/01-rstudio-intro.md:521 +# unordered list msgid " * camelCaseToSeparateWords" -msgstr " * 単語の始まりを大文字にする(camelCaseToSeparateWords)" +msgstr "" #: r-novice-gapminder/_episodes/01-rstudio-intro.md:523 msgid "What you use is up to you, but **be consistent**." -msgstr "何を使うかは書き手次第ですが、**一貫性を持たせる**ようにしましょう。" +msgstr "" #: r-novice-gapminder/_episodes/01-rstudio-intro.md:525 msgid "It is also possible to use the `=` operator for assignment:" -msgstr "代入の演算子として、`=`を使うこともできます:" +msgstr "" -# code block #: r-novice-gapminder/_episodes/01-rstudio-intro.md:528 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "x = 1/40\n" "~~~" msgstr "" -"~~~\n" -"x = 1/40\n" -"~~~" #: r-novice-gapminder/_episodes/01-rstudio-intro.md:533 -msgid "" -"But this is much less common among R users. The most important thing is to\n" +msgid "But this is much less common among R users. The most important thing is to\n" "**be consistent** with the operator you use. There are occasionally places\n" "where it is less confusing to use `<-` than `=`, and it is the most common\n" "symbol used in the community. So the recommendation is to use `<-`." msgstr "" -"しかし、これはRユーザーでは、あまり使われていません。重要なのは、\n" -"使用する演算子に**一貫性を持たせる**ことです。場合によっては、\n" -"`=`を使うよりも`<-`を用いる方が誤解が少ないこともあります。\n" -"Rコミュニティーの中で、最もよく使われている方法でもあるので、\n" -"`<-`を使うのがおすすめです。" -# blockquote, which can be cascaded #: r-novice-gapminder/_episodes/01-rstudio-intro.md:538 #: r-novice-gapminder/_episodes/02-project-intro.md:146 #: r-novice-gapminder/_episodes/03-seeking-help.md:147 @@ -2401,12 +1832,12 @@ msgstr "" #: r-novice-gapminder/_episodes/12-plyr.md:201 #: r-novice-gapminder/_episodes/13-dplyr.md:154 #: r-novice-gapminder/_episodes/14-tidyr.md:88 +# blockquote, which can be cascaded msgid "> ## Challenge 1" -msgstr "> ## チャレンジ1" +msgstr "" #: r-novice-gapminder/_episodes/01-rstudio-intro.md:539 -msgid "" -">\n" +msgid ">\n" "> Which of the following are valid R variable names?\n" "> \n" "> ~~~\n" @@ -2449,50 +1880,7 @@ msgid "" "> > ~~~\n" "> > {: .language-r}" msgstr "" -">\n" -"> 次のうちどれがRの変数名として使えますか?\n" -"> \n" -"> ~~~\n" -"> min_height\n" -"> max.height\n" -"> _age\n" -"> .mass\n" -"> MaxLength\n" -"> min-length\n" -"> 2widths\n" -"> celsius2kelvin\n" -"> ~~~\n" -"> {: .language-r}\n" -">\n" -"> > ## チャレンジ1の解答\n" -"> >\n" -"> > Rの変数として使えるものは次のとおりです:\n" -"> > \n" -"> > ~~~\n" -"> > min_height\n" -"> > max.height\n" -"> > MaxLength\n" -"> > celsius2kelvin\n" -"> > ~~~\n" -"> > {: .language-r}\n" -"> >\n" -"> > 次のものは、隠れ変数を作ります:\n" -"> > \n" -"> > ~~~\n" -"> > .mass\n" -"> > ~~~\n" -"> > {: .language-r}\n" -"> >\n" -"> > 次のものは、変数を作るために使えません:\n" -"> > \n" -"> > ~~~\n" -"> > _age\n" -"> > min-length\n" -"> > 2widths\n" -"> > ~~~\n" -"> > {: .language-r}" -# SC/DC Template label #: r-novice-gapminder/_episodes/01-rstudio-intro.md:581 #: r-novice-gapminder/_episodes/01-rstudio-intro.md:826 #: r-novice-gapminder/_episodes/01-rstudio-intro.md:851 @@ -2550,10 +1938,10 @@ msgstr "" #: r-novice-gapminder/_episodes/14-tidyr.md:98 #: r-novice-gapminder/_episodes/14-tidyr.md:300 #: r-novice-gapminder/_episodes/14-tidyr.md:564 +# SC/DC Template label msgid "> {: .solution}" -msgstr "> {: .solution}" +msgstr "" -# SC/DC Template label #: r-novice-gapminder/_episodes/01-rstudio-intro.md:582 #: r-novice-gapminder/_episodes/01-rstudio-intro.md:827 #: r-novice-gapminder/_episodes/01-rstudio-intro.md:852 @@ -2620,171 +2008,124 @@ msgstr "> {: .solution}" #: r-novice-gapminder/_episodes/15-knitr-markdown.md:241 #: r-novice-gapminder/_episodes/15-knitr-markdown.md:305 #: r-novice-gapminder/_episodes/15-knitr-markdown.md:332 +# SC/DC Template label msgid "{: .challenge}" -msgstr "{: .challenge}" +msgstr "" -# header #: r-novice-gapminder/_episodes/01-rstudio-intro.md:584 +# header msgid "## Vectorization" -msgstr "## ベクトル化" +msgstr "" #: r-novice-gapminder/_episodes/01-rstudio-intro.md:586 -msgid "" -"One final thing to be aware of is that R is *vectorized*, meaning that\n" +msgid "One final thing to be aware of is that R is *vectorized*, meaning that\n" "variables and functions can have vectors as values. In contrast to physics and\n" "mathematics, a vector in R describes a set of values in a certain order of the \n" "same data type. For example" msgstr "" -"留意すべきことの最後のひとつは、 Rは*ベクトル化している*ということで、つまり、\n" -"変数と関数が値をベクトルとすることができます。 物理や数学とは対照的に、\n" -"Rのベクトルは、同じデータ型のある順番を持つ値の集合として示されます。例えば:" -# code block #: r-novice-gapminder/_episodes/01-rstudio-intro.md:592 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "1:5\n" "~~~" msgstr "" -"~~~\n" -"1:5\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/01-rstudio-intro.md:599 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "[1] 1 2 3 4 5\n" "~~~" msgstr "" -"~~~\n" -"[1] 1 2 3 4 5\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/01-rstudio-intro.md:606 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "2^(1:5)\n" "~~~" msgstr "" -"~~~\n" -"2^(1:5)\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/01-rstudio-intro.md:613 #: r-novice-gapminder/_episodes/01-rstudio-intro.md:628 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "[1] 2 4 8 16 32\n" "~~~" msgstr "" -"~~~\n" -"[1] 2 4 8 16 32\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/01-rstudio-intro.md:620 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "x <- 1:5\n" "2^x\n" "~~~" msgstr "" -"~~~\n" -"x <- 1:5\n" -"2^x\n" -"~~~" #: r-novice-gapminder/_episodes/01-rstudio-intro.md:633 -msgid "" -"This is incredibly powerful; we will discuss this further in an\n" +msgid "This is incredibly powerful; we will discuss this further in an\n" "upcoming lesson." -msgstr "これは、とても使えるのですが、詳しくは後続のレッスンで述べることにします。" +msgstr "" -# header #: r-novice-gapminder/_episodes/01-rstudio-intro.md:637 +# header msgid "## Managing your environment" -msgstr "## 環境を管理する" +msgstr "" #: r-novice-gapminder/_episodes/01-rstudio-intro.md:639 msgid "There are a few useful commands you can use to interact with the R session." -msgstr "Rセッションで使えるコマンドがいくつかあります。" +msgstr "" #: r-novice-gapminder/_episodes/01-rstudio-intro.md:641 -msgid "" -"`ls` will list all of the variables and functions stored in the global environment\n" +msgid "`ls` will list all of the variables and functions stored in the global environment\n" "(your working R session):" -msgstr "`ls`は、グローバル環境(作業中のRセッション)にある全ての変数と関数をリスト化します:" +msgstr "" -# code block #: r-novice-gapminder/_episodes/01-rstudio-intro.md:645 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "ls()\n" "~~~" msgstr "" -"~~~\n" -"ls()\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/01-rstudio-intro.md:652 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "[1] \"x\" \"y\"\n" "~~~" msgstr "" -"~~~\n" -"[1] \"x\" \"y\"\n" -"~~~" -# blockquote, which can be cascaded #: r-novice-gapminder/_episodes/01-rstudio-intro.md:657 +# blockquote, which can be cascaded msgid "> ## Tip: hidden objects" -msgstr "> ## ヒント:隠れたオブジェクト" +msgstr "" #: r-novice-gapminder/_episodes/01-rstudio-intro.md:658 -msgid "" -">\n" +msgid ">\n" "> Like in the shell, `ls` will hide any variables or functions starting\n" "> with a \".\" by default. To list all objects, type `ls(all.names=TRUE)`\n" "> instead\n" ">" msgstr "" -">\n" -"> シェルのように、`ls`はデフォルトでは、\".\"で始まる変数と関数を表示しません。\n" -"> 全てのオブジェクトをリスト化するには、代わりに`ls(all.names=TRUE)`と書きます\n" -">" #: r-novice-gapminder/_episodes/01-rstudio-intro.md:665 -msgid "" -"Note here that we didn't give any arguments to `ls`, but we still\n" +msgid "Note here that we didn't give any arguments to `ls`, but we still\n" "needed to give the parentheses to tell R to call the function." msgstr "" -"ここでは、`ls`に特に引数を与えませんでしたが、それでもRに関数を\n" -"呼び出していることを伝えるために括弧は必要です。" #: r-novice-gapminder/_episodes/01-rstudio-intro.md:668 msgid "If we type `ls` by itself, R will print out the source code for that function!" -msgstr "もし`ls`だけを入力すると、Rは、その関数のソースコードを表示してしまいます!" +msgstr "" -# code block #: r-novice-gapminder/_episodes/01-rstudio-intro.md:671 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "ls\n" "~~~" msgstr "" -"~~~\n" -"ls\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/01-rstudio-intro.md:678 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "function (name, pos = -1L, envir = as.environment(pos), all.names = FALSE, \n" " pattern, sorted = TRUE) \n" "{\n" @@ -2820,120 +2161,59 @@ msgid "" "\n" "~~~" msgstr "" -"~~~\n" -"function (name, pos = -1L, envir = as.environment(pos), all.names = FALSE, \n" -" pattern, sorted = TRUE) \n" -"{\n" -" if (!missing(name)) {\n" -" pos <- tryCatch(name, error = function(e) e)\n" -" if (inherits(pos, \"error\")) {\n" -" name <- substitute(name)\n" -" if (!is.character(name)) \n" -" name <- deparse(name)\n" -" warning(gettextf(\"%s converted to character string\", \n" -" sQuote(name)), domain = NA)\n" -" pos <- name\n" -" }\n" -" }\n" -" all.names <- .Internal(ls(envir, all.names, sorted))\n" -" if (!missing(pattern)) {\n" -" if ((ll <- length(grep(\"[\", pattern, fixed = TRUE))) && \n" -" ll != length(grep(\"]\", pattern, fixed = TRUE))) {\n" -" if (pattern == \"[\") {\n" -" pattern <- \"\\\\[\"\n" -" warning(\"replaced regular expression pattern '[' by '\\\\\\\\['\")\n" -" }\n" -" else if (length(grep(\"[^\\\\\\\\]\\\\[<-\", pattern))) {\n" -" pattern <- sub(\"\\\\[<-\", \"\\\\\\\\\\\\[<-\", pattern)\n" -" warning(\"replaced '[<-' by '\\\\\\\\[<-' in regular expression pattern\")\n" -" }\n" -" }\n" -" grep(pattern, all.names, value = TRUE)\n" -" }\n" -" else all.names\n" -"}\n" -"\n" -"\n" -"~~~" #: r-novice-gapminder/_episodes/01-rstudio-intro.md:715 msgid "You can use `rm` to delete objects you no longer need:" -msgstr "もう必要ないオブジェクトを消去するには、`rm`が使えます:" +msgstr "" -# code block #: r-novice-gapminder/_episodes/01-rstudio-intro.md:718 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "rm(x)\n" "~~~" msgstr "" -"~~~\n" -"rm(x)\n" -"~~~" #: r-novice-gapminder/_episodes/01-rstudio-intro.md:723 -msgid "" -"If you have lots of things in your environment and want to delete all of them,\n" +msgid "If you have lots of things in your environment and want to delete all of them,\n" "you can pass the results of `ls` to the `rm` function:" msgstr "" -"もし、環境に、色々なものがいっぱいあって、それらを全て消去したい場合、\n" -"`ls`の結果を`rm`関数に渡すことで対応できます。:" -# code block #: r-novice-gapminder/_episodes/01-rstudio-intro.md:727 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "rm(list = ls())\n" "~~~" msgstr "" -"~~~\n" -"rm(list = ls())\n" -"~~~" #: r-novice-gapminder/_episodes/01-rstudio-intro.md:732 -msgid "" -"In this case we've combined the two. Like the order of operations, anything\n" +msgid "In this case we've combined the two. Like the order of operations, anything\n" "inside the innermost parentheses is evaluated first, and so on." msgstr "" -"ここでは、二つを組み合わせました。演算の順番のように、一番内側の括弧の中のものが、\n" -"まず最初に実行され、実行が続きます。" #: r-novice-gapminder/_episodes/01-rstudio-intro.md:735 -msgid "" -"In this case we've specified that the results of `ls` should be used for the\n" +msgid "In this case we've specified that the results of `ls` should be used for the\n" "`list` argument in `rm`. When assigning values to arguments by name, you *must*\n" "use the `=` operator!!" msgstr "" -"ここでは、`ls`の結果を`rm`の引数のリストとして用いるべしと設定しました。\n" -"名前で引数の値を定めるときは、演算子`=`を*必ず*使わなければなりません!" #: r-novice-gapminder/_episodes/01-rstudio-intro.md:739 msgid "If instead we use `<-`, there will be unintended side effects, or you may get an error message:" -msgstr "もし代わりに`<-`を使うと、意図しない副作用が現れるか、エラーメッセージが現れます:" +msgstr "" -# code block #: r-novice-gapminder/_episodes/01-rstudio-intro.md:742 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "rm(list <- ls())\n" "~~~" msgstr "" -"~~~\n" -"rm(list <- ls())\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/01-rstudio-intro.md:749 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "Error in rm(list <- ls()): ... must contain names or character strings\n" "~~~" msgstr "" -"~~~\n" -"Error in rm(list <- ls()): ... must contain names or character strings\n" -"~~~" -# SC/DC Template label #: r-novice-gapminder/_episodes/01-rstudio-intro.md:752 #: r-novice-gapminder/_episodes/04-data-structures-part1.md:157 #: r-novice-gapminder/_episodes/04-data-structures-part1.md:314 @@ -2949,17 +2229,17 @@ msgstr "" #: r-novice-gapminder/_episodes/07-control-flow.md:203 #: r-novice-gapminder/_episodes/08-plot-ggplot2.md:448 #: r-novice-gapminder/_episodes/10-functions.md:300 +# SC/DC Template label msgid "{: .error}" -msgstr "{: .error}" +msgstr "" -# blockquote, which can be cascaded #: r-novice-gapminder/_episodes/01-rstudio-intro.md:754 +# blockquote, which can be cascaded msgid "> ## Tip: Warnings vs. Errors" -msgstr "> ## ヒント:警告かエラーか" +msgstr "" #: r-novice-gapminder/_episodes/01-rstudio-intro.md:755 -msgid "" -">\n" +msgid ">\n" "> Pay attention when R does something unexpected! Errors, like above,\n" "> are thrown when R cannot proceed with a calculation. Warnings on the\n" "> other hand usually mean that the function has run, but it probably\n" @@ -2969,54 +2249,33 @@ msgid "" "> how to fix a problem.\n" ">" msgstr "" -">\n" -"> Rが予期しないことをした場合、注意が必要です!上記のようなエラーは、\n" -"> Rが演算できない場合に出力されます。一方、警告は、通常、\n" -"> 関数は走ったけれど、予期した形で実行されなかったかもしれない\n" -"> ことを示します。\n" -">\n" -"> 両方の場合、Rが表示するメッセージは、問題をどう修正すればよいのか\n" -"> という糸口を通常与えてくれます。\n" -">" -# header #: r-novice-gapminder/_episodes/01-rstudio-intro.md:766 +# header msgid "## R Packages" -msgstr "## Rパッケージ" +msgstr "" #: r-novice-gapminder/_episodes/01-rstudio-intro.md:768 -msgid "" -"It is possible to add functions to R by writing a package, or by\n" +msgid "It is possible to add functions to R by writing a package, or by\n" "obtaining a package written by someone else. As of this writing, there\n" "are over 10,000 packages available on CRAN (the comprehensive R archive\n" "network). R and RStudio have functionality for managing packages:" msgstr "" -"パッケージを書くか、誰かが書いたパッケージを使って、Rに関数を加えることができます。\n" -"これについて、CRAN (the comprehensive R archive network)上にある\n" -"10,000 を越えるパッケージが使用可能です。RとRStudioには、パッケージを管理する機能があります:" -# unordered list #: r-novice-gapminder/_episodes/01-rstudio-intro.md:773 +# unordered list msgid "* You can see what packages are installed by typing" -msgstr "* インストールされているパッケージを以下を入力することで見ることができます。" +msgstr "" #: r-novice-gapminder/_episodes/01-rstudio-intro.md:774 -msgid "" -" `installed.packages()`\n" +msgid " `installed.packages()`\n" "* You can install packages by typing `install.packages(\"packagename\")`,\n" " where `packagename` is the package name, in quotes.\n" "* You can update installed packages by typing `update.packages()`\n" "* You can remove a package with `remove.packages(\"packagename\")`\n" "* You can make a package available for use with `library(packagename)`" msgstr "" -" `installed.packages()`\n" -"* パッケージをインストールするには、`install.packages(\"packagename\")`を入力します\n" -" ここで、`packagename`は、用いるパッケージ名です。\n" -"* インストールしたパッケージの更新には、`update.packages()`を入力します。\n" -"* パッケージの削除には、`remove.packages(\"packagename\")`を入力します。\n" -"* 使用できるパッケージを用いるには、`library(packagename)`を入力します。" -# blockquote, which can be cascaded #: r-novice-gapminder/_episodes/01-rstudio-intro.md:781 #: r-novice-gapminder/_episodes/02-project-intro.md:156 #: r-novice-gapminder/_episodes/03-seeking-help.md:167 @@ -3030,12 +2289,12 @@ msgstr "" #: r-novice-gapminder/_episodes/12-plyr.md:406 #: r-novice-gapminder/_episodes/13-dplyr.md:281 #: r-novice-gapminder/_episodes/14-tidyr.md:263 +# blockquote, which can be cascaded msgid "> ## Challenge 2" -msgstr "> ## チャレンジ2" +msgstr "" #: r-novice-gapminder/_episodes/01-rstudio-intro.md:782 -msgid "" -">\n" +msgid ">\n" "> What will be the value of each variable after each\n" "> statement in the following program?\n" ">\n" @@ -3080,52 +2339,7 @@ msgid "" "> > This will subtract 20 from the existing value of 122 to give a new value\n" "> > of 102 to the variable age." msgstr "" -">\n" -"> 次のプログラムのそれぞれの宣言の後、それぞれの変数の値は\n" -"> 何になるでしょうか?\n" -">\n" -"> \n" -"> ~~~\n" -"> mass <- 47.5\n" -"> age <- 122\n" -"> mass <- mass * 2.3\n" -"> age <- age - 20\n" -"> ~~~\n" -"> {: .language-r}\n" -">\n" -"> > ## チャレンジ2の解答\n" -"> >\n" -"> > \n" -"> > ~~~\n" -"> > mass <- 47.5\n" -"> > ~~~\n" -"> > {: .language-r}\n" -"> > これは、変数massに、47.5の値を与えます\n" -"> >\n" -"> > \n" -"> > ~~~\n" -"> > age <- 122\n" -"> > ~~~\n" -"> > {: .language-r}\n" -"> > これは、変数ageに122の値を与えます\n" -"> >\n" -"> > \n" -"> > ~~~\n" -"> > mass <- mass * 2.3\n" -"> > ~~~\n" -"> > {: .language-r}\n" -"> > これは、既存の値47.5に2.3を掛けた新しい値\n" -"> > 109.25を変数massに与えます。\n" -"> >\n" -"> > \n" -"> > ~~~\n" -"> > age <- age - 20\n" -"> > ~~~\n" -"> > {: .language-r}\n" -"> > これは、既存の値の122から20を引いた新しい値\n" -"> > 102を変数ageに与えます。" -# blockquote, which can be cascaded #: r-novice-gapminder/_episodes/01-rstudio-intro.md:830 #: r-novice-gapminder/_episodes/03-seeking-help.md:249 #: r-novice-gapminder/_episodes/04-data-structures-part1.md:1199 @@ -3136,12 +2350,12 @@ msgstr "" #: r-novice-gapminder/_episodes/09-vectorization.md:263 #: r-novice-gapminder/_episodes/10-functions.md:302 #: r-novice-gapminder/_episodes/14-tidyr.md:551 +# blockquote, which can be cascaded msgid "> ## Challenge 3" -msgstr "> ## チャレンジ3" +msgstr "" #: r-novice-gapminder/_episodes/01-rstudio-intro.md:831 -msgid "" -">\n" +msgid ">\n" "> Run the code from the previous challenge, and write a command to\n" "> compare mass to age. Is mass larger than age?\n" ">\n" @@ -3162,28 +2376,7 @@ msgid "" "> > {: .output}\n" "> > This should yield a boolean value of TRUE since 109.25 is greater than 102." msgstr "" -">\n" -"> チャレンジ2のコードを走らせ、massとageを比較するコマンドを書いて下さい。\n" -"> massはageよりも大きいでしょうか?\n" -">\n" -"> > ## チャレンジ3の解答\n" -"> >\n" -"> > Rを使ってこの質問に回答する方法のひとつは、 次のように`>`を用いることです:\n" -"> > \n" -"> > ~~~\n" -"> > mass > age\n" -"> > ~~~\n" -"> > {: .language-r}\n" -"> > \n" -"> > \n" -"> > \n" -"> > ~~~\n" -"> > [1] TRUE\n" -"> > ~~~\n" -"> > {: .output}\n" -"> > 109.25は102よりも大きいため、これは、論理型の値、TRUEとなる。" -# blockquote, which can be cascaded #: r-novice-gapminder/_episodes/01-rstudio-intro.md:855 #: r-novice-gapminder/_episodes/04-data-structures-part1.md:1440 #: r-novice-gapminder/_episodes/05-data-structures-part2.md:709 @@ -3191,12 +2384,12 @@ msgstr "" #: r-novice-gapminder/_episodes/07-control-flow.md:529 #: r-novice-gapminder/_episodes/09-vectorization.md:354 #: r-novice-gapminder/_episodes/10-functions.md:554 +# blockquote, which can be cascaded msgid "> ## Challenge 4" -msgstr "> ## チャレンジ4" +msgstr "" #: r-novice-gapminder/_episodes/01-rstudio-intro.md:856 -msgid "" -">\n" +msgid ">\n" "> Clean up your working environment by deleting the mass and age\n" "> variables.\n" ">\n" @@ -3209,31 +2402,19 @@ msgid "" "> > ~~~\n" "> > {: .language-r}" msgstr "" -">\n" -"> massとageの変数を消去し、作業環境をきれいにしよう。\n" -">\n" -"> > ## チャレンジ4の解答\n" -"> >\n" -"> > これを行うには、`rm`コマンドを使います。\n" -"> > \n" -"> > ~~~\n" -"> > rm(age, mass)\n" -"> > ~~~\n" -"> > {: .language-r}" -# blockquote, which can be cascaded #: r-novice-gapminder/_episodes/01-rstudio-intro.md:871 #: r-novice-gapminder/_episodes/04-data-structures-part1.md:1472 #: r-novice-gapminder/_episodes/05-data-structures-part2.md:735 #: r-novice-gapminder/_episodes/06-data-subsetting.md:1182 #: r-novice-gapminder/_episodes/08-plot-ggplot2.md:463 #: r-novice-gapminder/_episodes/10-functions.md:573 +# blockquote, which can be cascaded msgid "> ## Challenge 5" -msgstr "> ## チャレンジ5" +msgstr "" #: r-novice-gapminder/_episodes/01-rstudio-intro.md:872 -msgid "" -">\n" +msgid ">\n" "> Install the following packages: `ggplot2`, `plyr`, `gapminder`\n" ">\n" "> > ## Solution to challenge 5\n" @@ -3247,24 +2428,10 @@ msgid "" "> > ~~~\n" "> > {: .language-r}" msgstr "" -">\n" -"> 次のパッケージをインストールしよう: `ggplot2`, `plyr`, `gapminder`\n" -">\n" -"> > ## チャレンジ5の解答\n" -"> >\n" -"> > 求められているパッケージをインストールするには、コマンド`install.packages()`が使えます。\n" -"> > \n" -"> > ~~~\n" -"> > install.packages(\"ggplot2\")\n" -"> > install.packages(\"plyr\")\n" -"> > install.packages(\"gapminder\")\n" -"> > ~~~\n" -"> > {: .language-r}" -# Front Matter #: r-novice-gapminder/_episodes/02-project-intro.md:1 -msgid "" -"---\n" +# Front Matter +msgid "---\n" "# Please do not edit this file directly; it is auto generated.\n" "# Instead, please edit 02-project-intro.md in _episodes_rmd/\n" "title: \"Project Management With RStudio\"\n" @@ -3282,131 +2449,91 @@ msgid "" "source: Rmd\n" "---" msgstr "" -"---\n" -"# Please do not edit this file directly; it is auto generated.\n" -"# Instead, please edit 02-project-intro.md in _episodes_rmd/\n" -"title: \"Project Management With RStudio\"\n" -"teaching: 20\n" -"exercises: 10\n" -"questions:\n" -"- \"How can I manage my projects in R?\"\n" -"objectives:\n" -"- Create self-contained projects in RStudio\n" -"keypoints:\n" -"- \"Use RStudio to create and manage projects with consistent layout.\"\n" -"- \"Treat raw data as read-only.\"\n" -"- \"Treat generated output as disposable.\"\n" -"- \"Separate function definition and application.\"\n" -"source: Rmd\n" -"---" -# header #: r-novice-gapminder/_episodes/02-project-intro.md:21 +# header msgid "## Introduction" -msgstr "## Introduction" +msgstr "" #: r-novice-gapminder/_episodes/02-project-intro.md:23 -msgid "" -"The scientific process is naturally incremental, and many projects\n" +msgid "The scientific process is naturally incremental, and many projects\n" "start life as random notes, some code, then a manuscript, and\n" "eventually everything is a bit mixed together." msgstr "" -"The scientific process is naturally incremental, and many projects\n" -"start life as random notes, some code, then a manuscript, and\n" -"eventually everything is a bit mixed together." #: r-novice-gapminder/_episodes/02-project-intro.md:27 -msgid "" -"

Managing your projects in a reproducible fashion doesn't just make your science reproducible, it makes your life easier.

— Vince Buffalo (@vsbuffalo) April 15, 2013
\n" +msgid "

Managing your projects in a reproducible fashion doesn't just make your science reproducible, it makes your life easier.

— Vince Buffalo (@vsbuffalo) April 15, 2013
\n" "" msgstr "" -"

Managing your projects in a reproducible fashion doesn't just make your science reproducible, it makes your life easier.

— Vince Buffalo (@vsbuffalo) April 15, 2013
\n" -"" #: r-novice-gapminder/_episodes/02-project-intro.md:30 msgid "Most people tend to organize their projects like this:" -msgstr "Most people tend to organize their projects like this:" +msgstr "" #: r-novice-gapminder/_episodes/02-project-intro.md:32 msgid "![](../fig/bad_layout.png)" -msgstr "![](../fig/bad_layout.png)" +msgstr "" #: r-novice-gapminder/_episodes/02-project-intro.md:34 msgid "There are many reasons why we should *ALWAYS* avoid this:" -msgstr "There are many reasons why we should *ALWAYS* avoid this:" +msgstr "" -# ordered list #: r-novice-gapminder/_episodes/02-project-intro.md:36 +# ordered list msgid "1. It is really hard to tell which version of your data is" -msgstr "1. It is really hard to tell which version of your data is" +msgstr "" #: r-novice-gapminder/_episodes/02-project-intro.md:37 -msgid "" -"the original and which is the modified;\n" +msgid "the original and which is the modified;\n" "2. It gets really messy because it mixes files with various\n" "extensions together;\n" "3. It probably takes you a lot of time to actually find\n" "things, and relate the correct figures to the exact code\n" "that has been used to generate it;" msgstr "" -"the original and which is the modified;\n" -"2. It gets really messy because it mixes files with various\n" -"extensions together;\n" -"3. It probably takes you a lot of time to actually find\n" -"things, and relate the correct figures to the exact code\n" -"that has been used to generate it;" #: r-novice-gapminder/_episodes/02-project-intro.md:44 msgid "A good project layout will ultimately make your life easier:" -msgstr "A good project layout will ultimately make your life easier:" +msgstr "" -# unordered list #: r-novice-gapminder/_episodes/02-project-intro.md:46 +# unordered list msgid "* It will help ensure the integrity of your data;" -msgstr "* It will help ensure the integrity of your data;" +msgstr "" -# unordered list #: r-novice-gapminder/_episodes/02-project-intro.md:47 +# unordered list msgid "* It makes it simpler to share your code with someone else" -msgstr "* It makes it simpler to share your code with someone else" +msgstr "" #: r-novice-gapminder/_episodes/02-project-intro.md:48 -msgid "" -"(a lab-mate, collaborator, or supervisor);\n" +msgid "(a lab-mate, collaborator, or supervisor);\n" "* It allows you to easily upload your code with your manuscript submission;\n" "* It makes it easier to pick the project back up after a break." msgstr "" -"(a lab-mate, collaborator, or supervisor);\n" -"* It allows you to easily upload your code with your manuscript submission;\n" -"* It makes it easier to pick the project back up after a break." -# header #: r-novice-gapminder/_episodes/02-project-intro.md:52 +# header msgid "## A possible solution" -msgstr "## A possible solution" +msgstr "" #: r-novice-gapminder/_episodes/02-project-intro.md:54 msgid "Fortunately, there are tools and packages which can help you manage your work effectively." -msgstr "Fortunately, there are tools and packages which can help you manage your work effectively." +msgstr "" #: r-novice-gapminder/_episodes/02-project-intro.md:56 -msgid "" -"One of the most powerful and useful aspects of RStudio is its project management\n" +msgid "One of the most powerful and useful aspects of RStudio is its project management\n" "functionality. We'll be using this today to create a self-contained, reproducible\n" "project." msgstr "" -"One of the most powerful and useful aspects of RStudio is its project management\n" -"functionality. We'll be using this today to create a self-contained, reproducible\n" -"project." -# blockquote, which can be cascaded #: r-novice-gapminder/_episodes/02-project-intro.md:61 +# blockquote, which can be cascaded msgid "> ## Challenge: Creating a self-contained project" -msgstr "> ## Challenge: Creating a self-contained project" +msgstr "" #: r-novice-gapminder/_episodes/02-project-intro.md:62 -msgid "" -">\n" +msgid ">\n" "> We're going to create a new project in RStudio:\n" ">\n" "> 1. Click the \"File\" menu button, then \"New Project\".\n" @@ -3416,110 +2543,73 @@ msgid "" "> 5. If available, select the checkbox for \"Create a git repository.\"\n" "> 6. Click the \"Create Project\" button." msgstr "" -">\n" -"> We're going to create a new project in RStudio:\n" -">\n" -"> 1. Click the \"File\" menu button, then \"New Project\".\n" -"> 2. Click \"New Directory\".\n" -"> 3. Click \"Empty Project\".\n" -"> 4. Type in the name of the directory to store your project, e.g. \"my_project\".\n" -"> 5. If available, select the checkbox for \"Create a git repository.\"\n" -"> 6. Click the \"Create Project\" button." #: r-novice-gapminder/_episodes/02-project-intro.md:73 -msgid "" -"Now when we start R in this project directory, or open this project with RStudio,\n" +msgid "Now when we start R in this project directory, or open this project with RStudio,\n" "all of our work on this project will be entirely self-contained in this directory." msgstr "" -"Now when we start R in this project directory, or open this project with RStudio,\n" -"all of our work on this project will be entirely self-contained in this directory." -# header #: r-novice-gapminder/_episodes/02-project-intro.md:76 +# header msgid "## Best practices for project organization" -msgstr "## Best practices for project organization" +msgstr "" #: r-novice-gapminder/_episodes/02-project-intro.md:78 -msgid "" -"Although there is no \"best\" way to lay out a project, there are some general\n" +msgid "Although there is no \"best\" way to lay out a project, there are some general\n" "principles to adhere to that will make project management easier:" msgstr "" -"Although there is no \"best\" way to lay out a project, there are some general\n" -"principles to adhere to that will make project management easier:" -# header #: r-novice-gapminder/_episodes/02-project-intro.md:81 +# header msgid "### Treat data as read only" -msgstr "### Treat data as read only" +msgstr "" #: r-novice-gapminder/_episodes/02-project-intro.md:83 -msgid "" -"This is probably the most important goal of setting up a project. Data is\n" +msgid "This is probably the most important goal of setting up a project. Data is\n" "typically time consuming and/or expensive to collect. Working with them\n" "interactively (e.g., in Excel) where they can be modified means you are never\n" "sure of where the data came from, or how it has been modified since collection.\n" "It is therefore a good idea to treat your data as \"read-only\"." msgstr "" -"This is probably the most important goal of setting up a project. Data is\n" -"typically time consuming and/or expensive to collect. Working with them\n" -"interactively (e.g., in Excel) where they can be modified means you are never\n" -"sure of where the data came from, or how it has been modified since collection.\n" -"It is therefore a good idea to treat your data as \"read-only\"." -# header #: r-novice-gapminder/_episodes/02-project-intro.md:89 +# header msgid "### Data Cleaning" -msgstr "### Data Cleaning" +msgstr "" #: r-novice-gapminder/_episodes/02-project-intro.md:91 -msgid "" -"In many cases your data will be \"dirty\": it will need significant preprocessing\n" +msgid "In many cases your data will be \"dirty\": it will need significant preprocessing\n" "to get into a format R (or any other programming language) will find useful. This\n" "task is sometimes called \"data munging\". I find it useful to store these scripts\n" "in a separate folder, and create a second \"read-only\" data folder to hold the\n" "\"cleaned\" data sets." msgstr "" -"In many cases your data will be \"dirty\": it will need significant preprocessing\n" -"to get into a format R (or any other programming language) will find useful. This\n" -"task is sometimes called \"data munging\". I find it useful to store these scripts\n" -"in a separate folder, and create a second \"read-only\" data folder to hold the\n" -"\"cleaned\" data sets." -# header #: r-novice-gapminder/_episodes/02-project-intro.md:97 +# header msgid "### Treat generated output as disposable" -msgstr "### Treat generated output as disposable" +msgstr "" #: r-novice-gapminder/_episodes/02-project-intro.md:99 -msgid "" -"Anything generated by your scripts should be treated as disposable: it should\n" +msgid "Anything generated by your scripts should be treated as disposable: it should\n" "all be able to be regenerated from your scripts." msgstr "" -"Anything generated by your scripts should be treated as disposable: it should\n" -"all be able to be regenerated from your scripts." #: r-novice-gapminder/_episodes/02-project-intro.md:102 -msgid "" -"There are lots of different ways to manage this output. I find it useful to\n" +msgid "There are lots of different ways to manage this output. I find it useful to\n" "have an output folder with different sub-directories for each separate\n" "analysis. This makes it easier later, as many of my analyses are exploratory\n" "and don't end up being used in the final project, and some of the analyses\n" "get shared between projects." msgstr "" -"There are lots of different ways to manage this output. I find it useful to\n" -"have an output folder with different sub-directories for each separate\n" -"analysis. This makes it easier later, as many of my analyses are exploratory\n" -"and don't end up being used in the final project, and some of the analyses\n" -"get shared between projects." -# blockquote, which can be cascaded #: r-novice-gapminder/_episodes/02-project-intro.md:108 +# blockquote, which can be cascaded msgid "> ## Tip: Good Enough Practices for Scientific Computing" -msgstr "> ## Tip: Good Enough Practices for Scientific Computing" +msgstr "" #: r-novice-gapminder/_episodes/02-project-intro.md:109 -msgid "" -">\n" +msgid ">\n" "> [Good Enough Practices for Scientific Computing](https://github.com/swcarpentry/good-enough-practices-in-scientific-computing/blob/gh-pages/good-enough-practices-for-scientific-computing.pdf) gives the following recommendations for project organization:\n" ">\n" "> 1. Put each project in its own directory, which is named after the project.\n" @@ -3529,47 +2619,31 @@ msgid "" "> 5. Name all files to reflect their content or function.\n" ">" msgstr "" -">\n" -"> [Good Enough Practices for Scientific Computing](https://github.com/swcarpentry/good-enough-practices-in-scientific-computing/blob/gh-pages/good-enough-practices-for-scientific-computing.pdf) gives the following recommendations for project organization:\n" -">\n" -"> 1. Put each project in its own directory, which is named after the project.\n" -"> 2. Put text documents associated with the project in the `doc` directory.\n" -"> 3. Put raw data and metadata in the `data` directory, and files generated during cleanup and analysis in a `results` directory.\n" -"> 4. Put source for the project's scripts and programs in the `src` directory, and programs brought in from elsewhere or compiled locally in the `bin` directory.\n" -"> 5. Name all files to reflect their content or function.\n" -">" -# header #: r-novice-gapminder/_episodes/02-project-intro.md:120 +# header msgid "### Separate function definition and application" -msgstr "### Separate function definition and application" +msgstr "" #: r-novice-gapminder/_episodes/02-project-intro.md:122 msgid "One of the more effective ways to work with R is to start by writing the code you want to run directly in an .R script, and then running the selected lines (either using the keyboard shortcuts in RStudio or clicking the \"Run\" button) in the interactive R console." -msgstr "One of the more effective ways to work with R is to start by writing the code you want to run directly in an .R script, and then running the selected lines (either using the keyboard shortcuts in RStudio or clicking the \"Run\" button) in the interactive R console." +msgstr "" #: r-novice-gapminder/_episodes/02-project-intro.md:124 -msgid "" -"When your project is in its early stages, the initial .R script file usually contains many lines\n" +msgid "When your project is in its early stages, the initial .R script file usually contains many lines\n" "of directly executed code. As it matures, reusable chunks get pulled into their\n" "own functions. It's a good idea to separate these functions into two separate folders; one\n" "to store useful functions that you'll reuse across analyses and projects, and\n" "one to store the analysis scripts." msgstr "" -"When your project is in its early stages, the initial .R script file usually contains many lines\n" -"of directly executed code. As it matures, reusable chunks get pulled into their\n" -"own functions. It's a good idea to separate these functions into two separate folders; one\n" -"to store useful functions that you'll reuse across analyses and projects, and\n" -"one to store the analysis scripts." -# blockquote, which can be cascaded #: r-novice-gapminder/_episodes/02-project-intro.md:130 +# blockquote, which can be cascaded msgid "> ## Tip: avoiding duplication" -msgstr "> ## Tip: avoiding duplication" +msgstr "" #: r-novice-gapminder/_episodes/02-project-intro.md:131 -msgid "" -">\n" +msgid ">\n" "> You may find yourself using data or analysis scripts across several projects.\n" "> Typically you want to avoid duplication to save space and avoid having to\n" "> make updates to code in multiple places.\n" @@ -3579,84 +2653,67 @@ msgid "" "> use the `ln -s` command, and on Windows you can either create a shortcut or\n" "> use the `mklink` command from the windows terminal." msgstr "" -">\n" -"> You may find yourself using data or analysis scripts across several projects.\n" -"> Typically you want to avoid duplication to save space and avoid having to\n" -"> make updates to code in multiple places.\n" -">\n" -"> In this case I find it useful to make \"symbolic links\", which are essentially\n" -"> shortcuts to files somewhere else on a filesystem. On Linux and OS X you can\n" -"> use the `ln -s` command, and on Windows you can either create a shortcut or\n" -"> use the `mklink` command from the windows terminal." -# header #: r-novice-gapminder/_episodes/02-project-intro.md:142 +# header msgid "### Save the data in the data directory" -msgstr "### Save the data in the data directory" +msgstr "" #: r-novice-gapminder/_episodes/02-project-intro.md:144 msgid "Now we have a good directory structure we will now place/save the data file in the `data/` directory." -msgstr "Now we have a good directory structure we will now place/save the data file in the `data/` directory." +msgstr "" -# blockquote, which can be cascaded #: r-novice-gapminder/_episodes/02-project-intro.md:147 +# blockquote, which can be cascaded msgid "> Download the gapminder data from [here](https://raw.githubusercontent.com/swcarpentry/r-novice-gapminder/gh-pages/_episodes_rmd/data/gapminder_wide.csv)." -msgstr "> Download the gapminder data from [here](https://raw.githubusercontent.com/swcarpentry/r-novice-gapminder/gh-pages/_episodes_rmd/data/gapminder_wide.csv)." +msgstr "" #: r-novice-gapminder/_episodes/02-project-intro.md:148 -msgid "" -">\n" +msgid ">\n" "> 1. Download the file (CTRL + S, right mouse click -> \"Save as\", or File -> \"Save page as\")\n" "> 2. Make sure it's saved under the name `gapminder_data.csv`\n" "> 3. Save the file in the `data/` folder within your project.\n" ">\n" "> We will load and inspect these data later." msgstr "" -">\n" -"> 1. Download the file (CTRL + S, right mouse click -> \"Save as\", or File -> \"Save page as\")\n" -"> 2. Make sure it's saved under the name `gapminder_data.csv`\n" -"> 3. Save the file in the `data/` folder within your project.\n" -">\n" -"> We will load and inspect these data later." -# blockquote, which can be cascaded #: r-novice-gapminder/_episodes/02-project-intro.md:157 +# blockquote, which can be cascaded msgid "> It is useful to get some general idea about the dataset, directly from the" -msgstr "> It is useful to get some general idea about the dataset, directly from the" +msgstr "" -# blockquote, which can be cascaded #: r-novice-gapminder/_episodes/02-project-intro.md:158 +# blockquote, which can be cascaded msgid "> command line, before loading it into R. Understanding the dataset better" -msgstr "> command line, before loading it into R. Understanding the dataset better" +msgstr "" -# blockquote, which can be cascaded #: r-novice-gapminder/_episodes/02-project-intro.md:159 +# blockquote, which can be cascaded msgid "> will come in handy when making decisions on how to load it in R. Use the command-line" -msgstr "> will come in handy when making decisions on how to load it in R. Use the command-line" +msgstr "" -# blockquote, which can be cascaded #: r-novice-gapminder/_episodes/02-project-intro.md:160 +# blockquote, which can be cascaded msgid "> shell to answer the following questions:" -msgstr "> shell to answer the following questions:" +msgstr "" -# blockquote, which can be cascaded #: r-novice-gapminder/_episodes/02-project-intro.md:161 +# blockquote, which can be cascaded msgid "> 1. What is the size of the file?" -msgstr "> 1. What is the size of the file?" +msgstr "" -# blockquote, which can be cascaded #: r-novice-gapminder/_episodes/02-project-intro.md:162 +# blockquote, which can be cascaded msgid "> 2. How many rows of data does it contain?" -msgstr "> 2. How many rows of data does it contain?" +msgstr "" -# blockquote, which can be cascaded #: r-novice-gapminder/_episodes/02-project-intro.md:163 +# blockquote, which can be cascaded msgid "> 3. What kinds of values are stored in this file?" -msgstr "> 3. What kinds of values are stored in this file?" +msgstr "" #: r-novice-gapminder/_episodes/02-project-intro.md:164 -msgid "" -">\n" +msgid ">\n" "> > ## Solution to Challenge 2\n" "> >\n" "> > By running these commands in the shell:\n" @@ -3711,87 +2768,29 @@ msgid "" "> > ~~~\n" "> > {: .output}" msgstr "" -">\n" -"> > ## Solution to Challenge 2\n" -"> >\n" -"> > By running these commands in the shell:\n" -"> > \n" -"> > ~~~\n" -"> > ls -lh data/gapminder_data.csv\n" -"> > ~~~\n" -"> > {: .language-r}\n" -"> > \n" -"> > \n" -"> > \n" -"> > \n" -"> > ~~~\n" -"> > -rw-r--r-- 1 naupaka staff 80K Sep 2 15:54 data/gapminder_data.csv\n" -"> > ~~~\n" -"> > {: .output}\n" -"> > The file size is 80K.\n" -"> > \n" -"> > ~~~\n" -"> > wc -l data/gapminder_data.csv\n" -"> > ~~~\n" -"> > {: .language-r}\n" -"> > \n" -"> > \n" -"> > \n" -"> > \n" -"> > ~~~\n" -"> > 1705 data/gapminder_data.csv\n" -"> > ~~~\n" -"> > {: .output}\n" -"> > There are 1705 lines. The data looks like:\n" -"> > \n" -"> > ~~~\n" -"> > head data/gapminder_data.csv\n" -"> > ~~~\n" -"> > {: .language-r}\n" -"> > \n" -"> > \n" -"> > \n" -"> > \n" -"> > ~~~\n" -"> > country,year,pop,continent,lifeExp,gdpPercap\n" -"> > Afghanistan,1952,8425333,Asia,28.801,779.4453145\n" -"> > Afghanistan,1957,9240934,Asia,30.332,820.8530296\n" -"> > Afghanistan,1962,10267083,Asia,31.997,853.10071\n" -"> > Afghanistan,1967,11537966,Asia,34.02,836.1971382\n" -"> > Afghanistan,1972,13079460,Asia,36.088,739.9811058\n" -"> > Afghanistan,1977,14880372,Asia,38.438,786.11336\n" -"> > Afghanistan,1982,12881816,Asia,39.854,978.0114388\n" -"> > Afghanistan,1987,13867957,Asia,40.822,852.3959448\n" -"> > Afghanistan,1992,16317921,Asia,41.674,649.3413952\n" -"> > ~~~\n" -"> > {: .output}" -# blockquote, which can be cascaded #: r-novice-gapminder/_episodes/02-project-intro.md:221 +# blockquote, which can be cascaded msgid "> ## Tip: command line in R Studio" -msgstr "> ## Tip: command line in R Studio" +msgstr "" #: r-novice-gapminder/_episodes/02-project-intro.md:222 -msgid "" -">\n" +msgid ">\n" "> You can quickly open up a shell in RStudio using the **Tools -> Shell...** menu item." msgstr "" -">\n" -"> You can quickly open up a shell in RStudio using the **Tools -> Shell...** menu item." -# header #: r-novice-gapminder/_episodes/02-project-intro.md:226 +# header msgid "### Version Control" -msgstr "### Version Control" +msgstr "" #: r-novice-gapminder/_episodes/02-project-intro.md:228 msgid "It is important to use version control with projects. Go [here for a good lesson which describes using Git with RStudio](https://swcarpentry.github.io/git-novice/14-supplemental-rstudio/)." -msgstr "It is important to use version control with projects. Go [here for a good lesson which describes using Git with RStudio](https://swcarpentry.github.io/git-novice/14-supplemental-rstudio/)." +msgstr "" -# Front Matter #: r-novice-gapminder/_episodes/03-seeking-help.md:1 -msgid "" -"---\n" +# Front Matter +msgid "---\n" "# Please do not edit this file directly; it is auto generated.\n" "# Instead, please edit 03-seeking-help.md in _episodes_rmd/\n" "title: \"Seeking Help\"\n" @@ -3808,258 +2807,186 @@ msgid "" "source: Rmd\n" "---" msgstr "" -"---\n" -"# Please do not edit this file directly; it is auto generated.\n" -"# Instead, please edit 03-seeking-help.md in _episodes_rmd/\n" -"title: \"Seeking Help\"\n" -"teaching: 10\n" -"exercises: 10\n" -"questions:\n" -"- \"How can I get help in R?\"\n" -"objectives:\n" -"- \"To be able read R help files for functions and special operators.\"\n" -"- \"To be able to use CRAN task views to identify packages to solve a problem.\"\n" -"- \"To be able to seek help from your peers.\"\n" -"keypoints:\n" -"- \"Use `help()` to get online help in R.\"\n" -"source: Rmd\n" -"---" -# header #: r-novice-gapminder/_episodes/03-seeking-help.md:20 +# header msgid "## Reading Help files" -msgstr "## Reading Help files" +msgstr "" #: r-novice-gapminder/_episodes/03-seeking-help.md:22 -msgid "" -"R, and every package, provide help files for functions. The general syntax to search for help on any\n" +msgid "R, and every package, provide help files for functions. The general syntax to search for help on any\n" "function, \"function_name\", from a specific function that is in a package loaded into your\n" "namespace (your interactive R session):" msgstr "" -"R, and every package, provide help files for functions. The general syntax to search for help on any\n" -"function, \"function_name\", from a specific function that is in a package loaded into your\n" -"namespace (your interactive R session):" -# code block #: r-novice-gapminder/_episodes/03-seeking-help.md:27 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "?function_name\n" "help(function_name)\n" "~~~" msgstr "" -"~~~\n" -"?function_name\n" -"help(function_name)\n" -"~~~" #: r-novice-gapminder/_episodes/03-seeking-help.md:33 msgid "This will load up a help page in RStudio (or as plain text in R by itself)." -msgstr "This will load up a help page in RStudio (or as plain text in R by itself)." +msgstr "" #: r-novice-gapminder/_episodes/03-seeking-help.md:35 msgid "Each help page is broken down into sections:" -msgstr "Each help page is broken down into sections:" +msgstr "" -# unordered list #: r-novice-gapminder/_episodes/03-seeking-help.md:37 +# unordered list msgid " - Description: An extended description of what the function does." -msgstr " - Description: An extended description of what the function does." +msgstr "" -# unordered list #: r-novice-gapminder/_episodes/03-seeking-help.md:38 +# unordered list msgid " - Usage: The arguments of the function and their default values." -msgstr " - Usage: The arguments of the function and their default values." +msgstr "" -# unordered list #: r-novice-gapminder/_episodes/03-seeking-help.md:39 +# unordered list msgid " - Arguments: An explanation of the data each argument is expecting." -msgstr " - Arguments: An explanation of the data each argument is expecting." +msgstr "" -# unordered list #: r-novice-gapminder/_episodes/03-seeking-help.md:40 +# unordered list msgid " - Details: Any important details to be aware of." -msgstr " - Details: Any important details to be aware of." +msgstr "" -# unordered list #: r-novice-gapminder/_episodes/03-seeking-help.md:41 +# unordered list msgid " - Value: The data the function returns." -msgstr " - Value: The data the function returns." +msgstr "" -# unordered list #: r-novice-gapminder/_episodes/03-seeking-help.md:42 +# unordered list msgid " - See Also: Any related functions you might find useful." -msgstr " - See Also: Any related functions you might find useful." +msgstr "" -# unordered list #: r-novice-gapminder/_episodes/03-seeking-help.md:43 +# unordered list msgid " - Examples: Some examples for how to use the function." -msgstr " - Examples: Some examples for how to use the function." +msgstr "" #: r-novice-gapminder/_episodes/03-seeking-help.md:45 msgid "Different functions might have different sections, but these are the main ones you should be aware of." -msgstr "Different functions might have different sections, but these are the main ones you should be aware of." +msgstr "" -# blockquote, which can be cascaded #: r-novice-gapminder/_episodes/03-seeking-help.md:47 +# blockquote, which can be cascaded msgid "> ## Tip: Reading help files" -msgstr "> ## Tip: Reading help files" +msgstr "" #: r-novice-gapminder/_episodes/03-seeking-help.md:48 -msgid "" -">\n" +msgid ">\n" "> One of the most daunting aspects of R is the large number of functions\n" "> available. It would be prohibitive, if not impossible to remember the\n" "> correct usage for every function you use. Luckily, the help files\n" "> mean you don't have to!" msgstr "" -">\n" -"> One of the most daunting aspects of R is the large number of functions\n" -"> available. It would be prohibitive, if not impossible to remember the\n" -"> correct usage for every function you use. Luckily, the help files\n" -"> mean you don't have to!" -# header #: r-novice-gapminder/_episodes/03-seeking-help.md:55 +# header msgid "## Special Operators" -msgstr "## Special Operators" +msgstr "" #: r-novice-gapminder/_episodes/03-seeking-help.md:57 msgid "To seek help on special operators, use quotes:" -msgstr "To seek help on special operators, use quotes:" +msgstr "" -# code block #: r-novice-gapminder/_episodes/03-seeking-help.md:60 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "?\"<-\"\n" "~~~" msgstr "" -"~~~\n" -"?\"<-\"\n" -"~~~" -# header #: r-novice-gapminder/_episodes/03-seeking-help.md:65 +# header msgid "## Getting help on packages" -msgstr "## Getting help on packages" +msgstr "" #: r-novice-gapminder/_episodes/03-seeking-help.md:67 -msgid "" -"Many packages come with \"vignettes\": tutorials and extended example documentation.\n" +msgid "Many packages come with \"vignettes\": tutorials and extended example documentation.\n" "Without any arguments, `vignette()` will list all vignettes for all installed packages;\n" "`vignette(package=\"package-name\")` will list all available vignettes for\n" "`package-name`, and `vignette(\"vignette-name\")` will open the specified vignette." msgstr "" -"Many packages come with \"vignettes\": tutorials and extended example documentation.\n" -"Without any arguments, `vignette()` will list all vignettes for all installed packages;\n" -"`vignette(package=\"package-name\")` will list all available vignettes for\n" -"`package-name`, and `vignette(\"vignette-name\")` will open the specified vignette." #: r-novice-gapminder/_episodes/03-seeking-help.md:72 -msgid "" -"If a package doesn't have any vignettes, you can usually find help by typing\n" +msgid "If a package doesn't have any vignettes, you can usually find help by typing\n" "`help(\"package-name\")`." msgstr "" -"If a package doesn't have any vignettes, you can usually find help by typing\n" -"`help(\"package-name\")`." -# header #: r-novice-gapminder/_episodes/03-seeking-help.md:75 +# header msgid "## When you kind of remember the function" -msgstr "## When you kind of remember the function" +msgstr "" #: r-novice-gapminder/_episodes/03-seeking-help.md:77 msgid "If you're not sure what package a function is in, or how it's specifically spelled you can do a fuzzy search:" -msgstr "If you're not sure what package a function is in, or how it's specifically spelled you can do a fuzzy search:" +msgstr "" -# code block #: r-novice-gapminder/_episodes/03-seeking-help.md:80 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "??function_name\n" "~~~" msgstr "" -"~~~\n" -"??function_name\n" -"~~~" -# header #: r-novice-gapminder/_episodes/03-seeking-help.md:85 +# header msgid "## When you have no idea where to begin" -msgstr "## When you have no idea where to begin" +msgstr "" #: r-novice-gapminder/_episodes/03-seeking-help.md:87 -msgid "" -"If you don't know what function or package you need to use\n" +msgid "If you don't know what function or package you need to use\n" "[CRAN Task Views](http://cran.at.r-project.org/web/views)\n" "is a specially maintained list of packages grouped into\n" "fields. This can be a good starting point." msgstr "" -"If you don't know what function or package you need to use\n" -"[CRAN Task Views](http://cran.at.r-project.org/web/views)\n" -"is a specially maintained list of packages grouped into\n" -"fields. This can be a good starting point." -# header #: r-novice-gapminder/_episodes/03-seeking-help.md:92 +# header msgid "## When your code doesn't work: seeking help from your peers" -msgstr "## When your code doesn't work: seeking help from your peers" +msgstr "" #: r-novice-gapminder/_episodes/03-seeking-help.md:94 -msgid "" -"If you're having trouble using a function, 9 times out of 10,\n" +msgid "If you're having trouble using a function, 9 times out of 10,\n" "the answers you are seeking have already been answered on\n" "[Stack Overflow](http://stackoverflow.com/). You can search using\n" "the `[r]` tag." msgstr "" -"If you're having trouble using a function, 9 times out of 10,\n" -"the answers you are seeking have already been answered on\n" -"[Stack Overflow](http://stackoverflow.com/). You can search using\n" -"the `[r]` tag." #: r-novice-gapminder/_episodes/03-seeking-help.md:99 -msgid "" -"If you can't find the answer, there are a few useful functions to\n" +msgid "If you can't find the answer, there are a few useful functions to\n" "help you ask a question from your peers:" msgstr "" -"If you can't find the answer, there are a few useful functions to\n" -"help you ask a question from your peers:" -# code block #: r-novice-gapminder/_episodes/03-seeking-help.md:103 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "?dput\n" "~~~" msgstr "" -"~~~\n" -"?dput\n" -"~~~" #: r-novice-gapminder/_episodes/03-seeking-help.md:108 -msgid "" -"Will dump the data you're working with into a format so that it can\n" +msgid "Will dump the data you're working with into a format so that it can\n" "be copy and pasted by anyone else into their R session." msgstr "" -"Will dump the data you're working with into a format so that it can\n" -"be copy and pasted by anyone else into their R session." -# code block #: r-novice-gapminder/_episodes/03-seeking-help.md:112 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "sessionInfo()\n" "~~~" msgstr "" -"~~~\n" -"sessionInfo()\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/03-seeking-help.md:119 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "R version 3.5.1 (2018-07-02)\n" "Platform: x86_64-apple-darwin17.6.0 (64-bit)\n" "Running under: macOS High Sierra 10.13.6\n" @@ -4082,42 +3009,15 @@ msgid "" "[5] evaluate_0.11 \n" "~~~" msgstr "" -"~~~\n" -"R version 3.5.1 (2018-07-02)\n" -"Platform: x86_64-apple-darwin17.6.0 (64-bit)\n" -"Running under: macOS High Sierra 10.13.6\n" -"\n" -"Matrix products: default\n" -"BLAS: /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libBLAS.dylib\n" -"LAPACK: /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libLAPACK.dylib\n" -"\n" -"locale:\n" -"[1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8\n" -"\n" -"attached base packages:\n" -"[1] stats graphics grDevices utils datasets methods base \n" -"\n" -"other attached packages:\n" -"[1] checkpoint_0.4.3 stringr_1.3.1 knitr_1.20 \n" -"\n" -"loaded via a namespace (and not attached):\n" -"[1] compiler_3.5.1 magrittr_1.5 tools_3.5.1 stringi_1.2.4 \n" -"[5] evaluate_0.11 \n" -"~~~" #: r-novice-gapminder/_episodes/03-seeking-help.md:143 -msgid "" -"Will print out your current version of R, as well as any packages you\n" +msgid "Will print out your current version of R, as well as any packages you\n" "have loaded. This can be useful for others to help reproduce and debug\n" "your issue." msgstr "" -"Will print out your current version of R, as well as any packages you\n" -"have loaded. This can be useful for others to help reproduce and debug\n" -"your issue." #: r-novice-gapminder/_episodes/03-seeking-help.md:148 -msgid "" -">\n" +msgid ">\n" "> Look at the help for the `c` function. What kind of vector do you\n" "> expect you will create if you evaluate the following:\n" "> \n" @@ -4134,26 +3034,9 @@ msgid "" "> > second, they are characters, and in the third they are characters:\n" "> > the numeric values are \"coerced\" to be characters." msgstr "" -">\n" -"> Look at the help for the `c` function. What kind of vector do you\n" -"> expect you will create if you evaluate the following:\n" -"> \n" -"> ~~~\n" -"> c(1, 2, 3)\n" -"> c('d', 'e', 'f')\n" -"> c(1, 2, 'f')\n" -"> ~~~\n" -"> {: .language-r}\n" -"> > ## Solution to Challenge 1\n" -"> >\n" -"> > The `c()` function creates a vector, in which all elements are the\n" -"> > same type. In the first case, the elements are numeric, in the\n" -"> > second, they are characters, and in the third they are characters:\n" -"> > the numeric values are \"coerced\" to be characters." #: r-novice-gapminder/_episodes/03-seeking-help.md:168 -msgid "" -">\n" +msgid ">\n" "> Look at the help for the `paste` function. You'll need to use this later.\n" "> What is the difference between the `sep` and `collapse` arguments?\n" ">\n" @@ -4232,184 +3115,105 @@ msgid "" "> > scroll to the bottom of the `?paste` help page and look at the\n" "> > examples, or try `example('paste')`.)" msgstr "" -">\n" -"> Look at the help for the `paste` function. You'll need to use this later.\n" -"> What is the difference between the `sep` and `collapse` arguments?\n" -">\n" -"> > ## Solution to Challenge 2\n" -"> >\n" -"> > To look at the help for the `paste()` function, use:\n" -"> > \n" -"> > ~~~\n" -"> > help(\"paste\")\n" -"> > ?paste\n" -"> > ~~~\n" -"> > {: .language-r}\n" -"> > The difference between `sep` and `collapse` is a little\n" -"> > tricky. The `paste` function accepts any number of arguments, each of which\n" -"> > can be a vector of any length. The `sep` argument specifies the string\n" -"> > used between concatenated terms — by default, a space. The result is a\n" -"> > vector as long as the longest argument supplied to `paste`. In contrast,\n" -"> > `collapse` specifies that after concatenation the elements are *collapsed*\n" -"> > together using the given separator, the result being a single string.\n" -"> > e.g. \n" -"> > \n" -"> > ~~~\n" -"> > paste(c(\"a\",\"b\"), \"c\")\n" -"> > ~~~\n" -"> > {: .language-r}\n" -"> > \n" -"> > \n" -"> > \n" -"> > ~~~\n" -"> > [1] \"a c\" \"b c\"\n" -"> > ~~~\n" -"> > {: .output}\n" -"> > \n" -"> > \n" -"> > \n" -"> > ~~~\n" -"> > paste(c(\"a\",\"b\"), \"c\", sep = \",\")\n" -"> > ~~~\n" -"> > {: .language-r}\n" -"> > \n" -"> > \n" -"> > \n" -"> > ~~~\n" -"> > [1] \"a,c\" \"b,c\"\n" -"> > ~~~\n" -"> > {: .output}\n" -"> > \n" -"> > \n" -"> > \n" -"> > ~~~\n" -"> > paste(c(\"a\",\"b\"), \"c\", collapse = \"|\")\n" -"> > ~~~\n" -"> > {: .language-r}\n" -"> > \n" -"> > \n" -"> > \n" -"> > ~~~\n" -"> > [1] \"a c|b c\"\n" -"> > ~~~\n" -"> > {: .output}\n" -"> > \n" -"> > \n" -"> > \n" -"> > ~~~\n" -"> > paste(c(\"a\",\"b\"), \"c\", sep = \",\", collapse = \"|\")\n" -"> > ~~~\n" -"> > {: .language-r}\n" -"> > \n" -"> > \n" -"> > \n" -"> > ~~~\n" -"> > [1] \"a,c|b,c\"\n" -"> > ~~~\n" -"> > {: .output}\n" -"> > (For more information,\n" -"> > scroll to the bottom of the `?paste` help page and look at the\n" -"> > examples, or try `example('paste')`.)" -# blockquote, which can be cascaded #: r-novice-gapminder/_episodes/03-seeking-help.md:250 +# blockquote, which can be cascaded msgid "> Use help to find a function (and its associated parameters) that you could" -msgstr "> Use help to find a function (and its associated parameters) that you could" +msgstr "" -# blockquote, which can be cascaded #: r-novice-gapminder/_episodes/03-seeking-help.md:251 +# blockquote, which can be cascaded msgid "> use to load data from a csv file in which columns are delimited with \"\\t\"" -msgstr "> use to load data from a csv file in which columns are delimited with \"\\t\"" +msgstr "" -# blockquote, which can be cascaded #: r-novice-gapminder/_episodes/03-seeking-help.md:252 +# blockquote, which can be cascaded msgid "> (tab) and the decimal point is a \".\" (period). This check for decimal" -msgstr "> (tab) and the decimal point is a \".\" (period). This check for decimal" +msgstr "" -# blockquote, which can be cascaded #: r-novice-gapminder/_episodes/03-seeking-help.md:253 +# blockquote, which can be cascaded msgid "> separator is important, especially if you are working with international" -msgstr "> separator is important, especially if you are working with international" +msgstr "" -# blockquote, which can be cascaded #: r-novice-gapminder/_episodes/03-seeking-help.md:254 +# blockquote, which can be cascaded msgid "> colleagues, because different countries have different conventions for the" -msgstr "> colleagues, because different countries have different conventions for the" +msgstr "" -# blockquote, which can be cascaded #: r-novice-gapminder/_episodes/03-seeking-help.md:255 +# blockquote, which can be cascaded msgid "> decimal point (i.e. comma vs period)." -msgstr "> decimal point (i.e. comma vs period)." +msgstr "" -# blockquote, which can be cascaded #: r-novice-gapminder/_episodes/03-seeking-help.md:256 +# blockquote, which can be cascaded msgid "> hint: use `??csv` to lookup csv related functions." -msgstr "> hint: use `??csv` to lookup csv related functions." +msgstr "" -# blockquote, which can be cascaded #: r-novice-gapminder/_episodes/03-seeking-help.md:257 +# blockquote, which can be cascaded msgid "> > ## Solution to Challenge 3" -msgstr "> > ## Solution to Challenge 3" +msgstr "" -# blockquote, which can be cascaded #: r-novice-gapminder/_episodes/03-seeking-help.md:258 +# blockquote, which can be cascaded msgid "> >" -msgstr "> >" +msgstr "" -# blockquote, which can be cascaded #: r-novice-gapminder/_episodes/03-seeking-help.md:259 +# blockquote, which can be cascaded msgid "> > The standard R function for reading tab-delimited files with a period" -msgstr "> > The standard R function for reading tab-delimited files with a period" +msgstr "" -# blockquote, which can be cascaded #: r-novice-gapminder/_episodes/03-seeking-help.md:260 +# blockquote, which can be cascaded msgid "> > decimal separator is read.delim(). You can also do this with" -msgstr "> > decimal separator is read.delim(). You can also do this with" +msgstr "" -# blockquote, which can be cascaded #: r-novice-gapminder/_episodes/03-seeking-help.md:261 +# blockquote, which can be cascaded msgid "> > `read.table(file, sep=\"\\t\")` (the period is the *default* decimal" -msgstr "> > `read.table(file, sep=\"\\t\")` (the period is the *default* decimal" +msgstr "" -# blockquote, which can be cascaded #: r-novice-gapminder/_episodes/03-seeking-help.md:262 +# blockquote, which can be cascaded msgid "> > separator for `read.table()`, although you may have to change" -msgstr "> > separator for `read.table()`, although you may have to change" +msgstr "" -# blockquote, which can be cascaded #: r-novice-gapminder/_episodes/03-seeking-help.md:263 +# blockquote, which can be cascaded msgid "> > the `comment.char` argument as well if your data file contains" -msgstr "> > the `comment.char` argument as well if your data file contains" +msgstr "" -# blockquote, which can be cascaded #: r-novice-gapminder/_episodes/03-seeking-help.md:264 +# blockquote, which can be cascaded msgid "> > hash (#) characters" -msgstr "> > hash (#) characters" +msgstr "" -# header #: r-novice-gapminder/_episodes/03-seeking-help.md:268 +# header msgid "## Other ports of call" -msgstr "## Other ports of call" +msgstr "" -# unordered list #: r-novice-gapminder/_episodes/03-seeking-help.md:270 +# unordered list msgid "* [Quick R](http://www.statmethods.net/)" -msgstr "* [Quick R](http://www.statmethods.net/)" +msgstr "" -# unordered list #: r-novice-gapminder/_episodes/03-seeking-help.md:271 +# unordered list msgid "* [RStudio cheat sheets](http://www.rstudio.com/resources/cheatsheets/)" -msgstr "* [RStudio cheat sheets](http://www.rstudio.com/resources/cheatsheets/)" +msgstr "" -# unordered list #: r-novice-gapminder/_episodes/03-seeking-help.md:272 +# unordered list msgid "* [Cookbook for R](http://www.cookbook-r.com/)" -msgstr "* [Cookbook for R](http://www.cookbook-r.com/)" +msgstr "" -# Front Matter #: r-novice-gapminder/_episodes/04-data-structures-part1.md:1 -msgid "" -"---\n" +# Front Matter +msgid "---\n" "# Please do not edit this file directly; it is auto generated.\n" "# Instead, please edit 04-data-structures-part1.md in _episodes_rmd/\n" "title: \"Data Structures\"\n" @@ -4430,132 +3234,74 @@ msgid "" "source: Rmd\n" "---" msgstr "" -"---\n" -"# Please do not edit this file directly; it is auto generated.\n" -"# Instead, please edit 04-data-structures-part1.md in _episodes_rmd/\n" -"title: \"Data Structures\"\n" -"teaching: 40\n" -"exercises: 15\n" -"questions:\n" -"- \"How can I read data in R?\"\n" -"- \"What are the basic data types in R?\"\n" -"- \"How do I represent categorical information in R?\"\n" -"objectives:\n" -"- \"To be aware of the different types of data.\"\n" -"- \"To begin exploring data frames, and understand how they are related to vectors, factors and lists.\"\n" -"- \"To be able to ask questions from R about the type, class, and structure of an object.\"\n" -"keypoints:\n" -"- \"Use `read.csv` to read tabular data in R.\"\n" -"- \"The basic data types in R are double, integer, complex, logical, and character.\"\n" -"- \"Use factors to represent categories in R.\"\n" -"source: Rmd\n" -"---" #: r-novice-gapminder/_episodes/04-data-structures-part1.md:24 -msgid "" -"One of R's most powerful features is its ability to deal with tabular data -\n" +msgid "One of R's most powerful features is its ability to deal with tabular data -\n" "such as you may already have in a spreadsheet or a CSV file. Let's start by\n" "making a toy dataset in your `data/` directory, called `feline-data.csv`:" msgstr "" -"One of R's most powerful features is its ability to deal with tabular data -\n" -"such as you may already have in a spreadsheet or a CSV file. Let's start by\n" -"making a toy dataset in your `data/` directory, called `feline-data.csv`:" -# code block #: r-novice-gapminder/_episodes/04-data-structures-part1.md:29 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "cats <- data.frame(coat = c(\"calico\", \"black\", \"tabby\"), \n" " weight = c(2.1, 5.0,3.2), \n" " likes_string = c(1, 0, 1))\n" "write.csv(x = cats, file = \"data/feline-data.csv\", row.names = FALSE)\n" "~~~" msgstr "" -"~~~\n" -"cats <- data.frame(coat = c(\"calico\", \"black\", \"tabby\"), \n" -" weight = c(2.1, 5.0,3.2), \n" -" likes_string = c(1, 0, 1))\n" -"write.csv(x = cats, file = \"data/feline-data.csv\", row.names = FALSE)\n" -"~~~" #: r-novice-gapminder/_episodes/04-data-structures-part1.md:35 -msgid "" -"{: .language-r}\n" +msgid "{: .language-r}\n" "The contents of the new file, `feline-data.csv`:" msgstr "" -"{: .language-r}\n" -"The contents of the new file, `feline-data.csv`:" -# code block #: r-novice-gapminder/_episodes/04-data-structures-part1.md:38 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "coat,weight,likes_string\n" "calico,2.1,1\n" "black,5.0,0\n" "tabby,3.2,1\n" "~~~" msgstr "" -"~~~\n" -"coat,weight,likes_string\n" -"calico,2.1,1\n" -"black,5.0,0\n" -"tabby,3.2,1\n" -"~~~" -# blockquote, which can be cascaded #: r-novice-gapminder/_episodes/04-data-structures-part1.md:46 +# blockquote, which can be cascaded msgid "> ## Tip: Editing Text files in R" -msgstr "> ## Tip: Editing Text files in R" +msgstr "" #: r-novice-gapminder/_episodes/04-data-structures-part1.md:47 -msgid "" -">\n" +msgid ">\n" "> Alternatively, you can create `data/feline-data.csv` using a text editor (Nano),\n" "> or within RStudio with the **File -> New File -> Text File** menu item." msgstr "" -">\n" -"> Alternatively, you can create `data/feline-data.csv` using a text editor (Nano),\n" -"> or within RStudio with the **File -> New File -> Text File** menu item." #: r-novice-gapminder/_episodes/04-data-structures-part1.md:52 msgid "We can load this into R via the following:" -msgstr "We can load this into R via the following:" +msgstr "" -# code block #: r-novice-gapminder/_episodes/04-data-structures-part1.md:55 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "cats <- read.csv(file = \"data/feline-data.csv\")\n" "cats\n" "~~~" msgstr "" -"~~~\n" -"cats <- read.csv(file = \"data/feline-data.csv\")\n" -"cats\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/04-data-structures-part1.md:63 #: r-novice-gapminder/_episodes/05-data-structures-part2.md:52 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" " coat weight likes_string\n" "1 calico 2.1 1\n" "2 black 5.0 0\n" "3 tabby 3.2 1\n" "~~~" msgstr "" -"~~~\n" -" coat weight likes_string\n" -"1 calico 2.1 1\n" -"2 black 5.0 0\n" -"3 tabby 3.2 1\n" -"~~~" #: r-novice-gapminder/_episodes/04-data-structures-part1.md:71 -msgid "" -"The `read.table` function is used for reading in tabular data stored in a text\n" +msgid "The `read.table` function is used for reading in tabular data stored in a text\n" "file where the columns of data are separated by punctuation characters such as\n" "CSV files (csv = comma-separated values). Tabs and commas are the most common\n" "punctuation characters used to separate or delimit data points in csv files. \n" @@ -4565,234 +3311,153 @@ msgid "" "the most commonly used. If needed it is possible to override the default \n" "delimiting punctuation marks for both `read.csv` and `read.delim`." msgstr "" -"The `read.table` function is used for reading in tabular data stored in a text\n" -"file where the columns of data are separated by punctuation characters such as\n" -"CSV files (csv = comma-separated values). Tabs and commas are the most common\n" -"punctuation characters used to separate or delimit data points in csv files. \n" -"For convenience R provides 2 other versions of `read.table`. These are: `read.csv`\n" -"for files where the data are separated with commas and `read.delim` for files\n" -"where the data are separated with tabs. Of these three functions `read.csv` is\n" -"the most commonly used. If needed it is possible to override the default \n" -"delimiting punctuation marks for both `read.csv` and `read.delim`." #: r-novice-gapminder/_episodes/04-data-structures-part1.md:82 -msgid "" -"We can begin exploring our dataset right away, pulling out columns by specifying\n" +msgid "We can begin exploring our dataset right away, pulling out columns by specifying\n" "them using the `$` operator:" msgstr "" -"We can begin exploring our dataset right away, pulling out columns by specifying\n" -"them using the `$` operator:" -# code block #: r-novice-gapminder/_episodes/04-data-structures-part1.md:86 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "cats$weight\n" "~~~" msgstr "" -"~~~\n" -"cats$weight\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/04-data-structures-part1.md:93 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "[1] 2.1 5.0 3.2\n" "~~~" msgstr "" -"~~~\n" -"[1] 2.1 5.0 3.2\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/04-data-structures-part1.md:100 #: r-novice-gapminder/_episodes/04-data-structures-part1.md:1095 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "cats$coat\n" "~~~" msgstr "" -"~~~\n" -"cats$coat\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/04-data-structures-part1.md:107 #: r-novice-gapminder/_episodes/04-data-structures-part1.md:1102 #: r-novice-gapminder/_episodes/04-data-structures-part1.md:1117 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "[1] calico black tabby \n" "Levels: black calico tabby\n" "~~~" msgstr "" -"~~~\n" -"[1] calico black tabby \n" -"Levels: black calico tabby\n" -"~~~" #: r-novice-gapminder/_episodes/04-data-structures-part1.md:113 msgid "We can do other operations on the columns:" -msgstr "We can do other operations on the columns:" +msgstr "" -# code block #: r-novice-gapminder/_episodes/04-data-structures-part1.md:116 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "## Say we discovered that the scale weighs two Kg light:\n" "cats$weight + 2\n" "~~~" msgstr "" -"~~~\n" -"## Say we discovered that the scale weighs two Kg light:\n" -"cats$weight + 2\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/04-data-structures-part1.md:124 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "[1] 4.1 7.0 5.2\n" "~~~" msgstr "" -"~~~\n" -"[1] 4.1 7.0 5.2\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/04-data-structures-part1.md:131 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "paste(\"My cat is\", cats$coat)\n" "~~~" msgstr "" -"~~~\n" -"paste(\"My cat is\", cats$coat)\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/04-data-structures-part1.md:138 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "[1] \"My cat is calico\" \"My cat is black\" \"My cat is tabby\" \n" "~~~" msgstr "" -"~~~\n" -"[1] \"My cat is calico\" \"My cat is black\" \"My cat is tabby\" \n" -"~~~" #: r-novice-gapminder/_episodes/04-data-structures-part1.md:143 msgid "But what about" -msgstr "But what about" +msgstr "" -# code block #: r-novice-gapminder/_episodes/04-data-structures-part1.md:146 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "cats$weight + cats$coat\n" "~~~" msgstr "" -"~~~\n" -"cats$weight + cats$coat\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/04-data-structures-part1.md:153 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "Warning in Ops.factor(cats$weight, cats$coat): '+' not meaningful for\n" "factors\n" "~~~" msgstr "" -"~~~\n" -"Warning in Ops.factor(cats$weight, cats$coat): '+' not meaningful for\n" -"factors\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/04-data-structures-part1.md:161 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "[1] NA NA NA\n" "~~~" msgstr "" -"~~~\n" -"[1] NA NA NA\n" -"~~~" #: r-novice-gapminder/_episodes/04-data-structures-part1.md:166 msgid "Understanding what happened here is key to successfully analyzing data in R." -msgstr "Understanding what happened here is key to successfully analyzing data in R." +msgstr "" -# header #: r-novice-gapminder/_episodes/04-data-structures-part1.md:168 +# header msgid "## Data Types" -msgstr "## Data Types" +msgstr "" #: r-novice-gapminder/_episodes/04-data-structures-part1.md:170 -msgid "" -"If you guessed that the last command will return an error because `2.1` plus\n" +msgid "If you guessed that the last command will return an error because `2.1` plus\n" "`\"black\"` is nonsense, you're right - and you already have some intuition for an\n" "important concept in programming called *data types*. We can ask what type of\n" "data something is:" msgstr "" -"If you guessed that the last command will return an error because `2.1` plus\n" -"`\"black\"` is nonsense, you're right - and you already have some intuition for an\n" -"important concept in programming called *data types*. We can ask what type of\n" -"data something is:" -# code block #: r-novice-gapminder/_episodes/04-data-structures-part1.md:176 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "typeof(cats$weight)\n" "~~~" msgstr "" -"~~~\n" -"typeof(cats$weight)\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/04-data-structures-part1.md:183 #: r-novice-gapminder/_episodes/04-data-structures-part1.md:198 #: r-novice-gapminder/_episodes/04-data-structures-part1.md:1379 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "[1] \"double\"\n" "~~~" msgstr "" -"~~~\n" -"[1] \"double\"\n" -"~~~" #: r-novice-gapminder/_episodes/04-data-structures-part1.md:188 msgid "There are 5 main types: `double`, `integer`, `complex`, `logical` and `character`." -msgstr "There are 5 main types: `double`, `integer`, `complex`, `logical` and `character`." +msgstr "" -# code block #: r-novice-gapminder/_episodes/04-data-structures-part1.md:191 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "typeof(3.14)\n" "~~~" msgstr "" -"~~~\n" -"typeof(3.14)\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/04-data-structures-part1.md:205 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "typeof(1L) # The L suffix forces the number to be an integer, since by default R uses float numbers\n" "~~~" msgstr "" -"~~~\n" -"typeof(1L) # The L suffix forces the number to be an integer, since by default R uses float numbers\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/04-data-structures-part1.md:212 #: r-novice-gapminder/_episodes/04-data-structures-part1.md:295 #: r-novice-gapminder/_episodes/04-data-structures-part1.md:745 @@ -4801,115 +3466,76 @@ msgstr "" #: r-novice-gapminder/_episodes/04-data-structures-part1.md:1132 #: r-novice-gapminder/_episodes/05-data-structures-part2.md:522 #: r-novice-gapminder/_episodes/05-data-structures-part2.md:536 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "[1] \"integer\"\n" "~~~" msgstr "" -"~~~\n" -"[1] \"integer\"\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/04-data-structures-part1.md:219 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "typeof(1+1i)\n" "~~~" msgstr "" -"~~~\n" -"typeof(1+1i)\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/04-data-structures-part1.md:226 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "[1] \"complex\"\n" "~~~" msgstr "" -"~~~\n" -"[1] \"complex\"\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/04-data-structures-part1.md:233 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "typeof(TRUE)\n" "~~~" msgstr "" -"~~~\n" -"typeof(TRUE)\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/04-data-structures-part1.md:240 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "[1] \"logical\"\n" "~~~" msgstr "" -"~~~\n" -"[1] \"logical\"\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/04-data-structures-part1.md:247 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "typeof('banana')\n" "~~~" msgstr "" -"~~~\n" -"typeof('banana')\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/04-data-structures-part1.md:254 #: r-novice-gapminder/_episodes/04-data-structures-part1.md:941 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "[1] \"character\"\n" "~~~" msgstr "" -"~~~\n" -"[1] \"character\"\n" -"~~~" #: r-novice-gapminder/_episodes/04-data-structures-part1.md:259 -msgid "" -"No matter how\n" +msgid "No matter how\n" "complicated our analyses become, all data in R is interpreted as one of these\n" "basic data types. This strictness has some really important consequences." msgstr "" -"No matter how\n" -"complicated our analyses become, all data in R is interpreted as one of these\n" -"basic data types. This strictness has some really important consequences." #: r-novice-gapminder/_episodes/04-data-structures-part1.md:263 -msgid "" -"A user has added details of another cat. This information is in the file\n" +msgid "A user has added details of another cat. This information is in the file\n" "`data/feline-data_v2.csv`." msgstr "" -"A user has added details of another cat. This information is in the file\n" -"`data/feline-data_v2.csv`." -# code block #: r-novice-gapminder/_episodes/04-data-structures-part1.md:268 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "file.show(\"data/feline-data_v2.csv\")\n" "~~~" msgstr "" -"~~~\n" -"file.show(\"data/feline-data_v2.csv\")\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/04-data-structures-part1.md:274 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "coat,weight,likes_string\n" "calico,2.1,1\n" "black,5.0,0\n" @@ -4917,79 +3543,48 @@ msgid "" "tabby,2.3 or 2.4,1\n" "~~~" msgstr "" -"~~~\n" -"coat,weight,likes_string\n" -"calico,2.1,1\n" -"black,5.0,0\n" -"tabby,3.2,1\n" -"tabby,2.3 or 2.4,1\n" -"~~~" #: r-novice-gapminder/_episodes/04-data-structures-part1.md:283 -msgid "" -"Load the new cats data like before, and check what type of data we find in the\n" +msgid "Load the new cats data like before, and check what type of data we find in the\n" "`weight` column:" msgstr "" -"Load the new cats data like before, and check what type of data we find in the\n" -"`weight` column:" -# code block #: r-novice-gapminder/_episodes/04-data-structures-part1.md:287 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "cats <- read.csv(file=\"data/feline-data_v2.csv\")\n" "typeof(cats$weight)\n" "~~~" msgstr "" -"~~~\n" -"cats <- read.csv(file=\"data/feline-data_v2.csv\")\n" -"typeof(cats$weight)\n" -"~~~" #: r-novice-gapminder/_episodes/04-data-structures-part1.md:300 -msgid "" -"Oh no, our weights aren't the double type anymore! If we try to do the same math\n" +msgid "Oh no, our weights aren't the double type anymore! If we try to do the same math\n" "we did on them before, we run into trouble:" msgstr "" -"Oh no, our weights aren't the double type anymore! If we try to do the same math\n" -"we did on them before, we run into trouble:" -# code block #: r-novice-gapminder/_episodes/04-data-structures-part1.md:304 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "cats$weight + 2\n" "~~~" msgstr "" -"~~~\n" -"cats$weight + 2\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/04-data-structures-part1.md:311 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "Warning in Ops.factor(cats$weight, 2): '+' not meaningful for factors\n" "~~~" msgstr "" -"~~~\n" -"Warning in Ops.factor(cats$weight, 2): '+' not meaningful for factors\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/04-data-structures-part1.md:318 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "[1] NA NA NA NA\n" "~~~" msgstr "" -"~~~\n" -"[1] NA NA NA NA\n" -"~~~" #: r-novice-gapminder/_episodes/04-data-structures-part1.md:323 -msgid "" -"What happened? When R reads a csv file into one of these tables, it insists that\n" +msgid "What happened? When R reads a csv file into one of these tables, it insists that\n" "everything in a column be the same basic type; if it can't understand\n" "*everything* in the column as a double, then *nobody* in the column gets to be a\n" "double. The table that R loaded our cats data into is something called a\n" @@ -4997,241 +3592,158 @@ msgid "" "structure* - that is, a structure which R knows how to build out of the basic\n" "data types." msgstr "" -"What happened? When R reads a csv file into one of these tables, it insists that\n" -"everything in a column be the same basic type; if it can't understand\n" -"*everything* in the column as a double, then *nobody* in the column gets to be a\n" -"double. The table that R loaded our cats data into is something called a\n" -"*data.frame*, and it is our first example of something called a *data\n" -"structure* - that is, a structure which R knows how to build out of the basic\n" -"data types." #: r-novice-gapminder/_episodes/04-data-structures-part1.md:331 msgid "We can see that it is a *data.frame* by calling the `class` function on it:" -msgstr "We can see that it is a *data.frame* by calling the `class` function on it:" +msgstr "" -# code block #: r-novice-gapminder/_episodes/04-data-structures-part1.md:334 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "class(cats)\n" "~~~" msgstr "" -"~~~\n" -"class(cats)\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/04-data-structures-part1.md:341 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "[1] \"data.frame\"\n" "~~~" msgstr "" -"~~~\n" -"[1] \"data.frame\"\n" -"~~~" #: r-novice-gapminder/_episodes/04-data-structures-part1.md:346 -msgid "" -"In order to successfully use our data in R, we need to understand what the basic\n" +msgid "In order to successfully use our data in R, we need to understand what the basic\n" "data structures are, and how they behave. For now, let's remove that extra line\n" "from our cats data and reload it, while we investigate this behavior further:" msgstr "" -"In order to successfully use our data in R, we need to understand what the basic\n" -"data structures are, and how they behave. For now, let's remove that extra line\n" -"from our cats data and reload it, while we investigate this behavior further:" #: r-novice-gapminder/_episodes/04-data-structures-part1.md:350 msgid "feline-data.csv:" -msgstr "feline-data.csv:" +msgstr "" -# code block #: r-novice-gapminder/_episodes/04-data-structures-part1.md:352 -msgid "" -"```\n" +# code block +msgid "```\n" "coat,weight,likes_string\n" "calico,2.1,1\n" "black,5.0,0\n" "tabby,3.2,1\n" "```" msgstr "" -"```\n" -"coat,weight,likes_string\n" -"calico,2.1,1\n" -"black,5.0,0\n" -"tabby,3.2,1\n" -"```" #: r-novice-gapminder/_episodes/04-data-structures-part1.md:359 msgid "And back in RStudio:" -msgstr "And back in RStudio:" +msgstr "" -# code block #: r-novice-gapminder/_episodes/04-data-structures-part1.md:362 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "cats <- read.csv(file=\"data/feline-data.csv\")\n" "~~~" msgstr "" -"~~~\n" -"cats <- read.csv(file=\"data/feline-data.csv\")\n" -"~~~" -# header #: r-novice-gapminder/_episodes/04-data-structures-part1.md:370 +# header msgid "## Vectors and Type Coercion" -msgstr "## Vectors and Type Coercion" +msgstr "" #: r-novice-gapminder/_episodes/04-data-structures-part1.md:372 -msgid "" -"To better understand this behavior, let's meet another of the data structures:\n" +msgid "To better understand this behavior, let's meet another of the data structures:\n" "the *vector*." msgstr "" -"To better understand this behavior, let's meet another of the data structures:\n" -"the *vector*." -# code block #: r-novice-gapminder/_episodes/04-data-structures-part1.md:376 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "my_vector <- vector(length = 3)\n" "my_vector\n" "~~~" msgstr "" -"~~~\n" -"my_vector <- vector(length = 3)\n" -"my_vector\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/04-data-structures-part1.md:384 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "[1] FALSE FALSE FALSE\n" "~~~" msgstr "" -"~~~\n" -"[1] FALSE FALSE FALSE\n" -"~~~" #: r-novice-gapminder/_episodes/04-data-structures-part1.md:389 -msgid "" -"A vector in R is essentially an ordered list of things, with the special\n" +msgid "A vector in R is essentially an ordered list of things, with the special\n" "condition that *everything in the vector must be the same basic data type*. If\n" "you don't choose the datatype, it'll default to `logical`; or, you can declare\n" "an empty vector of whatever type you like." msgstr "" -"A vector in R is essentially an ordered list of things, with the special\n" -"condition that *everything in the vector must be the same basic data type*. If\n" -"you don't choose the datatype, it'll default to `logical`; or, you can declare\n" -"an empty vector of whatever type you like." -# code block #: r-novice-gapminder/_episodes/04-data-structures-part1.md:396 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "another_vector <- vector(mode='character', length=3)\n" "another_vector\n" "~~~" msgstr "" -"~~~\n" -"another_vector <- vector(mode='character', length=3)\n" -"another_vector\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/04-data-structures-part1.md:404 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "[1] \"\" \"\" \"\"\n" "~~~" msgstr "" -"~~~\n" -"[1] \"\" \"\" \"\"\n" -"~~~" #: r-novice-gapminder/_episodes/04-data-structures-part1.md:409 msgid "You can check if something is a vector:" -msgstr "You can check if something is a vector:" +msgstr "" -# code block #: r-novice-gapminder/_episodes/04-data-structures-part1.md:412 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "str(another_vector)\n" "~~~" msgstr "" -"~~~\n" -"str(another_vector)\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/04-data-structures-part1.md:419 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" " chr [1:3] \"\" \"\" \"\"\n" "~~~" msgstr "" -"~~~\n" -" chr [1:3] \"\" \"\" \"\"\n" -"~~~" #: r-novice-gapminder/_episodes/04-data-structures-part1.md:424 -msgid "" -"The somewhat cryptic output from this command indicates the basic data type\n" +msgid "The somewhat cryptic output from this command indicates the basic data type\n" "found in this vector - in this case `chr`, character; an indication of the\n" "number of things in the vector - actually, the indexes of the vector, in this\n" "case `[1:3]`; and a few examples of what's actually in the vector - in this case\n" "empty character strings. If we similarly do" msgstr "" -"The somewhat cryptic output from this command indicates the basic data type\n" -"found in this vector - in this case `chr`, character; an indication of the\n" -"number of things in the vector - actually, the indexes of the vector, in this\n" -"case `[1:3]`; and a few examples of what's actually in the vector - in this case\n" -"empty character strings. If we similarly do" -# code block #: r-novice-gapminder/_episodes/04-data-structures-part1.md:431 #: r-novice-gapminder/_episodes/04-data-structures-part1.md:820 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "str(cats$weight)\n" "~~~" msgstr "" -"~~~\n" -"str(cats$weight)\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/04-data-structures-part1.md:438 #: r-novice-gapminder/_episodes/04-data-structures-part1.md:827 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" " num [1:3] 2.1 5 3.2\n" "~~~" msgstr "" -"~~~\n" -" num [1:3] 2.1 5 3.2\n" -"~~~" #: r-novice-gapminder/_episodes/04-data-structures-part1.md:443 -msgid "" -"we see that `cats$weight` is a vector, too - *the columns of data we load into R\n" +msgid "we see that `cats$weight` is a vector, too - *the columns of data we load into R\n" "data.frames are all vectors*, and that's the root of why R forces everything in\n" "a column to be the same basic data type." msgstr "" -"we see that `cats$weight` is a vector, too - *the columns of data we load into R\n" -"data.frames are all vectors*, and that's the root of why R forces everything in\n" -"a column to be the same basic data type." -# blockquote, which can be cascaded #: r-novice-gapminder/_episodes/04-data-structures-part1.md:447 +# blockquote, which can be cascaded msgid "> ## Discussion 1" -msgstr "> ## Discussion 1" +msgstr "" #: r-novice-gapminder/_episodes/04-data-structures-part1.md:448 -msgid "" -">\n" +msgid ">\n" "> Why is R so opinionated about what we put in our columns of data?\n" "> How does this help us?\n" ">\n" @@ -5244,394 +3756,248 @@ msgid "" "> > *clean data*; in the long run, strict consistency goes a long way to making \n" "> > our lives easier in R." msgstr "" -">\n" -"> Why is R so opinionated about what we put in our columns of data?\n" -"> How does this help us?\n" -">\n" -"> > ## Discussion 1\n" -"> >\n" -"> > By keeping everything in a column the same, we allow ourselves to make simple\n" -"> > assumptions about our data; if you can interpret one entry in the column as a\n" -"> > number, then you can interpret *all* of them as numbers, so we don't have to\n" -"> > check every time. This consistency is what people mean when they talk about \n" -"> > *clean data*; in the long run, strict consistency goes a long way to making \n" -"> > our lives easier in R." -# SC/DC Template label #: r-novice-gapminder/_episodes/04-data-structures-part1.md:461 +# SC/DC Template label msgid "{: .discussion}" -msgstr "{: .discussion}" +msgstr "" #: r-novice-gapminder/_episodes/04-data-structures-part1.md:463 msgid "You can also make vectors with explicit contents with the combine function:" -msgstr "You can also make vectors with explicit contents with the combine function:" +msgstr "" -# code block #: r-novice-gapminder/_episodes/04-data-structures-part1.md:466 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "combine_vector <- c(2,6,3)\n" "combine_vector\n" "~~~" msgstr "" -"~~~\n" -"combine_vector <- c(2,6,3)\n" -"combine_vector\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/04-data-structures-part1.md:474 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "[1] 2 6 3\n" "~~~" msgstr "" -"~~~\n" -"[1] 2 6 3\n" -"~~~" #: r-novice-gapminder/_episodes/04-data-structures-part1.md:479 msgid "Given what we've learned so far, what do you think the following will produce?" -msgstr "Given what we've learned so far, what do you think the following will produce?" +msgstr "" -# code block #: r-novice-gapminder/_episodes/04-data-structures-part1.md:482 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "quiz_vector <- c(2,6,'3')\n" "~~~" msgstr "" -"~~~\n" -"quiz_vector <- c(2,6,'3')\n" -"~~~" #: r-novice-gapminder/_episodes/04-data-structures-part1.md:487 -msgid "" -"This is something called *type coercion*, and it is the source of many surprises\n" +msgid "This is something called *type coercion*, and it is the source of many surprises\n" "and the reason why we need to be aware of the basic data types and how R will\n" "interpret them. When R encounters a mix of types (here numeric and character) to\n" "be combined into a single vector, it will force them all to be the same\n" "type. Consider:" msgstr "" -"This is something called *type coercion*, and it is the source of many surprises\n" -"and the reason why we need to be aware of the basic data types and how R will\n" -"interpret them. When R encounters a mix of types (here numeric and character) to\n" -"be combined into a single vector, it will force them all to be the same\n" -"type. Consider:" -# code block #: r-novice-gapminder/_episodes/04-data-structures-part1.md:494 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "coercion_vector <- c('a', TRUE)\n" "coercion_vector\n" "~~~" msgstr "" -"~~~\n" -"coercion_vector <- c('a', TRUE)\n" -"coercion_vector\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/04-data-structures-part1.md:502 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "[1] \"a\" \"TRUE\"\n" "~~~" msgstr "" -"~~~\n" -"[1] \"a\" \"TRUE\"\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/04-data-structures-part1.md:509 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "another_coercion_vector <- c(0, TRUE)\n" "another_coercion_vector\n" "~~~" msgstr "" -"~~~\n" -"another_coercion_vector <- c(0, TRUE)\n" -"another_coercion_vector\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/04-data-structures-part1.md:517 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "[1] 0 1\n" "~~~" msgstr "" -"~~~\n" -"[1] 0 1\n" -"~~~" #: r-novice-gapminder/_episodes/04-data-structures-part1.md:522 -msgid "" -"The coercion rules go: `logical` -> `integer` -> `numeric` -> `complex` ->\n" +msgid "The coercion rules go: `logical` -> `integer` -> `numeric` -> `complex` ->\n" "`character`, where -> can be read as *are transformed into*. You can try to\n" "force coercion against this flow using the `as.` functions:" msgstr "" -"The coercion rules go: `logical` -> `integer` -> `numeric` -> `complex` ->\n" -"`character`, where -> can be read as *are transformed into*. You can try to\n" -"force coercion against this flow using the `as.` functions:" -# code block #: r-novice-gapminder/_episodes/04-data-structures-part1.md:527 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "character_vector_example <- c('0','2','4')\n" "character_vector_example\n" "~~~" msgstr "" -"~~~\n" -"character_vector_example <- c('0','2','4')\n" -"character_vector_example\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/04-data-structures-part1.md:535 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "[1] \"0\" \"2\" \"4\"\n" "~~~" msgstr "" -"~~~\n" -"[1] \"0\" \"2\" \"4\"\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/04-data-structures-part1.md:542 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "character_coerced_to_numeric <- as.numeric(character_vector_example)\n" "character_coerced_to_numeric\n" "~~~" msgstr "" -"~~~\n" -"character_coerced_to_numeric <- as.numeric(character_vector_example)\n" -"character_coerced_to_numeric\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/04-data-structures-part1.md:550 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "[1] 0 2 4\n" "~~~" msgstr "" -"~~~\n" -"[1] 0 2 4\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/04-data-structures-part1.md:557 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "numeric_coerced_to_logical <- as.logical(character_coerced_to_numeric)\n" "numeric_coerced_to_logical\n" "~~~" msgstr "" -"~~~\n" -"numeric_coerced_to_logical <- as.logical(character_coerced_to_numeric)\n" -"numeric_coerced_to_logical\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/04-data-structures-part1.md:565 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "[1] FALSE TRUE TRUE\n" "~~~" msgstr "" -"~~~\n" -"[1] FALSE TRUE TRUE\n" -"~~~" #: r-novice-gapminder/_episodes/04-data-structures-part1.md:570 -msgid "" -"As you can see, some surprising things can happen when R forces one basic data\n" +msgid "As you can see, some surprising things can happen when R forces one basic data\n" "type into another! Nitty-gritty of type coercion aside, the point is: if your\n" "data doesn't look like what you thought it was going to look like, type coercion\n" "may well be to blame; make sure everything is the same type in your vectors and\n" "your columns of data.frames, or you will get nasty surprises!" msgstr "" -"As you can see, some surprising things can happen when R forces one basic data\n" -"type into another! Nitty-gritty of type coercion aside, the point is: if your\n" -"data doesn't look like what you thought it was going to look like, type coercion\n" -"may well be to blame; make sure everything is the same type in your vectors and\n" -"your columns of data.frames, or you will get nasty surprises!" #: r-novice-gapminder/_episodes/04-data-structures-part1.md:576 -msgid "" -"But coercion can also be very useful! For example, in our `cats` data\n" +msgid "But coercion can also be very useful! For example, in our `cats` data\n" "`likes_string` is numeric, but we know that the 1s and 0s actually represent\n" "`TRUE` and `FALSE` (a common way of representing them). We should use the\n" "`logical` datatype here, which has two states: `TRUE` or `FALSE`, which is\n" "exactly what our data represents. We can 'coerce' this column to be `logical` by\n" "using the `as.logical` function:" msgstr "" -"But coercion can also be very useful! For example, in our `cats` data\n" -"`likes_string` is numeric, but we know that the 1s and 0s actually represent\n" -"`TRUE` and `FALSE` (a common way of representing them). We should use the\n" -"`logical` datatype here, which has two states: `TRUE` or `FALSE`, which is\n" -"exactly what our data represents. We can 'coerce' this column to be `logical` by\n" -"using the `as.logical` function:" -# code block #: r-novice-gapminder/_episodes/04-data-structures-part1.md:584 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "cats$likes_string\n" "~~~" msgstr "" -"~~~\n" -"cats$likes_string\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/04-data-structures-part1.md:591 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "[1] 1 0 1\n" "~~~" msgstr "" -"~~~\n" -"[1] 1 0 1\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/04-data-structures-part1.md:598 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "cats$likes_string <- as.logical(cats$likes_string)\n" "cats$likes_string\n" "~~~" msgstr "" -"~~~\n" -"cats$likes_string <- as.logical(cats$likes_string)\n" -"cats$likes_string\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/04-data-structures-part1.md:606 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "[1] TRUE FALSE TRUE\n" "~~~" msgstr "" -"~~~\n" -"[1] TRUE FALSE TRUE\n" -"~~~" #: r-novice-gapminder/_episodes/04-data-structures-part1.md:611 msgid "The combine function, `c()`, will also append things to an existing vector:" -msgstr "The combine function, `c()`, will also append things to an existing vector:" +msgstr "" -# code block #: r-novice-gapminder/_episodes/04-data-structures-part1.md:614 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "ab_vector <- c('a', 'b')\n" "ab_vector\n" "~~~" msgstr "" -"~~~\n" -"ab_vector <- c('a', 'b')\n" -"ab_vector\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/04-data-structures-part1.md:622 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "[1] \"a\" \"b\"\n" "~~~" msgstr "" -"~~~\n" -"[1] \"a\" \"b\"\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/04-data-structures-part1.md:629 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "combine_example <- c(ab_vector, 'SWC')\n" "combine_example\n" "~~~" msgstr "" -"~~~\n" -"combine_example <- c(ab_vector, 'SWC')\n" -"combine_example\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/04-data-structures-part1.md:637 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "[1] \"a\" \"b\" \"SWC\"\n" "~~~" msgstr "" -"~~~\n" -"[1] \"a\" \"b\" \"SWC\"\n" -"~~~" #: r-novice-gapminder/_episodes/04-data-structures-part1.md:642 msgid "You can also make series of numbers:" -msgstr "You can also make series of numbers:" +msgstr "" -# code block #: r-novice-gapminder/_episodes/04-data-structures-part1.md:645 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "mySeries <- 1:10\n" "mySeries\n" "~~~" msgstr "" -"~~~\n" -"mySeries <- 1:10\n" -"mySeries\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/04-data-structures-part1.md:653 #: r-novice-gapminder/_episodes/04-data-structures-part1.md:667 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" " [1] 1 2 3 4 5 6 7 8 9 10\n" "~~~" msgstr "" -"~~~\n" -" [1] 1 2 3 4 5 6 7 8 9 10\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/04-data-structures-part1.md:660 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "seq(10)\n" "~~~" msgstr "" -"~~~\n" -"seq(10)\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/04-data-structures-part1.md:674 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "seq(1,10, by=0.1)\n" "~~~" msgstr "" -"~~~\n" -"seq(1,10, by=0.1)\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/04-data-structures-part1.md:681 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" " [1] 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0 2.1 2.2 2.3\n" "[15] 2.4 2.5 2.6 2.7 2.8 2.9 3.0 3.1 3.2 3.3 3.4 3.5 3.6 3.7\n" "[29] 3.8 3.9 4.0 4.1 4.2 4.3 4.4 4.5 4.6 4.7 4.8 4.9 5.0 5.1\n" @@ -5641,167 +4007,105 @@ msgid "" "[85] 9.4 9.5 9.6 9.7 9.8 9.9 10.0\n" "~~~" msgstr "" -"~~~\n" -" [1] 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0 2.1 2.2 2.3\n" -"[15] 2.4 2.5 2.6 2.7 2.8 2.9 3.0 3.1 3.2 3.3 3.4 3.5 3.6 3.7\n" -"[29] 3.8 3.9 4.0 4.1 4.2 4.3 4.4 4.5 4.6 4.7 4.8 4.9 5.0 5.1\n" -"[43] 5.2 5.3 5.4 5.5 5.6 5.7 5.8 5.9 6.0 6.1 6.2 6.3 6.4 6.5\n" -"[57] 6.6 6.7 6.8 6.9 7.0 7.1 7.2 7.3 7.4 7.5 7.6 7.7 7.8 7.9\n" -"[71] 8.0 8.1 8.2 8.3 8.4 8.5 8.6 8.7 8.8 8.9 9.0 9.1 9.2 9.3\n" -"[85] 9.4 9.5 9.6 9.7 9.8 9.9 10.0\n" -"~~~" #: r-novice-gapminder/_episodes/04-data-structures-part1.md:692 msgid "We can ask a few questions about vectors:" -msgstr "We can ask a few questions about vectors:" +msgstr "" -# code block #: r-novice-gapminder/_episodes/04-data-structures-part1.md:695 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "sequence_example <- seq(10)\n" "head(sequence_example, n=2)\n" "~~~" msgstr "" -"~~~\n" -"sequence_example <- seq(10)\n" -"head(sequence_example, n=2)\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/04-data-structures-part1.md:703 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "[1] 1 2\n" "~~~" msgstr "" -"~~~\n" -"[1] 1 2\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/04-data-structures-part1.md:710 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "tail(sequence_example, n=4)\n" "~~~" msgstr "" -"~~~\n" -"tail(sequence_example, n=4)\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/04-data-structures-part1.md:717 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "[1] 7 8 9 10\n" "~~~" msgstr "" -"~~~\n" -"[1] 7 8 9 10\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/04-data-structures-part1.md:724 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "length(sequence_example)\n" "~~~" msgstr "" -"~~~\n" -"length(sequence_example)\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/04-data-structures-part1.md:731 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "[1] 10\n" "~~~" msgstr "" -"~~~\n" -"[1] 10\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/04-data-structures-part1.md:738 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "class(sequence_example)\n" "~~~" msgstr "" -"~~~\n" -"class(sequence_example)\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/04-data-structures-part1.md:752 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "typeof(sequence_example)\n" "~~~" msgstr "" -"~~~\n" -"typeof(sequence_example)\n" -"~~~" #: r-novice-gapminder/_episodes/04-data-structures-part1.md:764 msgid "Finally, you can give names to elements in your vector:" -msgstr "Finally, you can give names to elements in your vector:" +msgstr "" -# code block #: r-novice-gapminder/_episodes/04-data-structures-part1.md:767 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "my_example <- 5:8\n" "names(my_example) <- c(\"a\", \"b\", \"c\", \"d\")\n" "my_example\n" "~~~" msgstr "" -"~~~\n" -"my_example <- 5:8\n" -"names(my_example) <- c(\"a\", \"b\", \"c\", \"d\")\n" -"my_example\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/04-data-structures-part1.md:776 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "a b c d \n" "5 6 7 8 \n" "~~~" msgstr "" -"~~~\n" -"a b c d \n" -"5 6 7 8 \n" -"~~~" -# code block #: r-novice-gapminder/_episodes/04-data-structures-part1.md:784 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "names(my_example)\n" "~~~" msgstr "" -"~~~\n" -"names(my_example)\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/04-data-structures-part1.md:791 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "[1] \"a\" \"b\" \"c\" \"d\"\n" "~~~" msgstr "" -"~~~\n" -"[1] \"a\" \"b\" \"c\" \"d\"\n" -"~~~" #: r-novice-gapminder/_episodes/04-data-structures-part1.md:797 -msgid "" -">\n" +msgid ">\n" "> Start by making a vector with the numbers 1 through 26.\n" "> Multiply the vector by 2, and give the resulting vector\n" "> names A through Z (hint: there is a built in vector called `LETTERS`)\n" @@ -5816,234 +4120,149 @@ msgid "" "> > ~~~\n" "> > {: .language-r}" msgstr "" -">\n" -"> Start by making a vector with the numbers 1 through 26.\n" -"> Multiply the vector by 2, and give the resulting vector\n" -"> names A through Z (hint: there is a built in vector called `LETTERS`)\n" -">\n" -"> > ## Solution to Challenge 1\n" -"> >\n" -"> > \n" -"> > ~~~\n" -"> > x <- 1:26\n" -"> > x <- x * 2\n" -"> > names(x) <- LETTERS\n" -"> > ~~~\n" -"> > {: .language-r}" -# header #: r-novice-gapminder/_episodes/04-data-structures-part1.md:815 +# header msgid "## Data Frames" -msgstr "## Data Frames" +msgstr "" #: r-novice-gapminder/_episodes/04-data-structures-part1.md:817 msgid "We said that columns in data.frames were vectors:" -msgstr "We said that columns in data.frames were vectors:" +msgstr "" -# code block #: r-novice-gapminder/_episodes/04-data-structures-part1.md:834 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "str(cats$likes_string)\n" "~~~" msgstr "" -"~~~\n" -"str(cats$likes_string)\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/04-data-structures-part1.md:841 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" " logi [1:3] TRUE FALSE TRUE\n" "~~~" msgstr "" -"~~~\n" -" logi [1:3] TRUE FALSE TRUE\n" -"~~~" #: r-novice-gapminder/_episodes/04-data-structures-part1.md:846 msgid "These make sense. But what about" -msgstr "These make sense. But what about" +msgstr "" -# code block #: r-novice-gapminder/_episodes/04-data-structures-part1.md:849 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "str(cats$coat)\n" "~~~" msgstr "" -"~~~\n" -"str(cats$coat)\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/04-data-structures-part1.md:856 #: r-novice-gapminder/_episodes/04-data-structures-part1.md:1146 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" " Factor w/ 3 levels \"black\",\"calico\",..: 2 1 3\n" "~~~" msgstr "" -"~~~\n" -" Factor w/ 3 levels \"black\",\"calico\",..: 2 1 3\n" -"~~~" -# header #: r-novice-gapminder/_episodes/04-data-structures-part1.md:861 #: r-novice-gapminder/_episodes/05-data-structures-part2.md:166 +# header msgid "## Factors" -msgstr "## Factors" +msgstr "" #: r-novice-gapminder/_episodes/04-data-structures-part1.md:863 -msgid "" -"Another important data structure is called a *factor*. Factors usually look like\n" +msgid "Another important data structure is called a *factor*. Factors usually look like\n" "character data, but are typically used to represent categorical information. For\n" "example, let's make a vector of strings labelling cat colorations for all the\n" "cats in our study:" msgstr "" -"Another important data structure is called a *factor*. Factors usually look like\n" -"character data, but are typically used to represent categorical information. For\n" -"example, let's make a vector of strings labelling cat colorations for all the\n" -"cats in our study:" -# code block #: r-novice-gapminder/_episodes/04-data-structures-part1.md:869 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "coats <- c('tabby', 'tortoiseshell', 'tortoiseshell', 'black', 'tabby')\n" "coats\n" "~~~" msgstr "" -"~~~\n" -"coats <- c('tabby', 'tortoiseshell', 'tortoiseshell', 'black', 'tabby')\n" -"coats\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/04-data-structures-part1.md:877 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "[1] \"tabby\" \"tortoiseshell\" \"tortoiseshell\" \"black\" \n" "[5] \"tabby\" \n" "~~~" msgstr "" -"~~~\n" -"[1] \"tabby\" \"tortoiseshell\" \"tortoiseshell\" \"black\" \n" -"[5] \"tabby\" \n" -"~~~" -# code block #: r-novice-gapminder/_episodes/04-data-structures-part1.md:885 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "str(coats)\n" "~~~" msgstr "" -"~~~\n" -"str(coats)\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/04-data-structures-part1.md:892 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" " chr [1:5] \"tabby\" \"tortoiseshell\" \"tortoiseshell\" \"black\" \"tabby\"\n" "~~~" msgstr "" -"~~~\n" -" chr [1:5] \"tabby\" \"tortoiseshell\" \"tortoiseshell\" \"black\" \"tabby\"\n" -"~~~" #: r-novice-gapminder/_episodes/04-data-structures-part1.md:897 msgid "We can turn a vector into a factor like so:" -msgstr "We can turn a vector into a factor like so:" +msgstr "" -# code block #: r-novice-gapminder/_episodes/04-data-structures-part1.md:900 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "CATegories <- factor(coats)\n" "class(CATegories)\n" "~~~" msgstr "" -"~~~\n" -"CATegories <- factor(coats)\n" -"class(CATegories)\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/04-data-structures-part1.md:908 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "[1] \"factor\"\n" "~~~" msgstr "" -"~~~\n" -"[1] \"factor\"\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/04-data-structures-part1.md:915 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "str(CATegories)\n" "~~~" msgstr "" -"~~~\n" -"str(CATegories)\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/04-data-structures-part1.md:922 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" " Factor w/ 3 levels \"black\",\"tabby\",..: 2 3 3 1 2\n" "~~~" msgstr "" -"~~~\n" -" Factor w/ 3 levels \"black\",\"tabby\",..: 2 3 3 1 2\n" -"~~~" #: r-novice-gapminder/_episodes/04-data-structures-part1.md:927 -msgid "" -"Now R has noticed that there are three possible categories in our data - but it\n" +msgid "Now R has noticed that there are three possible categories in our data - but it\n" "also did something surprising; instead of printing out the strings we gave it,\n" "we got a bunch of numbers instead. R has replaced our human-readable categories\n" "with numbered indices under the hood, this is necessary as many statistical\n" "calculations utilise such numerical representations for categorical data:" msgstr "" -"Now R has noticed that there are three possible categories in our data - but it\n" -"also did something surprising; instead of printing out the strings we gave it,\n" -"we got a bunch of numbers instead. R has replaced our human-readable categories\n" -"with numbered indices under the hood, this is necessary as many statistical\n" -"calculations utilise such numerical representations for categorical data:" -# code block #: r-novice-gapminder/_episodes/04-data-structures-part1.md:934 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "typeof(coats)\n" "~~~" msgstr "" -"~~~\n" -"typeof(coats)\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/04-data-structures-part1.md:948 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "typeof(CATegories)\n" "~~~" msgstr "" -"~~~\n" -"typeof(CATegories)\n" -"~~~" #: r-novice-gapminder/_episodes/04-data-structures-part1.md:961 -msgid "" -">\n" +msgid ">\n" "> Is there a factor in our `cats` data.frame? what is its name?\n" "> Try using `?read.csv` to figure out how to keep text columns as character\n" "> vectors instead of factors; then write a command or two to show that the factor\n" @@ -6074,115 +4293,57 @@ msgid "" "> > that this is typical, and encourage them to take their best guess based on semantic meaning,\n" "> > even if they aren't sure." msgstr "" -">\n" -"> Is there a factor in our `cats` data.frame? what is its name?\n" -"> Try using `?read.csv` to figure out how to keep text columns as character\n" -"> vectors instead of factors; then write a command or two to show that the factor\n" -"> in `cats` is actually a character vector when loaded in this way.\n" -">\n" -"> > ## Solution to Challenge 2\n" -"> >\n" -"> > One solution is use the argument `stringAsFactors`:\n" -"> >\n" -"> > \n" -"> > ~~~\n" -"> > cats <- read.csv(file=\"data/feline-data.csv\", stringsAsFactors=FALSE)\n" -"> > str(cats$coat)\n" -"> > ~~~\n" -"> > {: .language-r}\n" -"> >\n" -"> > Another solution is use the argument `colClasses`\n" -"> > that allow finer control.\n" -"> >\n" -"> > \n" -"> > ~~~\n" -"> > cats <- read.csv(file=\"data/feline-data.csv\", colClasses=c(NA, NA, \"character\"))\n" -"> > str(cats$coat)\n" -"> > ~~~\n" -"> > {: .language-r}\n" -"> >\n" -"> > Note: new students find the help files difficult to understand; make sure to let them know\n" -"> > that this is typical, and encourage them to take their best guess based on semantic meaning,\n" -"> > even if they aren't sure." #: r-novice-gapminder/_episodes/04-data-structures-part1.md:994 -msgid "" -"In modelling functions, it's important to know what the baseline levels are. This\n" +msgid "In modelling functions, it's important to know what the baseline levels are. This\n" "is assumed to be the first factor, but by default factors are labelled in\n" "alphabetical order. You can change this by specifying the levels:" msgstr "" -"In modelling functions, it's important to know what the baseline levels are. This\n" -"is assumed to be the first factor, but by default factors are labelled in\n" -"alphabetical order. You can change this by specifying the levels:" -# code block #: r-novice-gapminder/_episodes/04-data-structures-part1.md:999 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "mydata <- c(\"case\", \"control\", \"control\", \"case\")\n" "factor_ordering_example <- factor(mydata, levels = c(\"control\", \"case\"))\n" "str(factor_ordering_example)\n" "~~~" msgstr "" -"~~~\n" -"mydata <- c(\"case\", \"control\", \"control\", \"case\")\n" -"factor_ordering_example <- factor(mydata, levels = c(\"control\", \"case\"))\n" -"str(factor_ordering_example)\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/04-data-structures-part1.md:1008 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" " Factor w/ 2 levels \"control\",\"case\": 2 1 1 2\n" "~~~" msgstr "" -"~~~\n" -" Factor w/ 2 levels \"control\",\"case\": 2 1 1 2\n" -"~~~" #: r-novice-gapminder/_episodes/04-data-structures-part1.md:1013 -msgid "" -"In this case, we've explicitly told R that \"control\" should represented by 1, and\n" +msgid "In this case, we've explicitly told R that \"control\" should represented by 1, and\n" "\"case\" by 2. This designation can be very important for interpreting the\n" "results of statistical models!" msgstr "" -"In this case, we've explicitly told R that \"control\" should represented by 1, and\n" -"\"case\" by 2. This designation can be very important for interpreting the\n" -"results of statistical models!" -# header #: r-novice-gapminder/_episodes/04-data-structures-part1.md:1017 +# header msgid "## Lists" -msgstr "## Lists" +msgstr "" #: r-novice-gapminder/_episodes/04-data-structures-part1.md:1019 -msgid "" -"Another data structure you'll want in your bag of tricks is the `list`. A list\n" +msgid "Another data structure you'll want in your bag of tricks is the `list`. A list\n" "is simpler in some ways than the other types, because you can put anything you\n" "want in it:" msgstr "" -"Another data structure you'll want in your bag of tricks is the `list`. A list\n" -"is simpler in some ways than the other types, because you can put anything you\n" -"want in it:" -# code block #: r-novice-gapminder/_episodes/04-data-structures-part1.md:1024 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "list_example <- list(1, \"a\", TRUE, 1+4i)\n" "list_example\n" "~~~" msgstr "" -"~~~\n" -"list_example <- list(1, \"a\", TRUE, 1+4i)\n" -"list_example\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/04-data-structures-part1.md:1032 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "[[1]]\n" "[1] 1\n" "\n" @@ -6196,37 +4357,18 @@ msgid "" "[1] 1+4i\n" "~~~" msgstr "" -"~~~\n" -"[[1]]\n" -"[1] 1\n" -"\n" -"[[2]]\n" -"[1] \"a\"\n" -"\n" -"[[3]]\n" -"[1] TRUE\n" -"\n" -"[[4]]\n" -"[1] 1+4i\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/04-data-structures-part1.md:1049 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "another_list <- list(title = \"Numbers\", numbers = 1:10, data = TRUE )\n" "another_list\n" "~~~" msgstr "" -"~~~\n" -"another_list <- list(title = \"Numbers\", numbers = 1:10, data = TRUE )\n" -"another_list\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/04-data-structures-part1.md:1057 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "$title\n" "[1] \"Numbers\"\n" "\n" @@ -6237,176 +4379,108 @@ msgid "" "[1] TRUE\n" "~~~" msgstr "" -"~~~\n" -"$title\n" -"[1] \"Numbers\"\n" -"\n" -"$numbers\n" -" [1] 1 2 3 4 5 6 7 8 9 10\n" -"\n" -"$data\n" -"[1] TRUE\n" -"~~~" #: r-novice-gapminder/_episodes/04-data-structures-part1.md:1069 msgid "We can now understand something a bit surprising in our data.frame; what happens if we run:" -msgstr "We can now understand something a bit surprising in our data.frame; what happens if we run:" +msgstr "" -# code block #: r-novice-gapminder/_episodes/04-data-structures-part1.md:1072 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "typeof(cats)\n" "~~~" msgstr "" -"~~~\n" -"typeof(cats)\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/04-data-structures-part1.md:1079 #: r-novice-gapminder/_episodes/04-data-structures-part1.md:1177 #: r-novice-gapminder/_episodes/05-data-structures-part2.md:584 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "[1] \"list\"\n" "~~~" msgstr "" -"~~~\n" -"[1] \"list\"\n" -"~~~" #: r-novice-gapminder/_episodes/04-data-structures-part1.md:1084 -msgid "" -"We see that data.frames look like lists 'under the hood' - this is because a\n" +msgid "We see that data.frames look like lists 'under the hood' - this is because a\n" "data.frame is really a list of vectors and factors, as they have to be - in\n" "order to hold those columns that are a mix of vectors and factors, the\n" "data.frame needs something a bit more flexible than a vector to put all the\n" "columns together into a familiar table. In other words, a `data.frame` is a\n" "special list in which all the vectors must have the same length." msgstr "" -"We see that data.frames look like lists 'under the hood' - this is because a\n" -"data.frame is really a list of vectors and factors, as they have to be - in\n" -"order to hold those columns that are a mix of vectors and factors, the\n" -"data.frame needs something a bit more flexible than a vector to put all the\n" -"columns together into a familiar table. In other words, a `data.frame` is a\n" -"special list in which all the vectors must have the same length." #: r-novice-gapminder/_episodes/04-data-structures-part1.md:1091 -msgid "" -"In our `cats` example, we have an integer, a double and a logical variable. As\n" +msgid "In our `cats` example, we have an integer, a double and a logical variable. As\n" "we have seen already, each column of data.frame is a vector." msgstr "" -"In our `cats` example, we have an integer, a double and a logical variable. As\n" -"we have seen already, each column of data.frame is a vector." -# code block #: r-novice-gapminder/_episodes/04-data-structures-part1.md:1110 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "cats[,1]\n" "~~~" msgstr "" -"~~~\n" -"cats[,1]\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/04-data-structures-part1.md:1125 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "typeof(cats[,1])\n" "~~~" msgstr "" -"~~~\n" -"typeof(cats[,1])\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/04-data-structures-part1.md:1139 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "str(cats[,1])\n" "~~~" msgstr "" -"~~~\n" -"str(cats[,1])\n" -"~~~" #: r-novice-gapminder/_episodes/04-data-structures-part1.md:1151 -msgid "" -"Each row is an *observation* of different variables, itself a data.frame, and\n" +msgid "Each row is an *observation* of different variables, itself a data.frame, and\n" "thus can be composed of elements of different types." msgstr "" -"Each row is an *observation* of different variables, itself a data.frame, and\n" -"thus can be composed of elements of different types." -# code block #: r-novice-gapminder/_episodes/04-data-structures-part1.md:1155 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "cats[1,]\n" "~~~" msgstr "" -"~~~\n" -"cats[1,]\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/04-data-structures-part1.md:1162 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" " coat weight likes_string\n" "1 calico 2.1 TRUE\n" "~~~" msgstr "" -"~~~\n" -" coat weight likes_string\n" -"1 calico 2.1 TRUE\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/04-data-structures-part1.md:1170 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "typeof(cats[1,])\n" "~~~" msgstr "" -"~~~\n" -"typeof(cats[1,])\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/04-data-structures-part1.md:1184 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "str(cats[1,])\n" "~~~" msgstr "" -"~~~\n" -"str(cats[1,])\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/04-data-structures-part1.md:1191 -msgid "" -"~~~\n" -"'data.frame':\t1 obs. of 3 variables:\n" +# code block +msgid "~~~\n" +"'data.frame': 1 obs. of 3 variables:\n" " $ coat : Factor w/ 3 levels \"black\",\"calico\",..: 2\n" " $ weight : num 2.1\n" " $ likes_string: logi TRUE\n" "~~~" msgstr "" -"~~~\n" -"'data.frame':\t1 obs. of 3 variables:\n" -" $ coat : Factor w/ 3 levels \"black\",\"calico\",..: 2\n" -" $ weight : num 2.1\n" -" $ likes_string: logi TRUE\n" -"~~~" #: r-novice-gapminder/_episodes/04-data-structures-part1.md:1200 -msgid "" -">\n" +msgid ">\n" "> There are several subtly different ways to call variables, observations and\n" "> elements from data.frames:\n" ">\n" @@ -6538,308 +4612,120 @@ msgid "" "> coordinate is not specified. The return value is a _list_ containing all the\n" "> values in the first row." msgstr "" -">\n" -"> There are several subtly different ways to call variables, observations and\n" -"> elements from data.frames:\n" -">\n" -"> - `cats[1]`\n" -"> - `cats[[1]]`\n" -"> - `cats$coat`\n" -"> - `cats[\"coat\"]`\n" -"> - `cats[1, 1]`\n" -"> - `cats[, 1]`\n" -"> - `cats[1, ]`\n" -">\n" -"> Try out these examples and explain what is returned by each one.\n" -">\n" -"> *Hint:* Use the function `typeof()` to examine what is returned in each case.\n" -">\n" -"> > ## Solution to Challenge 3\n" -"> > \n" -"> > ~~~\n" -"> > cats[1]\n" -"> > ~~~\n" -"> > {: .language-r}\n" -"> > \n" -"> > \n" -"> > \n" -"> > ~~~\n" -"> > coat\n" -"> > 1 calico\n" -"> > 2 black\n" -"> > 3 tabby\n" -"> > ~~~\n" -"> > {: .output}\n" -"> > We can think of a data frame as a list of vectors. The single brace `[1]`\n" -"> returns the first slice of the list, as another list. In this case it is the\n" -"> first column of the data frame.\n" -"> > \n" -"> > ~~~\n" -"> > cats[[1]]\n" -"> > ~~~\n" -"> > {: .language-r}\n" -"> > \n" -"> > \n" -"> > \n" -"> > ~~~\n" -"> > [1] calico black tabby \n" -"> > Levels: black calico tabby\n" -"> > ~~~\n" -"> > {: .output}\n" -"> > The double brace `[[1]]` returns the contents of the list item. In this case\n" -"> it is the contents of the first column, a _vector_ of type _factor_.\n" -"> > \n" -"> > ~~~\n" -"> > cats$coat\n" -"> > ~~~\n" -"> > {: .language-r}\n" -"> > \n" -"> > \n" -"> > \n" -"> > ~~~\n" -"> > [1] calico black tabby \n" -"> > Levels: black calico tabby\n" -"> > ~~~\n" -"> > {: .output}\n" -"> > This example uses the `$` character to address items by name. _coat_ is the\n" -"> first column of the data frame, again a _vector_ of type _factor_.\n" -"> > \n" -"> > ~~~\n" -"> > cats[\"coat\"]\n" -"> > ~~~\n" -"> > {: .language-r}\n" -"> > \n" -"> > \n" -"> > \n" -"> > ~~~\n" -"> > coat\n" -"> > 1 calico\n" -"> > 2 black\n" -"> > 3 tabby\n" -"> > ~~~\n" -"> > {: .output}\n" -"> > Here we are using a single brace `[\"coat\"]` replacing the index number with\n" -"> the column name. Like example 1, the returned object is a _list_.\n" -"> > \n" -"> > ~~~\n" -"> > cats[1, 1]\n" -"> > ~~~\n" -"> > {: .language-r}\n" -"> > \n" -"> > \n" -"> > \n" -"> > ~~~\n" -"> > [1] calico\n" -"> > Levels: black calico tabby\n" -"> > ~~~\n" -"> > {: .output}\n" -"> > This example uses a single brace, but this time we provide row and column\n" -"> coordinates. The returned object is the value in row 1, column 1. The object\n" -"> is an _integer_ but because it is part of a _vector_ of type _factor_, R\n" -"> displays the label \"calico\" associated with the integer value.\n" -"> > \n" -"> > ~~~\n" -"> > cats[, 1]\n" -"> > ~~~\n" -"> > {: .language-r}\n" -"> > \n" -"> > \n" -"> > \n" -"> > ~~~\n" -"> > [1] calico black tabby \n" -"> > Levels: black calico tabby\n" -"> > ~~~\n" -"> > {: .output}\n" -"> > Like the previous example we use single braces and provide row and column\n" -"> coordinates. The row coordinate is not specified, R interprets this missing\n" -"> value as all the elements in this _column_ _vector_.\n" -"> > \n" -"> > ~~~\n" -"> > cats[1, ]\n" -"> > ~~~\n" -"> > {: .language-r}\n" -"> > \n" -"> > \n" -"> > \n" -"> > ~~~\n" -"> > coat weight likes_string\n" -"> > 1 calico 2.1 TRUE\n" -"> > ~~~\n" -"> > {: .output}\n" -"> > Again we use the single brace with row and column coordinates. The column\n" -"> coordinate is not specified. The return value is a _list_ containing all the\n" -"> values in the first row." -# header #: r-novice-gapminder/_episodes/04-data-structures-part1.md:1334 +# header msgid "## Matrices" -msgstr "## Matrices" +msgstr "" #: r-novice-gapminder/_episodes/04-data-structures-part1.md:1336 msgid "Last but not least is the matrix. We can declare a matrix full of zeros:" -msgstr "Last but not least is the matrix. We can declare a matrix full of zeros:" +msgstr "" -# code block #: r-novice-gapminder/_episodes/04-data-structures-part1.md:1339 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "matrix_example <- matrix(0, ncol=6, nrow=3)\n" "matrix_example\n" "~~~" msgstr "" -"~~~\n" -"matrix_example <- matrix(0, ncol=6, nrow=3)\n" -"matrix_example\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/04-data-structures-part1.md:1347 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" " [,1] [,2] [,3] [,4] [,5] [,6]\n" "[1,] 0 0 0 0 0 0\n" "[2,] 0 0 0 0 0 0\n" "[3,] 0 0 0 0 0 0\n" "~~~" msgstr "" -"~~~\n" -" [,1] [,2] [,3] [,4] [,5] [,6]\n" -"[1,] 0 0 0 0 0 0\n" -"[2,] 0 0 0 0 0 0\n" -"[3,] 0 0 0 0 0 0\n" -"~~~" #: r-novice-gapminder/_episodes/04-data-structures-part1.md:1355 msgid "And similar to other data structures, we can ask things about our matrix:" -msgstr "And similar to other data structures, we can ask things about our matrix:" +msgstr "" -# code block #: r-novice-gapminder/_episodes/04-data-structures-part1.md:1358 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "class(matrix_example)\n" "~~~" msgstr "" -"~~~\n" -"class(matrix_example)\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/04-data-structures-part1.md:1365 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "[1] \"matrix\"\n" "~~~" msgstr "" -"~~~\n" -"[1] \"matrix\"\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/04-data-structures-part1.md:1372 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "typeof(matrix_example)\n" "~~~" msgstr "" -"~~~\n" -"typeof(matrix_example)\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/04-data-structures-part1.md:1386 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "str(matrix_example)\n" "~~~" msgstr "" -"~~~\n" -"str(matrix_example)\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/04-data-structures-part1.md:1393 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" " num [1:3, 1:6] 0 0 0 0 0 0 0 0 0 0 ...\n" "~~~" msgstr "" -"~~~\n" -" num [1:3, 1:6] 0 0 0 0 0 0 0 0 0 0 ...\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/04-data-structures-part1.md:1400 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "dim(matrix_example)\n" "~~~" msgstr "" -"~~~\n" -"dim(matrix_example)\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/04-data-structures-part1.md:1407 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "[1] 3 6\n" "~~~" msgstr "" -"~~~\n" -"[1] 3 6\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/04-data-structures-part1.md:1414 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "nrow(matrix_example)\n" "~~~" msgstr "" -"~~~\n" -"nrow(matrix_example)\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/04-data-structures-part1.md:1421 #: r-novice-gapminder/_episodes/05-data-structures-part2.md:120 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "[1] 3\n" "~~~" msgstr "" -"~~~\n" -"[1] 3\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/04-data-structures-part1.md:1428 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "ncol(matrix_example)\n" "~~~" msgstr "" -"~~~\n" -"ncol(matrix_example)\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/04-data-structures-part1.md:1435 #: r-novice-gapminder/_episodes/05-data-structures-part2.md:567 #: r-novice-gapminder/_episodes/05-data-structures-part2.md:614 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "[1] 6\n" "~~~" msgstr "" -"~~~\n" -"[1] 6\n" -"~~~" #: r-novice-gapminder/_episodes/04-data-structures-part1.md:1441 -msgid "" -">\n" +msgid ">\n" "> What do you think will be the result of\n" "> `length(matrix_example)`?\n" "> Try it.\n" @@ -6867,45 +4753,17 @@ msgid "" "> > Because a matrix is a vector with added dimension attributes, `length`\n" "> > gives you the total number of elements in the matrix." msgstr "" + +#: r-novice-gapminder/_episodes/04-data-structures-part1.md:1473 +msgid ">\n" +"> Make another matrix, this time containing the numbers 1:50,\n" +"> with 5 columns and 10 rows.\n" +"> Did the `matrix` function fill your matrix by column, or by\n" +"> row, as its default behaviour?\n" +"> See if you can figure out how to change this.\n" +"> (hint: read the documentation for `matrix`!)\n" ">\n" -"> What do you think will be the result of\n" -"> `length(matrix_example)`?\n" -"> Try it.\n" -"> Were you right? Why / why not?\n" -">\n" -"> > ## Solution to Challenge 4\n" -"> >\n" -"> > What do you think will be the result of\n" -"> > `length(matrix_example)`?\n" -"> >\n" -"> > \n" -"> > ~~~\n" -"> > matrix_example <- matrix(0, ncol=6, nrow=3)\n" -"> > length(matrix_example)\n" -"> > ~~~\n" -"> > {: .language-r}\n" -"> > \n" -"> > \n" -"> > \n" -"> > ~~~\n" -"> > [1] 18\n" -"> > ~~~\n" -"> > {: .output}\n" -"> >\n" -"> > Because a matrix is a vector with added dimension attributes, `length`\n" -"> > gives you the total number of elements in the matrix." - -#: r-novice-gapminder/_episodes/04-data-structures-part1.md:1473 -msgid "" -">\n" -"> Make another matrix, this time containing the numbers 1:50,\n" -"> with 5 columns and 10 rows.\n" -"> Did the `matrix` function fill your matrix by column, or by\n" -"> row, as its default behaviour?\n" -"> See if you can figure out how to change this.\n" -"> (hint: read the documentation for `matrix`!)\n" -">\n" -"> > ## Solution to Challenge 5\n" +"> > ## Solution to Challenge 5\n" "> >\n" "> > Make another matrix, this time containing the numbers 1:50,\n" "> > with 5 columns and 10 rows.\n" @@ -6921,44 +4779,20 @@ msgid "" "> > ~~~\n" "> > {: .language-r}" msgstr "" -">\n" -"> Make another matrix, this time containing the numbers 1:50,\n" -"> with 5 columns and 10 rows.\n" -"> Did the `matrix` function fill your matrix by column, or by\n" -"> row, as its default behaviour?\n" -"> See if you can figure out how to change this.\n" -"> (hint: read the documentation for `matrix`!)\n" -">\n" -"> > ## Solution to Challenge 5\n" -"> >\n" -"> > Make another matrix, this time containing the numbers 1:50,\n" -"> > with 5 columns and 10 rows.\n" -"> > Did the `matrix` function fill your matrix by column, or by\n" -"> > row, as its default behaviour?\n" -"> > See if you can figure out how to change this.\n" -"> > (hint: read the documentation for `matrix`!)\n" -"> >\n" -"> > \n" -"> > ~~~\n" -"> > x <- matrix(1:50, ncol=5, nrow=10)\n" -"> > x <- matrix(1:50, ncol=5, nrow=10, byrow = TRUE) # to fill by row\n" -"> > ~~~\n" -"> > {: .language-r}" -# blockquote, which can be cascaded #: r-novice-gapminder/_episodes/04-data-structures-part1.md:1500 #: r-novice-gapminder/_episodes/06-data-subsetting.md:1236 +# blockquote, which can be cascaded msgid "> ## Challenge 6" -msgstr "> ## Challenge 6" +msgstr "" -# blockquote, which can be cascaded #: r-novice-gapminder/_episodes/04-data-structures-part1.md:1501 +# blockquote, which can be cascaded msgid "> Create a list of length two containing a character vector for each of the sections in this part of the workshop:" -msgstr "> Create a list of length two containing a character vector for each of the sections in this part of the workshop:" +msgstr "" #: r-novice-gapminder/_episodes/04-data-structures-part1.md:1502 -msgid "" -">\n" +msgid ">\n" "> - Data types\n" "> - Data structures\n" ">\n" @@ -6978,35 +4812,15 @@ msgid "" "> > to remind people of the importance of these basics.\n" "> >" msgstr "" -">\n" -"> - Data types\n" -"> - Data structures\n" -">\n" -"> Populate each character vector with the names of the data types and data\n" -"> structures we've seen so far.\n" -">\n" -"> > ## Solution to Challenge 6\n" -"> > \n" -"> > ~~~\n" -"> > dataTypes <- c('double', 'complex', 'integer', 'character', 'logical')\n" -"> > dataStructures <- c('data.frame', 'vector', 'factor', 'list', 'matrix')\n" -"> > answer <- list(dataTypes, dataStructures)\n" -"> > ~~~\n" -"> > {: .language-r}\n" -"> > Note: it's nice to make a list in big writing on the board or taped to the wall\n" -"> > listing all of these types and structures - leave it up for the rest of the workshop\n" -"> > to remind people of the importance of these basics.\n" -"> >" -# blockquote, which can be cascaded #: r-novice-gapminder/_episodes/04-data-structures-part1.md:1525 #: r-novice-gapminder/_episodes/06-data-subsetting.md:1358 +# blockquote, which can be cascaded msgid "> ## Challenge 7" -msgstr "> ## Challenge 7" +msgstr "" #: r-novice-gapminder/_episodes/04-data-structures-part1.md:1526 -msgid "" -">\n" +msgid ">\n" "> Consider the R output of the matrix below:\n" "> \n" "> ~~~\n" @@ -7016,17 +4830,7 @@ msgid "" "> [3,] 10 7\n" "> ~~~" msgstr "" -">\n" -"> Consider the R output of the matrix below:\n" -"> \n" -"> ~~~\n" -"> [,1] [,2]\n" -"> [1,] 4 1\n" -"> [2,] 9 5\n" -"> [3,] 10 7\n" -"> ~~~" -# SC/DC Template label #: r-novice-gapminder/_episodes/04-data-structures-part1.md:1535 #: r-novice-gapminder/_episodes/06-data-subsetting.md:281 #: r-novice-gapminder/_episodes/06-data-subsetting.md:321 @@ -7037,27 +4841,27 @@ msgstr "" #: r-novice-gapminder/_episodes/09-vectorization.md:256 #: r-novice-gapminder/_episodes/09-vectorization.md:282 #: r-novice-gapminder/_episodes/10-functions.md:589 +# SC/DC Template label msgid "> {: .output}" -msgstr "> {: .output}" +msgstr "" -# blockquote, which can be cascaded #: r-novice-gapminder/_episodes/04-data-structures-part1.md:1536 +# blockquote, which can be cascaded msgid "> What was the correct command used to write this matrix? Examine" -msgstr "> What was the correct command used to write this matrix? Examine" +msgstr "" -# blockquote, which can be cascaded #: r-novice-gapminder/_episodes/04-data-structures-part1.md:1537 +# blockquote, which can be cascaded msgid "> each command and try to figure out the correct one before typing them." -msgstr "> each command and try to figure out the correct one before typing them." +msgstr "" -# blockquote, which can be cascaded #: r-novice-gapminder/_episodes/04-data-structures-part1.md:1538 +# blockquote, which can be cascaded msgid "> Think about what matrices the other commands will produce." -msgstr "> Think about what matrices the other commands will produce." +msgstr "" #: r-novice-gapminder/_episodes/04-data-structures-part1.md:1539 -msgid "" -">\n" +msgid ">\n" "> 1. `matrix(c(4, 1, 9, 5, 10, 7), nrow = 3)`\n" "> 2. `matrix(c(4, 9, 10, 1, 5, 7), ncol = 2, byrow = TRUE)`\n" "> 3. `matrix(c(4, 9, 10, 1, 5, 7), nrow = 2)`\n" @@ -7083,36 +4887,10 @@ msgid "" "> > ~~~\n" "> > {: .language-r}" msgstr "" -">\n" -"> 1. `matrix(c(4, 1, 9, 5, 10, 7), nrow = 3)`\n" -"> 2. `matrix(c(4, 9, 10, 1, 5, 7), ncol = 2, byrow = TRUE)`\n" -"> 3. `matrix(c(4, 9, 10, 1, 5, 7), nrow = 2)`\n" -"> 4. `matrix(c(4, 1, 9, 5, 10, 7), ncol = 2, byrow = TRUE)`\n" -">\n" -"> > ## Solution to Challenge 7\n" -"> >\n" -"> > Consider the R output of the matrix below:\n" -"> > \n" -"> > ~~~\n" -"> > [,1] [,2]\n" -"> > [1,] 4 1\n" -"> > [2,] 9 5\n" -"> > [3,] 10 7\n" -"> > ~~~\n" -"> > {: .output}\n" -"> > What was the correct command used to write this matrix? Examine\n" -"> > each command and try to figure out the correct one before typing them.\n" -"> > Think about what matrices the other commands will produce.\n" -"> > \n" -"> > ~~~\n" -"> > matrix(c(4, 1, 9, 5, 10, 7), ncol = 2, byrow = TRUE)\n" -"> > ~~~\n" -"> > {: .language-r}" -# Front Matter #: r-novice-gapminder/_episodes/05-data-structures-part2.md:1 -msgid "" -"---\n" +# Front Matter +msgid "---\n" "# Please do not edit this file directly; it is auto generated.\n" "# Instead, please edit 05-data-structures-part2.md in _episodes_rmd/\n" "title: \"Exploring Data Frames\"\n" @@ -7139,438 +4917,273 @@ msgid "" "source: Rmd\n" "---" msgstr "" -"---\n" -"# Please do not edit this file directly; it is auto generated.\n" -"# Instead, please edit 05-data-structures-part2.md in _episodes_rmd/\n" -"title: \"Exploring Data Frames\"\n" -"teaching: 20\n" -"exercises: 10\n" -"questions:\n" -"- \"How can I manipulate a data frame?\"\n" -"objectives:\n" -"- \"Add and remove rows or columns.\"\n" -"- \"Remove rows with `NA` values.\"\n" -"- \"Append two data frames.\"\n" -"- \"Understand what a `factor` is.\"\n" -"- \"Convert a `factor` to a `character` vector and vice versa.\"\n" -"- \"Display basic properties of data frames including size and class of the columns, names, and first few rows.\"\n" -"keypoints:\n" -"- \"Use `cbind()` to add a new column to a data frame.\"\n" -"- \"Use `rbind()` to add a new row to a data frame.\"\n" -"- \"Remove rows from a data frame.\"\n" -"- \"Use `na.omit()` to remove rows from a data frame with `NA` values.\"\n" -"- \"Use `levels()` and `as.character()` to explore and manipulate factors.\"\n" -"- \"Use `str()`, `nrow()`, `ncol()`, `dim()`, `colnames()`, `rownames()`, `head()`, and `typeof()` to understand the structure of a data frame.\"\n" -"- \"Read in a csv file using `read.csv()`.\"\n" -"- \"Understand what `length()` of a data frame represents.\"\n" -"source: Rmd\n" -"---" #: r-novice-gapminder/_episodes/05-data-structures-part2.md:30 -msgid "" -"At this point, you've seen it all: in the last lesson, we toured all the basic\n" +msgid "At this point, you've seen it all: in the last lesson, we toured all the basic\n" "data types and data structures in R. Everything you do will be a manipulation of\n" "those tools. But most of the time, the star of the show is the data frame—the table that we created by loading information from a csv file. In this lesson, we'll learn a few more things\n" "about working with data frames." msgstr "" -"At this point, you've seen it all: in the last lesson, we toured all the basic\n" -"data types and data structures in R. Everything you do will be a manipulation of\n" -"those tools. But most of the time, the star of the show is the data frame—the table that we created by loading information from a csv file. In this lesson, we'll learn a few more things\n" -"about working with data frames." -# header #: r-novice-gapminder/_episodes/05-data-structures-part2.md:35 +# header msgid "## Adding columns and rows in data frames" -msgstr "## Adding columns and rows in data frames" +msgstr "" #: r-novice-gapminder/_episodes/05-data-structures-part2.md:37 -msgid "" -"We already learned that the columns of a data frame are vectors, so that our\n" +msgid "We already learned that the columns of a data frame are vectors, so that our\n" "data are consistent in type throughout the columns. As such, if we want to add a\n" "new column, we can start by making a new vector:" msgstr "" -"We already learned that the columns of a data frame are vectors, so that our\n" -"data are consistent in type throughout the columns. As such, if we want to add a\n" -"new column, we can start by making a new vector:" -# code block #: r-novice-gapminder/_episodes/05-data-structures-part2.md:44 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "age <- c(2, 3, 5)\n" "cats\n" "~~~" msgstr "" -"~~~\n" -"age <- c(2, 3, 5)\n" -"cats\n" -"~~~" #: r-novice-gapminder/_episodes/05-data-structures-part2.md:60 msgid "We can then add this as a column via:" -msgstr "We can then add this as a column via:" +msgstr "" -# code block #: r-novice-gapminder/_episodes/05-data-structures-part2.md:63 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "cbind(cats, age)\n" "~~~" msgstr "" -"~~~\n" -"cbind(cats, age)\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/05-data-structures-part2.md:70 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" " coat weight likes_string age\n" "1 calico 2.1 1 2\n" "2 black 5.0 0 3\n" "3 tabby 3.2 1 5\n" "~~~" msgstr "" -"~~~\n" -" coat weight likes_string age\n" -"1 calico 2.1 1 2\n" -"2 black 5.0 0 3\n" -"3 tabby 3.2 1 5\n" -"~~~" #: r-novice-gapminder/_episodes/05-data-structures-part2.md:78 msgid "Note that if we tried to add a vector of ages with a different number of entries than the number of rows in the dataframe, it would fail:" -msgstr "Note that if we tried to add a vector of ages with a different number of entries than the number of rows in the dataframe, it would fail:" +msgstr "" -# code block #: r-novice-gapminder/_episodes/05-data-structures-part2.md:81 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "age <- c(2, 3, 5, 12)\n" "cbind(cats, age)\n" "~~~" msgstr "" -"~~~\n" -"age <- c(2, 3, 5, 12)\n" -"cbind(cats, age)\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/05-data-structures-part2.md:89 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "Error in data.frame(..., check.names = FALSE): arguments imply differing number of rows: 3, 4\n" "~~~" msgstr "" -"~~~\n" -"Error in data.frame(..., check.names = FALSE): arguments imply differing number of rows: 3, 4\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/05-data-structures-part2.md:96 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "age <- c(2, 3)\n" "cbind(cats, age)\n" "~~~" msgstr "" -"~~~\n" -"age <- c(2, 3)\n" -"cbind(cats, age)\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/05-data-structures-part2.md:104 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "Error in data.frame(..., check.names = FALSE): arguments imply differing number of rows: 3, 2\n" "~~~" msgstr "" -"~~~\n" -"Error in data.frame(..., check.names = FALSE): arguments imply differing number of rows: 3, 2\n" -"~~~" #: r-novice-gapminder/_episodes/05-data-structures-part2.md:109 -msgid "" -"Why didn't this work? Of course, R wants to see one element in our new column\n" +msgid "Why didn't this work? Of course, R wants to see one element in our new column\n" "for every row in the table:" msgstr "" -"Why didn't this work? Of course, R wants to see one element in our new column\n" -"for every row in the table:" -# code block #: r-novice-gapminder/_episodes/05-data-structures-part2.md:113 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "nrow(cats)\n" "~~~" msgstr "" -"~~~\n" -"nrow(cats)\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/05-data-structures-part2.md:127 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "length(age)\n" "~~~" msgstr "" -"~~~\n" -"length(age)\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/05-data-structures-part2.md:134 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "[1] 2\n" "~~~" msgstr "" -"~~~\n" -"[1] 2\n" -"~~~" #: r-novice-gapminder/_episodes/05-data-structures-part2.md:139 msgid "So for it to work we need to have `nrow(cats)` = `length(age)`. Let's overwite the content of cats with our new data frame." -msgstr "So for it to work we need to have `nrow(cats)` = `length(age)`. Let's overwite the content of cats with our new data frame." +msgstr "" -# code block #: r-novice-gapminder/_episodes/05-data-structures-part2.md:142 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "age <- c(2, 3, 5)\n" "cats <- cbind(cats, age)\n" "~~~" msgstr "" -"~~~\n" -"age <- c(2, 3, 5)\n" -"cats <- cbind(cats, age)\n" -"~~~" #: r-novice-gapminder/_episodes/05-data-structures-part2.md:148 -msgid "" -"Now how about adding rows? We already know that the rows of a\n" +msgid "Now how about adding rows? We already know that the rows of a\n" "data frame are lists:" msgstr "" -"Now how about adding rows? We already know that the rows of a\n" -"data frame are lists:" -# code block #: r-novice-gapminder/_episodes/05-data-structures-part2.md:152 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "newRow <- list(\"tortoiseshell\", 3.3, TRUE, 9)\n" "cats <- rbind(cats, newRow)\n" "~~~" msgstr "" -"~~~\n" -"newRow <- list(\"tortoiseshell\", 3.3, TRUE, 9)\n" -"cats <- rbind(cats, newRow)\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/05-data-structures-part2.md:160 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "Warning in `[<-.factor`(`*tmp*`, ri, value = \"tortoiseshell\"): invalid\n" "factor level, NA generated\n" "~~~" msgstr "" -"~~~\n" -"Warning in `[<-.factor`(`*tmp*`, ri, value = \"tortoiseshell\"): invalid\n" -"factor level, NA generated\n" -"~~~" #: r-novice-gapminder/_episodes/05-data-structures-part2.md:168 msgid "Here is another thing to look out for: in a `factor`, each different value represents what is called a `level`. In our case, the `factor` \"coat\" has 3 levels: \"black\", \"calico\", and \"tabby\". R will only accept values that match one of the levels. If you add a new value, it will become `NA`." -msgstr "Here is another thing to look out for: in a `factor`, each different value represents what is called a `level`. In our case, the `factor` \"coat\" has 3 levels: \"black\", \"calico\", and \"tabby\". R will only accept values that match one of the levels. If you add a new value, it will become `NA`." +msgstr "" #: r-novice-gapminder/_episodes/05-data-structures-part2.md:170 -msgid "" -"The warning is telling us that we unsuccessfully added \"tortoiseshell\" to our\n" +msgid "The warning is telling us that we unsuccessfully added \"tortoiseshell\" to our\n" "*coat* factor, but 3.3 (a numeric), TRUE (a logical), and 9 (a numeric) were\n" "successfully added to *weight*, *likes_string*, and *age*, respectively, since\n" "those variables are not factors. To successfully add a cat with a\n" "\"tortoiseshell\" *coat*, add \"tortoiseshell\" as a *level* of the factor:" msgstr "" -"The warning is telling us that we unsuccessfully added \"tortoiseshell\" to our\n" -"*coat* factor, but 3.3 (a numeric), TRUE (a logical), and 9 (a numeric) were\n" -"successfully added to *weight*, *likes_string*, and *age*, respectively, since\n" -"those variables are not factors. To successfully add a cat with a\n" -"\"tortoiseshell\" *coat*, add \"tortoiseshell\" as a *level* of the factor:" -# code block #: r-novice-gapminder/_episodes/05-data-structures-part2.md:177 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "levels(cats$coat)\n" "~~~" msgstr "" -"~~~\n" -"levels(cats$coat)\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/05-data-structures-part2.md:184 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "[1] \"black\" \"calico\" \"tabby\" \n" "~~~" msgstr "" -"~~~\n" -"[1] \"black\" \"calico\" \"tabby\" \n" -"~~~" -# code block #: r-novice-gapminder/_episodes/05-data-structures-part2.md:191 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "levels(cats$coat) <- c(levels(cats$coat), \"tortoiseshell\")\n" "cats <- rbind(cats, list(\"tortoiseshell\", 3.3, TRUE, 9))\n" "~~~" msgstr "" -"~~~\n" -"levels(cats$coat) <- c(levels(cats$coat), \"tortoiseshell\")\n" -"cats <- rbind(cats, list(\"tortoiseshell\", 3.3, TRUE, 9))\n" -"~~~" #: r-novice-gapminder/_episodes/05-data-structures-part2.md:197 -msgid "" -"Alternatively, we can change a factor into a character vector; we lose the\n" +msgid "Alternatively, we can change a factor into a character vector; we lose the\n" "handy categories of the factor, but we can subsequently add any word we want to the\n" "column without babysitting the factor levels:" msgstr "" -"Alternatively, we can change a factor into a character vector; we lose the\n" -"handy categories of the factor, but we can subsequently add any word we want to the\n" -"column without babysitting the factor levels:" -# code block #: r-novice-gapminder/_episodes/05-data-structures-part2.md:202 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "str(cats)\n" "~~~" msgstr "" -"~~~\n" -"str(cats)\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/05-data-structures-part2.md:209 -msgid "" -"~~~\n" -"'data.frame':\t5 obs. of 4 variables:\n" +# code block +msgid "~~~\n" +"'data.frame': 5 obs. of 4 variables:\n" " $ coat : Factor w/ 4 levels \"black\",\"calico\",..: 2 1 3 NA 4\n" " $ weight : num 2.1 5 3.2 3.3 3.3\n" " $ likes_string: int 1 0 1 1 1\n" " $ age : num 2 3 5 9 9\n" "~~~" msgstr "" -"~~~\n" -"'data.frame':\t5 obs. of 4 variables:\n" -" $ coat : Factor w/ 4 levels \"black\",\"calico\",..: 2 1 3 NA 4\n" -" $ weight : num 2.1 5 3.2 3.3 3.3\n" -" $ likes_string: int 1 0 1 1 1\n" -" $ age : num 2 3 5 9 9\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/05-data-structures-part2.md:220 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "cats$coat <- as.character(cats$coat)\n" "str(cats)\n" "~~~" msgstr "" -"~~~\n" -"cats$coat <- as.character(cats$coat)\n" -"str(cats)\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/05-data-structures-part2.md:228 -msgid "" -"~~~\n" -"'data.frame':\t5 obs. of 4 variables:\n" +# code block +msgid "~~~\n" +"'data.frame': 5 obs. of 4 variables:\n" " $ coat : chr \"calico\" \"black\" \"tabby\" NA ...\n" " $ weight : num 2.1 5 3.2 3.3 3.3\n" " $ likes_string: int 1 0 1 1 1\n" " $ age : num 2 3 5 9 9\n" "~~~" msgstr "" -"~~~\n" -"'data.frame':\t5 obs. of 4 variables:\n" -" $ coat : chr \"calico\" \"black\" \"tabby\" NA ...\n" -" $ weight : num 2.1 5 3.2 3.3 3.3\n" -" $ likes_string: int 1 0 1 1 1\n" -" $ age : num 2 3 5 9 9\n" -"~~~" -# blockquote, which can be cascaded #: r-novice-gapminder/_episodes/05-data-structures-part2.md:238 +# blockquote, which can be cascaded msgid "> Let's imagine that 1 human year is equivalent to 7 cat years. " -msgstr "> Let's imagine that 1 human year is equivalent to 7 cat years. " +msgstr "" -# blockquote, which can be cascaded #: r-novice-gapminder/_episodes/05-data-structures-part2.md:239 +# blockquote, which can be cascaded msgid "> 1. Create a vector called `human_age` by multiplying `cats$age` by 7." -msgstr "> 1. Create a vector called `human_age` by multiplying `cats$age` by 7." +msgstr "" -# blockquote, which can be cascaded #: r-novice-gapminder/_episodes/05-data-structures-part2.md:240 +# blockquote, which can be cascaded msgid "> 2. Convert `human_age` to a factor." -msgstr "> 2. Convert `human_age` to a factor." +msgstr "" -# blockquote, which can be cascaded #: r-novice-gapminder/_episodes/05-data-structures-part2.md:241 +# blockquote, which can be cascaded msgid "> 3. Convert `human_age` back to a numeric vector using the `as.numeric()` function. Now divide it by 7 to get the original ages back. Explain what happened." -msgstr "> 3. Convert `human_age` back to a numeric vector using the `as.numeric()` function. Now divide it by 7 to get the original ages back. Explain what happened." +msgstr "" #: r-novice-gapminder/_episodes/05-data-structures-part2.md:242 -msgid "" -">\n" +msgid ">\n" "> > ## Solution to Challenge 1\n" "> > 1. `human_age <- cats$age * 7`\n" "> > 2. `human_age <- factor(human_age)`. `as.factor(human_age)` works just as well.\n" "> > 3. `as.numeric(human_age)` yields `1 2 3 4 4` because factors are stored as integers (here, 1:4), each of which is associated with a label (here, 28, 35, 56, and 63). Converting the factor to a numeric vector gives us the underlying integers, not the labels. If we want the original numbers, we need to convert `human_age` to a character vector and then to a numeric vector (why does this work?). This comes up in real life when we accidentally include a character somewhere in a column of a .csv file supposed to only contain numbers, and forget to set `stringsAsFactors=FALSE` when we read in the data." msgstr "" -">\n" -"> > ## Solution to Challenge 1\n" -"> > 1. `human_age <- cats$age * 7`\n" -"> > 2. `human_age <- factor(human_age)`. `as.factor(human_age)` works just as well.\n" -"> > 3. `as.numeric(human_age)` yields `1 2 3 4 4` because factors are stored as integers (here, 1:4), each of which is associated with a label (here, 28, 35, 56, and 63). Converting the factor to a numeric vector gives us the underlying integers, not the labels. If we want the original numbers, we need to convert `human_age` to a character vector and then to a numeric vector (why does this work?). This comes up in real life when we accidentally include a character somewhere in a column of a .csv file supposed to only contain numbers, and forget to set `stringsAsFactors=FALSE` when we read in the data." -# header #: r-novice-gapminder/_episodes/05-data-structures-part2.md:250 +# header msgid "## Removing rows" -msgstr "## Removing rows" +msgstr "" #: r-novice-gapminder/_episodes/05-data-structures-part2.md:252 -msgid "" -"We now know how to add rows and columns to our data frame in R—but in our\n" +msgid "We now know how to add rows and columns to our data frame in R—but in our\n" "first attempt to add a \"tortoiseshell\" cat to the data frame we have accidentally\n" "added a garbage row:" msgstr "" -"We now know how to add rows and columns to our data frame in R—but in our\n" -"first attempt to add a \"tortoiseshell\" cat to the data frame we have accidentally\n" -"added a garbage row:" -# code block #: r-novice-gapminder/_episodes/05-data-structures-part2.md:257 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "cats\n" "~~~" msgstr "" -"~~~\n" -"cats\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/05-data-structures-part2.md:264 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" " coat weight likes_string age\n" "1 calico 2.1 1 2\n" "2 black 5.0 0 3\n" @@ -7579,35 +5192,22 @@ msgid "" "5 tortoiseshell 3.3 1 9\n" "~~~" msgstr "" -"~~~\n" -" coat weight likes_string age\n" -"1 calico 2.1 1 2\n" -"2 black 5.0 0 3\n" -"3 tabby 3.2 1 5\n" -"4 3.3 1 9\n" -"5 tortoiseshell 3.3 1 9\n" -"~~~" #: r-novice-gapminder/_episodes/05-data-structures-part2.md:274 msgid "We can ask for a data frame minus this offending row:" -msgstr "We can ask for a data frame minus this offending row:" +msgstr "" -# code block #: r-novice-gapminder/_episodes/05-data-structures-part2.md:277 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "cats[-4, ]\n" "~~~" msgstr "" -"~~~\n" -"cats[-4, ]\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/05-data-structures-part2.md:284 #: r-novice-gapminder/_episodes/05-data-structures-part2.md:308 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" " coat weight likes_string age\n" "1 calico 2.1 1 2\n" "2 black 5.0 0 3\n" @@ -7615,81 +5215,58 @@ msgid "" "5 tortoiseshell 3.3 1 9\n" "~~~" msgstr "" -"~~~\n" -" coat weight likes_string age\n" -"1 calico 2.1 1 2\n" -"2 black 5.0 0 3\n" -"3 tabby 3.2 1 5\n" -"5 tortoiseshell 3.3 1 9\n" -"~~~" #: r-novice-gapminder/_episodes/05-data-structures-part2.md:293 msgid "Notice the comma with nothing after it to indicate that we want to drop the entire fourth row." -msgstr "Notice the comma with nothing after it to indicate that we want to drop the entire fourth row." +msgstr "" #: r-novice-gapminder/_episodes/05-data-structures-part2.md:295 -msgid "" -"Note: we could also remove both new rows at once by putting the row numbers\n" +msgid "Note: we could also remove both new rows at once by putting the row numbers\n" "inside of a vector: `cats[c(-4,-5), ]`" msgstr "" -"Note: we could also remove both new rows at once by putting the row numbers\n" -"inside of a vector: `cats[c(-4,-5), ]`" #: r-novice-gapminder/_episodes/05-data-structures-part2.md:298 msgid "Alternatively, we can drop all rows with `NA` values:" -msgstr "Alternatively, we can drop all rows with `NA` values:" +msgstr "" -# code block #: r-novice-gapminder/_episodes/05-data-structures-part2.md:301 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "na.omit(cats)\n" "~~~" msgstr "" -"~~~\n" -"na.omit(cats)\n" -"~~~" #: r-novice-gapminder/_episodes/05-data-structures-part2.md:317 msgid "Let's reassign the output to `cats`, so that our changes will be permanent:" -msgstr "Let's reassign the output to `cats`, so that our changes will be permanent:" +msgstr "" -# code block #: r-novice-gapminder/_episodes/05-data-structures-part2.md:320 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "cats <- na.omit(cats)\n" "~~~" msgstr "" -"~~~\n" -"cats <- na.omit(cats)\n" -"~~~" -# header #: r-novice-gapminder/_episodes/05-data-structures-part2.md:325 +# header msgid "## Removing columns " -msgstr "## Removing columns " +msgstr "" #: r-novice-gapminder/_episodes/05-data-structures-part2.md:327 msgid "We can also remove columns in our data frame. What if we want to remove the column \"age\". We can remove it in two ways, by variable number or by index. " -msgstr "We can also remove columns in our data frame. What if we want to remove the column \"age\". We can remove it in two ways, by variable number or by index. " +msgstr "" -# code block #: r-novice-gapminder/_episodes/05-data-structures-part2.md:330 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "cats[,-4]\n" "~~~" msgstr "" -"~~~\n" -"cats[,-4]\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/05-data-structures-part2.md:337 #: r-novice-gapminder/_episodes/05-data-structures-part2.md:359 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" " coat weight likes_string\n" "1 calico 2.1 1\n" "2 black 5.0 0\n" @@ -7697,67 +5274,45 @@ msgid "" "5 tortoiseshell 3.3 1\n" "~~~" msgstr "" -"~~~\n" -" coat weight likes_string\n" -"1 calico 2.1 1\n" -"2 black 5.0 0\n" -"3 tabby 3.2 1\n" -"5 tortoiseshell 3.3 1\n" -"~~~" #: r-novice-gapminder/_episodes/05-data-structures-part2.md:346 msgid "Notice the comma with nothing before it, indicating we want to keep all of the rows. " -msgstr "Notice the comma with nothing before it, indicating we want to keep all of the rows. " +msgstr "" #: r-novice-gapminder/_episodes/05-data-structures-part2.md:348 msgid "Alternatively, we can drop the column by using the index name. " -msgstr "Alternatively, we can drop the column by using the index name. " +msgstr "" -# code block #: r-novice-gapminder/_episodes/05-data-structures-part2.md:351 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "drop <- names(cats) %in% c(\"age\")\n" "cats[,!drop]\n" "~~~" msgstr "" -"~~~\n" -"drop <- names(cats) %in% c(\"age\")\n" -"cats[,!drop]\n" -"~~~" -# header #: r-novice-gapminder/_episodes/05-data-structures-part2.md:368 +# header msgid "## Appending to a data frame" -msgstr "## Appending to a data frame" +msgstr "" #: r-novice-gapminder/_episodes/05-data-structures-part2.md:370 -msgid "" -"The key to remember when adding data to a data frame is that *columns are\n" +msgid "The key to remember when adding data to a data frame is that *columns are\n" "vectors and rows are lists.* We can also glue two data frames\n" "together with `rbind`:" msgstr "" -"The key to remember when adding data to a data frame is that *columns are\n" -"vectors and rows are lists.* We can also glue two data frames\n" -"together with `rbind`:" -# code block #: r-novice-gapminder/_episodes/05-data-structures-part2.md:375 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "cats <- rbind(cats, cats)\n" "cats\n" "~~~" msgstr "" -"~~~\n" -"cats <- rbind(cats, cats)\n" -"cats\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/05-data-structures-part2.md:383 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" " coat weight likes_string age\n" "1 calico 2.1 1 2\n" "2 black 5.0 0 3\n" @@ -7769,43 +5324,23 @@ msgid "" "51 tortoiseshell 3.3 1 9\n" "~~~" msgstr "" -"~~~\n" -" coat weight likes_string age\n" -"1 calico 2.1 1 2\n" -"2 black 5.0 0 3\n" -"3 tabby 3.2 1 5\n" -"5 tortoiseshell 3.3 1 9\n" -"11 calico 2.1 1 2\n" -"21 black 5.0 0 3\n" -"31 tabby 3.2 1 5\n" -"51 tortoiseshell 3.3 1 9\n" -"~~~" #: r-novice-gapminder/_episodes/05-data-structures-part2.md:395 -msgid "" -"But now the row names are unnecessarily complicated. We can remove the rownames,\n" +msgid "But now the row names are unnecessarily complicated. We can remove the rownames,\n" "and R will automatically re-name them sequentially:" msgstr "" -"But now the row names are unnecessarily complicated. We can remove the rownames,\n" -"and R will automatically re-name them sequentially:" -# code block #: r-novice-gapminder/_episodes/05-data-structures-part2.md:399 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "rownames(cats) <- NULL\n" "cats\n" "~~~" msgstr "" -"~~~\n" -"rownames(cats) <- NULL\n" -"cats\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/05-data-structures-part2.md:407 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" " coat weight likes_string age\n" "1 calico 2.1 1 2\n" "2 black 5.0 0 3\n" @@ -7817,21 +5352,9 @@ msgid "" "8 tortoiseshell 3.3 1 9\n" "~~~" msgstr "" -"~~~\n" -" coat weight likes_string age\n" -"1 calico 2.1 1 2\n" -"2 black 5.0 0 3\n" -"3 tabby 3.2 1 5\n" -"4 tortoiseshell 3.3 1 9\n" -"5 calico 2.1 1 2\n" -"6 black 5.0 0 3\n" -"7 tabby 3.2 1 5\n" -"8 tortoiseshell 3.3 1 9\n" -"~~~" #: r-novice-gapminder/_episodes/05-data-structures-part2.md:421 -msgid "" -">\n" +msgid ">\n" "> You can create a new data frame right from within R with the following syntax:\n" "> \n" "> ~~~\n" @@ -7862,71 +5385,32 @@ msgid "" "> > ~~~\n" "> > {: .language-r}" msgstr "" -">\n" -"> You can create a new data frame right from within R with the following syntax:\n" -"> \n" -"> ~~~\n" -"> df <- data.frame(id = c(\"a\", \"b\", \"c\"),\n" -"> x = 1:3,\n" -"> y = c(TRUE, TRUE, FALSE),\n" -"> stringsAsFactors = FALSE)\n" -"> ~~~\n" -"> {: .language-r}\n" -"> Make a data frame that holds the following information for yourself:\n" -">\n" -"> - first name\n" -"> - last name\n" -"> - lucky number\n" -">\n" -"> Then use `rbind` to add an entry for the people sitting beside you.\n" -"> Finally, use `cbind` to add a column with each person's answer to the question, \"Is it time for coffee break?\"\n" -">\n" -"> > ## Solution to Challenge 2\n" -"> > \n" -"> > ~~~\n" -"> > df <- data.frame(first = c(\"Grace\"),\n" -"> > last = c(\"Hopper\"),\n" -"> > lucky_number = c(0),\n" -"> > stringsAsFactors = FALSE)\n" -"> > df <- rbind(df, list(\"Marie\", \"Curie\", 238) )\n" -"> > df <- cbind(df, coffeetime = c(TRUE,TRUE))\n" -"> > ~~~\n" -"> > {: .language-r}" -# header #: r-novice-gapminder/_episodes/05-data-structures-part2.md:454 +# header msgid "## Realistic example" -msgstr "## Realistic example" +msgstr "" #: r-novice-gapminder/_episodes/05-data-structures-part2.md:455 -msgid "" -"So far, you have seen the basics of manipulating data frames with our cat data;\n" +msgid "So far, you have seen the basics of manipulating data frames with our cat data;\n" "now let's use those skills to digest a more realistic dataset. Let's read in the\n" "`gapminder` dataset that we downloaded previously:" msgstr "" -"So far, you have seen the basics of manipulating data frames with our cat data;\n" -"now let's use those skills to digest a more realistic dataset. Let's read in the\n" -"`gapminder` dataset that we downloaded previously:" -# code block #: r-novice-gapminder/_episodes/05-data-structures-part2.md:460 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "gapminder <- read.csv(\"data/gapminder_data.csv\")\n" "~~~" msgstr "" -"~~~\n" -"gapminder <- read.csv(\"data/gapminder_data.csv\")\n" -"~~~" -# blockquote, which can be cascaded #: r-novice-gapminder/_episodes/05-data-structures-part2.md:465 +# blockquote, which can be cascaded msgid "> ## Miscellaneous Tips" -msgstr "> ## Miscellaneous Tips" +msgstr "" #: r-novice-gapminder/_episodes/05-data-structures-part2.md:466 -msgid "" -">\n" +msgid ">\n" "> * Another type of file you might encounter are tab-separated value files (.tsv). To specify a tab as a separator, use `\"\\\\t\"` or `read.delim()`.\n" ">\n" "> * Files can also be downloaded directly from the Internet into a local\n" @@ -7949,56 +5433,26 @@ msgid "" "> * You can read directly from excel spreadsheets without\n" "> converting them to plain text first by using the [readxl](https://cran.r-project.org/web/packages/readxl/index.html) package." msgstr "" -">\n" -"> * Another type of file you might encounter are tab-separated value files (.tsv). To specify a tab as a separator, use `\"\\\\t\"` or `read.delim()`.\n" -">\n" -"> * Files can also be downloaded directly from the Internet into a local\n" -"> folder of your choice onto your computer using the `download.file` function.\n" -"> The `read.csv` function can then be executed to read the downloaded file from the download location, for example,\n" -"> \n" -"> ~~~\n" -"> download.file(\"https://raw.githubusercontent.com/swcarpentry/r-novice-gapminder/gh-pages/_episodes_rmd/data/gapminder_data.csv\", destfile = \"data/gapminder_data.csv\")\n" -"> gapminder <- read.csv(\"data/gapminder_data.csv\")\n" -"> ~~~\n" -"> {: .language-r}\n" -">\n" -"> * Alternatively, you can also read in files directly into R from the Internet by replacing the file paths with a web address in `read.csv`. One should note that in doing this no local copy of the csv file is first saved onto your computer. For example,\n" -"> \n" -"> ~~~\n" -"> gapminder <- read.csv(\"https://raw.githubusercontent.com/swcarpentry/r-novice-gapminder/gh-pages/_episodes_rmd/data/gapminder_data.csv\")\n" -"> ~~~\n" -"> {: .language-r}\n" -">\n" -"> * You can read directly from excel spreadsheets without\n" -"> converting them to plain text first by using the [readxl](https://cran.r-project.org/web/packages/readxl/index.html) package." #: r-novice-gapminder/_episodes/05-data-structures-part2.md:490 -msgid "" -"Let's investigate gapminder a bit; the first thing we should always do is check\n" +msgid "Let's investigate gapminder a bit; the first thing we should always do is check\n" "out what the data looks like with `str`:" msgstr "" -"Let's investigate gapminder a bit; the first thing we should always do is check\n" -"out what the data looks like with `str`:" -# code block #: r-novice-gapminder/_episodes/05-data-structures-part2.md:494 #: r-novice-gapminder/_episodes/13-dplyr.md:188 #: r-novice-gapminder/_episodes/14-tidyr.md:70 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "str(gapminder)\n" "~~~" msgstr "" -"~~~\n" -"str(gapminder)\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/05-data-structures-part2.md:501 #: r-novice-gapminder/_episodes/13-dplyr.md:195 -msgid "" -"~~~\n" -"'data.frame':\t1704 obs. of 6 variables:\n" +# code block +msgid "~~~\n" +"'data.frame': 1704 obs. of 6 variables:\n" " $ country : Factor w/ 142 levels \"Afghanistan\",..: 1 1 1 1 1 1 1 1 1 1 ...\n" " $ year : int 1952 1957 1962 1967 1972 1977 1982 1987 1992 1997 ...\n" " $ pop : num 8425333 9240934 10267083 11537966 13079460 ...\n" @@ -8007,248 +5461,158 @@ msgid "" " $ gdpPercap: num 779 821 853 836 740 ...\n" "~~~" msgstr "" -"~~~\n" -"'data.frame':\t1704 obs. of 6 variables:\n" -" $ country : Factor w/ 142 levels \"Afghanistan\",..: 1 1 1 1 1 1 1 1 1 1 ...\n" -" $ year : int 1952 1957 1962 1967 1972 1977 1982 1987 1992 1997 ...\n" -" $ pop : num 8425333 9240934 10267083 11537966 13079460 ...\n" -" $ continent: Factor w/ 5 levels \"Africa\",\"Americas\",..: 3 3 3 3 3 3 3 3 3 3 ...\n" -" $ lifeExp : num 28.8 30.3 32 34 36.1 ...\n" -" $ gdpPercap: num 779 821 853 836 740 ...\n" -"~~~" #: r-novice-gapminder/_episodes/05-data-structures-part2.md:512 msgid "We can also examine individual columns of the data frame with our `typeof` function:" -msgstr "We can also examine individual columns of the data frame with our `typeof` function:" +msgstr "" -# code block #: r-novice-gapminder/_episodes/05-data-structures-part2.md:515 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "typeof(gapminder$year)\n" "~~~" msgstr "" -"~~~\n" -"typeof(gapminder$year)\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/05-data-structures-part2.md:529 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "typeof(gapminder$country)\n" "~~~" msgstr "" -"~~~\n" -"typeof(gapminder$country)\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/05-data-structures-part2.md:543 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "str(gapminder$country)\n" "~~~" msgstr "" -"~~~\n" -"str(gapminder$country)\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/05-data-structures-part2.md:550 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" " Factor w/ 142 levels \"Afghanistan\",..: 1 1 1 1 1 1 1 1 1 1 ...\n" "~~~" msgstr "" -"~~~\n" -" Factor w/ 142 levels \"Afghanistan\",..: 1 1 1 1 1 1 1 1 1 1 ...\n" -"~~~" #: r-novice-gapminder/_episodes/05-data-structures-part2.md:555 -msgid "" -"We can also interrogate the data frame for information about its dimensions;\n" +msgid "We can also interrogate the data frame for information about its dimensions;\n" "remembering that `str(gapminder)` said there were 1704 observations of 6\n" "variables in gapminder, what do you think the following will produce, and why?" msgstr "" -"We can also interrogate the data frame for information about its dimensions;\n" -"remembering that `str(gapminder)` said there were 1704 observations of 6\n" -"variables in gapminder, what do you think the following will produce, and why?" -# code block #: r-novice-gapminder/_episodes/05-data-structures-part2.md:560 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "length(gapminder)\n" "~~~" msgstr "" -"~~~\n" -"length(gapminder)\n" -"~~~" #: r-novice-gapminder/_episodes/05-data-structures-part2.md:572 -msgid "" -"A fair guess would have been to say that the length of a data frame would be the\n" +msgid "A fair guess would have been to say that the length of a data frame would be the\n" "number of rows it has (1704), but this is not the case; remember, a data frame\n" "is a *list of vectors and factors*:" msgstr "" -"A fair guess would have been to say that the length of a data frame would be the\n" -"number of rows it has (1704), but this is not the case; remember, a data frame\n" -"is a *list of vectors and factors*:" -# code block #: r-novice-gapminder/_episodes/05-data-structures-part2.md:577 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "typeof(gapminder)\n" "~~~" msgstr "" -"~~~\n" -"typeof(gapminder)\n" -"~~~" #: r-novice-gapminder/_episodes/05-data-structures-part2.md:589 -msgid "" -"When `length` gave us 6, it's because gapminder is built out of a list of 6\n" +msgid "When `length` gave us 6, it's because gapminder is built out of a list of 6\n" "columns. To get the number of rows and columns in our dataset, try:" msgstr "" -"When `length` gave us 6, it's because gapminder is built out of a list of 6\n" -"columns. To get the number of rows and columns in our dataset, try:" -# code block #: r-novice-gapminder/_episodes/05-data-structures-part2.md:593 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "nrow(gapminder)\n" "~~~" msgstr "" -"~~~\n" -"nrow(gapminder)\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/05-data-structures-part2.md:600 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "[1] 1704\n" "~~~" msgstr "" -"~~~\n" -"[1] 1704\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/05-data-structures-part2.md:607 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "ncol(gapminder)\n" "~~~" msgstr "" -"~~~\n" -"ncol(gapminder)\n" -"~~~" #: r-novice-gapminder/_episodes/05-data-structures-part2.md:619 msgid "Or, both at once:" -msgstr "Or, both at once:" +msgstr "" -# code block #: r-novice-gapminder/_episodes/05-data-structures-part2.md:622 #: r-novice-gapminder/_episodes/14-tidyr.md:326 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "dim(gapminder)\n" "~~~" msgstr "" -"~~~\n" -"dim(gapminder)\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/05-data-structures-part2.md:629 #: r-novice-gapminder/_episodes/14-tidyr.md:319 #: r-novice-gapminder/_episodes/14-tidyr.md:333 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "[1] 1704 6\n" "~~~" msgstr "" -"~~~\n" -"[1] 1704 6\n" -"~~~" #: r-novice-gapminder/_episodes/05-data-structures-part2.md:634 -msgid "" -"We'll also likely want to know what the titles of all the columns are, so we can\n" +msgid "We'll also likely want to know what the titles of all the columns are, so we can\n" "ask for them later:" msgstr "" -"We'll also likely want to know what the titles of all the columns are, so we can\n" -"ask for them later:" -# code block #: r-novice-gapminder/_episodes/05-data-structures-part2.md:638 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "colnames(gapminder)\n" "~~~" msgstr "" -"~~~\n" -"colnames(gapminder)\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/05-data-structures-part2.md:645 #: r-novice-gapminder/_episodes/14-tidyr.md:361 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "[1] \"country\" \"year\" \"pop\" \"continent\" \"lifeExp\" \"gdpPercap\"\n" "~~~" msgstr "" -"~~~\n" -"[1] \"country\" \"year\" \"pop\" \"continent\" \"lifeExp\" \"gdpPercap\"\n" -"~~~" #: r-novice-gapminder/_episodes/05-data-structures-part2.md:650 -msgid "" -"At this stage, it's important to ask ourselves if the structure R is reporting\n" +msgid "At this stage, it's important to ask ourselves if the structure R is reporting\n" "matches our intuition or expectations; do the basic data types reported for each\n" "column make sense? If not, we need to sort any problems out now before they turn\n" "into bad surprises down the road, using what we've learned about how R\n" "interprets data, and the importance of *strict consistency* in how we record our\n" "data." msgstr "" -"At this stage, it's important to ask ourselves if the structure R is reporting\n" -"matches our intuition or expectations; do the basic data types reported for each\n" -"column make sense? If not, we need to sort any problems out now before they turn\n" -"into bad surprises down the road, using what we've learned about how R\n" -"interprets data, and the importance of *strict consistency* in how we record our\n" -"data." #: r-novice-gapminder/_episodes/05-data-structures-part2.md:657 -msgid "" -"Once we're happy that the data types and structures seem reasonable, it's time\n" +msgid "Once we're happy that the data types and structures seem reasonable, it's time\n" "to start digging into our data proper. Check out the first few lines:" msgstr "" -"Once we're happy that the data types and structures seem reasonable, it's time\n" -"to start digging into our data proper. Check out the first few lines:" -# code block #: r-novice-gapminder/_episodes/05-data-structures-part2.md:661 #: r-novice-gapminder/_episodes/14-tidyr.md:410 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "head(gapminder)\n" "~~~" msgstr "" -"~~~\n" -"head(gapminder)\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/05-data-structures-part2.md:668 #: r-novice-gapminder/_episodes/14-tidyr.md:417 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" " country year pop continent lifeExp gdpPercap\n" "1 Afghanistan 1952 8425333 Asia 28.801 779.4453\n" "2 Afghanistan 1957 9240934 Asia 30.332 820.8530\n" @@ -8258,19 +5622,9 @@ msgid "" "6 Afghanistan 1977 14880372 Asia 38.438 786.1134\n" "~~~" msgstr "" -"~~~\n" -" country year pop continent lifeExp gdpPercap\n" -"1 Afghanistan 1952 8425333 Asia 28.801 779.4453\n" -"2 Afghanistan 1957 9240934 Asia 30.332 820.8530\n" -"3 Afghanistan 1962 10267083 Asia 31.997 853.1007\n" -"4 Afghanistan 1967 11537966 Asia 34.020 836.1971\n" -"5 Afghanistan 1972 13079460 Asia 36.088 739.9811\n" -"6 Afghanistan 1977 14880372 Asia 38.438 786.1134\n" -"~~~" #: r-novice-gapminder/_episodes/05-data-structures-part2.md:680 -msgid "" -">\n" +msgid ">\n" "> It's good practice to also check the last few lines of your data and some in the middle. How would you do this?\n" ">\n" "> Searching for ones specifically in the middle isn't too hard but we could simply ask for a few lines at random. How would you code this?\n" @@ -8293,40 +5647,14 @@ msgid "" "> > ~~~\n" "> > {: .r}" msgstr "" -">\n" -"> It's good practice to also check the last few lines of your data and some in the middle. How would you do this?\n" -">\n" -"> Searching for ones specifically in the middle isn't too hard but we could simply ask for a few lines at random. How would you code this?\n" -">\n" -"> > ## Solution to Challenge 3\n" -"> > To check the last few lines it's relatively simple as R already has a function for this:\n" -"> > \n" -"> > ~~~\n" -"> > tail(gapminder)\n" -"> > tail(gapminder, n = 15)\n" -"> > ~~~\n" -"> > {: .r}\n" -"> > \n" -"> > What about a few arbitrary rows just for sanity (or insanity depending on your view)?\n" -"> > ## Tip: There are several ways to achieve this.\n" -"> > The solution here presents one form using nested functions. i.e. a function passed as an argument to another function. This might sound like a new concept but you are already using it in fact.\n" -"> > Remember my_dataframe[rows, cols] will print to screen your data frame with the number of rows and columns you asked for (although you might have asked for a range or named columns for example). How would you get the last row if you don't know how many rows your data frame has? R has a function for this. What about getting a (pseudorandom) sample? R also has a function for this.\n" -"> > ~~~\n" -"> > gapminder[sample(nrow(gapminder), 5), ]\n" -"> > ~~~\n" -"> > {: .r}" #: r-novice-gapminder/_episodes/05-data-structures-part2.md:706 -msgid "" -"To make sure our analysis is reproducible, we should put the code\n" +msgid "To make sure our analysis is reproducible, we should put the code\n" "into a script file so we can come back to it later." msgstr "" -"To make sure our analysis is reproducible, we should put the code\n" -"into a script file so we can come back to it later." #: r-novice-gapminder/_episodes/05-data-structures-part2.md:710 -msgid "" -">\n" +msgid ">\n" "> Go to file -> new file -> R script, and write an R script\n" "> to load in the gapminder dataset. Put it in the `scripts/`\n" "> directory and add it to version control.\n" @@ -8349,32 +5677,9 @@ msgid "" "> > ~~~\n" "> > {: .language-r}" msgstr "" -">\n" -"> Go to file -> new file -> R script, and write an R script\n" -"> to load in the gapminder dataset. Put it in the `scripts/`\n" -"> directory and add it to version control.\n" -">\n" -"> Run the script using the `source` function, using the file path\n" -"> as its argument (or by pressing the \"source\" button in RStudio).\n" -">\n" -"> > ## Solution to Challenge 4\n" -"> > The contents of `scripts/load-gapminder.R`:\n" -"> > \n" -"> > ~~~\n" -"> > download.file(\"https://raw.githubusercontent.com/swcarpentry/r-novice-gapminder/gh-pages/_episodes_rmd/data/gapminder_data.csv\", destfile = \"data/gapminder_data.csv\")\n" -"> > gapminder <- read.csv(file = \"data/gapminder_data.csv\")\n" -"> > ~~~\n" -"> > {: .language-r}\n" -"> > To run the script and load the data into the `gapminder` variable:\n" -"> > \n" -"> > ~~~\n" -"> > source(file = \"scripts/load-gapminder.R\")\n" -"> > ~~~\n" -"> > {: .language-r}" #: r-novice-gapminder/_episodes/05-data-structures-part2.md:736 -msgid "" -">\n" +msgid ">\n" "> Read the output of `str(gapminder)` again;\n" "> this time, use what you've learned about factors, lists and vectors,\n" "> as well as the output of functions like `colnames` and `dim`\n" @@ -8389,25 +5694,10 @@ msgid "" "> > - `pop`, `lifeExp`, and `gdpPercap` are numeric vectors.\n" "> >" msgstr "" -">\n" -"> Read the output of `str(gapminder)` again;\n" -"> this time, use what you've learned about factors, lists and vectors,\n" -"> as well as the output of functions like `colnames` and `dim`\n" -"> to explain what everything that `str` prints out for gapminder means.\n" -"> If there are any parts you can't interpret, discuss with your neighbors!\n" -">\n" -"> > ## Solution to Challenge 5\n" -"> >\n" -"> > The object `gapminder` is a data frame with columns\n" -"> > - `country` and `continent` are factors.\n" -"> > - `year` is an integer vector.\n" -"> > - `pop`, `lifeExp`, and `gdpPercap` are numeric vectors.\n" -"> >" -# Front Matter #: r-novice-gapminder/_episodes/06-data-subsetting.md:1 -msgid "" -"---\n" +# Front Matter +msgid "---\n" "# Please do not edit this file directly; it is auto generated.\n" "# Instead, please edit 06-data-subsetting.md in _episodes_rmd/\n" "title: Subsetting Data\n" @@ -8428,435 +5718,286 @@ msgid "" "source: Rmd\n" "---" msgstr "" -"---\n" -"# Please do not edit this file directly; it is auto generated.\n" -"# Instead, please edit 06-data-subsetting.md in _episodes_rmd/\n" -"title: Subsetting Data\n" -"teaching: 35\n" -"exercises: 15\n" -"questions:\n" -"- \"How can I work with subsets of data in R?\"\n" -"objectives:\n" -"- \"To be able to subset vectors, factors, matrices, lists, and data frames\"\n" -"- \"To be able to extract individual and multiple elements: by index, by name, using comparison operations\"\n" -"- \"To be able to skip and remove elements from various data structures.\"\n" -"keypoints:\n" -"- \"Indexing in R starts at 1, not 0.\"\n" -"- \"Access individual values by location using `[]`.\"\n" -"- \"Access slices of data using `[low:high]`.\"\n" -"- \"Access arbitrary sets of data using `[c(...)]`.\"\n" -"- \"Use logical operations and logical vectors to access subsets of data.\"\n" -"source: Rmd\n" -"---" #: r-novice-gapminder/_episodes/06-data-subsetting.md:24 -msgid "" -"R has many powerful subset operators. Mastering them will allow you to\n" +msgid "R has many powerful subset operators. Mastering them will allow you to\n" "easily perform complex operations on any kind of dataset." msgstr "" -"R has many powerful subset operators. Mastering them will allow you to\n" -"easily perform complex operations on any kind of dataset." #: r-novice-gapminder/_episodes/06-data-subsetting.md:27 -msgid "" -"There are six different ways we can subset any kind of object, and three\n" +msgid "There are six different ways we can subset any kind of object, and three\n" "different subsetting operators for the different data structures." msgstr "" -"There are six different ways we can subset any kind of object, and three\n" -"different subsetting operators for the different data structures." #: r-novice-gapminder/_episodes/06-data-subsetting.md:30 msgid "Let's start with the workhorse of R: a simple numeric vector." -msgstr "Let's start with the workhorse of R: a simple numeric vector." +msgstr "" -# code block #: r-novice-gapminder/_episodes/06-data-subsetting.md:33 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "x <- c(5.4, 6.2, 7.1, 4.8, 7.5)\n" "names(x) <- c('a', 'b', 'c', 'd', 'e')\n" "x\n" "~~~" msgstr "" -"~~~\n" -"x <- c(5.4, 6.2, 7.1, 4.8, 7.5)\n" -"names(x) <- c('a', 'b', 'c', 'd', 'e')\n" -"x\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/06-data-subsetting.md:42 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" " a b c d e \n" "5.4 6.2 7.1 4.8 7.5 \n" "~~~" msgstr "" -"~~~\n" -" a b c d e \n" -"5.4 6.2 7.1 4.8 7.5 \n" -"~~~" -# blockquote, which can be cascaded #: r-novice-gapminder/_episodes/06-data-subsetting.md:48 +# blockquote, which can be cascaded msgid "> ## Atomic vectors" -msgstr "> ## Atomic vectors" +msgstr "" #: r-novice-gapminder/_episodes/06-data-subsetting.md:49 -msgid "" -">\n" +msgid ">\n" "> In R, simple vectors containing character strings, numbers, or logical values are called *atomic* vectors because they can't be further simplified." msgstr "" -">\n" -"> In R, simple vectors containing character strings, numbers, or logical values are called *atomic* vectors because they can't be further simplified." #: r-novice-gapminder/_episodes/06-data-subsetting.md:53 -msgid "" -"So now that we've created a dummy vector to play with, how do we get at its\n" +msgid "So now that we've created a dummy vector to play with, how do we get at its\n" "contents?" msgstr "" -"So now that we've created a dummy vector to play with, how do we get at its\n" -"contents?" -# header #: r-novice-gapminder/_episodes/06-data-subsetting.md:56 +# header msgid "## Accessing elements using their indices" -msgstr "## Accessing elements using their indices" +msgstr "" #: r-novice-gapminder/_episodes/06-data-subsetting.md:58 -msgid "" -"To extract elements of a vector we can give their corresponding index, starting\n" +msgid "To extract elements of a vector we can give their corresponding index, starting\n" "from one:" msgstr "" -"To extract elements of a vector we can give their corresponding index, starting\n" -"from one:" -# code block #: r-novice-gapminder/_episodes/06-data-subsetting.md:62 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "x[1]\n" "~~~" msgstr "" -"~~~\n" -"x[1]\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/06-data-subsetting.md:69 #: r-novice-gapminder/_episodes/06-data-subsetting.md:453 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" " a \n" "5.4 \n" "~~~" msgstr "" -"~~~\n" -" a \n" -"5.4 \n" -"~~~" -# code block #: r-novice-gapminder/_episodes/06-data-subsetting.md:76 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "x[4]\n" "~~~" msgstr "" -"~~~\n" -"x[4]\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/06-data-subsetting.md:83 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" " d \n" "4.8 \n" "~~~" msgstr "" -"~~~\n" -" d \n" -"4.8 \n" -"~~~" #: r-novice-gapminder/_episodes/06-data-subsetting.md:89 -msgid "" -"It may look different, but the square brackets operator is a function. For vectors\n" +msgid "It may look different, but the square brackets operator is a function. For vectors\n" "(and matrices), it means \"get me the nth element\"." msgstr "" -"It may look different, but the square brackets operator is a function. For vectors\n" -"(and matrices), it means \"get me the nth element\"." #: r-novice-gapminder/_episodes/06-data-subsetting.md:92 msgid "We can ask for multiple elements at once:" -msgstr "We can ask for multiple elements at once:" +msgstr "" -# code block #: r-novice-gapminder/_episodes/06-data-subsetting.md:95 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "x[c(1, 3)]\n" "~~~" msgstr "" -"~~~\n" -"x[c(1, 3)]\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/06-data-subsetting.md:102 #: r-novice-gapminder/_episodes/06-data-subsetting.md:392 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" " a c \n" "5.4 7.1 \n" "~~~" msgstr "" -"~~~\n" -" a c \n" -"5.4 7.1 \n" -"~~~" #: r-novice-gapminder/_episodes/06-data-subsetting.md:108 msgid "Or slices of the vector:" -msgstr "Or slices of the vector:" +msgstr "" -# code block #: r-novice-gapminder/_episodes/06-data-subsetting.md:111 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "x[1:4]\n" "~~~" msgstr "" -"~~~\n" -"x[1:4]\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/06-data-subsetting.md:118 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" " a b c d \n" "5.4 6.2 7.1 4.8 \n" "~~~" msgstr "" -"~~~\n" -" a b c d \n" -"5.4 6.2 7.1 4.8 \n" -"~~~" #: r-novice-gapminder/_episodes/06-data-subsetting.md:124 msgid "the `:` operator creates a sequence of numbers from the left element to the right." -msgstr "the `:` operator creates a sequence of numbers from the left element to the right." +msgstr "" -# code block #: r-novice-gapminder/_episodes/06-data-subsetting.md:126 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "1:4\n" "~~~" msgstr "" -"~~~\n" -"1:4\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/06-data-subsetting.md:133 #: r-novice-gapminder/_episodes/06-data-subsetting.md:147 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "[1] 1 2 3 4\n" "~~~" msgstr "" -"~~~\n" -"[1] 1 2 3 4\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/06-data-subsetting.md:140 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "c(1, 2, 3, 4)\n" "~~~" msgstr "" -"~~~\n" -"c(1, 2, 3, 4)\n" -"~~~" #: r-novice-gapminder/_episodes/06-data-subsetting.md:153 msgid "We can ask for the same element multiple times:" -msgstr "We can ask for the same element multiple times:" +msgstr "" -# code block #: r-novice-gapminder/_episodes/06-data-subsetting.md:156 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "x[c(1,1,3)]\n" "~~~" msgstr "" -"~~~\n" -"x[c(1,1,3)]\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/06-data-subsetting.md:163 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" " a a c \n" "5.4 5.4 7.1 \n" "~~~" msgstr "" -"~~~\n" -" a a c \n" -"5.4 5.4 7.1 \n" -"~~~" #: r-novice-gapminder/_episodes/06-data-subsetting.md:169 msgid "If we ask for an index beyond the length of the vector, R will return a missing value:" -msgstr "If we ask for an index beyond the length of the vector, R will return a missing value:" +msgstr "" -# code block #: r-novice-gapminder/_episodes/06-data-subsetting.md:171 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "x[6]\n" "~~~" msgstr "" -"~~~\n" -"x[6]\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/06-data-subsetting.md:178 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" " \n" " NA \n" "~~~" msgstr "" -"~~~\n" -" \n" -" NA \n" -"~~~" #: r-novice-gapminder/_episodes/06-data-subsetting.md:184 msgid "This is a vector of length one containing an `NA`, whose name is also `NA`." -msgstr "This is a vector of length one containing an `NA`, whose name is also `NA`." +msgstr "" #: r-novice-gapminder/_episodes/06-data-subsetting.md:186 msgid "If we ask for the 0th element, we get an empty vector:" -msgstr "If we ask for the 0th element, we get an empty vector:" +msgstr "" -# code block #: r-novice-gapminder/_episodes/06-data-subsetting.md:189 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "x[0]\n" "~~~" msgstr "" -"~~~\n" -"x[0]\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/06-data-subsetting.md:196 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "named numeric(0)\n" "~~~" msgstr "" -"~~~\n" -"named numeric(0)\n" -"~~~" -# blockquote, which can be cascaded #: r-novice-gapminder/_episodes/06-data-subsetting.md:201 +# blockquote, which can be cascaded msgid "> ## Vector numbering in R starts at 1" -msgstr "> ## Vector numbering in R starts at 1" +msgstr "" #: r-novice-gapminder/_episodes/06-data-subsetting.md:202 -msgid "" -">\n" +msgid ">\n" "> In many programming languages (C and Python, for example), the first\n" "> element of a vector has an index of 0. In R, the first element is 1." msgstr "" -">\n" -"> In many programming languages (C and Python, for example), the first\n" -"> element of a vector has an index of 0. In R, the first element is 1." -# header #: r-novice-gapminder/_episodes/06-data-subsetting.md:207 +# header msgid "## Skipping and removing elements" -msgstr "## Skipping and removing elements" +msgstr "" #: r-novice-gapminder/_episodes/06-data-subsetting.md:209 -msgid "" -"If we use a negative number as the index of a vector, R will return\n" +msgid "If we use a negative number as the index of a vector, R will return\n" "every element *except* for the one specified:" msgstr "" -"If we use a negative number as the index of a vector, R will return\n" -"every element *except* for the one specified:" -# code block #: r-novice-gapminder/_episodes/06-data-subsetting.md:213 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "x[-2]\n" "~~~" msgstr "" -"~~~\n" -"x[-2]\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/06-data-subsetting.md:220 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" " a c d e \n" "5.4 7.1 4.8 7.5 \n" "~~~" msgstr "" -"~~~\n" -" a c d e \n" -"5.4 7.1 4.8 7.5 \n" -"~~~" #: r-novice-gapminder/_episodes/06-data-subsetting.md:226 msgid "We can skip multiple elements:" -msgstr "We can skip multiple elements:" +msgstr "" -# code block #: r-novice-gapminder/_episodes/06-data-subsetting.md:229 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "x[c(-1, -5)] # or x[-c(1,5)]\n" "~~~" msgstr "" -"~~~\n" -"x[c(-1, -5)] # or x[-c(1,5)]\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/06-data-subsetting.md:236 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" " b c d \n" "6.2 7.1 4.8 \n" "~~~" msgstr "" -"~~~\n" -" b c d \n" -"6.2 7.1 4.8 \n" -"~~~" -# blockquote, which can be cascaded #: r-novice-gapminder/_episodes/06-data-subsetting.md:242 +# blockquote, which can be cascaded msgid "> ## Tip: Order of operations" -msgstr "> ## Tip: Order of operations" +msgstr "" #: r-novice-gapminder/_episodes/06-data-subsetting.md:243 -msgid "" -">\n" +msgid ">\n" "> A common trip up for novices occurs when trying to skip\n" "> slices of a vector. It's natural to try to negate a\n" "> sequence like so:\n" @@ -8874,32 +6015,14 @@ msgid "" "> Error in x[-1:3]: only 0's may be mixed with negative subscripts\n" "> ~~~" msgstr "" -">\n" -"> A common trip up for novices occurs when trying to skip\n" -"> slices of a vector. It's natural to try to negate a\n" -"> sequence like so:\n" -">\n" -"> \n" -"> ~~~\n" -"> x[-1:3]\n" -"> ~~~\n" -"> {: .language-r}\n" -">\n" -"> This gives a somewhat cryptic error:\n" -">\n" -"> \n" -"> ~~~\n" -"> Error in x[-1:3]: only 0's may be mixed with negative subscripts\n" -"> ~~~" -# SC/DC Template label #: r-novice-gapminder/_episodes/06-data-subsetting.md:260 +# SC/DC Template label msgid "> {: .error}" -msgstr "> {: .error}" +msgstr "" #: r-novice-gapminder/_episodes/06-data-subsetting.md:261 -msgid "" -">\n" +msgid ">\n" "> But remember the order of operations. `:` is really a function.\n" "> It takes its first argument as -1, and its second as 3,\n" "> so generates the sequence of numbers: `c(-1, 0, 1, 2, 3)`.\n" @@ -8920,65 +6043,31 @@ msgid "" "> 4.8 7.5 \n" "> ~~~" msgstr "" -">\n" -"> But remember the order of operations. `:` is really a function.\n" -"> It takes its first argument as -1, and its second as 3,\n" -"> so generates the sequence of numbers: `c(-1, 0, 1, 2, 3)`.\n" -">\n" -"> The correct solution is to wrap that function call in brackets, so\n" -"> that the `-` operator applies to the result:\n" -">\n" -"> \n" -"> ~~~\n" -"> x[-(1:3)]\n" -"> ~~~\n" -"> {: .language-r}\n" -"> \n" -"> \n" -"> \n" -"> ~~~\n" -"> d e \n" -"> 4.8 7.5 \n" -"> ~~~" #: r-novice-gapminder/_episodes/06-data-subsetting.md:285 -msgid "" -"To remove elements from a vector, we need to assign the result back\n" +msgid "To remove elements from a vector, we need to assign the result back\n" "into the variable:" msgstr "" -"To remove elements from a vector, we need to assign the result back\n" -"into the variable:" -# code block #: r-novice-gapminder/_episodes/06-data-subsetting.md:289 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "x <- x[-4]\n" "x\n" "~~~" msgstr "" -"~~~\n" -"x <- x[-4]\n" -"x\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/06-data-subsetting.md:297 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" " a b c e \n" "5.4 6.2 7.1 7.5 \n" "~~~" msgstr "" -"~~~\n" -" a b c e \n" -"5.4 6.2 7.1 7.5 \n" -"~~~" #: r-novice-gapminder/_episodes/06-data-subsetting.md:304 #: r-novice-gapminder/_episodes/06-data-subsetting.md:489 -msgid "" -">\n" +msgid ">\n" "> Given the following code:\n" ">\n" "> \n" @@ -8996,27 +6085,9 @@ msgid "" "> 5.4 6.2 7.1 4.8 7.5 \n" "> ~~~" msgstr "" -">\n" -"> Given the following code:\n" -">\n" -"> \n" -"> ~~~\n" -"> x <- c(5.4, 6.2, 7.1, 4.8, 7.5)\n" -"> names(x) <- c('a', 'b', 'c', 'd', 'e')\n" -"> print(x)\n" -"> ~~~\n" -"> {: .language-r}\n" -"> \n" -"> \n" -"> \n" -"> ~~~\n" -"> a b c d e \n" -"> 5.4 6.2 7.1 4.8 7.5 \n" -"> ~~~" #: r-novice-gapminder/_episodes/06-data-subsetting.md:322 -msgid "" -">\n" +msgid ">\n" "> Come up with at least 2 different commands that will produce the following output:\n" ">\n" "> \n" @@ -9025,18 +6096,9 @@ msgid "" "> 6.2 7.1 4.8 \n" "> ~~~" msgstr "" -">\n" -"> Come up with at least 2 different commands that will produce the following output:\n" -">\n" -"> \n" -"> ~~~\n" -"> b c d \n" -"> 6.2 7.1 4.8 \n" -"> ~~~" #: r-novice-gapminder/_episodes/06-data-subsetting.md:331 -msgid "" -">\n" +msgid ">\n" "> After you find 2 different commands, compare notes with your neighbour. Did you have different strategies?\n" ">\n" "> > ## Solution to challenge 1\n" @@ -9082,176 +6144,93 @@ msgid "" "> > {: .output}\n" "> >" msgstr "" -">\n" -"> After you find 2 different commands, compare notes with your neighbour. Did you have different strategies?\n" -">\n" -"> > ## Solution to challenge 1\n" -"> >\n" -"> > \n" -"> > ~~~\n" -"> > x[2:4]\n" -"> > ~~~\n" -"> > {: .language-r}\n" -"> > \n" -"> > \n" -"> > \n" -"> > ~~~\n" -"> > b c d \n" -"> > 6.2 7.1 4.8 \n" -"> > ~~~\n" -"> > {: .output}\n" -"> > \n" -"> > ~~~\n" -"> > x[-c(1,5)]\n" -"> > ~~~\n" -"> > {: .language-r}\n" -"> > \n" -"> > \n" -"> > \n" -"> > ~~~\n" -"> > b c d \n" -"> > 6.2 7.1 4.8 \n" -"> > ~~~\n" -"> > {: .output}\n" -"> > \n" -"> > ~~~\n" -"> > x[c(2,3,4)]\n" -"> > ~~~\n" -"> > {: .language-r}\n" -"> > \n" -"> > \n" -"> > \n" -"> > ~~~\n" -"> > b c d \n" -"> > 6.2 7.1 4.8 \n" -"> > ~~~\n" -"> > {: .output}\n" -"> >" -# header #: r-novice-gapminder/_episodes/06-data-subsetting.md:379 +# header msgid "## Subsetting by name" -msgstr "## Subsetting by name" +msgstr "" #: r-novice-gapminder/_episodes/06-data-subsetting.md:381 msgid "We can extract elements by using their name, instead of extracting by index:" -msgstr "We can extract elements by using their name, instead of extracting by index:" +msgstr "" -# code block #: r-novice-gapminder/_episodes/06-data-subsetting.md:384 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "x <- c(a=5.4, b=6.2, c=7.1, d=4.8, e=7.5) # we can name a vector 'on the fly'\n" "x[c(\"a\", \"c\")]\n" "~~~" msgstr "" -"~~~\n" -"x <- c(a=5.4, b=6.2, c=7.1, d=4.8, e=7.5) # we can name a vector 'on the fly'\n" -"x[c(\"a\", \"c\")]\n" -"~~~" #: r-novice-gapminder/_episodes/06-data-subsetting.md:398 -msgid "" -"This is usually a much more reliable way to subset objects: the\n" +msgid "This is usually a much more reliable way to subset objects: the\n" "position of various elements can often change when chaining together\n" "subsetting operations, but the names will always remain the same!" msgstr "" -"This is usually a much more reliable way to subset objects: the\n" -"position of various elements can often change when chaining together\n" -"subsetting operations, but the names will always remain the same!" -# header #: r-novice-gapminder/_episodes/06-data-subsetting.md:402 +# header msgid "## Subsetting through other logical operations" -msgstr "## Subsetting through other logical operations" +msgstr "" #: r-novice-gapminder/_episodes/06-data-subsetting.md:404 msgid "We can also use any logical vector to subset:" -msgstr "We can also use any logical vector to subset:" +msgstr "" -# code block #: r-novice-gapminder/_episodes/06-data-subsetting.md:407 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "x[c(FALSE, FALSE, TRUE, FALSE, TRUE)]\n" "~~~" msgstr "" -"~~~\n" -"x[c(FALSE, FALSE, TRUE, FALSE, TRUE)]\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/06-data-subsetting.md:414 #: r-novice-gapminder/_episodes/06-data-subsetting.md:432 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" " c e \n" "7.1 7.5 \n" "~~~" msgstr "" -"~~~\n" -" c e \n" -"7.1 7.5 \n" -"~~~" #: r-novice-gapminder/_episodes/06-data-subsetting.md:420 -msgid "" -"Since comparison operators (e.g. `>`, `<`, `==`) evaluate to logical vectors, we can also\n" +msgid "Since comparison operators (e.g. `>`, `<`, `==`) evaluate to logical vectors, we can also\n" "use them to succinctly subset vectors: the following statement gives\n" "the same result as the previous one." msgstr "" -"Since comparison operators (e.g. `>`, `<`, `==`) evaluate to logical vectors, we can also\n" -"use them to succinctly subset vectors: the following statement gives\n" -"the same result as the previous one." -# code block #: r-novice-gapminder/_episodes/06-data-subsetting.md:425 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "x[x > 7]\n" "~~~" msgstr "" -"~~~\n" -"x[x > 7]\n" -"~~~" #: r-novice-gapminder/_episodes/06-data-subsetting.md:438 -msgid "" -"Breaking it down, this statement first evaluates `x>7`, generating\n" +msgid "Breaking it down, this statement first evaluates `x>7`, generating\n" "a logical vector `c(FALSE, FALSE, TRUE, FALSE, TRUE)`, and then\n" "selects the elements of `x` corresponding to the `TRUE` values." msgstr "" -"Breaking it down, this statement first evaluates `x>7`, generating\n" -"a logical vector `c(FALSE, FALSE, TRUE, FALSE, TRUE)`, and then\n" -"selects the elements of `x` corresponding to the `TRUE` values." #: r-novice-gapminder/_episodes/06-data-subsetting.md:442 -msgid "" -"We can use `==` to mimic the previous method of indexing by name\n" +msgid "We can use `==` to mimic the previous method of indexing by name\n" "(remember you have to use `==` rather than `=` for comparisons):" msgstr "" -"We can use `==` to mimic the previous method of indexing by name\n" -"(remember you have to use `==` rather than `=` for comparisons):" -# code block #: r-novice-gapminder/_episodes/06-data-subsetting.md:446 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "x[names(x) == \"a\"]\n" "~~~" msgstr "" -"~~~\n" -"x[names(x) == \"a\"]\n" -"~~~" -# blockquote, which can be cascaded #: r-novice-gapminder/_episodes/06-data-subsetting.md:459 +# blockquote, which can be cascaded msgid "> ## Tip: Combining logical conditions" -msgstr "> ## Tip: Combining logical conditions" +msgstr "" #: r-novice-gapminder/_episodes/06-data-subsetting.md:460 -msgid "" -">\n" +msgid ">\n" "> We often want to combine multiple logical\n" "> criteria. For example, we might want to find all the countries that are\n" "> located in Asia **or** Europe **and** have life expectancies within a certain\n" @@ -9278,36 +6257,9 @@ msgid "" "> and the `any` function (which returns `TRUE` if one or more elements of the\n" "> vector are `TRUE`)." msgstr "" -">\n" -"> We often want to combine multiple logical\n" -"> criteria. For example, we might want to find all the countries that are\n" -"> located in Asia **or** Europe **and** have life expectancies within a certain\n" -"> range. Several operations for combining logical vectors exist in R:\n" -">\n" -"> * `&`, the \"logical AND\" operator: returns `TRUE` if both the left and right\n" -"> are `TRUE`.\n" -"> * `|`, the \"logical OR\" operator: returns `TRUE`, if either the left or right\n" -"> (or both) are `TRUE`.\n" -">\n" -"> You may sometimes see `&&` and `||` instead of `&` and `|`. These two-character operators\n" -"> only look at the first element of each vector and ignore the\n" -"> remaining elements. In general you should not use the two-character\n" -"> operators in data analysis; save them\n" -"> for programming, i.e. deciding whether to execute a statement.\n" -">\n" -"> * `!`, the \"logical NOT\" operator: converts `TRUE` to `FALSE` and `FALSE` to\n" -"> `TRUE`. It can negate a single logical condition (eg `!TRUE` becomes\n" -"> `FALSE`), or a whole vector of conditions(eg `!c(TRUE, FALSE)` becomes\n" -"> `c(FALSE, TRUE)`).\n" -">\n" -"> Additionally, you can compare the elements within a single vector using the\n" -"> `all` function (which returns `TRUE` if every element of the vector is `TRUE`)\n" -"> and the `any` function (which returns `TRUE` if one or more elements of the\n" -"> vector are `TRUE`)." #: r-novice-gapminder/_episodes/06-data-subsetting.md:507 -msgid "" -">\n" +msgid ">\n" "> Write a subsetting command to return the values in x that are greater than 4 and less than 7.\n" ">\n" "> > ## Solution to challenge 2\n" @@ -9327,34 +6279,14 @@ msgid "" "> > ~~~\n" "> > {: .output}" msgstr "" -">\n" -"> Write a subsetting command to return the values in x that are greater than 4 and less than 7.\n" -">\n" -"> > ## Solution to challenge 2\n" -"> >\n" -"> > \n" -"> > ~~~\n" -"> > x_subset <- x[x<7 & x>4]\n" -"> > print(x_subset)\n" -"> > ~~~\n" -"> > {: .language-r}\n" -"> > \n" -"> > \n" -"> > \n" -"> > ~~~\n" -"> > a b d \n" -"> > 5.4 6.2 4.8 \n" -"> > ~~~\n" -"> > {: .output}" -# blockquote, which can be cascaded #: r-novice-gapminder/_episodes/06-data-subsetting.md:530 +# blockquote, which can be cascaded msgid "> ## Tip: Non-unique names" -msgstr "> ## Tip: Non-unique names" +msgstr "" #: r-novice-gapminder/_episodes/06-data-subsetting.md:531 -msgid "" -">\n" +msgid ">\n" "> You should be aware that it is possible for multiple elements in a\n" "> vector to have the same name. (For a data frame, columns can have\n" "> the same name --- although R tries to avoid this --- but row names\n" @@ -9373,36 +6305,17 @@ msgid "" ">[1] 1 2 3\n" ">~~~" msgstr "" -">\n" -"> You should be aware that it is possible for multiple elements in a\n" -"> vector to have the same name. (For a data frame, columns can have\n" -"> the same name --- although R tries to avoid this --- but row names\n" -"> must be unique.) Consider these examples:\n" -">\n" -">\n" -">~~~\n" -"> x <- 1:3\n" -"> x\n" -">~~~\n" -">{: .language-r}\n" -">\n" -">\n" -">\n" -">~~~\n" -">[1] 1 2 3\n" -">~~~" -# SC/DC Template label #: r-novice-gapminder/_episodes/06-data-subsetting.md:549 #: r-novice-gapminder/_episodes/06-data-subsetting.md:565 #: r-novice-gapminder/_episodes/06-data-subsetting.md:580 #: r-novice-gapminder/_episodes/06-data-subsetting.md:595 +# SC/DC Template label msgid ">{: .output}" -msgstr ">{: .output}" +msgstr "" #: r-novice-gapminder/_episodes/06-data-subsetting.md:550 -msgid "" -">\n" +msgid ">\n" ">\n" ">\n" ">~~~\n" @@ -9418,25 +6331,9 @@ msgid "" ">1 2 3 \n" ">~~~" msgstr "" -">\n" -">\n" -">\n" -">~~~\n" -"> names(x) <- c('a', 'a', 'a')\n" -"> x\n" -">~~~\n" -">{: .language-r}\n" -">\n" -">\n" -">\n" -">~~~\n" -">a a a \n" -">1 2 3 \n" -">~~~" #: r-novice-gapminder/_episodes/06-data-subsetting.md:566 -msgid "" -">\n" +msgid ">\n" ">\n" ">\n" ">~~~\n" @@ -9451,24 +6348,9 @@ msgid "" ">1 \n" ">~~~" msgstr "" -">\n" -">\n" -">\n" -">~~~\n" -"> x['a'] # only returns first value\n" -">~~~\n" -">{: .language-r}\n" -">\n" -">\n" -">\n" -">~~~\n" -">a \n" -">1 \n" -">~~~" #: r-novice-gapminder/_episodes/06-data-subsetting.md:581 -msgid "" -">\n" +msgid ">\n" ">\n" ">\n" ">~~~\n" @@ -9483,233 +6365,160 @@ msgid "" ">1 2 3 \n" ">~~~" msgstr "" -">\n" -">\n" -">\n" -">~~~\n" -"> x[names(x) == 'a'] # returns all three values\n" -">~~~\n" -">{: .language-r}\n" -">\n" -">\n" -">\n" -">~~~\n" -">a a a \n" -">1 2 3 \n" -">~~~" -# blockquote, which can be cascaded #: r-novice-gapminder/_episodes/06-data-subsetting.md:598 +# blockquote, which can be cascaded msgid "> ## Tip: Getting help for operators" -msgstr "> ## Tip: Getting help for operators" +msgstr "" #: r-novice-gapminder/_episodes/06-data-subsetting.md:599 -msgid "" -">\n" +msgid ">\n" "> Remember you can search for help on operators by wrapping them in quotes:\n" "> `help(\"%in%\")` or `?\"%in%\"`.\n" ">" msgstr "" -">\n" -"> Remember you can search for help on operators by wrapping them in quotes:\n" -"> `help(\"%in%\")` or `?\"%in%\"`.\n" -">" -# header #: r-novice-gapminder/_episodes/06-data-subsetting.md:605 +# header msgid "## Skipping named elements" -msgstr "## Skipping named elements" +msgstr "" #: r-novice-gapminder/_episodes/06-data-subsetting.md:607 msgid "Skipping or removing named elements is a little harder. If we try to skip one named element by negating the string, R complains (slightly obscurely) that it doesn't know how to take the negative of a string:" -msgstr "Skipping or removing named elements is a little harder. If we try to skip one named element by negating the string, R complains (slightly obscurely) that it doesn't know how to take the negative of a string:" +msgstr "" -# code block #: r-novice-gapminder/_episodes/06-data-subsetting.md:610 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "x <- c(a=5.4, b=6.2, c=7.1, d=4.8, e=7.5) # we start again by naming a vector 'on the fly'\n" "x[-\"a\"]\n" "~~~" msgstr "" -"~~~\n" -"x <- c(a=5.4, b=6.2, c=7.1, d=4.8, e=7.5) # we start again by naming a vector 'on the fly'\n" -"x[-\"a\"]\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/06-data-subsetting.md:618 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "Error in -\"a\": invalid argument to unary operator\n" "~~~" msgstr "" -"~~~\n" -"Error in -\"a\": invalid argument to unary operator\n" -"~~~" #: r-novice-gapminder/_episodes/06-data-subsetting.md:623 msgid "However, we can use the `!=` (not-equals) operator to construct a logical vector that will do what we want:" -msgstr "However, we can use the `!=` (not-equals) operator to construct a logical vector that will do what we want:" +msgstr "" -# code block #: r-novice-gapminder/_episodes/06-data-subsetting.md:626 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "x[names(x) != \"a\"]\n" "~~~" msgstr "" -"~~~\n" -"x[names(x) != \"a\"]\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/06-data-subsetting.md:633 #: r-novice-gapminder/_episodes/06-data-subsetting.md:657 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" " b c d e \n" "6.2 7.1 4.8 7.5 \n" "~~~" msgstr "" -"~~~\n" -" b c d e \n" -"6.2 7.1 4.8 7.5 \n" -"~~~" #: r-novice-gapminder/_episodes/06-data-subsetting.md:639 msgid "Skipping multiple named indices is a little bit harder still. Suppose we want to drop the `\"a\"` and `\"c\"` elements, so we try this:" -msgstr "Skipping multiple named indices is a little bit harder still. Suppose we want to drop the `\"a\"` and `\"c\"` elements, so we try this:" +msgstr "" -# code block #: r-novice-gapminder/_episodes/06-data-subsetting.md:642 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "x[names(x)!=c(\"a\",\"c\")]\n" "~~~" msgstr "" -"~~~\n" -"x[names(x)!=c(\"a\",\"c\")]\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/06-data-subsetting.md:649 #: r-novice-gapminder/_episodes/06-data-subsetting.md:679 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "Warning in names(x) != c(\"a\", \"c\"): longer object length is not a multiple\n" "of shorter object length\n" "~~~" msgstr "" -"~~~\n" -"Warning in names(x) != c(\"a\", \"c\"): longer object length is not a multiple\n" -"of shorter object length\n" -"~~~" #: r-novice-gapminder/_episodes/06-data-subsetting.md:663 msgid "R did *something*, but it gave us a warning that we ought to pay attention to - and it apparently *gave us the wrong answer* (the `\"c\"` element is still included in the vector)!" -msgstr "R did *something*, but it gave us a warning that we ought to pay attention to - and it apparently *gave us the wrong answer* (the `\"c\"` element is still included in the vector)!" +msgstr "" #: r-novice-gapminder/_episodes/06-data-subsetting.md:665 msgid "So what does `!=` actually do in this case? That's an excellent question." -msgstr "So what does `!=` actually do in this case? That's an excellent question." +msgstr "" -# header #: r-novice-gapminder/_episodes/06-data-subsetting.md:667 +# header msgid "### Recycling" -msgstr "### Recycling" +msgstr "" #: r-novice-gapminder/_episodes/06-data-subsetting.md:669 msgid "Let's take a look at the comparison component of this code:" -msgstr "Let's take a look at the comparison component of this code:" +msgstr "" -# code block #: r-novice-gapminder/_episodes/06-data-subsetting.md:672 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "names(x) != c(\"a\", \"c\")\n" "~~~" msgstr "" -"~~~\n" -"names(x) != c(\"a\", \"c\")\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/06-data-subsetting.md:687 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "[1] FALSE TRUE TRUE TRUE TRUE\n" "~~~" msgstr "" -"~~~\n" -"[1] FALSE TRUE TRUE TRUE TRUE\n" -"~~~" #: r-novice-gapminder/_episodes/06-data-subsetting.md:692 -msgid "" -"Why does R give `FALSE` as the third element of this vector, when `names(x)[3] != \"c\"` is obviously false?\n" +msgid "Why does R give `FALSE` as the third element of this vector, when `names(x)[3] != \"c\"` is obviously false?\n" "When you use `!=`, R tries to compare each element\n" "of the left argument with the corresponding element of its right\n" "argument. What happens when you compare vectors of different lengths?" msgstr "" -"Why does R give `FALSE` as the third element of this vector, when `names(x)[3] != \"c\"` is obviously false?\n" -"When you use `!=`, R tries to compare each element\n" -"of the left argument with the corresponding element of its right\n" -"argument. What happens when you compare vectors of different lengths?" #: r-novice-gapminder/_episodes/06-data-subsetting.md:697 msgid "![Inequality testing](../fig/06-rmd-inequality.1.png)" -msgstr "![Inequality testing](../fig/06-rmd-inequality.1.png)" +msgstr "" #: r-novice-gapminder/_episodes/06-data-subsetting.md:699 msgid "When one vector is shorter than the other, it gets *recycled*:" -msgstr "When one vector is shorter than the other, it gets *recycled*:" +msgstr "" #: r-novice-gapminder/_episodes/06-data-subsetting.md:701 msgid "![Inequality testing: results of recycling](../fig/06-rmd-inequality.2.png)" -msgstr "![Inequality testing: results of recycling](../fig/06-rmd-inequality.2.png)" +msgstr "" #: r-novice-gapminder/_episodes/06-data-subsetting.md:703 -msgid "" -"In this case R **repeats** `c(\"a\", \"c\")` as many times as necessary to match `names(x)`, i.e. we get `c(\"a\",\"c\",\"a\",\"c\",\"a\")`. Since the recycled `\"a\"`\n" +msgid "In this case R **repeats** `c(\"a\", \"c\")` as many times as necessary to match `names(x)`, i.e. we get `c(\"a\",\"c\",\"a\",\"c\",\"a\")`. Since the recycled `\"a\"`\n" "doesn't match the third element of `names(x)`, the value of `!=` is `TRUE`.\n" "Because in this case the longer vector length (5) isn't a multiple of the shorter vector length (2), R printed a warning message. If we had been unlucky and `names(x)` had contained six elements, R would *silently* have done the wrong thing (i.e., not what we intended it to do). This recycling rule can can introduce hard-to-find and subtle bugs!" msgstr "" -"In this case R **repeats** `c(\"a\", \"c\")` as many times as necessary to match `names(x)`, i.e. we get `c(\"a\",\"c\",\"a\",\"c\",\"a\")`. Since the recycled `\"a\"`\n" -"doesn't match the third element of `names(x)`, the value of `!=` is `TRUE`.\n" -"Because in this case the longer vector length (5) isn't a multiple of the shorter vector length (2), R printed a warning message. If we had been unlucky and `names(x)` had contained six elements, R would *silently* have done the wrong thing (i.e., not what we intended it to do). This recycling rule can can introduce hard-to-find and subtle bugs!" #: r-novice-gapminder/_episodes/06-data-subsetting.md:707 msgid "The way to get R to do what we really want (match *each* element of the left argument with *all* of the elements of the right argument) it to use the `%in%` operator. The `%in%` operator goes through each element of its left argument, in this case the names of `x`, and asks, \"Does this element occur in the second argument?\". Here, since we want to *exclude* values, we also need a `!` operator to change \"in\" to \"not in\":" -msgstr "The way to get R to do what we really want (match *each* element of the left argument with *all* of the elements of the right argument) it to use the `%in%` operator. The `%in%` operator goes through each element of its left argument, in this case the names of `x`, and asks, \"Does this element occur in the second argument?\". Here, since we want to *exclude* values, we also need a `!` operator to change \"in\" to \"not in\":" +msgstr "" -# code block #: r-novice-gapminder/_episodes/06-data-subsetting.md:710 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "x[! names(x) %in% c(\"a\",\"c\") ]\n" "~~~" msgstr "" -"~~~\n" -"x[! names(x) %in% c(\"a\",\"c\") ]\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/06-data-subsetting.md:717 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" " b d e \n" "6.2 4.8 7.5 \n" "~~~" msgstr "" -"~~~\n" -" b d e \n" -"6.2 4.8 7.5 \n" -"~~~" #: r-novice-gapminder/_episodes/06-data-subsetting.md:724 -msgid "" -">\n" +msgid ">\n" "> Selecting elements of a vector that match any of a list of components\n" "> is a very common data analysis task. For example, the gapminder data set\n" "> contains `country` and `continent` variables, but no information between\n" @@ -9754,278 +6563,158 @@ msgid "" "> > - The best way to do this problem is `countries %in% seAsia`, which\n" "> > is both correct and easy to type (and read)." msgstr "" -">\n" -"> Selecting elements of a vector that match any of a list of components\n" -"> is a very common data analysis task. For example, the gapminder data set\n" -"> contains `country` and `continent` variables, but no information between\n" -"> these two scales. Suppose we want to pull out information from southeast\n" -"> Asia: how do we set up an operation to produce a logical vector that\n" -"> is `TRUE` for all of the countries in southeast Asia and `FALSE` otherwise?\n" -">\n" -"> Suppose you have these data:\n" -"> \n" -"> ~~~\n" -"> seAsia <- c(\"Myanmar\",\"Thailand\",\"Cambodia\",\"Vietnam\",\"Laos\")\n" -"> ## read in the gapminder data that we downloaded in episode 2\n" -"> gapminder <- read.csv(\"data/gapminder_data.csv\", header=TRUE)\n" -"> ## extract the `country` column from a data frame (we'll see this later);\n" -"> ## convert from a factor to a character;\n" -"> ## and get just the non-repeated elements\n" -"> countries <- unique(as.character(gapminder$country))\n" -"> ~~~\n" -"> {: .language-r}\n" -">\n" -"> There's a wrong way (using only `==`), which will give you a warning;\n" -"> a clunky way (using the logical operators `==` and `|`); and\n" -"> an elegant way (using `%in%`). See whether you can come up with all three\n" -"> and explain how they (don't) work.\n" -"> \n" -"> > ## Solution to challenge 3\n" -"> >\n" -"> > - The **wrong** way to do this problem is `countries==seAsia`. This\n" -"> > gives a warning (`\"In countries == seAsia : longer object length is not a multiple of shorter object length\"`) and the wrong answer (a vector of all\n" -"> > `FALSE` values), because none of the recycled values of `seAsia` happen\n" -"> > to line up correctly with matching values in `country`.\n" -"> > - The **clunky** (but technically correct) way to do this problem is\n" -"> > \n" -"> > ~~~\n" -"> > (countries==\"Myanmar\" | countries==\"Thailand\" |\n" -"> > countries==\"Cambodia\" | countries == \"Vietnam\" | countries==\"Laos\")\n" -"> > ~~~\n" -"> > {: .language-r}\n" -"> > (or `countries==seAsia[1] | countries==seAsia[2] | ...`). This\n" -"> > gives the correct values, but hopefully you can see how awkward it\n" -"> > is (what if we wanted to select countries from a much longer list?).\n" -"> > - The best way to do this problem is `countries %in% seAsia`, which\n" -"> > is both correct and easy to type (and read)." -# header #: r-novice-gapminder/_episodes/06-data-subsetting.md:771 +# header msgid "## Handling special values" -msgstr "## Handling special values" +msgstr "" #: r-novice-gapminder/_episodes/06-data-subsetting.md:773 -msgid "" -"At some point you will encounter functions in R that cannot handle missing, infinite,\n" +msgid "At some point you will encounter functions in R that cannot handle missing, infinite,\n" "or undefined data." msgstr "" -"At some point you will encounter functions in R that cannot handle missing, infinite,\n" -"or undefined data." #: r-novice-gapminder/_episodes/06-data-subsetting.md:776 msgid "There are a number of special functions you can use to filter out this data:" -msgstr "There are a number of special functions you can use to filter out this data:" +msgstr "" -# unordered list #: r-novice-gapminder/_episodes/06-data-subsetting.md:778 +# unordered list msgid " * `is.na` will return all positions in a vector, matrix, or data.frame" -msgstr " * `is.na` will return all positions in a vector, matrix, or data.frame" +msgstr "" #: r-novice-gapminder/_episodes/06-data-subsetting.md:779 -msgid "" -" containing `NA` (or `NaN`)\n" +msgid " containing `NA` (or `NaN`)\n" " * likewise, `is.nan`, and `is.infinite` will do the same for `NaN` and `Inf`.\n" " * `is.finite` will return all positions in a vector, matrix, or data.frame\n" " that do not contain `NA`, `NaN` or `Inf`.\n" " * `na.omit` will filter out all missing values from a vector" msgstr "" -" containing `NA` (or `NaN`)\n" -" * likewise, `is.nan`, and `is.infinite` will do the same for `NaN` and `Inf`.\n" -" * `is.finite` will return all positions in a vector, matrix, or data.frame\n" -" that do not contain `NA`, `NaN` or `Inf`.\n" -" * `na.omit` will filter out all missing values from a vector" -# header #: r-novice-gapminder/_episodes/06-data-subsetting.md:785 +# header msgid "## Factor subsetting" -msgstr "## Factor subsetting" +msgstr "" #: r-novice-gapminder/_episodes/06-data-subsetting.md:787 -msgid "" -"Now that we've explored the different ways to subset vectors, how\n" +msgid "Now that we've explored the different ways to subset vectors, how\n" "do we subset the other data structures?" msgstr "" -"Now that we've explored the different ways to subset vectors, how\n" -"do we subset the other data structures?" #: r-novice-gapminder/_episodes/06-data-subsetting.md:790 msgid "Factor subsetting works the same way as vector subsetting." -msgstr "Factor subsetting works the same way as vector subsetting." +msgstr "" -# code block #: r-novice-gapminder/_episodes/06-data-subsetting.md:793 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "f <- factor(c(\"a\", \"a\", \"b\", \"c\", \"c\", \"d\"))\n" "f[f == \"a\"]\n" "~~~" msgstr "" -"~~~\n" -"f <- factor(c(\"a\", \"a\", \"b\", \"c\", \"c\", \"d\"))\n" -"f[f == \"a\"]\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/06-data-subsetting.md:801 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "[1] a a\n" "Levels: a b c d\n" "~~~" msgstr "" -"~~~\n" -"[1] a a\n" -"Levels: a b c d\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/06-data-subsetting.md:809 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "f[f %in% c(\"b\", \"c\")]\n" "~~~" msgstr "" -"~~~\n" -"f[f %in% c(\"b\", \"c\")]\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/06-data-subsetting.md:816 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "[1] b c c\n" "Levels: a b c d\n" "~~~" msgstr "" -"~~~\n" -"[1] b c c\n" -"Levels: a b c d\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/06-data-subsetting.md:824 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "f[1:3]\n" "~~~" msgstr "" -"~~~\n" -"f[1:3]\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/06-data-subsetting.md:831 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "[1] a a b\n" "Levels: a b c d\n" "~~~" msgstr "" -"~~~\n" -"[1] a a b\n" -"Levels: a b c d\n" -"~~~" #: r-novice-gapminder/_episodes/06-data-subsetting.md:837 -msgid "" -"Skipping elements will not remove the level\n" +msgid "Skipping elements will not remove the level\n" "even if no more of that category exists in the factor:" msgstr "" -"Skipping elements will not remove the level\n" -"even if no more of that category exists in the factor:" -# code block #: r-novice-gapminder/_episodes/06-data-subsetting.md:841 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "f[-3]\n" "~~~" msgstr "" -"~~~\n" -"f[-3]\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/06-data-subsetting.md:848 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "[1] a a c c d\n" "Levels: a b c d\n" "~~~" msgstr "" -"~~~\n" -"[1] a a c c d\n" -"Levels: a b c d\n" -"~~~" -# header #: r-novice-gapminder/_episodes/06-data-subsetting.md:854 +# header msgid "## Matrix subsetting" -msgstr "## Matrix subsetting" +msgstr "" #: r-novice-gapminder/_episodes/06-data-subsetting.md:856 -msgid "" -"Matrices are also subsetted using the `[` function. In this case\n" +msgid "Matrices are also subsetted using the `[` function. In this case\n" "it takes two arguments: the first applying to the rows, the second\n" "to its columns:" msgstr "" -"Matrices are also subsetted using the `[` function. In this case\n" -"it takes two arguments: the first applying to the rows, the second\n" -"to its columns:" -# code block #: r-novice-gapminder/_episodes/06-data-subsetting.md:861 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "set.seed(1)\n" "m <- matrix(rnorm(6*4), ncol=4, nrow=6)\n" "m[3:4, c(3,1)]\n" "~~~" msgstr "" -"~~~\n" -"set.seed(1)\n" -"m <- matrix(rnorm(6*4), ncol=4, nrow=6)\n" -"m[3:4, c(3,1)]\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/06-data-subsetting.md:870 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" " [,1] [,2]\n" "[1,] 1.12493092 -0.8356286\n" "[2,] -0.04493361 1.5952808\n" "~~~" msgstr "" -"~~~\n" -" [,1] [,2]\n" -"[1,] 1.12493092 -0.8356286\n" -"[2,] -0.04493361 1.5952808\n" -"~~~" #: r-novice-gapminder/_episodes/06-data-subsetting.md:877 -msgid "" -"You can leave the first or second arguments blank to retrieve all the\n" +msgid "You can leave the first or second arguments blank to retrieve all the\n" "rows or columns respectively:" msgstr "" -"You can leave the first or second arguments blank to retrieve all the\n" -"rows or columns respectively:" -# code block #: r-novice-gapminder/_episodes/06-data-subsetting.md:881 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "m[, c(3,4)]\n" "~~~" msgstr "" -"~~~\n" -"m[, c(3,4)]\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/06-data-subsetting.md:888 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" " [,1] [,2]\n" "[1,] -0.62124058 0.82122120\n" "[2,] -2.21469989 0.59390132\n" @@ -10035,234 +6724,146 @@ msgid "" "[6,] 0.94383621 -1.98935170\n" "~~~" msgstr "" -"~~~\n" -" [,1] [,2]\n" -"[1,] -0.62124058 0.82122120\n" -"[2,] -2.21469989 0.59390132\n" -"[3,] 1.12493092 0.91897737\n" -"[4,] -0.04493361 0.78213630\n" -"[5,] -0.01619026 0.07456498\n" -"[6,] 0.94383621 -1.98935170\n" -"~~~" #: r-novice-gapminder/_episodes/06-data-subsetting.md:899 -msgid "" -"If we only access one row or column, R will automatically convert the result\n" +msgid "If we only access one row or column, R will automatically convert the result\n" "to a vector:" msgstr "" -"If we only access one row or column, R will automatically convert the result\n" -"to a vector:" -# code block #: r-novice-gapminder/_episodes/06-data-subsetting.md:903 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "m[3,]\n" "~~~" msgstr "" -"~~~\n" -"m[3,]\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/06-data-subsetting.md:910 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "[1] -0.8356286 0.5757814 1.1249309 0.9189774\n" "~~~" msgstr "" -"~~~\n" -"[1] -0.8356286 0.5757814 1.1249309 0.9189774\n" -"~~~" #: r-novice-gapminder/_episodes/06-data-subsetting.md:915 -msgid "" -"If you want to keep the output as a matrix, you need to specify a *third* argument;\n" +msgid "If you want to keep the output as a matrix, you need to specify a *third* argument;\n" "`drop = FALSE`:" msgstr "" -"If you want to keep the output as a matrix, you need to specify a *third* argument;\n" -"`drop = FALSE`:" -# code block #: r-novice-gapminder/_episodes/06-data-subsetting.md:919 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "m[3, , drop=FALSE]\n" "~~~" msgstr "" -"~~~\n" -"m[3, , drop=FALSE]\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/06-data-subsetting.md:926 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" " [,1] [,2] [,3] [,4]\n" "[1,] -0.8356286 0.5757814 1.124931 0.9189774\n" "~~~" msgstr "" -"~~~\n" -" [,1] [,2] [,3] [,4]\n" -"[1,] -0.8356286 0.5757814 1.124931 0.9189774\n" -"~~~" #: r-novice-gapminder/_episodes/06-data-subsetting.md:932 -msgid "" -"Unlike vectors, if we try to access a row or column outside of the matrix,\n" +msgid "Unlike vectors, if we try to access a row or column outside of the matrix,\n" "R will throw an error:" msgstr "" -"Unlike vectors, if we try to access a row or column outside of the matrix,\n" -"R will throw an error:" -# code block #: r-novice-gapminder/_episodes/06-data-subsetting.md:936 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "m[, c(3,6)]\n" "~~~" msgstr "" -"~~~\n" -"m[, c(3,6)]\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/06-data-subsetting.md:943 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "Error in m[, c(3, 6)]: subscript out of bounds\n" "~~~" msgstr "" -"~~~\n" -"Error in m[, c(3, 6)]: subscript out of bounds\n" -"~~~" -# blockquote, which can be cascaded #: r-novice-gapminder/_episodes/06-data-subsetting.md:948 +# blockquote, which can be cascaded msgid "> ## Tip: Higher dimensional arrays" -msgstr "> ## Tip: Higher dimensional arrays" +msgstr "" #: r-novice-gapminder/_episodes/06-data-subsetting.md:949 -msgid "" -">\n" +msgid ">\n" "> when dealing with multi-dimensional arrays, each argument to `[`\n" "> corresponds to a dimension. For example, a 3D array, the first three\n" "> arguments correspond to the rows, columns, and depth dimension.\n" ">" msgstr "" -">\n" -"> when dealing with multi-dimensional arrays, each argument to `[`\n" -"> corresponds to a dimension. For example, a 3D array, the first three\n" -"> arguments correspond to the rows, columns, and depth dimension.\n" -">" #: r-novice-gapminder/_episodes/06-data-subsetting.md:956 -msgid "" -"Because matrices are vectors, we can\n" +msgid "Because matrices are vectors, we can\n" "also subset using only one argument:" msgstr "" -"Because matrices are vectors, we can\n" -"also subset using only one argument:" -# code block #: r-novice-gapminder/_episodes/06-data-subsetting.md:960 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "m[5]\n" "~~~" msgstr "" -"~~~\n" -"m[5]\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/06-data-subsetting.md:967 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "[1] 0.3295078\n" "~~~" msgstr "" -"~~~\n" -"[1] 0.3295078\n" -"~~~" #: r-novice-gapminder/_episodes/06-data-subsetting.md:973 -msgid "" -"This usually isn't useful, and often confusing to read. However it is useful to note that matrices\n" +msgid "This usually isn't useful, and often confusing to read. However it is useful to note that matrices\n" "are laid out in *column-major format* by default. That is the elements of the\n" "vector are arranged column-wise:" msgstr "" -"This usually isn't useful, and often confusing to read. However it is useful to note that matrices\n" -"are laid out in *column-major format* by default. That is the elements of the\n" -"vector are arranged column-wise:" -# code block #: r-novice-gapminder/_episodes/06-data-subsetting.md:978 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "matrix(1:6, nrow=2, ncol=3)\n" "~~~" msgstr "" -"~~~\n" -"matrix(1:6, nrow=2, ncol=3)\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/06-data-subsetting.md:985 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" " [,1] [,2] [,3]\n" "[1,] 1 3 5\n" "[2,] 2 4 6\n" "~~~" msgstr "" -"~~~\n" -" [,1] [,2] [,3]\n" -"[1,] 1 3 5\n" -"[2,] 2 4 6\n" -"~~~" #: r-novice-gapminder/_episodes/06-data-subsetting.md:992 msgid "If you wish to populate the matrix by row, use `byrow=TRUE`:" -msgstr "If you wish to populate the matrix by row, use `byrow=TRUE`:" +msgstr "" -# code block #: r-novice-gapminder/_episodes/06-data-subsetting.md:995 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "matrix(1:6, nrow=2, ncol=3, byrow=TRUE)\n" "~~~" msgstr "" -"~~~\n" -"matrix(1:6, nrow=2, ncol=3, byrow=TRUE)\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/06-data-subsetting.md:1002 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" " [,1] [,2] [,3]\n" "[1,] 1 2 3\n" "[2,] 4 5 6\n" "~~~" msgstr "" -"~~~\n" -" [,1] [,2] [,3]\n" -"[1,] 1 2 3\n" -"[2,] 4 5 6\n" -"~~~" #: r-novice-gapminder/_episodes/06-data-subsetting.md:1009 -msgid "" -"Matrices can also be subsetted using their rownames and column names\n" +msgid "Matrices can also be subsetted using their rownames and column names\n" "instead of their row and column indices." msgstr "" -"Matrices can also be subsetted using their rownames and column names\n" -"instead of their row and column indices." #: r-novice-gapminder/_episodes/06-data-subsetting.md:1013 -msgid "" -">\n" +msgid ">\n" "> Given the following code:\n" ">\n" "> \n" @@ -10281,31 +6882,12 @@ msgid "" "> [3,] 3 6 9 12 15 18\n" "> ~~~" msgstr "" + +#: r-novice-gapminder/_episodes/06-data-subsetting.md:1032 +msgid ">\n" +"> 1. Which of the following commands will extract the values 11 and 14?\n" ">\n" -"> Given the following code:\n" -">\n" -"> \n" -"> ~~~\n" -"> m <- matrix(1:18, nrow=3, ncol=6)\n" -"> print(m)\n" -"> ~~~\n" -"> {: .language-r}\n" -"> \n" -"> \n" -"> \n" -"> ~~~\n" -"> [,1] [,2] [,3] [,4] [,5] [,6]\n" -"> [1,] 1 4 7 10 13 16\n" -"> [2,] 2 5 8 11 14 17\n" -"> [3,] 3 6 9 12 15 18\n" -"> ~~~" - -#: r-novice-gapminder/_episodes/06-data-subsetting.md:1032 -msgid "" -">\n" -"> 1. Which of the following commands will extract the values 11 and 14?\n" -">\n" -"> A. `m[2,4,2,5]`\n" +"> A. `m[2,4,2,5]`\n" ">\n" "> B. `m[2:5]`\n" ">\n" @@ -10317,101 +6899,60 @@ msgid "" "> >\n" "> > D" msgstr "" -">\n" -"> 1. Which of the following commands will extract the values 11 and 14?\n" -">\n" -"> A. `m[2,4,2,5]`\n" -">\n" -"> B. `m[2:5]`\n" -">\n" -"> C. `m[4:5,2]`\n" -">\n" -"> D. `m[2,c(4,5)]`\n" -">\n" -"> > ## Solution to challenge 4\n" -"> >\n" -"> > D" -# header #: r-novice-gapminder/_episodes/06-data-subsetting.md:1050 +# header msgid "## List subsetting" -msgstr "## List subsetting" +msgstr "" #: r-novice-gapminder/_episodes/06-data-subsetting.md:1052 -msgid "" -"Now we'll introduce some new subsetting operators. There are three functions\n" +msgid "Now we'll introduce some new subsetting operators. There are three functions\n" "used to subset lists. We've already seen these when learning about atomic vectors and matrices: `[`, `[[`, and `$`." msgstr "" -"Now we'll introduce some new subsetting operators. There are three functions\n" -"used to subset lists. We've already seen these when learning about atomic vectors and matrices: `[`, `[[`, and `$`." #: r-novice-gapminder/_episodes/06-data-subsetting.md:1055 -msgid "" -"Using `[` will always return a list. If you want to *subset* a list, but not\n" +msgid "Using `[` will always return a list. If you want to *subset* a list, but not\n" "*extract* an element, then you will likely use `[`." msgstr "" -"Using `[` will always return a list. If you want to *subset* a list, but not\n" -"*extract* an element, then you will likely use `[`." -# code block #: r-novice-gapminder/_episodes/06-data-subsetting.md:1059 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "xlist <- list(a = \"Software Carpentry\", b = 1:10, data = head(iris))\n" "xlist[1]\n" "~~~" msgstr "" -"~~~\n" -"xlist <- list(a = \"Software Carpentry\", b = 1:10, data = head(iris))\n" -"xlist[1]\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/06-data-subsetting.md:1067 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "$a\n" "[1] \"Software Carpentry\"\n" "~~~" msgstr "" -"~~~\n" -"$a\n" -"[1] \"Software Carpentry\"\n" -"~~~" #: r-novice-gapminder/_episodes/06-data-subsetting.md:1073 msgid "This returns a *list with one element*." -msgstr "This returns a *list with one element*." +msgstr "" #: r-novice-gapminder/_episodes/06-data-subsetting.md:1075 -msgid "" -"We can subset elements of a list exactly the same way as atomic\n" +msgid "We can subset elements of a list exactly the same way as atomic\n" "vectors using `[`. Comparison operations however won't work as\n" "they're not recursive, they will try to condition on the data structures\n" "in each element of the list, not the individual elements within those\n" "data structures." msgstr "" -"We can subset elements of a list exactly the same way as atomic\n" -"vectors using `[`. Comparison operations however won't work as\n" -"they're not recursive, they will try to condition on the data structures\n" -"in each element of the list, not the individual elements within those\n" -"data structures." -# code block #: r-novice-gapminder/_episodes/06-data-subsetting.md:1082 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "xlist[1:2]\n" "~~~" msgstr "" -"~~~\n" -"xlist[1:2]\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/06-data-subsetting.md:1089 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "$a\n" "[1] \"Software Carpentry\"\n" "\n" @@ -10419,135 +6960,92 @@ msgid "" " [1] 1 2 3 4 5 6 7 8 9 10\n" "~~~" msgstr "" -"~~~\n" -"$a\n" -"[1] \"Software Carpentry\"\n" -"\n" -"$b\n" -" [1] 1 2 3 4 5 6 7 8 9 10\n" -"~~~" #: r-novice-gapminder/_episodes/06-data-subsetting.md:1098 -msgid "" -"To extract individual elements of a list, you need to use the double-square\n" +msgid "To extract individual elements of a list, you need to use the double-square\n" "bracket function: `[[`." msgstr "" -"To extract individual elements of a list, you need to use the double-square\n" -"bracket function: `[[`." -# code block #: r-novice-gapminder/_episodes/06-data-subsetting.md:1102 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "xlist[[1]]\n" "~~~" msgstr "" -"~~~\n" -"xlist[[1]]\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/06-data-subsetting.md:1109 #: r-novice-gapminder/_episodes/06-data-subsetting.md:1156 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "[1] \"Software Carpentry\"\n" "~~~" msgstr "" -"~~~\n" -"[1] \"Software Carpentry\"\n" -"~~~" #: r-novice-gapminder/_episodes/06-data-subsetting.md:1114 msgid "Notice that now the result is a vector, not a list." -msgstr "Notice that now the result is a vector, not a list." +msgstr "" #: r-novice-gapminder/_episodes/06-data-subsetting.md:1116 msgid "You can't extract more than one element at once:" -msgstr "You can't extract more than one element at once:" +msgstr "" -# code block #: r-novice-gapminder/_episodes/06-data-subsetting.md:1119 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "xlist[[1:2]]\n" "~~~" msgstr "" -"~~~\n" -"xlist[[1:2]]\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/06-data-subsetting.md:1126 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "Error in xlist[[1:2]]: subscript out of bounds\n" "~~~" msgstr "" -"~~~\n" -"Error in xlist[[1:2]]: subscript out of bounds\n" -"~~~" #: r-novice-gapminder/_episodes/06-data-subsetting.md:1131 msgid "Nor use it to skip elements:" -msgstr "Nor use it to skip elements:" +msgstr "" -# code block #: r-novice-gapminder/_episodes/06-data-subsetting.md:1134 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "xlist[[-1]]\n" "~~~" msgstr "" -"~~~\n" -"xlist[[-1]]\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/06-data-subsetting.md:1141 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "Error in xlist[[-1]]: attempt to select more than one element in get1index \n" "~~~" msgstr "" -"~~~\n" -"Error in xlist[[-1]]: attempt to select more than one element in get1index \n" -"~~~" #: r-novice-gapminder/_episodes/06-data-subsetting.md:1146 msgid "But you can use names to both subset and extract elements:" -msgstr "But you can use names to both subset and extract elements:" +msgstr "" -# code block #: r-novice-gapminder/_episodes/06-data-subsetting.md:1149 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "xlist[[\"a\"]]\n" "~~~" msgstr "" -"~~~\n" -"xlist[[\"a\"]]\n" -"~~~" #: r-novice-gapminder/_episodes/06-data-subsetting.md:1161 msgid "The `$` function is a shorthand way for extracting elements by name:" -msgstr "The `$` function is a shorthand way for extracting elements by name:" +msgstr "" -# code block #: r-novice-gapminder/_episodes/06-data-subsetting.md:1164 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "xlist$data\n" "~~~" msgstr "" -"~~~\n" -"xlist$data\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/06-data-subsetting.md:1171 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" " Sepal.Length Sepal.Width Petal.Length Petal.Width Species\n" "1 5.1 3.5 1.4 0.2 setosa\n" "2 4.9 3.0 1.4 0.2 setosa\n" @@ -10557,24 +7055,14 @@ msgid "" "6 5.4 3.9 1.7 0.4 setosa\n" "~~~" msgstr "" -"~~~\n" -" Sepal.Length Sepal.Width Petal.Length Petal.Width Species\n" -"1 5.1 3.5 1.4 0.2 setosa\n" -"2 4.9 3.0 1.4 0.2 setosa\n" -"3 4.7 3.2 1.3 0.2 setosa\n" -"4 4.6 3.1 1.5 0.2 setosa\n" -"5 5.0 3.6 1.4 0.2 setosa\n" -"6 5.4 3.9 1.7 0.4 setosa\n" -"~~~" -# blockquote, which can be cascaded #: r-novice-gapminder/_episodes/06-data-subsetting.md:1183 +# blockquote, which can be cascaded msgid "> Given the following list:" -msgstr "> Given the following list:" +msgstr "" #: r-novice-gapminder/_episodes/06-data-subsetting.md:1184 -msgid "" -">\n" +msgid ">\n" "> \n" "> ~~~\n" "> xlist <- list(a = \"Software Carpentry\", b = 1:10, data = head(iris))\n" @@ -10623,63 +7111,14 @@ msgid "" "> > ~~~\n" "> > {: .output}" msgstr "" -">\n" -"> \n" -"> ~~~\n" -"> xlist <- list(a = \"Software Carpentry\", b = 1:10, data = head(iris))\n" -"> ~~~\n" -"> {: .language-r}\n" -">\n" -"> Using your knowledge of both list and vector subsetting, extract the number 2 from xlist.\n" -"> Hint: the number 2 is contained within the \"b\" item in the list.\n" -">\n" -"> > ## Solution to challenge 5\n" -"> >\n" -"> > \n" -"> > ~~~\n" -"> > xlist$b[2]\n" -"> > ~~~\n" -"> > {: .language-r}\n" -"> > \n" -"> > \n" -"> > \n" -"> > ~~~\n" -"> > [1] 2\n" -"> > ~~~\n" -"> > {: .output}\n" -"> > \n" -"> > ~~~\n" -"> > xlist[[2]][2]\n" -"> > ~~~\n" -"> > {: .language-r}\n" -"> > \n" -"> > \n" -"> > \n" -"> > ~~~\n" -"> > [1] 2\n" -"> > ~~~\n" -"> > {: .output}\n" -"> > \n" -"> > ~~~\n" -"> > xlist[[\"b\"]][2]\n" -"> > ~~~\n" -"> > {: .language-r}\n" -"> > \n" -"> > \n" -"> > \n" -"> > ~~~\n" -"> > [1] 2\n" -"> > ~~~\n" -"> > {: .output}" -# blockquote, which can be cascaded #: r-novice-gapminder/_episodes/06-data-subsetting.md:1237 +# blockquote, which can be cascaded msgid "> Given a linear model:" -msgstr "> Given a linear model:" +msgstr "" #: r-novice-gapminder/_episodes/06-data-subsetting.md:1238 -msgid "" -">\n" +msgid ">\n" "> \n" "> ~~~\n" "> mod <- aov(pop ~ lifeExp, data=gapminder)\n" @@ -10701,64 +7140,32 @@ msgid "" "> > ~~~\n" "> > {: .language-r}" msgstr "" -">\n" -"> \n" -"> ~~~\n" -"> mod <- aov(pop ~ lifeExp, data=gapminder)\n" -"> ~~~\n" -"> {: .language-r}\n" -">\n" -"> Extract the residual degrees of freedom (hint: `attributes()` will help you)\n" -">\n" -"> > ## Solution to challenge 6\n" -"> >\n" -"> > \n" -"> > ~~~\n" -"> > attributes(mod) ## `df.residual` is one of the names of `mod`\n" -"> > ~~~\n" -"> > {: .language-r}\n" -"> > \n" -"> > ~~~\n" -"> > mod$df.residual\n" -"> > ~~~\n" -"> > {: .language-r}" -# header #: r-novice-gapminder/_episodes/06-data-subsetting.md:1263 +# header msgid "## Data frames" -msgstr "## Data frames" +msgstr "" #: r-novice-gapminder/_episodes/06-data-subsetting.md:1265 -msgid "" -"Remember the data frames are lists underneath the hood, so similar rules\n" +msgid "Remember the data frames are lists underneath the hood, so similar rules\n" "apply. However they are also two dimensional objects:" msgstr "" -"Remember the data frames are lists underneath the hood, so similar rules\n" -"apply. However they are also two dimensional objects:" #: r-novice-gapminder/_episodes/06-data-subsetting.md:1268 -msgid "" -"`[` with one argument will act the same way as for lists, where each list\n" +msgid "`[` with one argument will act the same way as for lists, where each list\n" "element corresponds to a column. The resulting object will be a data frame:" msgstr "" -"`[` with one argument will act the same way as for lists, where each list\n" -"element corresponds to a column. The resulting object will be a data frame:" -# code block #: r-novice-gapminder/_episodes/06-data-subsetting.md:1272 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "head(gapminder[3])\n" "~~~" msgstr "" -"~~~\n" -"head(gapminder[3])\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/06-data-subsetting.md:1279 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" " pop\n" "1 8425333\n" "2 9240934\n" @@ -10768,143 +7175,91 @@ msgid "" "6 14880372\n" "~~~" msgstr "" -"~~~\n" -" pop\n" -"1 8425333\n" -"2 9240934\n" -"3 10267083\n" -"4 11537966\n" -"5 13079460\n" -"6 14880372\n" -"~~~" #: r-novice-gapminder/_episodes/06-data-subsetting.md:1290 msgid "Similarly, `[[` will act to extract *a single column*:" -msgstr "Similarly, `[[` will act to extract *a single column*:" +msgstr "" -# code block #: r-novice-gapminder/_episodes/06-data-subsetting.md:1293 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "head(gapminder[[\"lifeExp\"]])\n" "~~~" msgstr "" -"~~~\n" -"head(gapminder[[\"lifeExp\"]])\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/06-data-subsetting.md:1300 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "[1] 28.801 30.332 31.997 34.020 36.088 38.438\n" "~~~" msgstr "" -"~~~\n" -"[1] 28.801 30.332 31.997 34.020 36.088 38.438\n" -"~~~" #: r-novice-gapminder/_episodes/06-data-subsetting.md:1305 msgid "And `$` provides a convenient shorthand to extract columns by name:" -msgstr "And `$` provides a convenient shorthand to extract columns by name:" +msgstr "" -# code block #: r-novice-gapminder/_episodes/06-data-subsetting.md:1308 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "head(gapminder$year)\n" "~~~" msgstr "" -"~~~\n" -"head(gapminder$year)\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/06-data-subsetting.md:1315 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "[1] 1952 1957 1962 1967 1972 1977\n" "~~~" msgstr "" -"~~~\n" -"[1] 1952 1957 1962 1967 1972 1977\n" -"~~~" #: r-novice-gapminder/_episodes/06-data-subsetting.md:1320 msgid "With two arguments, `[` behaves the same way as for matrices:" -msgstr "With two arguments, `[` behaves the same way as for matrices:" +msgstr "" -# code block #: r-novice-gapminder/_episodes/06-data-subsetting.md:1323 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "gapminder[1:3,]\n" "~~~" msgstr "" -"~~~\n" -"gapminder[1:3,]\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/06-data-subsetting.md:1330 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" " country year pop continent lifeExp gdpPercap\n" "1 Afghanistan 1952 8425333 Asia 28.801 779.4453\n" "2 Afghanistan 1957 9240934 Asia 30.332 820.8530\n" "3 Afghanistan 1962 10267083 Asia 31.997 853.1007\n" "~~~" msgstr "" -"~~~\n" -" country year pop continent lifeExp gdpPercap\n" -"1 Afghanistan 1952 8425333 Asia 28.801 779.4453\n" -"2 Afghanistan 1957 9240934 Asia 30.332 820.8530\n" -"3 Afghanistan 1962 10267083 Asia 31.997 853.1007\n" -"~~~" #: r-novice-gapminder/_episodes/06-data-subsetting.md:1338 -msgid "" -"If we subset a single row, the result will be a data frame (because\n" +msgid "If we subset a single row, the result will be a data frame (because\n" "the elements are mixed types):" msgstr "" -"If we subset a single row, the result will be a data frame (because\n" -"the elements are mixed types):" -# code block #: r-novice-gapminder/_episodes/06-data-subsetting.md:1342 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "gapminder[3,]\n" "~~~" msgstr "" -"~~~\n" -"gapminder[3,]\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/06-data-subsetting.md:1349 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" " country year pop continent lifeExp gdpPercap\n" "3 Afghanistan 1962 10267083 Asia 31.997 853.1007\n" "~~~" msgstr "" -"~~~\n" -" country year pop continent lifeExp gdpPercap\n" -"3 Afghanistan 1962 10267083 Asia 31.997 853.1007\n" -"~~~" #: r-novice-gapminder/_episodes/06-data-subsetting.md:1355 -msgid "" -"But for a single column the result will be a vector (this can\n" +msgid "But for a single column the result will be a vector (this can\n" "be changed with the third argument, `drop = FALSE`)." msgstr "" -"But for a single column the result will be a vector (this can\n" -"be changed with the third argument, `drop = FALSE`)." #: r-novice-gapminder/_episodes/06-data-subsetting.md:1359 -msgid "" -">\n" +msgid ">\n" "> Fix each of the following common data frame subsetting errors:\n" ">\n" "> 1. Extract observations collected for the year 1957\n" @@ -11001,111 +7356,14 @@ msgid "" "> > ~~~\n" "> > {: .language-r}" msgstr "" -">\n" -"> Fix each of the following common data frame subsetting errors:\n" -">\n" -"> 1. Extract observations collected for the year 1957\n" -">\n" -"> \n" -"> ~~~\n" -"> gapminder[gapminder$year = 1957,]\n" -"> ~~~\n" -"> {: .language-r}\n" -">\n" -"> 2. Extract all columns except 1 through to 4\n" -">\n" -"> \n" -"> ~~~\n" -"> gapminder[,-1:4]\n" -"> ~~~\n" -"> {: .language-r}\n" -">\n" -"> 3. Extract the rows where the life expectancy is longer the 80 years\n" -">\n" -"> \n" -"> ~~~\n" -"> gapminder[gapminder$lifeExp > 80]\n" -"> ~~~\n" -"> {: .language-r}\n" -">\n" -"> 4. Extract the first row, and the fourth and fifth columns\n" -"> (`lifeExp` and `gdpPercap`).\n" -">\n" -"> \n" -"> ~~~\n" -"> gapminder[1, 4, 5]\n" -"> ~~~\n" -"> {: .language-r}\n" -">\n" -"> 5. Advanced: extract rows that contain information for the years 2002\n" -"> and 2007\n" -">\n" -"> \n" -"> ~~~\n" -"> gapminder[gapminder$year == 2002 | 2007,]\n" -"> ~~~\n" -"> {: .language-r}\n" -">\n" -"> > ## Solution to challenge 7\n" -"> >\n" -"> > Fix each of the following common data frame subsetting errors:\n" -"> >\n" -"> > 1. Extract observations collected for the year 1957\n" -"> >\n" -"> > \n" -"> > ~~~\n" -"> > # gapminder[gapminder$year = 1957,]\n" -"> > gapminder[gapminder$year == 1957,]\n" -"> > ~~~\n" -"> > {: .language-r}\n" -"> >\n" -"> > 2. Extract all columns except 1 through to 4\n" -"> >\n" -"> > \n" -"> > ~~~\n" -"> > # gapminder[,-1:4]\n" -"> > gapminder[,-c(1:4)]\n" -"> > ~~~\n" -"> > {: .language-r}\n" -"> >\n" -"> > 3. Extract the rows where the life expectancy is longer the 80 years\n" -"> >\n" -"> > \n" -"> > ~~~\n" -"> > # gapminder[gapminder$lifeExp > 80]\n" -"> > gapminder[gapminder$lifeExp > 80,]\n" -"> > ~~~\n" -"> > {: .language-r}\n" -"> >\n" -"> > 4. Extract the first row, and the fourth and fifth columns\n" -"> > (`lifeExp` and `gdpPercap`).\n" -"> >\n" -"> > \n" -"> > ~~~\n" -"> > # gapminder[1, 4, 5]\n" -"> > gapminder[1, c(4, 5)]\n" -"> > ~~~\n" -"> > {: .language-r}\n" -"> >\n" -"> > 5. Advanced: extract rows that contain information for the years 2002\n" -"> > and 2007\n" -"> >\n" -"> > \n" -"> > ~~~\n" -"> > # gapminder[gapminder$year == 2002 | 2007,]\n" -"> > gapminder[gapminder$year == 2002 | gapminder$year == 2007,]\n" -"> > gapminder[gapminder$year %in% c(2002, 2007),]\n" -"> > ~~~\n" -"> > {: .language-r}" -# blockquote, which can be cascaded #: r-novice-gapminder/_episodes/06-data-subsetting.md:1458 +# blockquote, which can be cascaded msgid "> ## Challenge 8" -msgstr "> ## Challenge 8" +msgstr "" #: r-novice-gapminder/_episodes/06-data-subsetting.md:1459 -msgid "" -">\n" +msgid ">\n" "> 1. Why does `gapminder[1:20]` return an error? How does it differ from `gapminder[1:20, ]`?\n" ">\n" ">\n" @@ -11124,29 +7382,10 @@ msgid "" "> > ~~~\n" "> > {: .language-r}" msgstr "" -">\n" -"> 1. Why does `gapminder[1:20]` return an error? How does it differ from `gapminder[1:20, ]`?\n" -">\n" -">\n" -"> 2. Create a new `data.frame` called `gapminder_small` that only contains rows 1 through 9\n" -"> and 19 through 23. You can do this in one or two steps.\n" -">\n" -"> > ## Solution to challenge 8\n" -"> >\n" -"> > 1. `gapminder` is a data.frame so needs to be subsetted on two dimensions. `gapminder[1:20, ]` subsets the data to give the first 20 rows and all columns.\n" -"> >\n" -"> > 2. \n" -"> >\n" -"> > \n" -"> > ~~~\n" -"> > gapminder_small <- gapminder[c(1:9, 19:23),]\n" -"> > ~~~\n" -"> > {: .language-r}" -# Front Matter #: r-novice-gapminder/_episodes/07-control-flow.md:1 -msgid "" -"---\n" +# Front Matter +msgid "---\n" "# Please do not edit this file directly; it is auto generated.\n" "# Instead, please edit 07-control-flow.md in _episodes_rmd/\n" "title: Control Flow\n" @@ -11164,46 +7403,21 @@ msgid "" "source: Rmd\n" "---" msgstr "" -"---\n" -"# Please do not edit this file directly; it is auto generated.\n" -"# Instead, please edit 07-control-flow.md in _episodes_rmd/\n" -"title: Control Flow\n" -"teaching: 45\n" -"exercises: 20\n" -"questions:\n" -"- \"How can I make data-dependent choices in R?\"\n" -"- \"How can I repeat operations in R?\"\n" -"objectives:\n" -"- \"Write conditional statements with `if()` and `else()`.\"\n" -"- \"Write and understand `for()` loops.\"\n" -"keypoints:\n" -"- \"Use `if` and `else` to make choices.\"\n" -"- \"Use `for` to repeat operations.\"\n" -"source: Rmd\n" -"---" #: r-novice-gapminder/_episodes/07-control-flow.md:21 -msgid "" -"Often when we're coding we want to control the flow of our actions. This can be done\n" +msgid "Often when we're coding we want to control the flow of our actions. This can be done\n" "by setting actions to occur only if a condition or a set of conditions are met.\n" "Alternatively, we can also set an action to occur a particular number of times." msgstr "" -"Often when we're coding we want to control the flow of our actions. This can be done\n" -"by setting actions to occur only if a condition or a set of conditions are met.\n" -"Alternatively, we can also set an action to occur a particular number of times." #: r-novice-gapminder/_episodes/07-control-flow.md:25 -msgid "" -"There are several ways you can control flow in R.\n" +msgid "There are several ways you can control flow in R.\n" "For conditional statements, the most commonly used approaches are the constructs:" msgstr "" -"There are several ways you can control flow in R.\n" -"For conditional statements, the most commonly used approaches are the constructs:" -# code block #: r-novice-gapminder/_episodes/07-control-flow.md:29 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "# if\n" "if (condition is true) {\n" " perform action\n" @@ -11217,28 +7431,14 @@ msgid "" "}\n" "~~~" msgstr "" -"~~~\n" -"# if\n" -"if (condition is true) {\n" -" perform action\n" -"}\n" -"\n" -"# if ... else\n" -"if (condition is true) {\n" -" perform action\n" -"} else { # that is, if the condition is false,\n" -" perform alternative action\n" -"}\n" -"~~~" #: r-novice-gapminder/_episodes/07-control-flow.md:44 msgid "Say, for example, that we want R to print a message if a variable `x` has a particular value:" -msgstr "Say, for example, that we want R to print a message if a variable `x` has a particular value:" +msgstr "" -# code block #: r-novice-gapminder/_episodes/07-control-flow.md:47 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "x <- 8\n" "\n" "if (x >= 10) {\n" @@ -11248,35 +7448,21 @@ msgid "" "x\n" "~~~" msgstr "" -"~~~\n" -"x <- 8\n" -"\n" -"if (x >= 10) {\n" -" print(\"x is greater than or equal to 10\")\n" -"}\n" -"\n" -"x\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/07-control-flow.md:60 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "[1] 8\n" "~~~" msgstr "" -"~~~\n" -"[1] 8\n" -"~~~" #: r-novice-gapminder/_episodes/07-control-flow.md:65 msgid "The print statement does not appear in the console because x is not greater than 10. To print a different message for numbers less than 10, we can add an `else` statement." -msgstr "The print statement does not appear in the console because x is not greater than 10. To print a different message for numbers less than 10, we can add an `else` statement." +msgstr "" -# code block #: r-novice-gapminder/_episodes/07-control-flow.md:68 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "x <- 8\n" "\n" "if (x >= 10) {\n" @@ -11286,35 +7472,21 @@ msgid "" "}\n" "~~~" msgstr "" -"~~~\n" -"x <- 8\n" -"\n" -"if (x >= 10) {\n" -" print(\"x is greater than or equal to 10\")\n" -"} else {\n" -" print(\"x is less than 10\")\n" -"}\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/07-control-flow.md:81 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "[1] \"x is less than 10\"\n" "~~~" msgstr "" -"~~~\n" -"[1] \"x is less than 10\"\n" -"~~~" #: r-novice-gapminder/_episodes/07-control-flow.md:86 msgid "You can also test multiple conditions by using `else if`." -msgstr "You can also test multiple conditions by using `else if`." +msgstr "" -# code block #: r-novice-gapminder/_episodes/07-control-flow.md:89 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "x <- 8\n" "\n" "if (x >= 10) {\n" @@ -11326,43 +7498,23 @@ msgid "" "}\n" "~~~" msgstr "" -"~~~\n" -"x <- 8\n" -"\n" -"if (x >= 10) {\n" -" print(\"x is greater than or equal to 10\")\n" -"} else if (x > 5) {\n" -" print(\"x is greater than 5, but less than 10\")\n" -"} else {\n" -" print(\"x is less than 5\")\n" -"}\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/07-control-flow.md:104 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "[1] \"x is greater than 5, but less than 10\"\n" "~~~" msgstr "" -"~~~\n" -"[1] \"x is greater than 5, but less than 10\"\n" -"~~~" #: r-novice-gapminder/_episodes/07-control-flow.md:109 -msgid "" -"**Important:** when R evaluates the condition inside `if()` statements, it is\n" +msgid "**Important:** when R evaluates the condition inside `if()` statements, it is\n" "looking for a logical element, i.e., `TRUE` or `FALSE`. This can cause some\n" "headaches for beginners. For example:" msgstr "" -"**Important:** when R evaluates the condition inside `if()` statements, it is\n" -"looking for a logical element, i.e., `TRUE` or `FALSE`. This can cause some\n" -"headaches for beginners. For example:" -# code block #: r-novice-gapminder/_episodes/07-control-flow.md:114 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "x <- 4 == 3\n" "if (x) {\n" " \"4 equals 3\"\n" @@ -11371,57 +7523,35 @@ msgid "" "}\n" "~~~" msgstr "" -"~~~\n" -"x <- 4 == 3\n" -"if (x) {\n" -" \"4 equals 3\"\n" -"} else {\n" -" \"4 does not equal 3\" \n" -"}\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/07-control-flow.md:126 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "[1] \"4 does not equal 3\"\n" "~~~" msgstr "" -"~~~\n" -"[1] \"4 does not equal 3\"\n" -"~~~" #: r-novice-gapminder/_episodes/07-control-flow.md:131 msgid "As we can see, the not equal message was printed because the vector x is `FALSE`" -msgstr "As we can see, the not equal message was printed because the vector x is `FALSE`" +msgstr "" -# code block #: r-novice-gapminder/_episodes/07-control-flow.md:134 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "x <- 4 == 3\n" "x\n" "~~~" msgstr "" -"~~~\n" -"x <- 4 == 3\n" -"x\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/07-control-flow.md:142 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "[1] FALSE\n" "~~~" msgstr "" -"~~~\n" -"[1] FALSE\n" -"~~~" #: r-novice-gapminder/_episodes/07-control-flow.md:148 -msgid "" -">\n" +msgid ">\n" "> Use an `if()` statement to print a suitable message\n" "> reporting whether there are any records from 2002 in\n" "> the `gapminder` dataset.\n" @@ -11466,107 +7596,46 @@ msgid "" "> > {: .language-r}\n" "> >" msgstr "" -">\n" -"> Use an `if()` statement to print a suitable message\n" -"> reporting whether there are any records from 2002 in\n" -"> the `gapminder` dataset.\n" -"> Now do the same for 2012.\n" -">\n" -"> > ## Solution to Challenge 1\n" -"> > We will first see a solution to Challenge 1 which does not use the `any()` function.\n" -"> > We first obtain a logical vector describing which element of `gapminder$year` is equal to `2002`:\n" -"> > \n" -"> > ~~~\n" -"> > gapminder[(gapminder$year == 2002),]\n" -"> > ~~~\n" -"> > {: .language-r}\n" -"> > Then, we count the number of rows of the data.frame `gapminder` that correspond to the 2002:\n" -"> > \n" -"> > ~~~\n" -"> > rows2002_number <- nrow(gapminder[(gapminder$year == 2002),])\n" -"> > ~~~\n" -"> > {: .language-r}\n" -"> > The presence of any record for the year 2002 is equivalent to the request that `rows2002_number` is one or more:\n" -"> > \n" -"> > ~~~\n" -"> > rows2002_number >= 1\n" -"> > ~~~\n" -"> > {: .language-r}\n" -"> > Putting all together, we obtain:\n" -"> > \n" -"> > ~~~\n" -"> > if(nrow(gapminder[(gapminder$year == 2002),]) >= 1){\n" -"> > print(\"Record(s) for the year 2002 found.\")\n" -"> > }\n" -"> > ~~~\n" -"> > {: .language-r}\n" -"> >\n" -"> > All this can be done more quickly with `any()`. The logical condition can be expressed as:\n" -"> > \n" -"> > ~~~\n" -"> > if(any(gapminder$year == 2002)){\n" -"> > print(\"Record(s) for the year 2002 found.\")\n" -"> > }\n" -"> > ~~~\n" -"> > {: .language-r}\n" -"> >" #: r-novice-gapminder/_episodes/07-control-flow.md:196 msgid "Did anyone get a warning message like this?" -msgstr "Did anyone get a warning message like this?" +msgstr "" -# code block #: r-novice-gapminder/_episodes/07-control-flow.md:199 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "Warning in if (gapminder$year == 2012) {: the condition has length > 1 and\n" "only the first element will be used\n" "~~~" msgstr "" -"~~~\n" -"Warning in if (gapminder$year == 2012) {: the condition has length > 1 and\n" -"only the first element will be used\n" -"~~~" #: r-novice-gapminder/_episodes/07-control-flow.md:205 -msgid "" -"If your condition evaluates to a vector with more than one logical element,\n" +msgid "If your condition evaluates to a vector with more than one logical element,\n" "the function `if()` will still run, but will only evaluate the condition in the first\n" "element. Here you need to make sure your condition is of length 1." msgstr "" -"If your condition evaluates to a vector with more than one logical element,\n" -"the function `if()` will still run, but will only evaluate the condition in the first\n" -"element. Here you need to make sure your condition is of length 1." -# blockquote, which can be cascaded #: r-novice-gapminder/_episodes/07-control-flow.md:209 +# blockquote, which can be cascaded msgid "> ## Tip: `any()` and `all()`" -msgstr "> ## Tip: `any()` and `all()`" +msgstr "" #: r-novice-gapminder/_episodes/07-control-flow.md:210 -msgid "" -">\n" +msgid ">\n" "> The `any()` function will return TRUE if at least one\n" "> TRUE value is found within a vector, otherwise it will return `FALSE`.\n" "> This can be used in a similar way to the `%in%` operator.\n" "> The function `all()`, as the name suggests, will only return `TRUE` if all values in\n" "> the vector are `TRUE`." msgstr "" -">\n" -"> The `any()` function will return TRUE if at least one\n" -"> TRUE value is found within a vector, otherwise it will return `FALSE`.\n" -"> This can be used in a similar way to the `%in%` operator.\n" -"> The function `all()`, as the name suggests, will only return `TRUE` if all values in\n" -"> the vector are `TRUE`." -# header #: r-novice-gapminder/_episodes/07-control-flow.md:218 +# header msgid "## Repeating operations" -msgstr "## Repeating operations" +msgstr "" #: r-novice-gapminder/_episodes/07-control-flow.md:220 -msgid "" -"If you want to iterate over\n" +msgid "If you want to iterate over\n" "a set of values, when the order of iteration is important, and perform the\n" "same operation on each, a `for()` loop will do the job.\n" "We saw `for()` loops in the shell lessons earlier. This is the most\n" @@ -11574,56 +7643,36 @@ msgid "" "correctly. Avoid using `for()` loops unless the order of iteration is important:\n" "i.e. the calculation at each iteration depends on the results of previous iterations." msgstr "" -"If you want to iterate over\n" -"a set of values, when the order of iteration is important, and perform the\n" -"same operation on each, a `for()` loop will do the job.\n" -"We saw `for()` loops in the shell lessons earlier. This is the most\n" -"flexible of looping operations, but therefore also the hardest to use\n" -"correctly. Avoid using `for()` loops unless the order of iteration is important:\n" -"i.e. the calculation at each iteration depends on the results of previous iterations." #: r-novice-gapminder/_episodes/07-control-flow.md:228 msgid "The basic structure of a `for()` loop is:" -msgstr "The basic structure of a `for()` loop is:" +msgstr "" -# code block #: r-novice-gapminder/_episodes/07-control-flow.md:231 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "for(iterator in set of values){\n" " do a thing\n" "}\n" "~~~" msgstr "" -"~~~\n" -"for(iterator in set of values){\n" -" do a thing\n" -"}\n" -"~~~" #: r-novice-gapminder/_episodes/07-control-flow.md:238 msgid "For example:" -msgstr "For example:" +msgstr "" -# code block #: r-novice-gapminder/_episodes/07-control-flow.md:241 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "for(i in 1:10){\n" " print(i)\n" "}\n" "~~~" msgstr "" -"~~~\n" -"for(i in 1:10){\n" -" print(i)\n" -"}\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/07-control-flow.md:250 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "[1] 1\n" "[1] 2\n" "[1] 3\n" @@ -11636,39 +7685,20 @@ msgid "" "[1] 10\n" "~~~" msgstr "" -"~~~\n" -"[1] 1\n" -"[1] 2\n" -"[1] 3\n" -"[1] 4\n" -"[1] 5\n" -"[1] 6\n" -"[1] 7\n" -"[1] 8\n" -"[1] 9\n" -"[1] 10\n" -"~~~" #: r-novice-gapminder/_episodes/07-control-flow.md:264 -msgid "" -"The `1:10` bit creates a vector on the fly; you can iterate\n" +msgid "The `1:10` bit creates a vector on the fly; you can iterate\n" "over any other vector as well." msgstr "" -"The `1:10` bit creates a vector on the fly; you can iterate\n" -"over any other vector as well." #: r-novice-gapminder/_episodes/07-control-flow.md:267 -msgid "" -"We can use a `for()` loop nested within another `for()` loop to iterate over two things at\n" +msgid "We can use a `for()` loop nested within another `for()` loop to iterate over two things at\n" "once." msgstr "" -"We can use a `for()` loop nested within another `for()` loop to iterate over two things at\n" -"once." -# code block #: r-novice-gapminder/_episodes/07-control-flow.md:271 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "for(i in 1:5){\n" " for(j in c('a', 'b', 'c', 'd', 'e')){\n" " print(paste(i,j))\n" @@ -11676,18 +7706,10 @@ msgid "" "}\n" "~~~" msgstr "" -"~~~\n" -"for(i in 1:5){\n" -" for(j in c('a', 'b', 'c', 'd', 'e')){\n" -" print(paste(i,j))\n" -" }\n" -"}\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/07-control-flow.md:282 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "[1] \"1 a\"\n" "[1] \"1 b\"\n" "[1] \"1 c\"\n" @@ -11715,42 +7737,14 @@ msgid "" "[1] \"5 e\"\n" "~~~" msgstr "" -"~~~\n" -"[1] \"1 a\"\n" -"[1] \"1 b\"\n" -"[1] \"1 c\"\n" -"[1] \"1 d\"\n" -"[1] \"1 e\"\n" -"[1] \"2 a\"\n" -"[1] \"2 b\"\n" -"[1] \"2 c\"\n" -"[1] \"2 d\"\n" -"[1] \"2 e\"\n" -"[1] \"3 a\"\n" -"[1] \"3 b\"\n" -"[1] \"3 c\"\n" -"[1] \"3 d\"\n" -"[1] \"3 e\"\n" -"[1] \"4 a\"\n" -"[1] \"4 b\"\n" -"[1] \"4 c\"\n" -"[1] \"4 d\"\n" -"[1] \"4 e\"\n" -"[1] \"5 a\"\n" -"[1] \"5 b\"\n" -"[1] \"5 c\"\n" -"[1] \"5 d\"\n" -"[1] \"5 e\"\n" -"~~~" #: r-novice-gapminder/_episodes/07-control-flow.md:311 msgid "Rather than printing the results, we could write the loop output to a new object." -msgstr "Rather than printing the results, we could write the loop output to a new object." +msgstr "" -# code block #: r-novice-gapminder/_episodes/07-control-flow.md:314 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "output_vector <- c()\n" "for(i in 1:5){\n" " for(j in c('a', 'b', 'c', 'd', 'e')){\n" @@ -11761,50 +7755,29 @@ msgid "" "output_vector\n" "~~~" msgstr "" -"~~~\n" -"output_vector <- c()\n" -"for(i in 1:5){\n" -" for(j in c('a', 'b', 'c', 'd', 'e')){\n" -" temp_output <- paste(i, j)\n" -" output_vector <- c(output_vector, temp_output)\n" -" }\n" -"}\n" -"output_vector\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/07-control-flow.md:328 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" " [1] \"1 a\" \"1 b\" \"1 c\" \"1 d\" \"1 e\" \"2 a\" \"2 b\" \"2 c\" \"2 d\" \"2 e\" \"3 a\"\n" "[12] \"3 b\" \"3 c\" \"3 d\" \"3 e\" \"4 a\" \"4 b\" \"4 c\" \"4 d\" \"4 e\" \"5 a\" \"5 b\"\n" "[23] \"5 c\" \"5 d\" \"5 e\"\n" "~~~" msgstr "" -"~~~\n" -" [1] \"1 a\" \"1 b\" \"1 c\" \"1 d\" \"1 e\" \"2 a\" \"2 b\" \"2 c\" \"2 d\" \"2 e\" \"3 a\"\n" -"[12] \"3 b\" \"3 c\" \"3 d\" \"3 e\" \"4 a\" \"4 b\" \"4 c\" \"4 d\" \"4 e\" \"5 a\" \"5 b\"\n" -"[23] \"5 c\" \"5 d\" \"5 e\"\n" -"~~~" #: r-novice-gapminder/_episodes/07-control-flow.md:335 -msgid "" -"This approach can be useful, but 'growing your results' (building\n" +msgid "This approach can be useful, but 'growing your results' (building\n" "the result object incrementally) is computationally inefficient, so avoid\n" "it when you are iterating through a lot of values." msgstr "" -"This approach can be useful, but 'growing your results' (building\n" -"the result object incrementally) is computationally inefficient, so avoid\n" -"it when you are iterating through a lot of values." -# blockquote, which can be cascaded #: r-novice-gapminder/_episodes/07-control-flow.md:339 +# blockquote, which can be cascaded msgid "> ## Tip: don't grow your results" -msgstr "> ## Tip: don't grow your results" +msgstr "" #: r-novice-gapminder/_episodes/07-control-flow.md:340 -msgid "" -">\n" +msgid ">\n" "> One of the biggest things that trips up novices and\n" "> experienced R users alike, is building a results object\n" "> (vector, list, matrix, data frame) as your for loop progresses.\n" @@ -11815,29 +7788,15 @@ msgid "" "> create an empty matrix with 5 row and 5 columns, then at each iteration\n" "> store the results in the appropriate location." msgstr "" -">\n" -"> One of the biggest things that trips up novices and\n" -"> experienced R users alike, is building a results object\n" -"> (vector, list, matrix, data frame) as your for loop progresses.\n" -"> Computers are very bad at handling this, so your calculations\n" -"> can very quickly slow to a crawl. It's much better to define\n" -"> an empty results object before hand of the appropriate dimensions.\n" -"> So if you know the end result will be stored in a matrix like above,\n" -"> create an empty matrix with 5 row and 5 columns, then at each iteration\n" -"> store the results in the appropriate location." #: r-novice-gapminder/_episodes/07-control-flow.md:352 -msgid "" -"A better way is to define your (empty) output object before filling in the values.\n" +msgid "A better way is to define your (empty) output object before filling in the values.\n" "For this example, it looks more involved, but is still more efficient." msgstr "" -"A better way is to define your (empty) output object before filling in the values.\n" -"For this example, it looks more involved, but is still more efficient." -# code block #: r-novice-gapminder/_episodes/07-control-flow.md:356 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "output_matrix <- matrix(nrow=5, ncol=5)\n" "j_vector <- c('a', 'b', 'c', 'd', 'e')\n" "for(i in 1:5){\n" @@ -11851,43 +7810,23 @@ msgid "" "output_vector2\n" "~~~" msgstr "" -"~~~\n" -"output_matrix <- matrix(nrow=5, ncol=5)\n" -"j_vector <- c('a', 'b', 'c', 'd', 'e')\n" -"for(i in 1:5){\n" -" for(j in 1:5){\n" -" temp_j_value <- j_vector[j]\n" -" temp_output <- paste(i, temp_j_value)\n" -" output_matrix[i, j] <- temp_output\n" -" }\n" -"}\n" -"output_vector2 <- as.vector(output_matrix)\n" -"output_vector2\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/07-control-flow.md:373 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" " [1] \"1 a\" \"2 a\" \"3 a\" \"4 a\" \"5 a\" \"1 b\" \"2 b\" \"3 b\" \"4 b\" \"5 b\" \"1 c\"\n" "[12] \"2 c\" \"3 c\" \"4 c\" \"5 c\" \"1 d\" \"2 d\" \"3 d\" \"4 d\" \"5 d\" \"1 e\" \"2 e\"\n" "[23] \"3 e\" \"4 e\" \"5 e\"\n" "~~~" msgstr "" -"~~~\n" -" [1] \"1 a\" \"2 a\" \"3 a\" \"4 a\" \"5 a\" \"1 b\" \"2 b\" \"3 b\" \"4 b\" \"5 b\" \"1 c\"\n" -"[12] \"2 c\" \"3 c\" \"4 c\" \"5 c\" \"1 d\" \"2 d\" \"3 d\" \"4 d\" \"5 d\" \"1 e\" \"2 e\"\n" -"[23] \"3 e\" \"4 e\" \"5 e\"\n" -"~~~" -# blockquote, which can be cascaded #: r-novice-gapminder/_episodes/07-control-flow.md:380 +# blockquote, which can be cascaded msgid "> ## Tip: While loops" -msgstr "> ## Tip: While loops" +msgstr "" #: r-novice-gapminder/_episodes/07-control-flow.md:381 -msgid "" -">\n" +msgid ">\n" ">\n" "> Sometimes you will find yourself needing to repeat an operation until a certain\n" "> condition is met. You can do this with a `while()` loop.\n" @@ -11912,53 +7851,24 @@ msgid "" "> }\n" "> ~~~" msgstr "" -">\n" -">\n" -"> Sometimes you will find yourself needing to repeat an operation until a certain\n" -"> condition is met. You can do this with a `while()` loop.\n" -">\n" -"> \n" -"> ~~~\n" -"> while(this condition is true){\n" -"> do a thing\n" -"> }\n" -"> ~~~\n" -"> {: .language-r}\n" -">\n" -"> As an example, here's a while loop\n" -"> that generates random numbers from a uniform distribution (the `runif()` function)\n" -"> between 0 and 1 until it gets one that's less than 0.1.\n" -">\n" -"> ~~~\n" -"> z <- 1\n" -"> while(z > 0.1){\n" -"> z <- runif(1)\n" -"> print(z)\n" -"> }\n" -"> ~~~" - -# SC/DC Template label -#: r-novice-gapminder/_episodes/07-control-flow.md:405 -msgid "> {: .r}" -msgstr "> {: .r}" - -#: r-novice-gapminder/_episodes/07-control-flow.md:406 -msgid "" -">\n" -"> `while()` loops will not always be appropriate. You have to be particularly careful\n" -"> that you don't end up in an infinite loop because your condition is never met." -msgstr "" -">\n" -"> `while()` loops will not always be appropriate. You have to be particularly careful\n" -"> that you don't end up in an infinite loop because your condition is never met." - -#: r-novice-gapminder/_episodes/07-control-flow.md:413 -msgid "" -">\n" -"> Compare the objects output_vector and\n" -"> output_vector2. Are they the same? If not, why not?\n" -"> How would you change the last block of code to make output_vector2\n" -"> the same as output_vector?\n" + +#: r-novice-gapminder/_episodes/07-control-flow.md:405 +# SC/DC Template label +msgid "> {: .r}" +msgstr "" + +#: r-novice-gapminder/_episodes/07-control-flow.md:406 +msgid ">\n" +"> `while()` loops will not always be appropriate. You have to be particularly careful\n" +"> that you don't end up in an infinite loop because your condition is never met." +msgstr "" + +#: r-novice-gapminder/_episodes/07-control-flow.md:413 +msgid ">\n" +"> Compare the objects output_vector and\n" +"> output_vector2. Are they the same? If not, why not?\n" +"> How would you change the last block of code to make output_vector2\n" +"> the same as output_vector?\n" ">\n" "> > ## Solution to Challenge 2\n" "> > We can check whether the two vectors are identical using the `all()` function:\n" @@ -12009,64 +7919,9 @@ msgid "" "> > ~~~\n" "> > {: .language-r}" msgstr "" -">\n" -"> Compare the objects output_vector and\n" -"> output_vector2. Are they the same? If not, why not?\n" -"> How would you change the last block of code to make output_vector2\n" -"> the same as output_vector?\n" -">\n" -"> > ## Solution to Challenge 2\n" -"> > We can check whether the two vectors are identical using the `all()` function:\n" -"> > \n" -"> > ~~~\n" -"> > all(output_vector == output_vector2)\n" -"> > ~~~\n" -"> > {: .language-r}\n" -"> > However, all the elements of `output_vector` can be found in `output_vector2`:\n" -"> > \n" -"> > ~~~\n" -"> > all(output_vector %in% output_vector2)\n" -"> > ~~~\n" -"> > {: .language-r}\n" -"> > and vice versa:\n" -"> > \n" -"> > ~~~\n" -"> > all(output_vector2 %in% output_vector)\n" -"> > ~~~\n" -"> > {: .language-r}\n" -"> > therefore, the element in `output_vector` and `output_vector2` are just sorted in a different order.\n" -"> > This is because `as.vector()` outputs the elements of an input matrix going over its column.\n" -"> > Taking a look at `output_matrix`, we can notice that we want its elements by rows.\n" -"> > The solution is to transpose the `output_matrix`. We can do it either by calling the transpose function\n" -"> > `t()` or by inputing the elements in the right order.\n" -"> > The first solution requires to change the original\n" -"> > \n" -"> > ~~~\n" -"> > output_vector2 <- as.vector(output_matrix)\n" -"> > ~~~\n" -"> > {: .language-r}\n" -"> > into\n" -"> > \n" -"> > ~~~\n" -"> > output_vector2 <- as.vector(t(output_matrix))\n" -"> > ~~~\n" -"> > {: .language-r}\n" -"> > The second solution requires to change\n" -"> > \n" -"> > ~~~\n" -"> > output_matrix[i, j] <- temp_output\n" -"> > ~~~\n" -"> > {: .language-r}\n" -"> > into\n" -"> > \n" -"> > ~~~\n" -"> > output_matrix[j, i] <- temp_output\n" -"> > ~~~\n" -"> > {: .language-r}" #: r-novice-gapminder/_episodes/07-control-flow.md:471 -msgid "" -">\n" +msgid ">\n" "> Write a script that loops through the `gapminder` data by continent and prints out\n" "> whether the mean life expectancy is smaller or larger than 50\n" "> years.\n" @@ -12122,65 +7977,9 @@ msgid "" "> > ~~~\n" "> > {: .language-r}" msgstr "" -">\n" -"> Write a script that loops through the `gapminder` data by continent and prints out\n" -"> whether the mean life expectancy is smaller or larger than 50\n" -"> years.\n" -">\n" -"> > ## Solution to Challenge 3\n" -"> >\n" -"> > **Step 1**: We want to make sure we can extract all the unique values of the continent vector\n" -"> > \n" -"> > ~~~\n" -"> > gapminder <- read.csv(\"data/gapminder_data.csv\")\n" -"> > unique(gapminder$continent)\n" -"> > ~~~\n" -"> > {: .language-r}\n" -"> >\n" -"> > **Step 2**: We also need to loop over each of these continents and calculate the average life expectancy for each `subset` of data.\n" -"> > We can do that as follows:\n" -"> >\n" -"> > 1. Loop over each of the unique values of 'continent'\n" -"> > 2. For each value of continent, create a temporary variable storing the life exepectancy for that subset,\n" -"> > 3. Return the calculated life expectancy to the user by printing the output:\n" -"> >\n" -"> > \n" -"> > ~~~\n" -"> > for( iContinent in unique(gapminder$continent) ){\n" -"> > tmp <- mean(subset(gapminder, continent==iContinent)$lifeExp)\n" -"> > cat(\"Average Life Expectancy in\", iContinent, \"is\", tmp, \"\\n\")\n" -"> > rm(tmp)\n" -"> > }\n" -"> > ~~~\n" -"> > {: .language-r}\n" -"> >\n" -"> > **Step 3**: The exercise only wants the output printed if the average life expectancy is less than 50 or greater than 50. So we need to add an `if` condition before printing.\n" -"> > So we need to add an `if` condition before printing, which evaluates whether the calculated average life expectancy is above or below a threshold, and print an output conditional on the result.\n" -"> > We need to amend (3) from above:\n" -"> >\n" -"> > 3a. If the calculated life expectancy is less than some threshold (50 years), return the continent and a statement that life expectancy is less than threshold, otherwise return the continent and a statement that life expectancy is greater than threshold,:\n" -"> >\n" -"> > \n" -"> > ~~~\n" -"> > thresholdValue <- 50\n" -"> > \n" -"> > for( iContinent in unique(gapminder$continent) ){\n" -"> > tmp <- mean(subset(gapminder, continent==iContinent)$lifeExp)\n" -"> > \n" -"> > if(tmp < thresholdValue){\n" -"> > cat(\"Average Life Expectancy in\", iContinent, \"is less than\", thresholdValue, \"\\n\")\n" -"> > }\n" -"> > else{\n" -"> > cat(\"Average Life Expectancy in\", iContinent, \"is greater than\", thresholdValue, \"\\n\")\n" -"> > } # end if else condition\n" -"> > rm(tmp)\n" -"> > } # end for loop\n" -"> > ~~~\n" -"> > {: .language-r}" #: r-novice-gapminder/_episodes/07-control-flow.md:530 -msgid "" -">\n" +msgid ">\n" "> Modify the script from Challenge 3 to loop over each\n" "> country. This time print out whether the life expectancy is\n" "> smaller than 50, between 50 and 70, or greater than 70.\n" @@ -12210,44 +8009,14 @@ msgid "" "> > ~~~\n" "> > {: .language-r}" msgstr "" -">\n" -"> Modify the script from Challenge 3 to loop over each\n" -"> country. This time print out whether the life expectancy is\n" -"> smaller than 50, between 50 and 70, or greater than 70.\n" -">\n" -"> > ## Solution to Challenge 4\n" -"> > We modify our solution to Challenge 3 by now adding two thresholds, `lowerThreshold` and `upperThreshold` and extending our if-else statements:\n" -"> >\n" -"> > \n" -"> > ~~~\n" -"> > lowerThreshold <- 50\n" -"> > upperThreshold <- 70\n" -"> > \n" -"> > for( iCountry in unique(gapminder$country) ){\n" -"> > tmp <- mean(subset(gapminder, country==iCountry)$lifeExp)\n" -"> > \n" -"> > if(tmp < lowerThreshold){\n" -"> > cat(\"Average Life Expectancy in\", iCountry, \"is less than\", lowerThreshold, \"\\n\")\n" -"> > }\n" -"> > else if(tmp > lowerThreshold && tmp < upperThreshold){\n" -"> > cat(\"Average Life Expectancy in\", iCountry, \"is between\", lowerThreshold, \"and\", upperThreshold, \"\\n\")\n" -"> > }\n" -"> > else{\n" -"> > cat(\"Average Life Expectancy in\", iCountry, \"is greater than\", upperThreshold, \"\\n\")\n" -"> > }\n" -"> > rm(tmp)\n" -"> > }\n" -"> > ~~~\n" -"> > {: .language-r}" -# blockquote, which can be cascaded #: r-novice-gapminder/_episodes/07-control-flow.md:562 +# blockquote, which can be cascaded msgid "> ## Challenge 5 - Advanced" -msgstr "> ## Challenge 5 - Advanced" +msgstr "" #: r-novice-gapminder/_episodes/07-control-flow.md:563 -msgid "" -">\n" +msgid ">\n" "> Write a script that loops over each country in the `gapminder` dataset,\n" "> tests whether the country starts with a 'B', and graphs life expectancy\n" "> against time as a line graph if the mean life expectancy is under 50 years.\n" @@ -12302,65 +8071,10 @@ msgid "" "> > ~~~\n" "> > {: .language-r}" msgstr "" -">\n" -"> Write a script that loops over each country in the `gapminder` dataset,\n" -"> tests whether the country starts with a 'B', and graphs life expectancy\n" -"> against time as a line graph if the mean life expectancy is under 50 years.\n" -">\n" -"> > ## Solution for Challenge 5\n" -"> >\n" -"> > We will use the `grep` command that was introduced in the Unix Shell lesson to find countries that start with \"B.\"\n" -"> > Lets understand how to do this first.\n" -"> > Following from the Unix shell section we may be tempted to try the following\n" -"> > \n" -"> > ~~~\n" -"> > grep(\"^B\", unique(gapminder$country))\n" -"> > ~~~\n" -"> > {: .language-r}\n" -"> >\n" -"> > But when we evaluate this command it returns the indices of the factor variable `country` that start with \"B.\"\n" -"> > To get the values, we must add the `value=TRUE` option to the `grep` command:\n" -"> >\n" -"> > \n" -"> > ~~~\n" -"> > grep(\"^B\", unique(gapminder$country), value=TRUE)\n" -"> > ~~~\n" -"> > {: .language-r}\n" -"> >\n" -"> > We will now store these countries in a variable called candidateCountries, and then loop over each entry in the variable.\n" -"> > Inside the loop, we evaluate the average life expectancy for each country, and if the average life expectancy is less than 50 we use base-plot to plot the evolution of average life expectancy:\n" -"> >\n" -"> > \n" -"> > ~~~\n" -"> > thresholdValue <- 50\n" -"> > candidateCountries <- grep(\"^B\", unique(gapminder$country), value=TRUE)\n" -"> > \n" -"> > for( iCountry in candidateCountries){\n" -"> > tmp <- mean(subset(gapminder, country==iCountry)$lifeExp)\n" -"> > \n" -"> > if(tmp < thresholdValue){\n" -"> > cat(\"Average Life Expectancy in\", iCountry, \"is less than\", thresholdValue, \"plotting life expectancy graph... \\n\")\n" -"> > \n" -"> > with(subset(gapminder, country==iCountry),\n" -"> > plot(year,lifeExp,\n" -"> > type=\"o\",\n" -"> > main = paste(\"Life Expectancy in\", iCountry, \"over time\"),\n" -"> > ylab = \"Life Expectancy\",\n" -"> > xlab = \"Year\"\n" -"> > ) # end plot\n" -"> > ) # end with\n" -"> > } # end for loop\n" -"> > rm(tmp)\n" -"> > }```\n" -"> > > {: .solution}\n" -"> > {: .challenge}\n" -"> > ~~~\n" -"> > {: .language-r}" -# Front Matter #: r-novice-gapminder/_episodes/08-plot-ggplot2.md:1 -msgid "" -"---\n" +# Front Matter +msgid "---\n" "# Please do not edit this file directly; it is auto generated.\n" "# Instead, please edit 08-plot-ggplot2.md in _episodes_rmd/\n" "title: Creating Publication-Quality Graphics with ggplot2\n" @@ -12380,126 +8094,70 @@ msgid "" "source: Rmd\n" "---" msgstr "" -"---\n" -"# Please do not edit this file directly; it is auto generated.\n" -"# Instead, please edit 08-plot-ggplot2.md in _episodes_rmd/\n" -"title: Creating Publication-Quality Graphics with ggplot2\n" -"teaching: 60\n" -"exercises: 20\n" -"questions:\n" -"- \"How can I create publication-quality graphics in R?\"\n" -"objectives:\n" -"- \"To be able to use ggplot2 to generate publication quality graphics.\"\n" -"- \"To apply geometry, aesthetic, and statisics layers to a ggplot plot.\"\n" -"- \"To manipulate the aesthetics of a plot usng different colors, shapes, and lines.\"\n" -"- \"To improve data visualization through transforming scales and paneling by group.\"\n" -"- \"To save a plot created with ggplot to disk.\"\n" -"keypoints:\n" -"- \"Use `ggplot2` to create plots.\"\n" -"- \"Think about graphics in layers: aesthetics, geometry, statistics, scale transformation, and grouping.\"\n" -"source: Rmd\n" -"---" #: r-novice-gapminder/_episodes/08-plot-ggplot2.md:23 -msgid "" -"Plotting our data is one of the best ways to\n" +msgid "Plotting our data is one of the best ways to\n" "quickly explore it and the various relationships\n" "between variables." msgstr "" -"Plotting our data is one of the best ways to\n" -"quickly explore it and the various relationships\n" -"between variables." #: r-novice-gapminder/_episodes/08-plot-ggplot2.md:27 -msgid "" -"There are three main plotting systems in R,\n" +msgid "There are three main plotting systems in R,\n" "the [base plotting system][base], the [lattice][lattice]\n" "package, and the [ggplot2][ggplot2] package." msgstr "" -"There are three main plotting systems in R,\n" -"the [base plotting system][base], the [lattice][lattice]\n" -"package, and the [ggplot2][ggplot2] package." #: r-novice-gapminder/_episodes/08-plot-ggplot2.md:31 -msgid "" -"[base]: http://www.statmethods.net/graphs/index.html\n" +msgid "[base]: http://www.statmethods.net/graphs/index.html\n" "[lattice]: http://www.statmethods.net/advgraphs/trellis.html\n" "[ggplot2]: http://www.statmethods.net/advgraphs/ggplot2.html" msgstr "" -"[base]: http://www.statmethods.net/graphs/index.html\n" -"[lattice]: http://www.statmethods.net/advgraphs/trellis.html\n" -"[ggplot2]: http://www.statmethods.net/advgraphs/ggplot2.html" #: r-novice-gapminder/_episodes/08-plot-ggplot2.md:35 -msgid "" -"Today we'll be learning about the ggplot2 package, because\n" +msgid "Today we'll be learning about the ggplot2 package, because\n" "it is the most effective for creating publication quality\n" "graphics." msgstr "" -"Today we'll be learning about the ggplot2 package, because\n" -"it is the most effective for creating publication quality\n" -"graphics." #: r-novice-gapminder/_episodes/08-plot-ggplot2.md:39 -msgid "" -"ggplot2 is built on the grammar of graphics, the idea that any plot can be\n" +msgid "ggplot2 is built on the grammar of graphics, the idea that any plot can be\n" "expressed from the same set of components: a **data** set, a\n" "**coordinate system**, and a set of **geoms**--the visual representation of data\n" "points." msgstr "" -"ggplot2 is built on the grammar of graphics, the idea that any plot can be\n" -"expressed from the same set of components: a **data** set, a\n" -"**coordinate system**, and a set of **geoms**--the visual representation of data\n" -"points." #: r-novice-gapminder/_episodes/08-plot-ggplot2.md:44 -msgid "" -"The key to understanding ggplot2 is thinking about a figure in layers.\n" +msgid "The key to understanding ggplot2 is thinking about a figure in layers.\n" "This idea may be familiar to you if you have used image editing programs like Photoshop, Illustrator, or\n" "Inkscape." msgstr "" -"The key to understanding ggplot2 is thinking about a figure in layers.\n" -"This idea may be familiar to you if you have used image editing programs like Photoshop, Illustrator, or\n" -"Inkscape." #: r-novice-gapminder/_episodes/08-plot-ggplot2.md:48 msgid "Let's start off with an example:" -msgstr "Let's start off with an example:" +msgstr "" -# code block #: r-novice-gapminder/_episodes/08-plot-ggplot2.md:51 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "library(\"ggplot2\")\n" "ggplot(data = gapminder, aes(x = gdpPercap, y = lifeExp)) +\n" " geom_point()\n" "~~~" msgstr "" -"~~~\n" -"library(\"ggplot2\")\n" -"ggplot(data = gapminder, aes(x = gdpPercap, y = lifeExp)) +\n" -" geom_point()\n" -"~~~" #: r-novice-gapminder/_episodes/08-plot-ggplot2.md:58 msgid "\"plot" -msgstr "\"plot" +msgstr "" #: r-novice-gapminder/_episodes/08-plot-ggplot2.md:60 -msgid "" -"So the first thing we do is call the `ggplot` function. This function lets R\n" +msgid "So the first thing we do is call the `ggplot` function. This function lets R\n" "know that we're creating a new plot, and any of the arguments we give the\n" "`ggplot` function are the *global* options for the plot: they apply to all\n" "layers on the plot." msgstr "" -"So the first thing we do is call the `ggplot` function. This function lets R\n" -"know that we're creating a new plot, and any of the arguments we give the\n" -"`ggplot` function are the *global* options for the plot: they apply to all\n" -"layers on the plot." #: r-novice-gapminder/_episodes/08-plot-ggplot2.md:65 -msgid "" -"We've passed in two arguments to `ggplot`. First, we tell `ggplot` what data we\n" +msgid "We've passed in two arguments to `ggplot`. First, we tell `ggplot` what data we\n" "want to show on our figure, in this example the gapminder data we read in\n" "earlier. For the second argument we passed in the `aes` function, which\n" "tells `ggplot` how variables in the **data** map to *aesthetic* properties of\n" @@ -12509,67 +8167,43 @@ msgid "" "pass `aes` these columns (e.g. `x = gapminder[, \"gdpPercap\"]`), this is because\n" "`ggplot` is smart enough to know to look in the **data** for that column!" msgstr "" -"We've passed in two arguments to `ggplot`. First, we tell `ggplot` what data we\n" -"want to show on our figure, in this example the gapminder data we read in\n" -"earlier. For the second argument we passed in the `aes` function, which\n" -"tells `ggplot` how variables in the **data** map to *aesthetic* properties of\n" -"the figure, in this case the **x** and **y** locations. Here we told `ggplot` we\n" -"want to plot the \"gdpPercap\" column of the gapminder data frame on the x-axis, and\n" -"the \"lifeExp\" column on the y-axis. Notice that we didn't need to explicitly\n" -"pass `aes` these columns (e.g. `x = gapminder[, \"gdpPercap\"]`), this is because\n" -"`ggplot` is smart enough to know to look in the **data** for that column!" #: r-novice-gapminder/_episodes/08-plot-ggplot2.md:75 msgid "By itself, the call to `ggplot` isn't enough to draw a figure:" -msgstr "By itself, the call to `ggplot` isn't enough to draw a figure:" +msgstr "" -# code block #: r-novice-gapminder/_episodes/08-plot-ggplot2.md:78 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "ggplot(data = gapminder, aes(x = gdpPercap, y = lifeExp))\n" "~~~" msgstr "" -"~~~\n" -"ggplot(data = gapminder, aes(x = gdpPercap, y = lifeExp))\n" -"~~~" #: r-novice-gapminder/_episodes/08-plot-ggplot2.md:83 msgid "\"plot" -msgstr "\"plot" +msgstr "" #: r-novice-gapminder/_episodes/08-plot-ggplot2.md:85 -msgid "" -"We need to tell `ggplot` how we want to visually represent the data, which we\n" +msgid "We need to tell `ggplot` how we want to visually represent the data, which we\n" "do by adding a new **geom** layer. In our example, we used `geom_point`, which\n" "tells `ggplot` we want to visually represent the relationship between **x** and\n" "**y** as a scatterplot of points:" msgstr "" -"We need to tell `ggplot` how we want to visually represent the data, which we\n" -"do by adding a new **geom** layer. In our example, we used `geom_point`, which\n" -"tells `ggplot` we want to visually represent the relationship between **x** and\n" -"**y** as a scatterplot of points:" -# code block #: r-novice-gapminder/_episodes/08-plot-ggplot2.md:91 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "ggplot(data = gapminder, aes(x = gdpPercap, y = lifeExp)) +\n" " geom_point()\n" "~~~" msgstr "" -"~~~\n" -"ggplot(data = gapminder, aes(x = gdpPercap, y = lifeExp)) +\n" -" geom_point()\n" -"~~~" #: r-novice-gapminder/_episodes/08-plot-ggplot2.md:97 msgid "\"plot" -msgstr "\"plot" +msgstr "" #: r-novice-gapminder/_episodes/08-plot-ggplot2.md:100 -msgid "" -">\n" +msgid ">\n" "> Modify the example so that the figure shows how life expectancy has\n" "> changed over time:\n" ">\n" @@ -12595,35 +8229,9 @@ msgid "" "> > \"plot\n" "> >" msgstr "" -">\n" -"> Modify the example so that the figure shows how life expectancy has\n" -"> changed over time:\n" -">\n" -"> \n" -"> ~~~\n" -"> ggplot(data = gapminder, aes(x = gdpPercap, y = lifeExp)) + geom_point()\n" -"> ~~~\n" -"> {: .language-r}\n" -">\n" -"> Hint: the gapminder dataset has a column called \"year\", which should appear\n" -"> on the x-axis.\n" -">\n" -"> > ## Solution to challenge 1\n" -"> >\n" -"> > Here is one possible solution:\n" -"> >\n" -"> > \n" -"> > ~~~\n" -"> > ggplot(data = gapminder, aes(x = year, y = lifeExp)) + geom_point()\n" -"> > ~~~\n" -"> > {: .language-r}\n" -"> > \n" -"> > \"plot\n" -"> >" #: r-novice-gapminder/_episodes/08-plot-ggplot2.md:128 -msgid "" -">\n" +msgid ">\n" "> ## Challenge 2\n" ">\n" "> In the previous examples and challenge we've used the `aes` function to tell\n" @@ -12650,153 +8258,89 @@ msgid "" "> > \"plot\n" "> >" msgstr "" -">\n" -"> ## Challenge 2\n" -">\n" -"> In the previous examples and challenge we've used the `aes` function to tell\n" -"> the scatterplot **geom** about the **x** and **y** locations of each point.\n" -"> Another *aesthetic* property we can modify is the point *color*. Modify the\n" -"> code from the previous challenge to **color** the points by the \"continent\"\n" -"> column. What trends do you see in the data? Are they what you expected?\n" -">\n" -"> > ## Solution to challenge 2\n" -"> >\n" -"> > In the previous examples and challenge we've used the `aes` function to tell\n" -"> > the scatterplot **geom** about the **x** and **y** locations of each point.\n" -"> > Another *aesthetic* property we can modify is the point *color*. Modify the\n" -"> > code from the previous challenge to **color** the points by the \"continent\"\n" -"> > column. What trends do you see in the data? Are they what you expected?\n" -"> >\n" -"> > \n" -"> > ~~~\n" -"> > ggplot(data = gapminder, aes(x = year, y = lifeExp, color=continent)) +\n" -"> > geom_point()\n" -"> > ~~~\n" -"> > {: .language-r}\n" -"> > \n" -"> > \"plot\n" -"> >" -# header #: r-novice-gapminder/_episodes/08-plot-ggplot2.md:158 +# header msgid "## Layers" -msgstr "## Layers" +msgstr "" #: r-novice-gapminder/_episodes/08-plot-ggplot2.md:160 -msgid "" -"Using a scatterplot probably isn't the best for visualizing change over time.\n" +msgid "Using a scatterplot probably isn't the best for visualizing change over time.\n" "Instead, let's tell `ggplot` to visualize the data as a line plot:" msgstr "" -"Using a scatterplot probably isn't the best for visualizing change over time.\n" -"Instead, let's tell `ggplot` to visualize the data as a line plot:" -# code block #: r-novice-gapminder/_episodes/08-plot-ggplot2.md:164 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "ggplot(data = gapminder, aes(x=year, y=lifeExp, by=country, color=continent)) +\n" " geom_line()\n" "~~~" msgstr "" -"~~~\n" -"ggplot(data = gapminder, aes(x=year, y=lifeExp, by=country, color=continent)) +\n" -" geom_line()\n" -"~~~" #: r-novice-gapminder/_episodes/08-plot-ggplot2.md:170 msgid "\"plot" -msgstr "\"plot" +msgstr "" #: r-novice-gapminder/_episodes/08-plot-ggplot2.md:172 -msgid "" -"Instead of adding a `geom_point` layer, we've added a `geom_line` layer. We've\n" +msgid "Instead of adding a `geom_point` layer, we've added a `geom_line` layer. We've\n" "added the **by** *aesthetic*, which tells `ggplot` to draw a line for each\n" "country." msgstr "" -"Instead of adding a `geom_point` layer, we've added a `geom_line` layer. We've\n" -"added the **by** *aesthetic*, which tells `ggplot` to draw a line for each\n" -"country." #: r-novice-gapminder/_episodes/08-plot-ggplot2.md:176 -msgid "" -"But what if we want to visualize both lines and points on the plot? We can\n" +msgid "But what if we want to visualize both lines and points on the plot? We can\n" "simply add another layer to the plot:" msgstr "" -"But what if we want to visualize both lines and points on the plot? We can\n" -"simply add another layer to the plot:" -# code block #: r-novice-gapminder/_episodes/08-plot-ggplot2.md:180 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "ggplot(data = gapminder, aes(x=year, y=lifeExp, by=country, color=continent)) +\n" " geom_line() + geom_point()\n" "~~~" msgstr "" -"~~~\n" -"ggplot(data = gapminder, aes(x=year, y=lifeExp, by=country, color=continent)) +\n" -" geom_line() + geom_point()\n" -"~~~" #: r-novice-gapminder/_episodes/08-plot-ggplot2.md:186 msgid "\"plot" -msgstr "\"plot" +msgstr "" #: r-novice-gapminder/_episodes/08-plot-ggplot2.md:188 -msgid "" -"It's important to note that each layer is drawn on top of the previous layer. In\n" +msgid "It's important to note that each layer is drawn on top of the previous layer. In\n" "this example, the points have been drawn *on top of* the lines. Here's a\n" "demonstration:" msgstr "" -"It's important to note that each layer is drawn on top of the previous layer. In\n" -"this example, the points have been drawn *on top of* the lines. Here's a\n" -"demonstration:" -# code block #: r-novice-gapminder/_episodes/08-plot-ggplot2.md:193 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "ggplot(data = gapminder, aes(x=year, y=lifeExp, by=country)) +\n" " geom_line(aes(color=continent)) + geom_point()\n" "~~~" msgstr "" -"~~~\n" -"ggplot(data = gapminder, aes(x=year, y=lifeExp, by=country)) +\n" -" geom_line(aes(color=continent)) + geom_point()\n" -"~~~" #: r-novice-gapminder/_episodes/08-plot-ggplot2.md:199 msgid "\"plot" -msgstr "\"plot" +msgstr "" #: r-novice-gapminder/_episodes/08-plot-ggplot2.md:201 -msgid "" -"In this example, the *aesthetic* mapping of **color** has been moved from the\n" +msgid "In this example, the *aesthetic* mapping of **color** has been moved from the\n" "global plot options in `ggplot` to the `geom_line` layer so it no longer applies\n" "to the points. Now we can clearly see that the points are drawn on top of the\n" "lines." msgstr "" -"In this example, the *aesthetic* mapping of **color** has been moved from the\n" -"global plot options in `ggplot` to the `geom_line` layer so it no longer applies\n" -"to the points. Now we can clearly see that the points are drawn on top of the\n" -"lines." -# blockquote, which can be cascaded #: r-novice-gapminder/_episodes/08-plot-ggplot2.md:206 +# blockquote, which can be cascaded msgid "> ## Tip: Setting an aesthetic to a value instead of a mapping" -msgstr "> ## Tip: Setting an aesthetic to a value instead of a mapping" +msgstr "" #: r-novice-gapminder/_episodes/08-plot-ggplot2.md:207 -msgid "" -">\n" +msgid ">\n" "> So far, we've seen how to use an aesthetic (such as **color**) as a *mapping* to a variable in the data. For example, when we use `geom_line(aes(color=continent))`, ggplot will give a different color to each continent. But what if we want to change the colour of all lines to blue? You may think that `geom_line(aes(color=\"blue\"))` should work, but it doesn't. Since we don't want to create a mapping to a specific variable, we simply move the color specification outside of the `aes()` function, like this: `geom_line(color=\"blue\")`." msgstr "" -">\n" -"> So far, we've seen how to use an aesthetic (such as **color**) as a *mapping* to a variable in the data. For example, when we use `geom_line(aes(color=continent))`, ggplot will give a different color to each continent. But what if we want to change the colour of all lines to blue? You may think that `geom_line(aes(color=\"blue\"))` should work, but it doesn't. Since we don't want to create a mapping to a specific variable, we simply move the color specification outside of the `aes()` function, like this: `geom_line(color=\"blue\")`." #: r-novice-gapminder/_episodes/08-plot-ggplot2.md:212 -msgid "" -">\n" +msgid ">\n" "> Switch the order of the point and line layers from the previous example. What\n" "> happened?\n" ">\n" @@ -12817,189 +8361,117 @@ msgid "" "> > The lines now get drawn over the points!\n" "> >" msgstr "" -">\n" -"> Switch the order of the point and line layers from the previous example. What\n" -"> happened?\n" -">\n" -"> > ## Solution to challenge 3\n" -"> >\n" -"> > Switch the order of the point and line layers from the previous example. What\n" -"> > happened?\n" -"> >\n" -"> > \n" -"> > ~~~\n" -"> > ggplot(data = gapminder, aes(x=year, y=lifeExp, by=country)) +\n" -"> > geom_point() + geom_line(aes(color=continent))\n" -"> > ~~~\n" -"> > {: .language-r}\n" -"> > \n" -"> > \"plot\n" -"> >\n" -"> > The lines now get drawn over the points!\n" -"> >" -# header #: r-novice-gapminder/_episodes/08-plot-ggplot2.md:235 +# header msgid "## Transformations and statistics" -msgstr "## Transformations and statistics" +msgstr "" #: r-novice-gapminder/_episodes/08-plot-ggplot2.md:237 -msgid "" -"Ggplot also makes it easy to overlay statistical models over the data. To\n" +msgid "Ggplot also makes it easy to overlay statistical models over the data. To\n" "demonstrate we'll go back to our first example:" msgstr "" -"Ggplot also makes it easy to overlay statistical models over the data. To\n" -"demonstrate we'll go back to our first example:" -# code block #: r-novice-gapminder/_episodes/08-plot-ggplot2.md:241 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "ggplot(data = gapminder, aes(x = gdpPercap, y = lifeExp, color=continent)) +\n" " geom_point()\n" "~~~" msgstr "" -"~~~\n" -"ggplot(data = gapminder, aes(x = gdpPercap, y = lifeExp, color=continent)) +\n" -" geom_point()\n" -"~~~" #: r-novice-gapminder/_episodes/08-plot-ggplot2.md:247 msgid "\"plot" -msgstr "\"plot" +msgstr "" #: r-novice-gapminder/_episodes/08-plot-ggplot2.md:249 -msgid "" -"Currently it's hard to see the relationship between the points due to some strong\n" +msgid "Currently it's hard to see the relationship between the points due to some strong\n" "outliers in GDP per capita. We can change the scale of units on the x axis using\n" "the *scale* functions. These control the mapping between the data values and\n" "visual values of an aesthetic. We can also modify the transparency of the\n" "points, using the *alpha* function, which is especially helpful when you have\n" "a large amount of data which is very clustered." msgstr "" -"Currently it's hard to see the relationship between the points due to some strong\n" -"outliers in GDP per capita. We can change the scale of units on the x axis using\n" -"the *scale* functions. These control the mapping between the data values and\n" -"visual values of an aesthetic. We can also modify the transparency of the\n" -"points, using the *alpha* function, which is especially helpful when you have\n" -"a large amount of data which is very clustered." -# code block #: r-novice-gapminder/_episodes/08-plot-ggplot2.md:257 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "ggplot(data = gapminder, aes(x = gdpPercap, y = lifeExp)) +\n" " geom_point(alpha = 0.5) + scale_x_log10()\n" "~~~" msgstr "" -"~~~\n" -"ggplot(data = gapminder, aes(x = gdpPercap, y = lifeExp)) +\n" -" geom_point(alpha = 0.5) + scale_x_log10()\n" -"~~~" #: r-novice-gapminder/_episodes/08-plot-ggplot2.md:263 msgid "\"plot" -msgstr "\"plot" +msgstr "" #: r-novice-gapminder/_episodes/08-plot-ggplot2.md:265 -msgid "" -"The `log10` function applied a transformation to the values of the gdpPercap\n" +msgid "The `log10` function applied a transformation to the values of the gdpPercap\n" "column before rendering them on the plot, so that each multiple of 10 now only\n" "corresponds to an increase in 1 on the transformed scale, e.g. a GDP per capita\n" "of 1,000 is now 3 on the y axis, a value of 10,000 corresponds to 4 on the y\n" "axis and so on. This makes it easier to visualize the spread of data on the\n" "x-axis." msgstr "" -"The `log10` function applied a transformation to the values of the gdpPercap\n" -"column before rendering them on the plot, so that each multiple of 10 now only\n" -"corresponds to an increase in 1 on the transformed scale, e.g. a GDP per capita\n" -"of 1,000 is now 3 on the y axis, a value of 10,000 corresponds to 4 on the y\n" -"axis and so on. This makes it easier to visualize the spread of data on the\n" -"x-axis." -# blockquote, which can be cascaded #: r-novice-gapminder/_episodes/08-plot-ggplot2.md:272 +# blockquote, which can be cascaded msgid "> ## Tip Reminder: Setting an aesthetic to a value instead of a mapping" -msgstr "> ## Tip Reminder: Setting an aesthetic to a value instead of a mapping" +msgstr "" #: r-novice-gapminder/_episodes/08-plot-ggplot2.md:273 -msgid "" -">\n" +msgid ">\n" "> Notice that we used `geom_point(alpha = 0.5)`. As the previous tip mentioned, using a setting outside of the `aes()` function will cause this value to be used for all points, which is what we want in this case. But just like any other aesthetic setting, *alpha* can also be mapped to a variable in the data. For example, we can give a different transparency to each continent with `geom_point(aes(alpha = continent))`." msgstr "" -">\n" -"> Notice that we used `geom_point(alpha = 0.5)`. As the previous tip mentioned, using a setting outside of the `aes()` function will cause this value to be used for all points, which is what we want in this case. But just like any other aesthetic setting, *alpha* can also be mapped to a variable in the data. For example, we can give a different transparency to each continent with `geom_point(aes(alpha = continent))`." #: r-novice-gapminder/_episodes/08-plot-ggplot2.md:277 -msgid "" -"We can fit a simple relationship to the data by adding another layer,\n" +msgid "We can fit a simple relationship to the data by adding another layer,\n" "`geom_smooth`:" msgstr "" -"We can fit a simple relationship to the data by adding another layer,\n" -"`geom_smooth`:" -# code block #: r-novice-gapminder/_episodes/08-plot-ggplot2.md:281 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "ggplot(data = gapminder, aes(x = gdpPercap, y = lifeExp)) +\n" " geom_point() + scale_x_log10() + geom_smooth(method=\"lm\")\n" "~~~" msgstr "" -"~~~\n" -"ggplot(data = gapminder, aes(x = gdpPercap, y = lifeExp)) +\n" -" geom_point() + scale_x_log10() + geom_smooth(method=\"lm\")\n" -"~~~" #: r-novice-gapminder/_episodes/08-plot-ggplot2.md:287 msgid "\"plot" -msgstr "\"plot" +msgstr "" #: r-novice-gapminder/_episodes/08-plot-ggplot2.md:289 -msgid "" -"We can make the line thicker by *setting* the **size** aesthetic in the\n" +msgid "We can make the line thicker by *setting* the **size** aesthetic in the\n" "`geom_smooth` layer:" msgstr "" -"We can make the line thicker by *setting* the **size** aesthetic in the\n" -"`geom_smooth` layer:" -# code block #: r-novice-gapminder/_episodes/08-plot-ggplot2.md:293 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "ggplot(data = gapminder, aes(x = gdpPercap, y = lifeExp)) +\n" " geom_point() + scale_x_log10() + geom_smooth(method=\"lm\", size=1.5)\n" "~~~" msgstr "" -"~~~\n" -"ggplot(data = gapminder, aes(x = gdpPercap, y = lifeExp)) +\n" -" geom_point() + scale_x_log10() + geom_smooth(method=\"lm\", size=1.5)\n" -"~~~" #: r-novice-gapminder/_episodes/08-plot-ggplot2.md:299 msgid "\"plot" -msgstr "\"plot" +msgstr "" #: r-novice-gapminder/_episodes/08-plot-ggplot2.md:301 -msgid "" -"There are two ways an *aesthetic* can be specified. Here we *set* the **size**\n" +msgid "There are two ways an *aesthetic* can be specified. Here we *set* the **size**\n" "aesthetic by passing it as an argument to `geom_smooth`. Previously in the\n" "lesson we've used the `aes` function to define a *mapping* between data\n" "variables and their visual representation." msgstr "" -"There are two ways an *aesthetic* can be specified. Here we *set* the **size**\n" -"aesthetic by passing it as an argument to `geom_smooth`. Previously in the\n" -"lesson we've used the `aes` function to define a *mapping* between data\n" -"variables and their visual representation." -# blockquote, which can be cascaded #: r-novice-gapminder/_episodes/08-plot-ggplot2.md:306 +# blockquote, which can be cascaded msgid "> ## Challenge 4a" -msgstr "> ## Challenge 4a" +msgstr "" #: r-novice-gapminder/_episodes/08-plot-ggplot2.md:307 -msgid "" -">\n" +msgid ">\n" "> Modify the color and size of the points on the point layer in the previous\n" "> example.\n" ">\n" @@ -13022,37 +8494,14 @@ msgid "" "> > \n" "> > \"plot" msgstr "" -">\n" -"> Modify the color and size of the points on the point layer in the previous\n" -"> example.\n" -">\n" -"> Hint: do not use the `aes` function.\n" -">\n" -"> > ## Solution to challenge 4a\n" -"> >\n" -"> > Modify the color and size of the points on the point layer in the previous\n" -"> > example.\n" -"> >\n" -"> > Hint: do not use the `aes` function.\n" -"> >\n" -"> > \n" -"> > ~~~\n" -"> > ggplot(data = gapminder, aes(x = gdpPercap, y = lifeExp)) +\n" -"> > geom_point(size=3, color=\"orange\") + scale_x_log10() +\n" -"> > geom_smooth(method=\"lm\", size=1.5)\n" -"> > ~~~\n" -"> > {: .language-r}\n" -"> > \n" -"> > \"plot" -# blockquote, which can be cascaded #: r-novice-gapminder/_episodes/08-plot-ggplot2.md:333 +# blockquote, which can be cascaded msgid "> ## Challenge 4b" -msgstr "> ## Challenge 4b" +msgstr "" #: r-novice-gapminder/_episodes/08-plot-ggplot2.md:334 -msgid "" -">\n" +msgid ">\n" "> Modify your solution to Challenge 4a so that the\n" "> points are now a different shape and are colored by continent with new\n" "> trendlines. Hint: The color argument can be used inside the aesthetic.\n" @@ -13074,55 +8523,28 @@ msgid "" "> >\n" "> >\"plot" msgstr "" -">\n" -"> Modify your solution to Challenge 4a so that the\n" -"> points are now a different shape and are colored by continent with new\n" -"> trendlines. Hint: The color argument can be used inside the aesthetic.\n" -">\n" -"> > ## Solution to challenge 4b\n" -"> >\n" -"> > Modify Challenge 4 so that the points are now a different shape and are\n" -"> > colored by continent with new trendlines.\n" -"> >\n" -"> > Hint: The color argument can be used inside the aesthetic.\n" -"> >\n" -"> >\n" -"> >~~~\n" -"> > ggplot(data = gapminder, aes(x = gdpPercap, y = lifeExp, color = continent)) +\n" -"> > geom_point(size=3, shape=17) + scale_x_log10() +\n" -"> > geom_smooth(method=\"lm\", size=1.5)\n" -"> >~~~\n" -"> >{: .language-r}\n" -"> >\n" -"> >\"plot" -# header #: r-novice-gapminder/_episodes/08-plot-ggplot2.md:359 +# header msgid "## Multi-panel figures" -msgstr "## Multi-panel figures" +msgstr "" #: r-novice-gapminder/_episodes/08-plot-ggplot2.md:361 -msgid "" -"Earlier we visualized the change in life expectancy over time across all\n" +msgid "Earlier we visualized the change in life expectancy over time across all\n" "countries in one plot. Alternatively, we can split this out over multiple panels\n" "by adding a layer of **facet** panels. Focusing only on those countries with\n" "names that start with the letter \"A\" or \"Z\"." msgstr "" -"Earlier we visualized the change in life expectancy over time across all\n" -"countries in one plot. Alternatively, we can split this out over multiple panels\n" -"by adding a layer of **facet** panels. Focusing only on those countries with\n" -"names that start with the letter \"A\" or \"Z\"." -# blockquote, which can be cascaded #: r-novice-gapminder/_episodes/08-plot-ggplot2.md:366 #: r-novice-gapminder/_episodes/10-functions.md:92 #: r-novice-gapminder/_episodes/10-functions.md:631 +# blockquote, which can be cascaded msgid "> ## Tip" -msgstr "> ## Tip" +msgstr "" #: r-novice-gapminder/_episodes/08-plot-ggplot2.md:367 -msgid "" -">\n" +msgid ">\n" "> We start by subsetting the data. We use the `substr` function to\n" "> pull out a part of a character string; in this case, the letters that occur\n" "> in positions `start` through `stop`, inclusive, of the `gapminder$country`\n" @@ -13131,81 +8553,50 @@ msgid "" "> `starts.with %in% c(\"A\", \"Z\")` is equivalent to\n" "> `starts.with == \"A\" | starts.with == \"Z\"`)" msgstr "" -">\n" -"> We start by subsetting the data. We use the `substr` function to\n" -"> pull out a part of a character string; in this case, the letters that occur\n" -"> in positions `start` through `stop`, inclusive, of the `gapminder$country`\n" -"> vector. The operator `%in%` allows us to make multiple comparisons rather\n" -"> than write out long subsetting conditions (in this case,\n" -"> `starts.with %in% c(\"A\", \"Z\")` is equivalent to\n" -"> `starts.with == \"A\" | starts.with == \"Z\"`)" -# code block #: r-novice-gapminder/_episodes/08-plot-ggplot2.md:379 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "starts.with <- substr(gapminder$country, start = 1, stop = 1)\n" "az.countries <- gapminder[starts.with %in% c(\"A\", \"Z\"), ]\n" "ggplot(data = az.countries, aes(x = year, y = lifeExp, color=continent)) +\n" " geom_line() + facet_wrap( ~ country)\n" "~~~" msgstr "" -"~~~\n" -"starts.with <- substr(gapminder$country, start = 1, stop = 1)\n" -"az.countries <- gapminder[starts.with %in% c(\"A\", \"Z\"), ]\n" -"ggplot(data = az.countries, aes(x = year, y = lifeExp, color=continent)) +\n" -" geom_line() + facet_wrap( ~ country)\n" -"~~~" #: r-novice-gapminder/_episodes/08-plot-ggplot2.md:387 msgid "\"plot" -msgstr "\"plot" +msgstr "" #: r-novice-gapminder/_episodes/08-plot-ggplot2.md:389 -msgid "" -"The `facet_wrap` layer took a \"formula\" as its argument, denoted by the tilde\n" +msgid "The `facet_wrap` layer took a \"formula\" as its argument, denoted by the tilde\n" "(~). This tells R to draw a panel for each unique value in the country column\n" "of the gapminder dataset." msgstr "" -"The `facet_wrap` layer took a \"formula\" as its argument, denoted by the tilde\n" -"(~). This tells R to draw a panel for each unique value in the country column\n" -"of the gapminder dataset." -# header #: r-novice-gapminder/_episodes/08-plot-ggplot2.md:393 +# header msgid "## Modifying text" -msgstr "## Modifying text" +msgstr "" #: r-novice-gapminder/_episodes/08-plot-ggplot2.md:395 -msgid "" -"To clean this figure up for a publication we need to change some of the text\n" +msgid "To clean this figure up for a publication we need to change some of the text\n" "elements. The x-axis is too cluttered, and the y axis should read\n" "\"Life expectancy\", rather than the column name in the data frame." msgstr "" -"To clean this figure up for a publication we need to change some of the text\n" -"elements. The x-axis is too cluttered, and the y axis should read\n" -"\"Life expectancy\", rather than the column name in the data frame." #: r-novice-gapminder/_episodes/08-plot-ggplot2.md:399 -msgid "" -"We can do this by adding a couple of different layers. The **theme** layer\n" +msgid "We can do this by adding a couple of different layers. The **theme** layer\n" "controls the axis text, and overall text size. Labels for the axes, plot \n" "title and any legend can be set using the `labs` function. Legend titles\n" "are set using the same names we used in the `aes` specification. Thus below\n" "the color legend title is set using `color = \"Continent\"`, while the title \n" "of a fill legend would be set using `fill = \"MyTitle\"`. " msgstr "" -"We can do this by adding a couple of different layers. The **theme** layer\n" -"controls the axis text, and overall text size. Labels for the axes, plot \n" -"title and any legend can be set using the `labs` function. Legend titles\n" -"are set using the same names we used in the `aes` specification. Thus below\n" -"the color legend title is set using `color = \"Continent\"`, while the title \n" -"of a fill legend would be set using `fill = \"MyTitle\"`. " -# code block #: r-novice-gapminder/_episodes/08-plot-ggplot2.md:407 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "ggplot(data = az.countries, aes(x = year, y = lifeExp, color=continent)) +\n" " geom_line() + facet_wrap( ~ country) +\n" " labs(\n" @@ -13217,35 +8608,23 @@ msgid "" " theme(axis.text.x=element_blank(), axis.ticks.x=element_blank())\n" "~~~" msgstr "" -"~~~\n" -"ggplot(data = az.countries, aes(x = year, y = lifeExp, color=continent)) +\n" -" geom_line() + facet_wrap( ~ country) +\n" -" labs(\n" -" x = \"Year\", # x axis title\n" -" y = \"Life expectancy\", # y axis title\n" -" title = \"Figure 1\", # main title of figure\n" -" color = \"Continent\" # title of legend\n" -" ) +\n" -" theme(axis.text.x=element_blank(), axis.ticks.x=element_blank())\n" -"~~~" #: r-novice-gapminder/_episodes/08-plot-ggplot2.md:420 msgid "\"plot" -msgstr "\"plot" +msgstr "" -# header #: r-novice-gapminder/_episodes/08-plot-ggplot2.md:423 +# header msgid "## Exporting the plot" -msgstr "## Exporting the plot" +msgstr "" #: r-novice-gapminder/_episodes/08-plot-ggplot2.md:425 msgid "The `ggsave()` function allows you to export a plot created with ggplot. You can specify the dimension and resolution of your plot by adjusting the appropriate arguments (`width`, `height` and `dpi`) to create high quality graphics for publication. In order to save the plot from above, we first assign it to a variable `lifeExp_plot`, then tell `ggsave` to save that plot in `png` format to a directory called `results`. (Make sure you have a `results/` folder in your working directory.)" -msgstr "The `ggsave()` function allows you to export a plot created with ggplot. You can specify the dimension and resolution of your plot by adjusting the appropriate arguments (`width`, `height` and `dpi`) to create high quality graphics for publication. In order to save the plot from above, we first assign it to a variable `lifeExp_plot`, then tell `ggsave` to save that plot in `png` format to a directory called `results`. (Make sure you have a `results/` folder in your working directory.)" +msgstr "" -# code block #: r-novice-gapminder/_episodes/08-plot-ggplot2.md:428 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "lifeExp_plot <- ggplot(data = az.countries, aes(x = year, y = lifeExp, color=continent)) +\n" " geom_line() + facet_wrap( ~ country) +\n" " labs(\n" @@ -13259,62 +8638,34 @@ msgid "" "ggsave(filename = \"results/lifeExp.png\", plot = lifeExp_plot, width = 12, height = 10, dpi = 300, units = \"cm\")\n" "~~~" msgstr "" -"~~~\n" -"lifeExp_plot <- ggplot(data = az.countries, aes(x = year, y = lifeExp, color=continent)) +\n" -" geom_line() + facet_wrap( ~ country) +\n" -" labs(\n" -" x = \"Year\", # x axis title\n" -" y = \"Life expectancy\", # y axis title\n" -" title = \"Figure 1\", # main title of figure\n" -" color = \"Continent\" # title of legend\n" -" ) +\n" -" theme(axis.text.x=element_blank(), axis.ticks.x=element_blank())\n" -"\n" -"ggsave(filename = \"results/lifeExp.png\", plot = lifeExp_plot, width = 12, height = 10, dpi = 300, units = \"cm\")\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/08-plot-ggplot2.md:445 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "Error in grDevices::dev.off(): QuartzBitmap_Output - unable to open file 'results/lifeExp.png'\n" "~~~" msgstr "" -"~~~\n" -"Error in grDevices::dev.off(): QuartzBitmap_Output - unable to open file 'results/lifeExp.png'\n" -"~~~" #: r-novice-gapminder/_episodes/08-plot-ggplot2.md:450 msgid "There are two nice things about `ggsave`. First, it defaults to the last plot, so if you omit the `plot` argument it will automatically save the last plot you created with `ggplot`. Secondly, it tries to determine the format you want to save your plot in from the file extension you provide for the filename (for example `.png` or `.pdf`). If you need to, you can specify the format explicitly in the `device` argument." -msgstr "There are two nice things about `ggsave`. First, it defaults to the last plot, so if you omit the `plot` argument it will automatically save the last plot you created with `ggplot`. Secondly, it tries to determine the format you want to save your plot in from the file extension you provide for the filename (for example `.png` or `.pdf`). If you need to, you can specify the format explicitly in the `device` argument." +msgstr "" #: r-novice-gapminder/_episodes/08-plot-ggplot2.md:452 -msgid "" -"This is a taste of what you can do with `ggplot2`. RStudio provides a\n" +msgid "This is a taste of what you can do with `ggplot2`. RStudio provides a\n" "really useful [cheat sheet][cheat] of the different layers available, and more\n" "extensive documentation is available on the [ggplot2 website][ggplot-doc].\n" "Finally, if you have no idea how to change something, a quick Google search will\n" "usually send you to a relevant question and answer on Stack Overflow with reusable\n" "code to modify!" msgstr "" -"This is a taste of what you can do with `ggplot2`. RStudio provides a\n" -"really useful [cheat sheet][cheat] of the different layers available, and more\n" -"extensive documentation is available on the [ggplot2 website][ggplot-doc].\n" -"Finally, if you have no idea how to change something, a quick Google search will\n" -"usually send you to a relevant question and answer on Stack Overflow with reusable\n" -"code to modify!" #: r-novice-gapminder/_episodes/08-plot-ggplot2.md:459 -msgid "" -"[cheat]: http://www.rstudio.com/wp-content/uploads/2015/03/ggplot2-cheatsheet.pdf\n" +msgid "[cheat]: http://www.rstudio.com/wp-content/uploads/2015/03/ggplot2-cheatsheet.pdf\n" "[ggplot-doc]: http://docs.ggplot2.org/current/" msgstr "" -"[cheat]: http://www.rstudio.com/wp-content/uploads/2015/03/ggplot2-cheatsheet.pdf\n" -"[ggplot-doc]: http://docs.ggplot2.org/current/" #: r-novice-gapminder/_episodes/08-plot-ggplot2.md:464 -msgid "" -">\n" +msgid ">\n" "> Create a density plot of GDP per capita, filled by continent.\n" ">\n" "> Advanced:\n" @@ -13338,34 +8689,10 @@ msgid "" "> > \n" "> > \"plot" msgstr "" -">\n" -"> Create a density plot of GDP per capita, filled by continent.\n" -">\n" -"> Advanced:\n" -"> - Transform the x axis to better visualise the data spread.\n" -"> - Add a facet layer to panel the density plots by year.\n" -">\n" -"> > ## Solution to challenge 5\n" -"> >\n" -"> > Create a density plot of GDP per capita, filled by continent.\n" -"> >\n" -"> > Advanced:\n" -"> > - Transform the x axis to better visualise the data spread.\n" -"> > - Add a facet layer to panel the density plots by year.\n" -"> >\n" -"> > \n" -"> > ~~~\n" -"> > ggplot(data = gapminder, aes(x = gdpPercap, fill=continent)) +\n" -"> > geom_density(alpha=0.6) + facet_wrap( ~ year) + scale_x_log10()\n" -"> > ~~~\n" -"> > {: .language-r}\n" -"> > \n" -"> > \"plot" -# Front Matter #: r-novice-gapminder/_episodes/09-vectorization.md:1 -msgid "" -"---\n" +# Front Matter +msgid "---\n" "# Please do not edit this file directly; it is auto generated.\n" "# Instead, please edit 09-vectorization.md in _episodes_rmd/\n" "title: Vectorization\n" @@ -13380,97 +8707,59 @@ msgid "" "source: Rmd\n" "---" msgstr "" -"---\n" -"# Please do not edit this file directly; it is auto generated.\n" -"# Instead, please edit 09-vectorization.md in _episodes_rmd/\n" -"title: Vectorization\n" -"teaching: 10\n" -"exercises: 15\n" -"questions:\n" -"- \"How can I operate on all the elements of a vector at once?\"\n" -"objectives:\n" -"- \"To understand vectorized operations in R.\"\n" -"keypoints:\n" -"- \"Use vectorized operations instead of loops.\"\n" -"source: Rmd\n" -"---" #: r-novice-gapminder/_episodes/09-vectorization.md:18 -msgid "" -"Most of R's functions are vectorized, meaning that the function will\n" +msgid "Most of R's functions are vectorized, meaning that the function will\n" "operate on all elements of a vector without needing to loop through\n" "and act on each element one at a time. This makes writing code more\n" "concise, easy to read, and less error prone." msgstr "" -"Most of R's functions are vectorized, meaning that the function will\n" -"operate on all elements of a vector without needing to loop through\n" -"and act on each element one at a time. This makes writing code more\n" -"concise, easy to read, and less error prone." -# code block #: r-novice-gapminder/_episodes/09-vectorization.md:25 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "x <- 1:4\n" "x * 2\n" "~~~" msgstr "" -"~~~\n" -"x <- 1:4\n" -"x * 2\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/09-vectorization.md:33 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "[1] 2 4 6 8\n" "~~~" msgstr "" -"~~~\n" -"[1] 2 4 6 8\n" -"~~~" #: r-novice-gapminder/_episodes/09-vectorization.md:38 msgid "The multiplication happened to each element of the vector." -msgstr "The multiplication happened to each element of the vector." +msgstr "" #: r-novice-gapminder/_episodes/09-vectorization.md:40 msgid "We can also add two vectors together:" -msgstr "We can also add two vectors together:" +msgstr "" -# code block #: r-novice-gapminder/_episodes/09-vectorization.md:43 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "y <- 6:9\n" "x + y\n" "~~~" msgstr "" -"~~~\n" -"y <- 6:9\n" -"x + y\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/09-vectorization.md:51 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "[1] 7 9 11 13\n" "~~~" msgstr "" -"~~~\n" -"[1] 7 9 11 13\n" -"~~~" #: r-novice-gapminder/_episodes/09-vectorization.md:56 msgid "Each element of `x` was added to its corresponding element of `y`:" -msgstr "Each element of `x` was added to its corresponding element of `y`:" +msgstr "" -# code block #: r-novice-gapminder/_episodes/09-vectorization.md:59 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "x: 1 2 3 4\n" " + + + +\n" "y: 6 7 8 9\n" @@ -13478,17 +8767,9 @@ msgid "" " 7 9 11 13\n" "~~~" msgstr "" -"~~~\n" -"x: 1 2 3 4\n" -" + + + +\n" -"y: 6 7 8 9\n" -"---------------\n" -" 7 9 11 13\n" -"~~~" #: r-novice-gapminder/_episodes/09-vectorization.md:70 -msgid "" -">\n" +msgid ">\n" "> Let's try this on the `pop` column of the `gapminder` dataset.\n" ">\n" "> Make a new column in the `gapminder` data frame that\n" @@ -13525,65 +8806,28 @@ msgid "" "> > ~~~\n" "> > {: .output}" msgstr "" + +#: r-novice-gapminder/_episodes/09-vectorization.md:111 +msgid ">\n" +"> On a single graph, plot population, in\n" +"> millions, against year, for all countries. Don't worry about\n" +">identifying which country is which.\n" ">\n" -"> Let's try this on the `pop` column of the `gapminder` dataset.\n" -">\n" -"> Make a new column in the `gapminder` data frame that\n" -"> contains population in units of millions of people.\n" -"> Check the head or tail of the data frame to make sure\n" -"> it worked.\n" +"> Repeat the exercise, graphing only for China, India, and\n" +">Indonesia. Again, don't worry about which is which.\n" ">\n" -"> > ## Solution to challenge 1\n" -"> >\n" -"> > Let's try this on the `pop` column of the `gapminder` dataset.\n" +"> > ## Solution to challenge 2\n" "> >\n" -"> > Make a new column in the `gapminder` data frame that\n" -"> > contains population in units of millions of people.\n" -"> > Check the head or tail of the data frame to make sure\n" -"> > it worked.\n" +"> > Refresh your plotting skills by plotting population in millions against year.\n" "> >\n" "> > \n" "> > ~~~\n" -"> > gapminder$pop_millions <- gapminder$pop / 1e6\n" -"> > head(gapminder)\n" +"> > ggplot(gapminder, aes(x = year, y = pop_millions)) +\n" +"> > geom_point()\n" "> > ~~~\n" "> > {: .language-r}\n" "> > \n" -"> > \n" -"> > \n" -"> > ~~~\n" -"> > country year pop continent lifeExp gdpPercap pop_millions\n" -"> > 1 Afghanistan 1952 8425333 Asia 28.801 779.4453 8.425333\n" -"> > 2 Afghanistan 1957 9240934 Asia 30.332 820.8530 9.240934\n" -"> > 3 Afghanistan 1962 10267083 Asia 31.997 853.1007 10.267083\n" -"> > 4 Afghanistan 1967 11537966 Asia 34.020 836.1971 11.537966\n" -"> > 5 Afghanistan 1972 13079460 Asia 36.088 739.9811 13.079460\n" -"> > 6 Afghanistan 1977 14880372 Asia 38.438 786.1134 14.880372\n" -"> > ~~~\n" -"> > {: .output}" - -#: r-novice-gapminder/_episodes/09-vectorization.md:111 -msgid "" -">\n" -"> On a single graph, plot population, in\n" -"> millions, against year, for all countries. Don't worry about\n" -">identifying which country is which.\n" -">\n" -"> Repeat the exercise, graphing only for China, India, and\n" -">Indonesia. Again, don't worry about which is which.\n" -">\n" -"> > ## Solution to challenge 2\n" -"> >\n" -"> > Refresh your plotting skills by plotting population in millions against year.\n" -"> >\n" -"> > \n" -"> > ~~~\n" -"> > ggplot(gapminder, aes(x = year, y = pop_millions)) +\n" -"> > geom_point()\n" -"> > ~~~\n" -"> > {: .language-r}\n" -"> > \n" -"> > \"plot\n" +"> > \"plot\n" "> > \n" "> > ~~~\n" "> > countryset <- c(\"China\",\"India\",\"Indonesia\")\n" @@ -13595,188 +8839,112 @@ msgid "" "> > \n" "> > \"plot" msgstr "" -">\n" -"> On a single graph, plot population, in\n" -"> millions, against year, for all countries. Don't worry about\n" -">identifying which country is which.\n" -">\n" -"> Repeat the exercise, graphing only for China, India, and\n" -">Indonesia. Again, don't worry about which is which.\n" -">\n" -"> > ## Solution to challenge 2\n" -"> >\n" -"> > Refresh your plotting skills by plotting population in millions against year.\n" -"> >\n" -"> > \n" -"> > ~~~\n" -"> > ggplot(gapminder, aes(x = year, y = pop_millions)) +\n" -"> > geom_point()\n" -"> > ~~~\n" -"> > {: .language-r}\n" -"> > \n" -"> > \"plot\n" -"> > \n" -"> > ~~~\n" -"> > countryset <- c(\"China\",\"India\",\"Indonesia\")\n" -"> > ggplot(gapminder[gapminder$country %in% countryset,],\n" -"> > aes(x = year, y = pop_millions)) +\n" -"> > geom_point()\n" -"> > ~~~\n" -"> > {: .language-r}\n" -"> > \n" -"> > \"plot" #: r-novice-gapminder/_episodes/09-vectorization.md:145 -msgid "" -"Comparison operators, logical operators, and many functions are also\n" +msgid "Comparison operators, logical operators, and many functions are also\n" "vectorized:" msgstr "" -"Comparison operators, logical operators, and many functions are also\n" -"vectorized:" #: r-novice-gapminder/_episodes/09-vectorization.md:149 msgid "**Comparison operators**" -msgstr "**Comparison operators**" +msgstr "" -# code block #: r-novice-gapminder/_episodes/09-vectorization.md:152 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "x > 2\n" "~~~" msgstr "" -"~~~\n" -"x > 2\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/09-vectorization.md:159 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "[1] FALSE FALSE TRUE TRUE\n" "~~~" msgstr "" -"~~~\n" -"[1] FALSE FALSE TRUE TRUE\n" -"~~~" #: r-novice-gapminder/_episodes/09-vectorization.md:164 msgid "**Logical operators**" -msgstr "**Logical operators**" +msgstr "" -# code block #: r-novice-gapminder/_episodes/09-vectorization.md:166 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "a <- x > 3 # or, for clarity, a <- (x > 3)\n" "a\n" "~~~" msgstr "" -"~~~\n" -"a <- x > 3 # or, for clarity, a <- (x > 3)\n" -"a\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/09-vectorization.md:174 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "[1] FALSE FALSE FALSE TRUE\n" "~~~" msgstr "" -"~~~\n" -"[1] FALSE FALSE FALSE TRUE\n" -"~~~" -# blockquote, which can be cascaded #: r-novice-gapminder/_episodes/09-vectorization.md:179 +# blockquote, which can be cascaded msgid "> ## Tip: some useful functions for logical vectors" -msgstr "> ## Tip: some useful functions for logical vectors" +msgstr "" #: r-novice-gapminder/_episodes/09-vectorization.md:180 -msgid "" -">\n" +msgid ">\n" "> `any()` will return `TRUE` if *any* element of a vector is `TRUE`\n" "> `all()` will return `TRUE` if *all* elements of a vector are `TRUE`" msgstr "" -">\n" -"> `any()` will return `TRUE` if *any* element of a vector is `TRUE`\n" -"> `all()` will return `TRUE` if *all* elements of a vector are `TRUE`" #: r-novice-gapminder/_episodes/09-vectorization.md:185 msgid "Most functions also operate element-wise on vectors:" -msgstr "Most functions also operate element-wise on vectors:" +msgstr "" #: r-novice-gapminder/_episodes/09-vectorization.md:187 msgid "**Functions**" -msgstr "**Functions**" +msgstr "" -# code block #: r-novice-gapminder/_episodes/09-vectorization.md:189 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "x <- 1:4\n" "log(x)\n" "~~~" msgstr "" -"~~~\n" -"x <- 1:4\n" -"log(x)\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/09-vectorization.md:197 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "[1] 0.0000000 0.6931472 1.0986123 1.3862944\n" "~~~" msgstr "" -"~~~\n" -"[1] 0.0000000 0.6931472 1.0986123 1.3862944\n" -"~~~" #: r-novice-gapminder/_episodes/09-vectorization.md:202 msgid "Vectorized operations work element-wise on matrices:" -msgstr "Vectorized operations work element-wise on matrices:" +msgstr "" -# code block #: r-novice-gapminder/_episodes/09-vectorization.md:205 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "m <- matrix(1:12, nrow=3, ncol=4)\n" "m * -1\n" "~~~" msgstr "" -"~~~\n" -"m <- matrix(1:12, nrow=3, ncol=4)\n" -"m * -1\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/09-vectorization.md:213 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" " [,1] [,2] [,3] [,4]\n" "[1,] -1 -4 -7 -10\n" "[2,] -2 -5 -8 -11\n" "[3,] -3 -6 -9 -12\n" "~~~" msgstr "" -"~~~\n" -" [,1] [,2] [,3] [,4]\n" -"[1,] -1 -4 -7 -10\n" -"[2,] -2 -5 -8 -11\n" -"[3,] -3 -6 -9 -12\n" -"~~~" -# blockquote, which can be cascaded #: r-novice-gapminder/_episodes/09-vectorization.md:222 +# blockquote, which can be cascaded msgid "> ## Tip: element-wise vs. matrix multiplication" -msgstr "> ## Tip: element-wise vs. matrix multiplication" +msgstr "" #: r-novice-gapminder/_episodes/09-vectorization.md:223 -msgid "" -">\n" +msgid ">\n" "> Very important: the operator `*` gives you element-wise multiplication!\n" "> To do matrix multiplication, we need to use the `%*%` operator:\n" ">\n" @@ -13795,76 +8963,53 @@ msgid "" "> [3,] 30\n" "> ~~~" msgstr "" -">\n" -"> Very important: the operator `*` gives you element-wise multiplication!\n" -"> To do matrix multiplication, we need to use the `%*%` operator:\n" -">\n" -"> \n" -"> ~~~\n" -"> m %*% matrix(1, nrow=4, ncol=1)\n" -"> ~~~\n" -"> {: .language-r}\n" -"> \n" -"> \n" -"> \n" -"> ~~~\n" -"> [,1]\n" -"> [1,] 22\n" -"> [2,] 26\n" -"> [3,] 30\n" -"> ~~~" -# blockquote, which can be cascaded #: r-novice-gapminder/_episodes/09-vectorization.md:242 #: r-novice-gapminder/_episodes/09-vectorization.md:243 #: r-novice-gapminder/_episodes/09-vectorization.md:244 #: r-novice-gapminder/_episodes/09-vectorization.md:249 #: r-novice-gapminder/_episodes/09-vectorization.md:250 #: r-novice-gapminder/_episodes/09-vectorization.md:251 +# blockquote, which can be cascaded msgid "> " -msgstr "> " +msgstr "" -# blockquote, which can be cascaded #: r-novice-gapminder/_episodes/09-vectorization.md:245 #: r-novice-gapminder/_episodes/09-vectorization.md:247 #: r-novice-gapminder/_episodes/09-vectorization.md:252 #: r-novice-gapminder/_episodes/09-vectorization.md:255 +# blockquote, which can be cascaded msgid "> ~~~" -msgstr "> ~~~" +msgstr "" -# blockquote, which can be cascaded #: r-novice-gapminder/_episodes/09-vectorization.md:246 +# blockquote, which can be cascaded msgid "> matrix(1:4, nrow=1) %*% matrix(1:4, ncol=1)" -msgstr "> matrix(1:4, nrow=1) %*% matrix(1:4, ncol=1)" +msgstr "" -# blockquote, which can be cascaded #: r-novice-gapminder/_episodes/09-vectorization.md:248 +# blockquote, which can be cascaded msgid "> {: .language-r}" -msgstr "> {: .language-r}" +msgstr "" -# blockquote, which can be cascaded #: r-novice-gapminder/_episodes/09-vectorization.md:253 +# blockquote, which can be cascaded msgid "> [,1]" -msgstr "> [,1]" +msgstr "" -# blockquote, which can be cascaded #: r-novice-gapminder/_episodes/09-vectorization.md:254 +# blockquote, which can be cascaded msgid "> [1,] 30" -msgstr "> [1,] 30" +msgstr "" #: r-novice-gapminder/_episodes/09-vectorization.md:257 -msgid "" -">\n" +msgid ">\n" "> For more on matrix algebra, see the [Quick-R reference\n" "> guide](http://www.statmethods.net/advstats/matrix.html)" msgstr "" -">\n" -"> For more on matrix algebra, see the [Quick-R reference\n" -"> guide](http://www.statmethods.net/advstats/matrix.html)" #: r-novice-gapminder/_episodes/09-vectorization.md:264 -msgid "" -">\n" +msgid ">\n" "> Given the following matrix:\n" ">\n" "> \n" @@ -13883,28 +9028,9 @@ msgid "" "> [3,] 3 6 9 12\n" "> ~~~" msgstr "" -">\n" -"> Given the following matrix:\n" -">\n" -"> \n" -"> ~~~\n" -"> m <- matrix(1:12, nrow=3, ncol=4)\n" -"> m\n" -"> ~~~\n" -"> {: .language-r}\n" -"> \n" -"> \n" -"> \n" -"> ~~~\n" -"> [,1] [,2] [,3] [,4]\n" -"> [1,] 1 4 7 10\n" -"> [2,] 2 5 8 11\n" -"> [3,] 3 6 9 12\n" -"> ~~~" #: r-novice-gapminder/_episodes/09-vectorization.md:283 -msgid "" -">\n" +msgid ">\n" "> Write down what you think will happen when you run:\n" ">\n" "> 1. `m ^ -1`\n" @@ -13972,77 +9098,9 @@ msgid "" "> > {: .output}\n" "> >" msgstr "" -">\n" -"> Write down what you think will happen when you run:\n" -">\n" -"> 1. `m ^ -1`\n" -"> 2. `m * c(1, 0, -1)`\n" -"> 3. `m > c(0, 20)`\n" -"> 4. `m * c(1, 0, -1, 2)`\n" -">\n" -"> Did you get the output you expected? If not, ask a helper!\n" -">\n" -"> > ## Solution to challenge 3\n" -"> >\n" -"> > Given the following matrix:\n" -"> >\n" -"> > \n" -"> > ~~~\n" -"> > m <- matrix(1:12, nrow=3, ncol=4)\n" -"> > m\n" -"> > ~~~\n" -"> > {: .language-r}\n" -"> > \n" -"> > \n" -"> > \n" -"> > ~~~\n" -"> > [,1] [,2] [,3] [,4]\n" -"> > [1,] 1 4 7 10\n" -"> > [2,] 2 5 8 11\n" -"> > [3,] 3 6 9 12\n" -"> > ~~~\n" -"> > {: .output}\n" -"> >\n" -"> >\n" -"> > Write down what you think will happen when you run:\n" -"> >\n" -"> > 1. `m ^ -1`\n" -"> >\n" -"> > \n" -"> > ~~~\n" -"> > [,1] [,2] [,3] [,4]\n" -"> > [1,] 1.0000000 0.2500000 0.1428571 0.10000000\n" -"> > [2,] 0.5000000 0.2000000 0.1250000 0.09090909\n" -"> > [3,] 0.3333333 0.1666667 0.1111111 0.08333333\n" -"> > ~~~\n" -"> > {: .output}\n" -"> >\n" -"> > 2. `m * c(1, 0, -1)`\n" -"> >\n" -"> > \n" -"> > ~~~\n" -"> > [,1] [,2] [,3] [,4]\n" -"> > [1,] 1 4 7 10\n" -"> > [2,] 0 0 0 0\n" -"> > [3,] -3 -6 -9 -12\n" -"> > ~~~\n" -"> > {: .output}\n" -"> >\n" -"> > 3. `m > c(0, 20)`\n" -"> >\n" -"> > \n" -"> > ~~~\n" -"> > [,1] [,2] [,3] [,4]\n" -"> > [1,] TRUE FALSE TRUE FALSE\n" -"> > [2,] FALSE TRUE FALSE TRUE\n" -"> > [3,] TRUE FALSE TRUE FALSE\n" -"> > ~~~\n" -"> > {: .output}\n" -"> >" #: r-novice-gapminder/_episodes/09-vectorization.md:355 -msgid "" -">\n" +msgid ">\n" "> We're interested in looking at the sum of the\n" "> following sequence of fractions:\n" ">\n" @@ -14161,129 +9219,10 @@ msgid "" "> > {: .output}\n" "> >" msgstr "" -">\n" -"> We're interested in looking at the sum of the\n" -"> following sequence of fractions:\n" -">\n" -"> \n" -"> ~~~\n" -"> x = 1/(1^2) + 1/(2^2) + 1/(3^2) + ... + 1/(n^2)\n" -"> ~~~\n" -"> {: .language-r}\n" -">\n" -"> This would be tedious to type out, and impossible for high values of\n" -"> n. Use vectorisation to compute x when n=100. What is the sum when\n" -"> n=10,000?\n" -">\n" -"> > ## Challenge 4\n" -"> >\n" -"> > We're interested in looking at the sum of the\n" -"> > following sequence of fractions:\n" -"> >\n" -"> > \n" -"> > ~~~\n" -"> > x = 1/(1^2) + 1/(2^2) + 1/(3^2) + ... + 1/(n^2)\n" -"> > ~~~\n" -"> > {: .language-r}\n" -"> >\n" -"> > This would be tedious to type out, and impossible for\n" -"> > high values of n.\n" -"> > Can you use vectorisation to compute x, when n=100?\n" -"> > How about when n=10,000?\n" -"> >\n" -"> > \n" -"> > ~~~\n" -"> > sum(1/(1:100)^2)\n" -"> > ~~~\n" -"> > {: .language-r}\n" -"> > \n" -"> > \n" -"> > \n" -"> > ~~~\n" -"> > [1] 1.634984\n" -"> > ~~~\n" -"> > {: .output}\n" -"> > \n" -"> > \n" -"> > \n" -"> > ~~~\n" -"> > sum(1/(1:1e04)^2)\n" -"> > ~~~\n" -"> > {: .language-r}\n" -"> > \n" -"> > \n" -"> > \n" -"> > ~~~\n" -"> > [1] 1.644834\n" -"> > ~~~\n" -"> > {: .output}\n" -"> > \n" -"> > \n" -"> > \n" -"> > ~~~\n" -"> > n <- 10000\n" -"> > sum(1/(1:n)^2)\n" -"> > ~~~\n" -"> > {: .language-r}\n" -"> > \n" -"> > \n" -"> > \n" -"> > ~~~\n" -"> > [1] 1.644834\n" -"> > ~~~\n" -"> > {: .output}\n" -"> >\n" -"> > We can also obtain the same results using a function:\n" -"> > \n" -"> > ~~~\n" -"> > inverse_sum_of_squares <- function(n) {\n" -"> > sum(1/(1:n)^2)\n" -"> > }\n" -"> > inverse_sum_of_squares(100)\n" -"> > ~~~\n" -"> > {: .language-r}\n" -"> > \n" -"> > \n" -"> > \n" -"> > ~~~\n" -"> > [1] 1.634984\n" -"> > ~~~\n" -"> > {: .output}\n" -"> > \n" -"> > \n" -"> > \n" -"> > ~~~\n" -"> > inverse_sum_of_squares(10000)\n" -"> > ~~~\n" -"> > {: .language-r}\n" -"> > \n" -"> > \n" -"> > \n" -"> > ~~~\n" -"> > [1] 1.644834\n" -"> > ~~~\n" -"> > {: .output}\n" -"> > \n" -"> > \n" -"> > \n" -"> > ~~~\n" -"> > n <- 10000\n" -"> > inverse_sum_of_squares(n)\n" -"> > ~~~\n" -"> > {: .language-r}\n" -"> > \n" -"> > \n" -"> > \n" -"> > ~~~\n" -"> > [1] 1.644834\n" -"> > ~~~\n" -"> > {: .output}\n" -"> >" -# Front Matter #: r-novice-gapminder/_episodes/10-functions.md:1 -msgid "" -"---\n" +# Front Matter +msgid "---\n" "# Please do not edit this file directly; it is auto generated.\n" "# Instead, please edit 10-functions.md in _episodes_rmd/\n" "title: Functions Explained\n" @@ -14306,59 +9245,27 @@ msgid "" "source: Rmd\n" "---" msgstr "" -"---\n" -"# Please do not edit this file directly; it is auto generated.\n" -"# Instead, please edit 10-functions.md in _episodes_rmd/\n" -"title: Functions Explained\n" -"teaching: 45\n" -"exercises: 15\n" -"questions:\n" -"- \"How can I write a new function in R?\"\n" -"objectives:\n" -"- \"Define a function that takes arguments.\"\n" -"- \"Return a value from a function.\"\n" -"- \"Check argument conditions with `stopifnot()` in functions.\"\n" -"- \"Test a function.\"\n" -"- \"Set default values for function arguments.\"\n" -"- \"Explain why we should divide programs into small, single-purpose functions.\"\n" -"keypoints:\n" -"- \"Use `function` to define a new function in R.\"\n" -"- \"Use parameters to pass values into functions.\"\n" -"- \"Use `stopifnot()` to flexibly check function arguments in R.\"\n" -"- \"Load functions into programs using `source()`.\"\n" -"source: Rmd\n" -"---" #: r-novice-gapminder/_episodes/10-functions.md:27 -msgid "" -"If we only had one data set to analyze, it would probably be faster to load the\n" +msgid "If we only had one data set to analyze, it would probably be faster to load the\n" "file into a spreadsheet and use that to plot simple statistics. However, the\n" "gapminder data is updated periodically, and we may want to pull in that new\n" "information later and re-run our analysis again. We may also obtain similar data\n" "from a different source in the future." msgstr "" -"If we only had one data set to analyze, it would probably be faster to load the\n" -"file into a spreadsheet and use that to plot simple statistics. However, the\n" -"gapminder data is updated periodically, and we may want to pull in that new\n" -"information later and re-run our analysis again. We may also obtain similar data\n" -"from a different source in the future." #: r-novice-gapminder/_episodes/10-functions.md:33 -msgid "" -"In this lesson, we'll learn how to write a function so that we can repeat\n" +msgid "In this lesson, we'll learn how to write a function so that we can repeat\n" "several operations with a single command." msgstr "" -"In this lesson, we'll learn how to write a function so that we can repeat\n" -"several operations with a single command." -# blockquote, which can be cascaded #: r-novice-gapminder/_episodes/10-functions.md:36 +# blockquote, which can be cascaded msgid "> ## What is a function?" -msgstr "> ## What is a function?" +msgstr "" #: r-novice-gapminder/_episodes/10-functions.md:37 -msgid "" -">\n" +msgid ">\n" "> Functions gather a sequence of operations into a whole, preserving it for\n" "> ongoing use. Functions provide:\n" ">\n" @@ -14371,183 +9278,110 @@ msgid "" "> functions constitute \"programming\" as much as any single abstraction can. If\n" "> you have written a function, you are a computer programmer." msgstr "" -">\n" -"> Functions gather a sequence of operations into a whole, preserving it for\n" -"> ongoing use. Functions provide:\n" -">\n" -"> * a name we can remember and invoke it by\n" -"> * relief from the need to remember the individual operations\n" -"> * a defined set of inputs and expected outputs\n" -"> * rich connections to the larger programming environment\n" -">\n" -"> As the basic building block of most programming languages, user-defined\n" -"> functions constitute \"programming\" as much as any single abstraction can. If\n" -"> you have written a function, you are a computer programmer." -# header #: r-novice-gapminder/_episodes/10-functions.md:51 +# header msgid "## Defining a function" -msgstr "## Defining a function" +msgstr "" #: r-novice-gapminder/_episodes/10-functions.md:53 -msgid "" -"Let's open a new R script file in the `functions/` directory and call it\n" +msgid "Let's open a new R script file in the `functions/` directory and call it\n" "functions-lesson.R." msgstr "" -"Let's open a new R script file in the `functions/` directory and call it\n" -"functions-lesson.R." -# code block #: r-novice-gapminder/_episodes/10-functions.md:57 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "my_sum <- function(a, b) {\n" " the_sum <- a + b\n" " return(the_sum)\n" "}\n" "~~~" msgstr "" -"~~~\n" -"my_sum <- function(a, b) {\n" -" the_sum <- a + b\n" -" return(the_sum)\n" -"}\n" -"~~~" #: r-novice-gapminder/_episodes/10-functions.md:65 -msgid "" -"Let's define a function `fahr_to_kelvin()` that converts temperatures from\n" +msgid "Let's define a function `fahr_to_kelvin()` that converts temperatures from\n" "Fahrenheit to Kelvin:" msgstr "" -"Let's define a function `fahr_to_kelvin()` that converts temperatures from\n" -"Fahrenheit to Kelvin:" -# code block #: r-novice-gapminder/_episodes/10-functions.md:69 #: r-novice-gapminder/_episodes/10-functions.md:220 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "fahr_to_kelvin <- function(temp) {\n" " kelvin <- ((temp - 32) * (5 / 9)) + 273.15\n" " return(kelvin)\n" "}\n" "~~~" msgstr "" -"~~~\n" -"fahr_to_kelvin <- function(temp) {\n" -" kelvin <- ((temp - 32) * (5 / 9)) + 273.15\n" -" return(kelvin)\n" -"}\n" -"~~~" #: r-novice-gapminder/_episodes/10-functions.md:77 -msgid "" -"We define `fahr_to_kelvin()` by assigning it to the output of `function`. The\n" +msgid "We define `fahr_to_kelvin()` by assigning it to the output of `function`. The\n" "list of argument names are contained within parentheses. Next, the\n" "[body]({{ page.root }}/reference/#function-body) of the function--the\n" "statements that are executed when it runs--is contained within curly braces\n" "(`{}`). The statements in the body are indented by two spaces. This makes the\n" "code easier to read but does not affect how the code operates." msgstr "" -"We define `fahr_to_kelvin()` by assigning it to the output of `function`. The\n" -"list of argument names are contained within parentheses. Next, the\n" -"[body]({{ page.root }}/reference/#function-body) of the function--the\n" -"statements that are executed when it runs--is contained within curly braces\n" -"(`{}`). The statements in the body are indented by two spaces. This makes the\n" -"code easier to read but does not affect how the code operates." #: r-novice-gapminder/_episodes/10-functions.md:84 msgid "It is useful to think of creating functions like writing a cookbook. First you define the \"ingredients\" that your function needs. In this case, we only need one ingredient to use our function: \"temp\". After we list our ingredients, we then say what we will do with them, in this case, we are taking our ingredient and applying a set of mathmatical operators to it. " -msgstr "It is useful to think of creating functions like writing a cookbook. First you define the \"ingredients\" that your function needs. In this case, we only need one ingredient to use our function: \"temp\". After we list our ingredients, we then say what we will do with them, in this case, we are taking our ingredient and applying a set of mathmatical operators to it. " +msgstr "" #: r-novice-gapminder/_episodes/10-functions.md:86 -msgid "" -"When we call the function, the values we pass to it as arguments are assigned to\n" +msgid "When we call the function, the values we pass to it as arguments are assigned to\n" "those variables so that we can use them inside the function. Inside the\n" "function, we use a [return\n" "statement]({{ page.root }}/reference/#return-statement) to send a result back to\n" "whoever asked for it." msgstr "" -"When we call the function, the values we pass to it as arguments are assigned to\n" -"those variables so that we can use them inside the function. Inside the\n" -"function, we use a [return\n" -"statement]({{ page.root }}/reference/#return-statement) to send a result back to\n" -"whoever asked for it." #: r-novice-gapminder/_episodes/10-functions.md:93 -msgid "" -">\n" +msgid ">\n" "> One feature unique to R is that the return statement is not required.\n" "> R automatically returns whichever variable is on the last line of the body\n" "> of the function. But for clarity, we will explicitly define the\n" "> return statement." msgstr "" -">\n" -"> One feature unique to R is that the return statement is not required.\n" -"> R automatically returns whichever variable is on the last line of the body\n" -"> of the function. But for clarity, we will explicitly define the\n" -"> return statement." #: r-novice-gapminder/_episodes/10-functions.md:101 -msgid "" -"Let's try running our function.\n" +msgid "Let's try running our function.\n" "Calling our own function is no different from calling any other function:" msgstr "" -"Let's try running our function.\n" -"Calling our own function is no different from calling any other function:" -# code block #: r-novice-gapminder/_episodes/10-functions.md:105 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "# freezing point of water\n" "fahr_to_kelvin(32)\n" "~~~" msgstr "" -"~~~\n" -"# freezing point of water\n" -"fahr_to_kelvin(32)\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/10-functions.md:113 #: r-novice-gapminder/_episodes/10-functions.md:281 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "[1] 273.15\n" "~~~" msgstr "" -"~~~\n" -"[1] 273.15\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/10-functions.md:119 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "# boiling point of water\n" "fahr_to_kelvin(212)\n" "~~~" msgstr "" -"~~~\n" -"# boiling point of water\n" -"fahr_to_kelvin(212)\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/10-functions.md:127 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "[1] 373.15\n" "~~~" msgstr "" -"~~~\n" -"[1] 373.15\n" -"~~~" #: r-novice-gapminder/_episodes/10-functions.md:133 -msgid "" -">\n" +msgid ">\n" "> Write a function called `kelvin_to_celsius()` that takes a temperature in\n" "> Kelvin and returns that temperature in Celsius.\n" ">\n" @@ -14567,51 +9401,25 @@ msgid "" "> > ~~~\n" "> > {: .language-r}" msgstr "" -">\n" -"> Write a function called `kelvin_to_celsius()` that takes a temperature in\n" -"> Kelvin and returns that temperature in Celsius.\n" -">\n" -"> Hint: To convert from Kelvin to Celsius you subtract 273.15\n" -">\n" -"> > ## Solution to challenge 1\n" -"> >\n" -"> > Write a function called `kelvin_to_celsius` that takes a temperature in Kelvin\n" -"> > and returns that temperature in Celsius\n" -"> >\n" -"> > \n" -"> > ~~~\n" -"> > kelvin_to_celsius <- function(temp) {\n" -"> > celsius <- temp - 273.15\n" -"> > return(celsius)\n" -"> > }\n" -"> > ~~~\n" -"> > {: .language-r}" -# header #: r-novice-gapminder/_episodes/10-functions.md:155 +# header msgid "## Combining functions" -msgstr "## Combining functions" +msgstr "" #: r-novice-gapminder/_episodes/10-functions.md:157 -msgid "" -"The real power of functions comes from mixing, matching and combining them\n" +msgid "The real power of functions comes from mixing, matching and combining them\n" "into ever-larger chunks to get the effect we want." msgstr "" -"The real power of functions comes from mixing, matching and combining them\n" -"into ever-larger chunks to get the effect we want." #: r-novice-gapminder/_episodes/10-functions.md:160 -msgid "" -"Let's define two functions that will convert temperature from Fahrenheit to\n" +msgid "Let's define two functions that will convert temperature from Fahrenheit to\n" "Kelvin, and Kelvin to Celsius:" msgstr "" -"Let's define two functions that will convert temperature from Fahrenheit to\n" -"Kelvin, and Kelvin to Celsius:" -# code block #: r-novice-gapminder/_episodes/10-functions.md:164 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "fahr_to_kelvin <- function(temp) {\n" " kelvin <- ((temp - 32) * (5 / 9)) + 273.15\n" " return(kelvin)\n" @@ -14623,21 +9431,9 @@ msgid "" "}\n" "~~~" msgstr "" -"~~~\n" -"fahr_to_kelvin <- function(temp) {\n" -" kelvin <- ((temp - 32) * (5 / 9)) + 273.15\n" -" return(kelvin)\n" -"}\n" -"\n" -"kelvin_to_celsius <- function(temp) {\n" -" celsius <- temp - 273.15\n" -" return(celsius)\n" -"}\n" -"~~~" #: r-novice-gapminder/_episodes/10-functions.md:178 -msgid "" -">\n" +msgid ">\n" "> Define the function to convert directly from Fahrenheit to Celsius,\n" "> by reusing the two functions above (or using your own functions if you\n" "> prefer).\n" @@ -14659,36 +9455,14 @@ msgid "" "> > ~~~\n" "> > {: .language-r}" msgstr "" -">\n" -"> Define the function to convert directly from Fahrenheit to Celsius,\n" -"> by reusing the two functions above (or using your own functions if you\n" -"> prefer).\n" -">\n" -">\n" -"> > ## Solution to challenge 2\n" -"> >\n" -"> > Define the function to convert directly from Fahrenheit to Celsius,\n" -"> > by reusing these two functions above\n" -"> >\n" -"> >\n" -"> > \n" -"> > ~~~\n" -"> > fahr_to_celsius <- function(temp) {\n" -"> > temp_k <- fahr_to_kelvin(temp)\n" -"> > result <- kelvin_to_celsius(temp_k)\n" -"> > return(result)\n" -"> > }\n" -"> > ~~~\n" -"> > {: .language-r}" -# header #: r-novice-gapminder/_episodes/10-functions.md:202 +# header msgid "## Interlude: Defensive Programming" -msgstr "## Interlude: Defensive Programming" +msgstr "" #: r-novice-gapminder/_episodes/10-functions.md:204 -msgid "" -"Now that we've begun to appreciate how writing functions provides an efficient\n" +msgid "Now that we've begun to appreciate how writing functions provides an efficient\n" "way to make R code re-usable and modular, we should note that it is important\n" "to ensure that functions only work in their intended use-cases. Checking\n" "function parameters is related to the concept of _defensive programming_.\n" @@ -14698,59 +9472,29 @@ msgid "" "They make it easier to debug because they give us a better idea of where the\n" "errors originate." msgstr "" -"Now that we've begun to appreciate how writing functions provides an efficient\n" -"way to make R code re-usable and modular, we should note that it is important\n" -"to ensure that functions only work in their intended use-cases. Checking\n" -"function parameters is related to the concept of _defensive programming_.\n" -"Defensive programming encourages us to frequently check conditions and throw an\n" -"error if something is wrong. These checks are referred to as assertion\n" -"statements because we want to assert some condition is `TRUE` before proceeding.\n" -"They make it easier to debug because they give us a better idea of where the\n" -"errors originate." -# header #: r-novice-gapminder/_episodes/10-functions.md:214 +# header msgid "### Checking conditions with `stopifnot()`" -msgstr "### Checking conditions with `stopifnot()`" +msgstr "" #: r-novice-gapminder/_episodes/10-functions.md:216 -msgid "" -"Let's start by re-examining `fahr_to_kelvin()`, our function for converting\n" +msgid "Let's start by re-examining `fahr_to_kelvin()`, our function for converting\n" "temperatures from Fahrenheit to Kelvin. It was defined like so:" msgstr "" -"Let's start by re-examining `fahr_to_kelvin()`, our function for converting\n" -"temperatures from Fahrenheit to Kelvin. It was defined like so:" #: r-novice-gapminder/_episodes/10-functions.md:228 -msgid "" -"For this function to work as intended, the argument `temp` must be a `numeric`\n" -"value; otherwise, the mathematical procedure for converting between the two\n" -"temperature scales will not work. To create an error, we can use the function\n" -"`stop()`. For example, since the argument `temp` must be a `numeric` vector, we\n" -"could check for this condition with an `if` statement and throw an error if the\n" -"condition was violated. We could augment our function above like so:" -msgstr "" -"For this function to work as intended, the argument `temp` must be a `numeric`\n" +msgid "For this function to work as intended, the argument `temp` must be a `numeric`\n" "value; otherwise, the mathematical procedure for converting between the two\n" "temperature scales will not work. To create an error, we can use the function\n" "`stop()`. For example, since the argument `temp` must be a `numeric` vector, we\n" "could check for this condition with an `if` statement and throw an error if the\n" "condition was violated. We could augment our function above like so:" - -# code block -#: r-novice-gapminder/_episodes/10-functions.md:236 -msgid "" -"~~~\n" -"fahr_to_kelvin <- function(temp) {\n" -" if (!is.numeric(temp)) {\n" -" stop(\"temp must be a numeric vector.\")\n" -" }\n" -" kelvin <- ((temp - 32) * (5 / 9)) + 273.15\n" -" return(kelvin)\n" -"}\n" -"~~~" msgstr "" -"~~~\n" + +#: r-novice-gapminder/_episodes/10-functions.md:236 +# code block +msgid "~~~\n" "fahr_to_kelvin <- function(temp) {\n" " if (!is.numeric(temp)) {\n" " stop(\"temp must be a numeric vector.\")\n" @@ -14759,43 +9503,30 @@ msgstr "" " return(kelvin)\n" "}\n" "~~~" +msgstr "" #: r-novice-gapminder/_episodes/10-functions.md:247 -msgid "" -"If we had multiple conditions or arguments to check, it would take many lines\n" +msgid "If we had multiple conditions or arguments to check, it would take many lines\n" "of code to check all of them. Luckily R provides the convenience function\n" "`stopifnot()`. We can list as many requirements that should evaluate to `TRUE`;\n" "`stopifnot()` throws an error if it finds one that is `FALSE`. Listing these\n" "conditions also serves a secondary purpose as extra documentation for the\n" "function." msgstr "" -"If we had multiple conditions or arguments to check, it would take many lines\n" -"of code to check all of them. Luckily R provides the convenience function\n" -"`stopifnot()`. We can list as many requirements that should evaluate to `TRUE`;\n" -"`stopifnot()` throws an error if it finds one that is `FALSE`. Listing these\n" -"conditions also serves a secondary purpose as extra documentation for the\n" -"function." #: r-novice-gapminder/_episodes/10-functions.md:254 -msgid "" -"Let's try out defensive programming with `stopifnot()` by adding assertions to\n" +msgid "Let's try out defensive programming with `stopifnot()` by adding assertions to\n" "check the input to our function `fahr_to_kelvin()`." msgstr "" -"Let's try out defensive programming with `stopifnot()` by adding assertions to\n" -"check the input to our function `fahr_to_kelvin()`." #: r-novice-gapminder/_episodes/10-functions.md:257 -msgid "" -"We want to assert the following: `temp` is a numeric vector. We may do that like\n" +msgid "We want to assert the following: `temp` is a numeric vector. We may do that like\n" "so:" msgstr "" -"We want to assert the following: `temp` is a numeric vector. We may do that like\n" -"so:" -# code block #: r-novice-gapminder/_episodes/10-functions.md:261 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "fahr_to_kelvin <- function(temp) {\n" " stopifnot(is.numeric(temp))\n" " kelvin <- ((temp - 32) * (5 / 9)) + 273.15\n" @@ -14803,62 +9534,40 @@ msgid "" "}\n" "~~~" msgstr "" -"~~~\n" -"fahr_to_kelvin <- function(temp) {\n" -" stopifnot(is.numeric(temp))\n" -" kelvin <- ((temp - 32) * (5 / 9)) + 273.15\n" -" return(kelvin)\n" -"}\n" -"~~~" #: r-novice-gapminder/_episodes/10-functions.md:270 msgid "It still works when given proper input." -msgstr "It still works when given proper input." +msgstr "" -# code block #: r-novice-gapminder/_episodes/10-functions.md:273 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "# freezing point of water\n" "fahr_to_kelvin(temp = 32)\n" "~~~" msgstr "" -"~~~\n" -"# freezing point of water\n" -"fahr_to_kelvin(temp = 32)\n" -"~~~" #: r-novice-gapminder/_episodes/10-functions.md:286 msgid "But fails instantly if given improper input." -msgstr "But fails instantly if given improper input." +msgstr "" -# code block #: r-novice-gapminder/_episodes/10-functions.md:289 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "# Metric is a factor instead of numeric\n" "fahr_to_kelvin(temp = as.factor(32))\n" "~~~" msgstr "" -"~~~\n" -"# Metric is a factor instead of numeric\n" -"fahr_to_kelvin(temp = as.factor(32))\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/10-functions.md:297 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "Error in fahr_to_kelvin(temp = as.factor(32)): is.numeric(temp) is not TRUE\n" "~~~" msgstr "" -"~~~\n" -"Error in fahr_to_kelvin(temp = as.factor(32)): is.numeric(temp) is not TRUE\n" -"~~~" #: r-novice-gapminder/_episodes/10-functions.md:303 -msgid "" -">\n" +msgid ">\n" "> Use defensive programming to ensure that our `fahr_to_celsius()` function\n" "> throws an error immediately if the argument `temp` is specified\n" "> inappropriately.\n" @@ -14883,48 +9592,20 @@ msgid "" "> > ~~~\n" "> > {: .language-r}" msgstr "" -">\n" -"> Use defensive programming to ensure that our `fahr_to_celsius()` function\n" -"> throws an error immediately if the argument `temp` is specified\n" -"> inappropriately.\n" -">\n" -">\n" -"> > ## Solution to challenge 3\n" -"> >\n" -"> > Extend our previous definition of the function by adding in an explicit call\n" -"> > to `stopifnot()`. Since `fahr_to_celsius()` is a composition of two other\n" -"> > functions, checking inside here makes adding checks to the two component\n" -"> > functions redundant.\n" -"> >\n" -"> >\n" -"> > \n" -"> > ~~~\n" -"> > fahr_to_celsius <- function(temp) {\n" -"> > stopifnot(!is.numeric(temp))\n" -"> > temp_k <- fahr_to_kelvin(temp)\n" -"> > result <- kelvin_to_celsius(temp_k)\n" -"> > return(result)\n" -"> > }\n" -"> > ~~~\n" -"> > {: .language-r}" -# header #: r-novice-gapminder/_episodes/10-functions.md:330 +# header msgid "## More on combining functions" -msgstr "## More on combining functions" +msgstr "" #: r-novice-gapminder/_episodes/10-functions.md:332 -msgid "" -"Now, we're going to define a function that calculates the Gross Domestic Product\n" +msgid "Now, we're going to define a function that calculates the Gross Domestic Product\n" "of a nation from the data available in our dataset:" msgstr "" -"Now, we're going to define a function that calculates the Gross Domestic Product\n" -"of a nation from the data available in our dataset:" -# code block #: r-novice-gapminder/_episodes/10-functions.md:336 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "# Takes a dataset and multiplies the population column\n" "# with the GDP per capita column.\n" "calcGDP <- function(dat) {\n" @@ -14933,88 +9614,53 @@ msgid "" "}\n" "~~~" msgstr "" -"~~~\n" -"# Takes a dataset and multiplies the population column\n" -"# with the GDP per capita column.\n" -"calcGDP <- function(dat) {\n" -" gdp <- dat$pop * dat$gdpPercap\n" -" return(gdp)\n" -"}\n" -"~~~" #: r-novice-gapminder/_episodes/10-functions.md:346 -msgid "" -"We define `calcGDP()` by assigning it to the output of `function`. The list of\n" +msgid "We define `calcGDP()` by assigning it to the output of `function`. The list of\n" "argument names are contained within parentheses. Next, the body of the function \n" "-- the statements executed when you call the function -- is contained within\n" "curly braces (`{}`)." msgstr "" -"We define `calcGDP()` by assigning it to the output of `function`. The list of\n" -"argument names are contained within parentheses. Next, the body of the function \n" -"-- the statements executed when you call the function -- is contained within\n" -"curly braces (`{}`)." #: r-novice-gapminder/_episodes/10-functions.md:351 -msgid "" -"We've indented the statements in the body by two spaces. This makes the code\n" +msgid "We've indented the statements in the body by two spaces. This makes the code\n" "easier to read but does not affect how it operates." msgstr "" -"We've indented the statements in the body by two spaces. This makes the code\n" -"easier to read but does not affect how it operates." #: r-novice-gapminder/_episodes/10-functions.md:354 -msgid "" -"When we call the function, the values we pass to it are assigned to the\n" +msgid "When we call the function, the values we pass to it are assigned to the\n" "arguments, which become variables inside the body of the function." msgstr "" -"When we call the function, the values we pass to it are assigned to the\n" -"arguments, which become variables inside the body of the function." #: r-novice-gapminder/_episodes/10-functions.md:357 -msgid "" -"Inside the function, we use the `return()` function to send back the result.\n" +msgid "Inside the function, we use the `return()` function to send back the result.\n" "This `return()` function is optional: R will automatically return the results of\n" "whatever command is executed on the last line of the function." msgstr "" -"Inside the function, we use the `return()` function to send back the result.\n" -"This `return()` function is optional: R will automatically return the results of\n" -"whatever command is executed on the last line of the function." -# code block #: r-novice-gapminder/_episodes/10-functions.md:363 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "calcGDP(head(gapminder))\n" "~~~" msgstr "" -"~~~\n" -"calcGDP(head(gapminder))\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/10-functions.md:370 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "[1] 6567086330 7585448670 8758855797 9648014150 9678553274 11697659231\n" "~~~" msgstr "" -"~~~\n" -"[1] 6567086330 7585448670 8758855797 9648014150 9678553274 11697659231\n" -"~~~" #: r-novice-gapminder/_episodes/10-functions.md:375 -msgid "" -"That's not very informative. Let's add some more arguments so we can extract\n" +msgid "That's not very informative. Let's add some more arguments so we can extract\n" "that per year and country." msgstr "" -"That's not very informative. Let's add some more arguments so we can extract\n" -"that per year and country." -# code block #: r-novice-gapminder/_episodes/10-functions.md:379 #: r-novice-gapminder/_episodes/12-plyr.md:24 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "# Takes a dataset and multiplies the population column\n" "# with the GDP per capita column.\n" "calcGDP <- function(dat, year=NULL, country=NULL) {\n" @@ -15031,47 +9677,22 @@ msgid "" "}\n" "~~~" msgstr "" -"~~~\n" -"# Takes a dataset and multiplies the population column\n" -"# with the GDP per capita column.\n" -"calcGDP <- function(dat, year=NULL, country=NULL) {\n" -" if(!is.null(year)) {\n" -" dat <- dat[dat$year %in% year, ]\n" -" }\n" -" if (!is.null(country)) {\n" -" dat <- dat[dat$country %in% country,]\n" -" }\n" -" gdp <- dat$pop * dat$gdpPercap\n" -"\n" -" new <- cbind(dat, gdp=gdp)\n" -" return(new)\n" -"}\n" -"~~~" #: r-novice-gapminder/_episodes/10-functions.md:397 -msgid "" -"If you've been writing these functions down into a separate R script\n" +msgid "If you've been writing these functions down into a separate R script\n" "(a good idea!), you can load in the functions into our R session by using the\n" "`source()` function:" msgstr "" -"If you've been writing these functions down into a separate R script\n" -"(a good idea!), you can load in the functions into our R session by using the\n" -"`source()` function:" -# code block #: r-novice-gapminder/_episodes/10-functions.md:402 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "source(\"functions/functions-lesson.R\")\n" "~~~" msgstr "" -"~~~\n" -"source(\"functions/functions-lesson.R\")\n" -"~~~" #: r-novice-gapminder/_episodes/10-functions.md:407 -msgid "" -"Ok, so there's a lot going on in this function now. In plain English, the\n" +msgid "Ok, so there's a lot going on in this function now. In plain English, the\n" "function now subsets the provided data by year if the year argument isn't empty,\n" "then subsets the result by country if the country argument isn't empty. Then it \n" "calculates the GDP for whatever subset emerges from the previous two steps. The \n" @@ -15079,33 +9700,21 @@ msgid "" "this as the final result. You can see that the output is much more informative\n" "than a vector of numbers." msgstr "" -"Ok, so there's a lot going on in this function now. In plain English, the\n" -"function now subsets the provided data by year if the year argument isn't empty,\n" -"then subsets the result by country if the country argument isn't empty. Then it \n" -"calculates the GDP for whatever subset emerges from the previous two steps. The \n" -"function then adds the GDP as a new column to the subsetted data and returns\n" -"this as the final result. You can see that the output is much more informative\n" -"than a vector of numbers." #: r-novice-gapminder/_episodes/10-functions.md:415 msgid "Let's take a look at what happens when we specify the year:" -msgstr "Let's take a look at what happens when we specify the year:" +msgstr "" -# code block #: r-novice-gapminder/_episodes/10-functions.md:418 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "head(calcGDP(gapminder, year=2007))\n" "~~~" msgstr "" -"~~~\n" -"head(calcGDP(gapminder, year=2007))\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/10-functions.md:425 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" " country year pop continent lifeExp gdpPercap gdp\n" "12 Afghanistan 2007 31889923 Asia 43.828 974.5803 31079291949\n" "24 Albania 2007 3600523 Europe 76.423 5937.0295 21376411360\n" @@ -15115,35 +9724,21 @@ msgid "" "72 Australia 2007 20434176 Oceania 81.235 34435.3674 703658358894\n" "~~~" msgstr "" -"~~~\n" -" country year pop continent lifeExp gdpPercap gdp\n" -"12 Afghanistan 2007 31889923 Asia 43.828 974.5803 31079291949\n" -"24 Albania 2007 3600523 Europe 76.423 5937.0295 21376411360\n" -"36 Algeria 2007 33333216 Africa 72.301 6223.3675 207444851958\n" -"48 Angola 2007 12420476 Africa 42.731 4797.2313 59583895818\n" -"60 Argentina 2007 40301927 Americas 75.320 12779.3796 515033625357\n" -"72 Australia 2007 20434176 Oceania 81.235 34435.3674 703658358894\n" -"~~~" #: r-novice-gapminder/_episodes/10-functions.md:436 msgid "Or for a specific country:" -msgstr "Or for a specific country:" +msgstr "" -# code block #: r-novice-gapminder/_episodes/10-functions.md:439 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "calcGDP(gapminder, country=\"Australia\")\n" "~~~" msgstr "" -"~~~\n" -"calcGDP(gapminder, country=\"Australia\")\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/10-functions.md:446 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" " country year pop continent lifeExp gdpPercap gdp\n" "61 Australia 1952 8691212 Oceania 69.120 10039.60 87256254102\n" "62 Australia 1957 9712569 Oceania 70.330 10949.65 106349227169\n" @@ -15159,81 +9754,47 @@ msgid "" "72 Australia 2007 20434176 Oceania 81.235 34435.37 703658358894\n" "~~~" msgstr "" -"~~~\n" -" country year pop continent lifeExp gdpPercap gdp\n" -"61 Australia 1952 8691212 Oceania 69.120 10039.60 87256254102\n" -"62 Australia 1957 9712569 Oceania 70.330 10949.65 106349227169\n" -"63 Australia 1962 10794968 Oceania 70.930 12217.23 131884573002\n" -"64 Australia 1967 11872264 Oceania 71.100 14526.12 172457986742\n" -"65 Australia 1972 13177000 Oceania 71.930 16788.63 221223770658\n" -"66 Australia 1977 14074100 Oceania 73.490 18334.20 258037329175\n" -"67 Australia 1982 15184200 Oceania 74.740 19477.01 295742804309\n" -"68 Australia 1987 16257249 Oceania 76.320 21888.89 355853119294\n" -"69 Australia 1992 17481977 Oceania 77.560 23424.77 409511234952\n" -"70 Australia 1997 18565243 Oceania 78.830 26997.94 501223252921\n" -"71 Australia 2002 19546792 Oceania 80.370 30687.75 599847158654\n" -"72 Australia 2007 20434176 Oceania 81.235 34435.37 703658358894\n" -"~~~" #: r-novice-gapminder/_episodes/10-functions.md:463 msgid "Or both:" -msgstr "Or both:" +msgstr "" -# code block #: r-novice-gapminder/_episodes/10-functions.md:466 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "calcGDP(gapminder, year=2007, country=\"Australia\")\n" "~~~" msgstr "" -"~~~\n" -"calcGDP(gapminder, year=2007, country=\"Australia\")\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/10-functions.md:473 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" " country year pop continent lifeExp gdpPercap gdp\n" "72 Australia 2007 20434176 Oceania 81.235 34435.37 703658358894\n" "~~~" msgstr "" -"~~~\n" -" country year pop continent lifeExp gdpPercap gdp\n" -"72 Australia 2007 20434176 Oceania 81.235 34435.37 703658358894\n" -"~~~" #: r-novice-gapminder/_episodes/10-functions.md:479 msgid "Let's walk through the body of the function:" -msgstr "Let's walk through the body of the function:" +msgstr "" -# code block #: r-novice-gapminder/_episodes/10-functions.md:482 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "calcGDP <- function(dat, year=NULL, country=NULL) {\n" "~~~" msgstr "" -"~~~\n" -"calcGDP <- function(dat, year=NULL, country=NULL) {\n" -"~~~" #: r-novice-gapminder/_episodes/10-functions.md:487 -msgid "" -"Here we've added two arguments, `year`, and `country`. We've set\n" +msgid "Here we've added two arguments, `year`, and `country`. We've set\n" "*default arguments* for both as `NULL` using the `=` operator\n" "in the function definition. This means that those arguments will\n" "take on those values unless the user specifies otherwise." msgstr "" -"Here we've added two arguments, `year`, and `country`. We've set\n" -"*default arguments* for both as `NULL` using the `=` operator\n" -"in the function definition. This means that those arguments will\n" -"take on those values unless the user specifies otherwise." -# code block #: r-novice-gapminder/_episodes/10-functions.md:493 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" " if(!is.null(year)) {\n" " dat <- dat[dat$year %in% year, ]\n" " }\n" @@ -15242,69 +9803,50 @@ msgid "" " }\n" "~~~" msgstr "" -"~~~\n" -" if(!is.null(year)) {\n" -" dat <- dat[dat$year %in% year, ]\n" -" }\n" -" if (!is.null(country)) {\n" -" dat <- dat[dat$country %in% country,]\n" -" }\n" -"~~~" #: r-novice-gapminder/_episodes/10-functions.md:503 -msgid "" -"Here, we check whether each additional argument is set to `null`, and whenever\n" +msgid "Here, we check whether each additional argument is set to `null`, and whenever\n" "they're not `null` overwrite the dataset stored in `dat` with a subset given by \n" "the non-`null` argument." msgstr "" -"Here, we check whether each additional argument is set to `null`, and whenever\n" -"they're not `null` overwrite the dataset stored in `dat` with a subset given by \n" -"the non-`null` argument." #: r-novice-gapminder/_episodes/10-functions.md:507 -msgid "" -"I did this so that our function is more flexible for later. We can ask it to\n" +msgid "I did this so that our function is more flexible for later. We can ask it to\n" "calculate the GDP for:" msgstr "" -"I did this so that our function is more flexible for later. We can ask it to\n" -"calculate the GDP for:" -# unordered list #: r-novice-gapminder/_episodes/10-functions.md:510 +# unordered list msgid " * The whole dataset;" -msgstr " * The whole dataset;" +msgstr "" -# unordered list #: r-novice-gapminder/_episodes/10-functions.md:511 +# unordered list msgid " * A single year;" -msgstr " * A single year;" +msgstr "" -# unordered list #: r-novice-gapminder/_episodes/10-functions.md:512 +# unordered list msgid " * A single country;" -msgstr " * A single country;" +msgstr "" -# unordered list #: r-novice-gapminder/_episodes/10-functions.md:513 +# unordered list msgid " * A single combination of year and country." -msgstr " * A single combination of year and country." +msgstr "" #: r-novice-gapminder/_episodes/10-functions.md:515 -msgid "" -"By using `%in%` instead, we can also give multiple years or countries to those\n" +msgid "By using `%in%` instead, we can also give multiple years or countries to those\n" "arguments." msgstr "" -"By using `%in%` instead, we can also give multiple years or countries to those\n" -"arguments." -# blockquote, which can be cascaded #: r-novice-gapminder/_episodes/10-functions.md:518 +# blockquote, which can be cascaded msgid "> ## Tip: Pass by value" -msgstr "> ## Tip: Pass by value" +msgstr "" #: r-novice-gapminder/_episodes/10-functions.md:519 -msgid "" -">\n" +msgid ">\n" "> Functions in R almost always make copies of the data to operate on\n" "> inside of a function body. When we modify `dat` inside the function\n" "> we are modifying the copy of the gapminder dataset stored in `dat`,\n" @@ -15314,71 +9856,41 @@ msgid "" "> you can always be sure that whatever changes you make within the\n" "> body of the function, stay inside the body of the function." msgstr "" -">\n" -"> Functions in R almost always make copies of the data to operate on\n" -"> inside of a function body. When we modify `dat` inside the function\n" -"> we are modifying the copy of the gapminder dataset stored in `dat`,\n" -"> not the original variable we gave as the first argument.\n" -">\n" -"> This is called \"pass-by-value\" and it makes writing code much safer:\n" -"> you can always be sure that whatever changes you make within the\n" -"> body of the function, stay inside the body of the function." -# blockquote, which can be cascaded #: r-novice-gapminder/_episodes/10-functions.md:530 -msgid "> ## Tip: Function scope" -msgstr "> ## Tip: Function scope" - -#: r-novice-gapminder/_episodes/10-functions.md:531 -msgid "" -">\n" -"> Another important concept is scoping: any variables (or functions!) you\n" -"> create or modify inside the body of a function only exist for the lifetime\n" -"> of the function's execution. When we call `calcGDP()`, the variables `dat`,\n" -"> `gdp` and `new` only exist inside the body of the function. Even if we\n" -"> have variables of the same name in our interactive R session, they are\n" -"> not modified in any way when executing a function." +# blockquote, which can be cascaded +msgid "> ## Tip: Function scope" msgstr "" -">\n" + +#: r-novice-gapminder/_episodes/10-functions.md:531 +msgid ">\n" "> Another important concept is scoping: any variables (or functions!) you\n" "> create or modify inside the body of a function only exist for the lifetime\n" "> of the function's execution. When we call `calcGDP()`, the variables `dat`,\n" "> `gdp` and `new` only exist inside the body of the function. Even if we\n" "> have variables of the same name in our interactive R session, they are\n" "> not modified in any way when executing a function." +msgstr "" -# code block #: r-novice-gapminder/_episodes/10-functions.md:541 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" " gdp <- dat$pop * dat$gdpPercap\n" " new <- cbind(dat, gdp=gdp)\n" " return(new)\n" "}\n" "~~~" msgstr "" -"~~~\n" -" gdp <- dat$pop * dat$gdpPercap\n" -" new <- cbind(dat, gdp=gdp)\n" -" return(new)\n" -"}\n" -"~~~" #: r-novice-gapminder/_episodes/10-functions.md:549 -msgid "" -"Finally, we calculated the GDP on our new subset, and created a new data frame\n" +msgid "Finally, we calculated the GDP on our new subset, and created a new data frame\n" "with that column added. This means when we call the function later we can see\n" "the context for the returned GDP values, which is much better than in our first \n" "attempt where we got a vector of numbers." msgstr "" -"Finally, we calculated the GDP on our new subset, and created a new data frame\n" -"with that column added. This means when we call the function later we can see\n" -"the context for the returned GDP values, which is much better than in our first \n" -"attempt where we got a vector of numbers." #: r-novice-gapminder/_episodes/10-functions.md:555 -msgid "" -">\n" +msgid ">\n" "> Test out your GDP function by calculating the GDP for New Zealand in 1987. How\n" "> does this differ from New Zealand's GDP in 1952?\n" ">\n" @@ -15393,24 +9905,9 @@ msgid "" "> >\n" "> > GDP for New Zealand in 1952: 21058193787" msgstr "" -">\n" -"> Test out your GDP function by calculating the GDP for New Zealand in 1987. How\n" -"> does this differ from New Zealand's GDP in 1952?\n" -">\n" -"> > ## Solution to challenge 4\n" -"> >\n" -"> > \n" -"> > ~~~\n" -"> > calcGDP(gapminder, year = c(1952, 1987), country = \"New Zealand\")\n" -"> > ~~~\n" -"> > {: .language-r}\n" -"> > GDP for New Zealand in 1987: 65050008703\n" -"> >\n" -"> > GDP for New Zealand in 1952: 21058193787" #: r-novice-gapminder/_episodes/10-functions.md:574 -msgid "" -">\n" +msgid ">\n" "> The `paste()` function can be used to combine text together, e.g:\n" ">\n" "> \n" @@ -15426,25 +9923,9 @@ msgid "" "> [1] \"Write programs for people not computers\"\n" "> ~~~" msgstr "" -">\n" -"> The `paste()` function can be used to combine text together, e.g:\n" -">\n" -"> \n" -"> ~~~\n" -"> best_practice <- c(\"Write\", \"programs\", \"for\", \"people\", \"not\", \"computers\")\n" -"> paste(best_practice, collapse=\" \")\n" -"> ~~~\n" -"> {: .language-r}\n" -"> \n" -"> \n" -"> \n" -"> ~~~\n" -"> [1] \"Write programs for people not computers\"\n" -"> ~~~" #: r-novice-gapminder/_episodes/10-functions.md:590 -msgid "" -">\n" +msgid ">\n" "> Write a function called `fence()` that takes two vectors as arguments, called\n" "> `text` and `wrapper`, and prints out the text wrapped with the `wrapper`:\n" ">\n" @@ -15483,48 +9964,9 @@ msgid "" "> > ~~~\n" "> > {: .output}" msgstr "" -">\n" -"> Write a function called `fence()` that takes two vectors as arguments, called\n" -"> `text` and `wrapper`, and prints out the text wrapped with the `wrapper`:\n" -">\n" -"> \n" -"> ~~~\n" -"> fence(text=best_practice, wrapper=\"***\")\n" -"> ~~~\n" -"> {: .language-r}\n" -">\n" -"> *Note:* the `paste()` function has an argument called `sep`, which specifies\n" -"> the separator between text. The default is a space: \" \". The default for\n" -"> `paste0()` is no space \"\".\n" -">\n" -"> > ## Solution to challenge 5\n" -"> >\n" -"> > Write a function called `fence()` that takes two vectors as arguments,\n" -"> > called `text` and `wrapper`, and prints out the text wrapped with the\n" -"> > `wrapper`:\n" -"> >\n" -"> > \n" -"> > ~~~\n" -"> > fence <- function(text, wrapper){\n" -"> > text <- c(wrapper, text, wrapper)\n" -"> > result <- paste(text, collapse = \" \")\n" -"> > return(result)\n" -"> > }\n" -"> > best_practice <- c(\"Write\", \"programs\", \"for\", \"people\", \"not\", \"computers\")\n" -"> > fence(text=best_practice, wrapper=\"***\")\n" -"> > ~~~\n" -"> > {: .language-r}\n" -"> > \n" -"> > \n" -"> > \n" -"> > ~~~\n" -"> > [1] \"*** Write programs for people not computers ***\"\n" -"> > ~~~\n" -"> > {: .output}" #: r-novice-gapminder/_episodes/10-functions.md:632 -msgid "" -">\n" +msgid ">\n" "> R has some unique aspects that can be exploited when performing more\n" "> complicated operations. We will not be writing anything that requires\n" "> knowledge of these more advanced concepts. In the future when you are\n" @@ -15532,32 +9974,20 @@ msgid "" "> [R Language Manual][man] or this [chapter][] from\n" "> [Advanced R Programming][adv-r] by Hadley Wickham." msgstr "" -">\n" -"> R has some unique aspects that can be exploited when performing more\n" -"> complicated operations. We will not be writing anything that requires\n" -"> knowledge of these more advanced concepts. In the future when you are\n" -"> comfortable writing functions in R, you can learn more by reading the\n" -"> [R Language Manual][man] or this [chapter][] from\n" -"> [Advanced R Programming][adv-r] by Hadley Wickham." #: r-novice-gapminder/_episodes/10-functions.md:641 -msgid "" -"[man]: http://cran.r-project.org/doc/manuals/r-release/R-lang.html#Environment-objects\n" +msgid "[man]: http://cran.r-project.org/doc/manuals/r-release/R-lang.html#Environment-objects\n" "[chapter]: http://adv-r.had.co.nz/Environments.html\n" "[adv-r]: http://adv-r.had.co.nz/" msgstr "" -"[man]: http://cran.r-project.org/doc/manuals/r-release/R-lang.html#Environment-objects\n" -"[chapter]: http://adv-r.had.co.nz/Environments.html\n" -"[adv-r]: http://adv-r.had.co.nz/" -# blockquote, which can be cascaded #: r-novice-gapminder/_episodes/10-functions.md:646 +# blockquote, which can be cascaded msgid "> ## Tip: Testing and documenting" -msgstr "> ## Tip: Testing and documenting" +msgstr "" #: r-novice-gapminder/_episodes/10-functions.md:647 -msgid "" -">\n" +msgid ">\n" "> It's important to both test functions and document them:\n" "> Documentation helps you, and others, understand what the\n" "> purpose of your function is, and how to use it, and its\n" @@ -15584,45 +10014,15 @@ msgid "" ">\n" "> Formal automated tests can be written using the [testthat][] package." msgstr "" -">\n" -"> It's important to both test functions and document them:\n" -"> Documentation helps you, and others, understand what the\n" -"> purpose of your function is, and how to use it, and its\n" -"> important to make sure that your function actually does\n" -"> what you think.\n" -">\n" -"> When you first start out, your workflow will probably look a lot\n" -"> like this:\n" -">\n" -"> 1. Write a function\n" -"> 2. Comment parts of the function to document its behaviour\n" -"> 3. Load in the source file\n" -"> 4. Experiment with it in the console to make sure it behaves\n" -"> as you expect\n" -"> 5. Make any necessary bug fixes\n" -"> 6. Rinse and repeat.\n" -">\n" -"> Formal documentation for functions, written in separate `.Rd`\n" -"> files, gets turned into the documentation you see in help\n" -"> files. The [roxygen2][] package allows R coders to write documentation\n" -"> alongside the function code and then process it into the appropriate `.Rd`\n" -"> files. You will want to switch to this more formal method of writing\n" -"> documentation when you start writing more complicated R projects.\n" -">\n" -"> Formal automated tests can be written using the [testthat][] package." #: r-novice-gapminder/_episodes/10-functions.md:675 -msgid "" -"[roxygen2]: http://cran.r-project.org/web/packages/roxygen2/vignettes/rd.html\n" +msgid "[roxygen2]: http://cran.r-project.org/web/packages/roxygen2/vignettes/rd.html\n" "[testthat]: http://r-pkgs.had.co.nz/tests.html" msgstr "" -"[roxygen2]: http://cran.r-project.org/web/packages/roxygen2/vignettes/rd.html\n" -"[testthat]: http://r-pkgs.had.co.nz/tests.html" -# Front Matter #: r-novice-gapminder/_episodes/11-writing-data.md:1 -msgid "" -"---\n" +# Front Matter +msgid "---\n" "# Please do not edit this file directly; it is auto generated.\n" "# Instead, please edit 11-writing-data.md in _episodes_rmd/\n" "title: Writing Data\n" @@ -15638,86 +10038,48 @@ msgid "" "source: Rmd\n" "---" msgstr "" -"---\n" -"# Please do not edit this file directly; it is auto generated.\n" -"# Instead, please edit 11-writing-data.md in _episodes_rmd/\n" -"title: Writing Data\n" -"teaching: 10\n" -"exercises: 10\n" -"questions:\n" -"- \"How can I save plots and data created in R?\"\n" -"objectives:\n" -"- \"To be able to write out plots and data from R.\"\n" -"keypoints:\n" -"- \"Save plots from RStudio using the 'Export' button.\"\n" -"- \"Use `write.table` to save tabular data.\"\n" -"source: Rmd\n" -"---" -# header #: r-novice-gapminder/_episodes/11-writing-data.md:20 +# header msgid "## Saving plots" -msgstr "## Saving plots" +msgstr "" #: r-novice-gapminder/_episodes/11-writing-data.md:22 -msgid "" -"You have already seen how to save the most recent plot you create in `ggplot2`,\n" +msgid "You have already seen how to save the most recent plot you create in `ggplot2`,\n" "using the command `ggsave`. As a refresher:" msgstr "" -"You have already seen how to save the most recent plot you create in `ggplot2`,\n" -"using the command `ggsave`. As a refresher:" -# code block #: r-novice-gapminder/_episodes/11-writing-data.md:26 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "ggsave(\"My_most_recent_plot.pdf\")\n" "~~~" msgstr "" -"~~~\n" -"ggsave(\"My_most_recent_plot.pdf\")\n" -"~~~" #: r-novice-gapminder/_episodes/11-writing-data.md:31 -msgid "" -"You can save a plot from within RStudio using the 'Export' button\n" +msgid "You can save a plot from within RStudio using the 'Export' button\n" "in the 'Plot' window. This will give you the option of saving as a\n" ".pdf or as .png, .jpg or other image formats." msgstr "" -"You can save a plot from within RStudio using the 'Export' button\n" -"in the 'Plot' window. This will give you the option of saving as a\n" -".pdf or as .png, .jpg or other image formats." #: r-novice-gapminder/_episodes/11-writing-data.md:35 -msgid "" -"Sometimes you will want to save plots without creating them in the\n" +msgid "Sometimes you will want to save plots without creating them in the\n" "'Plot' window first. Perhaps you want to make a pdf document with\n" "multiple pages: each one a different plot, for example. Or perhaps\n" "you're looping through multiple subsets of a file, plotting data from\n" "each subset, and you want to save each plot, but obviously can't stop\n" "the loop to click 'Export' for each one." msgstr "" -"Sometimes you will want to save plots without creating them in the\n" -"'Plot' window first. Perhaps you want to make a pdf document with\n" -"multiple pages: each one a different plot, for example. Or perhaps\n" -"you're looping through multiple subsets of a file, plotting data from\n" -"each subset, and you want to save each plot, but obviously can't stop\n" -"the loop to click 'Export' for each one." #: r-novice-gapminder/_episodes/11-writing-data.md:42 -msgid "" -"In this case you can use a more flexible approach. The function\n" +msgid "In this case you can use a more flexible approach. The function\n" "`pdf` creates a new pdf device. You can control the size and resolution\n" "using the arguments to this function." msgstr "" -"In this case you can use a more flexible approach. The function\n" -"`pdf` creates a new pdf device. You can control the size and resolution\n" -"using the arguments to this function." -# code block #: r-novice-gapminder/_episodes/11-writing-data.md:47 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "pdf(\"Life_Exp_vs_time.pdf\", width=12, height=4)\n" "ggplot(data=gapminder, aes(x=year, y=lifeExp, colour=country)) +\n" " geom_line() +\n" @@ -15728,24 +10090,13 @@ msgid "" "dev.off()\n" "~~~" msgstr "" -"~~~\n" -"pdf(\"Life_Exp_vs_time.pdf\", width=12, height=4)\n" -"ggplot(data=gapminder, aes(x=year, y=lifeExp, colour=country)) +\n" -" geom_line() +\n" -" theme(legend.position = \"none\")\n" -"\n" -"# You then have to make sure to turn off the pdf device!\n" -"\n" -"dev.off()\n" -"~~~" #: r-novice-gapminder/_episodes/11-writing-data.md:59 msgid "Open up this document and have a look." -msgstr "Open up this document and have a look." +msgstr "" #: r-novice-gapminder/_episodes/11-writing-data.md:62 -msgid "" -">\n" +msgid ">\n" "> Rewrite your 'pdf' command to print a second\n" "> page in the pdf, showing a facet plot (hint: use `facet_grid`)\n" "> of the same data with one panel per continent.\n" @@ -15763,61 +10114,34 @@ msgid "" "> > ~~~\n" "> > {: .language-r}" msgstr "" -">\n" -"> Rewrite your 'pdf' command to print a second\n" -"> page in the pdf, showing a facet plot (hint: use `facet_grid`)\n" -"> of the same data with one panel per continent.\n" -"> > ## Solution to challenge 1\n" -"> >\n" -"> > \n" -"> > ~~~\n" -"> > pdf(\"Life_Exp_vs_time.pdf\", width = 12, height = 4)\n" -"> > p <- ggplot(data = gapminder, aes(x = year, y = lifeExp, colour = country)) +\n" -"> > geom_line() +\n" -"> > theme(legend.position = \"none\")\n" -"> > p\n" -"> > p + facet_grid(. ~continent)\n" -"> > dev.off()\n" -"> > ~~~\n" -"> > {: .language-r}" #: r-novice-gapminder/_episodes/11-writing-data.md:83 -msgid "" -"The commands `jpeg`, `png` etc. are used similarly to produce\n" +msgid "The commands `jpeg`, `png` etc. are used similarly to produce\n" "documents in different formats." msgstr "" -"The commands `jpeg`, `png` etc. are used similarly to produce\n" -"documents in different formats." -# header #: r-novice-gapminder/_episodes/11-writing-data.md:86 +# header msgid "## Writing data" -msgstr "## Writing data" +msgstr "" #: r-novice-gapminder/_episodes/11-writing-data.md:88 msgid "At some point, you'll also want to write out data from R." -msgstr "At some point, you'll also want to write out data from R." +msgstr "" #: r-novice-gapminder/_episodes/11-writing-data.md:90 -msgid "" -"We can use the `write.table` function for this, which is\n" +msgid "We can use the `write.table` function for this, which is\n" "very similar to `read.table` from before." msgstr "" -"We can use the `write.table` function for this, which is\n" -"very similar to `read.table` from before." #: r-novice-gapminder/_episodes/11-writing-data.md:93 -msgid "" -"Let's create a data-cleaning script, for this analysis, we\n" +msgid "Let's create a data-cleaning script, for this analysis, we\n" "only want to focus on the gapminder data for Australia:" msgstr "" -"Let's create a data-cleaning script, for this analysis, we\n" -"only want to focus on the gapminder data for Australia:" -# code block #: r-novice-gapminder/_episodes/11-writing-data.md:97 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "aust_subset <- gapminder[gapminder$country == \"Australia\",]\n" "\n" "write.table(aust_subset,\n" @@ -15826,39 +10150,23 @@ msgid "" ")\n" "~~~" msgstr "" -"~~~\n" -"aust_subset <- gapminder[gapminder$country == \"Australia\",]\n" -"\n" -"write.table(aust_subset,\n" -" file=\"cleaned-data/gapminder-aus.csv\",\n" -" sep=\",\"\n" -")\n" -"~~~" #: r-novice-gapminder/_episodes/11-writing-data.md:107 -msgid "" -"Let's switch back to the shell to take a look at the data to make sure it looks\n" +msgid "Let's switch back to the shell to take a look at the data to make sure it looks\n" "OK:" msgstr "" -"Let's switch back to the shell to take a look at the data to make sure it looks\n" -"OK:" -# code block #: r-novice-gapminder/_episodes/11-writing-data.md:111 #: r-novice-gapminder/_episodes/11-writing-data.md:165 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "head cleaned-data/gapminder-aus.csv\n" "~~~" msgstr "" -"~~~\n" -"head cleaned-data/gapminder-aus.csv\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/11-writing-data.md:119 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "\"country\",\"year\",\"pop\",\"continent\",\"lifeExp\",\"gdpPercap\"\n" "\"61\",\"Australia\",1952,8691212,\"Oceania\",69.12,10039.59564\n" "\"62\",\"Australia\",1957,9712569,\"Oceania\",70.33,10949.64959\n" @@ -15871,66 +10179,38 @@ msgid "" "\"69\",\"Australia\",1992,17481977,\"Oceania\",77.56,23424.76683\n" "~~~" msgstr "" -"~~~\n" -"\"country\",\"year\",\"pop\",\"continent\",\"lifeExp\",\"gdpPercap\"\n" -"\"61\",\"Australia\",1952,8691212,\"Oceania\",69.12,10039.59564\n" -"\"62\",\"Australia\",1957,9712569,\"Oceania\",70.33,10949.64959\n" -"\"63\",\"Australia\",1962,10794968,\"Oceania\",70.93,12217.22686\n" -"\"64\",\"Australia\",1967,11872264,\"Oceania\",71.1,14526.12465\n" -"\"65\",\"Australia\",1972,13177000,\"Oceania\",71.93,16788.62948\n" -"\"66\",\"Australia\",1977,14074100,\"Oceania\",73.49,18334.19751\n" -"\"67\",\"Australia\",1982,15184200,\"Oceania\",74.74,19477.00928\n" -"\"68\",\"Australia\",1987,16257249,\"Oceania\",76.32,21888.88903\n" -"\"69\",\"Australia\",1992,17481977,\"Oceania\",77.56,23424.76683\n" -"~~~" #: r-novice-gapminder/_episodes/11-writing-data.md:133 -msgid "" -"Hmm, that's not quite what we wanted. Where did all these\n" +msgid "Hmm, that's not quite what we wanted. Where did all these\n" "quotation marks come from? Also the row numbers are\n" "meaningless." msgstr "" -"Hmm, that's not quite what we wanted. Where did all these\n" -"quotation marks come from? Also the row numbers are\n" -"meaningless." #: r-novice-gapminder/_episodes/11-writing-data.md:137 -msgid "" -"Let's look at the help file to work out how to change this\n" +msgid "Let's look at the help file to work out how to change this\n" "behaviour." msgstr "" -"Let's look at the help file to work out how to change this\n" -"behaviour." -# code block #: r-novice-gapminder/_episodes/11-writing-data.md:141 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "?write.table\n" "~~~" msgstr "" -"~~~\n" -"?write.table\n" -"~~~" #: r-novice-gapminder/_episodes/11-writing-data.md:146 -msgid "" -"By default R will wrap character vectors with quotation marks\n" +msgid "By default R will wrap character vectors with quotation marks\n" "when writing out to file. It will also write out the row and\n" "column names." msgstr "" -"By default R will wrap character vectors with quotation marks\n" -"when writing out to file. It will also write out the row and\n" -"column names." #: r-novice-gapminder/_episodes/11-writing-data.md:150 msgid "Let's fix this:" -msgstr "Let's fix this:" +msgstr "" -# code block #: r-novice-gapminder/_episodes/11-writing-data.md:153 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "write.table(\n" " gapminder[gapminder$country == \"Australia\",],\n" " file=\"cleaned-data/gapminder-aus.csv\",\n" @@ -15938,22 +10218,14 @@ msgid "" ")\n" "~~~" msgstr "" -"~~~\n" -"write.table(\n" -" gapminder[gapminder$country == \"Australia\",],\n" -" file=\"cleaned-data/gapminder-aus.csv\",\n" -" sep=\",\", quote=FALSE, row.names=FALSE\n" -")\n" -"~~~" #: r-novice-gapminder/_episodes/11-writing-data.md:162 msgid "Now lets look at the data again using our shell skills:" -msgstr "Now lets look at the data again using our shell skills:" +msgstr "" -# code block #: r-novice-gapminder/_episodes/11-writing-data.md:173 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "country,year,pop,continent,lifeExp,gdpPercap\n" "Australia,1952,8691212,Oceania,69.12,10039.59564\n" "Australia,1957,9712569,Oceania,70.33,10949.64959\n" @@ -15966,26 +10238,13 @@ msgid "" "Australia,1992,17481977,Oceania,77.56,23424.76683\n" "~~~" msgstr "" -"~~~\n" -"country,year,pop,continent,lifeExp,gdpPercap\n" -"Australia,1952,8691212,Oceania,69.12,10039.59564\n" -"Australia,1957,9712569,Oceania,70.33,10949.64959\n" -"Australia,1962,10794968,Oceania,70.93,12217.22686\n" -"Australia,1967,11872264,Oceania,71.1,14526.12465\n" -"Australia,1972,13177000,Oceania,71.93,16788.62948\n" -"Australia,1977,14074100,Oceania,73.49,18334.19751\n" -"Australia,1982,15184200,Oceania,74.74,19477.00928\n" -"Australia,1987,16257249,Oceania,76.32,21888.88903\n" -"Australia,1992,17481977,Oceania,77.56,23424.76683\n" -"~~~" #: r-novice-gapminder/_episodes/11-writing-data.md:187 msgid "That looks better!" -msgstr "That looks better!" +msgstr "" #: r-novice-gapminder/_episodes/11-writing-data.md:190 -msgid "" -">\n" +msgid ">\n" "> Write a data-cleaning script file that subsets the gapminder\n" "> data to include only data points collected since 1990.\n" ">\n" @@ -16003,28 +10262,10 @@ msgid "" "> > ~~~\n" "> > {: .language-r}" msgstr "" -">\n" -"> Write a data-cleaning script file that subsets the gapminder\n" -"> data to include only data points collected since 1990.\n" -">\n" -"> Use this script to write out the new subset to a file\n" -"> in the `cleaned-data/` directory.\n" -"> > ## Solution to challenge 2\n" -"> >\n" -"> > \n" -"> > ~~~\n" -"> > write.table(\n" -"> > gapminder[gapminder$year > 1990, ],\n" -"> > file = \"cleaned-data/gapminder-after1990.csv\",\n" -"> > sep = \",\", quote = FALSE, row.names = FALSE\n" -"> > )\n" -"> > ~~~\n" -"> > {: .language-r}" -# Front Matter #: r-novice-gapminder/_episodes/12-plyr.md:1 -msgid "" -"---\n" +# Front Matter +msgid "---\n" "# Please do not edit this file directly; it is auto generated.\n" "# Instead, please edit 12-plyr.md in _episodes_rmd/\n" "title: Splitting and Combining Data Frames with plyr\n" @@ -16039,297 +10280,201 @@ msgid "" "source: Rmd\n" "---" msgstr "" -"---\n" -"# Please do not edit this file directly; it is auto generated.\n" -"# Instead, please edit 12-plyr.md in _episodes_rmd/\n" -"title: Splitting and Combining Data Frames with plyr\n" -"teaching: 30\n" -"exercises: 30\n" -"questions:\n" -"- \"How can I do different calculations on different sets of data?\"\n" -"objectives:\n" -"- \"To be able to use the split-apply-combine strategy for data analysis.\"\n" -"keypoints:\n" -"- \"Use the `plyr` package to split data, apply functions to subsets, and combine the results.\"\n" -"source: Rmd\n" -"---" #: r-novice-gapminder/_episodes/12-plyr.md:18 -msgid "" -"Previously we looked at how you can use functions to simplify your code.\n" +msgid "Previously we looked at how you can use functions to simplify your code.\n" "We defined the `calcGDP` function, which takes the gapminder dataset,\n" "and multiplies the population and GDP per capita column. We also defined\n" "additional arguments so we could filter by `year` and `country`:" msgstr "" -"Previously we looked at how you can use functions to simplify your code.\n" -"We defined the `calcGDP` function, which takes the gapminder dataset,\n" -"and multiplies the population and GDP per capita column. We also defined\n" -"additional arguments so we could filter by `year` and `country`:" #: r-novice-gapminder/_episodes/12-plyr.md:42 -msgid "" -"A common task you'll encounter when working with data, is that you'll want to\n" +msgid "A common task you'll encounter when working with data, is that you'll want to\n" "run calculations on different groups within the data. In the above, we were\n" "simply calculating the GDP by multiplying two columns together. But what if\n" "we wanted to calculated the mean GDP per continent?" msgstr "" -"A common task you'll encounter when working with data, is that you'll want to\n" -"run calculations on different groups within the data. In the above, we were\n" -"simply calculating the GDP by multiplying two columns together. But what if\n" -"we wanted to calculated the mean GDP per continent?" #: r-novice-gapminder/_episodes/12-plyr.md:47 msgid "We could run `calcGDP` and then take the mean of each continent:" -msgstr "We could run `calcGDP` and then take the mean of each continent:" +msgstr "" -# code block #: r-novice-gapminder/_episodes/12-plyr.md:50 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "withGDP <- calcGDP(gapminder)\n" "mean(withGDP[withGDP$continent == \"Africa\", \"gdp\"])\n" "~~~" msgstr "" -"~~~\n" -"withGDP <- calcGDP(gapminder)\n" -"mean(withGDP[withGDP$continent == \"Africa\", \"gdp\"])\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/12-plyr.md:58 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "[1] 20904782844\n" "~~~" msgstr "" -"~~~\n" -"[1] 20904782844\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/12-plyr.md:65 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "mean(withGDP[withGDP$continent == \"Americas\", \"gdp\"])\n" "~~~" msgstr "" -"~~~\n" -"mean(withGDP[withGDP$continent == \"Americas\", \"gdp\"])\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/12-plyr.md:72 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "[1] 379262350210\n" "~~~" msgstr "" -"~~~\n" -"[1] 379262350210\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/12-plyr.md:79 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "mean(withGDP[withGDP$continent == \"Asia\", \"gdp\"])\n" "~~~" msgstr "" -"~~~\n" -"mean(withGDP[withGDP$continent == \"Asia\", \"gdp\"])\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/12-plyr.md:86 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "[1] 227233738153\n" "~~~" msgstr "" -"~~~\n" -"[1] 227233738153\n" -"~~~" #: r-novice-gapminder/_episodes/12-plyr.md:91 -msgid "" -"But this isn't very *nice*. Yes, by using a function, you have reduced a\n" +msgid "But this isn't very *nice*. Yes, by using a function, you have reduced a\n" "substantial amount of repetition. That **is** nice. But there is still\n" "repetition. Repeating yourself will cost you time, both now and later, and\n" "potentially introduce some nasty bugs." msgstr "" -"But this isn't very *nice*. Yes, by using a function, you have reduced a\n" -"substantial amount of repetition. That **is** nice. But there is still\n" -"repetition. Repeating yourself will cost you time, both now and later, and\n" -"potentially introduce some nasty bugs." #: r-novice-gapminder/_episodes/12-plyr.md:96 -msgid "" -"We could write a new function that is flexible like `calcGDP`, but this\n" +msgid "We could write a new function that is flexible like `calcGDP`, but this\n" "also takes a substantial amount of effort and testing to get right." msgstr "" -"We could write a new function that is flexible like `calcGDP`, but this\n" -"also takes a substantial amount of effort and testing to get right." #: r-novice-gapminder/_episodes/12-plyr.md:99 msgid "The abstract problem we're encountering here is know as \"split-apply-combine\":" -msgstr "The abstract problem we're encountering here is know as \"split-apply-combine\":" +msgstr "" #: r-novice-gapminder/_episodes/12-plyr.md:101 msgid "![Split apply combine](../fig/12-plyr-fig1.png)" -msgstr "![Split apply combine](../fig/12-plyr-fig1.png)" +msgstr "" #: r-novice-gapminder/_episodes/12-plyr.md:103 -msgid "" -"We want to *split* our data into groups, in this case continents, *apply*\n" +msgid "We want to *split* our data into groups, in this case continents, *apply*\n" "some calculations on that group, then optionally *combine* the results\n" "together afterwards." msgstr "" -"We want to *split* our data into groups, in this case continents, *apply*\n" -"some calculations on that group, then optionally *combine* the results\n" -"together afterwards." -# header #: r-novice-gapminder/_episodes/12-plyr.md:107 +# header msgid "## The `plyr` package" -msgstr "## The `plyr` package" +msgstr "" #: r-novice-gapminder/_episodes/12-plyr.md:109 -msgid "" -"For those of you who have used R before, you might be familiar with the\n" +msgid "For those of you who have used R before, you might be familiar with the\n" "`apply` family of functions. While R's built in functions do work, we're\n" "going to introduce you to another method for solving the \"split-apply-combine\"\n" "problem. The [plyr](http://had.co.nz/plyr/) package provides a set of\n" "functions that we find more user friendly for solving this problem." msgstr "" -"For those of you who have used R before, you might be familiar with the\n" -"`apply` family of functions. While R's built in functions do work, we're\n" -"going to introduce you to another method for solving the \"split-apply-combine\"\n" -"problem. The [plyr](http://had.co.nz/plyr/) package provides a set of\n" -"functions that we find more user friendly for solving this problem." #: r-novice-gapminder/_episodes/12-plyr.md:115 msgid "We installed this package in an earlier challenge. Let's load it now:" -msgstr "We installed this package in an earlier challenge. Let's load it now:" +msgstr "" -# code block #: r-novice-gapminder/_episodes/12-plyr.md:118 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "library(\"plyr\")\n" "~~~" msgstr "" -"~~~\n" -"library(\"plyr\")\n" -"~~~" #: r-novice-gapminder/_episodes/12-plyr.md:123 -msgid "" -"Plyr has functions for operating on `lists`, `data.frames` and `arrays`\n" +msgid "Plyr has functions for operating on `lists`, `data.frames` and `arrays`\n" "(matrices, or n-dimensional vectors). Each function performs:" msgstr "" -"Plyr has functions for operating on `lists`, `data.frames` and `arrays`\n" -"(matrices, or n-dimensional vectors). Each function performs:" -# ordered list #: r-novice-gapminder/_episodes/12-plyr.md:126 +# ordered list msgid "1. A **split**ting operation" -msgstr "1. A **split**ting operation" +msgstr "" -# ordered list #: r-novice-gapminder/_episodes/12-plyr.md:127 +# ordered list msgid "2. **Apply** a function on each split in turn." -msgstr "2. **Apply** a function on each split in turn." +msgstr "" -# ordered list #: r-novice-gapminder/_episodes/12-plyr.md:128 +# ordered list msgid "3. Re**combine** output data as a single data object." -msgstr "3. Re**combine** output data as a single data object." +msgstr "" #: r-novice-gapminder/_episodes/12-plyr.md:130 -msgid "" -"The functions are named based on the data structure they expect as input,\n" +msgid "The functions are named based on the data structure they expect as input,\n" "and the data structure you want returned as output: [a]rray, [l]ist, or\n" "[d]ata.frame. The first letter corresponds to the input data structure,\n" "the second letter to the output data structure, and then the rest of the\n" "function is named \"ply\"." msgstr "" -"The functions are named based on the data structure they expect as input,\n" -"and the data structure you want returned as output: [a]rray, [l]ist, or\n" -"[d]ata.frame. The first letter corresponds to the input data structure,\n" -"the second letter to the output data structure, and then the rest of the\n" -"function is named \"ply\"." #: r-novice-gapminder/_episodes/12-plyr.md:136 -msgid "" -"This gives us 9 core functions **ply. There are an additional three functions\n" +msgid "This gives us 9 core functions **ply. There are an additional three functions\n" "which will only perform the split and apply steps, and not any combine step.\n" "They're named by their input data type and represent null output by a `_` (see\n" "table)" msgstr "" -"This gives us 9 core functions **ply. There are an additional three functions\n" -"which will only perform the split and apply steps, and not any combine step.\n" -"They're named by their input data type and represent null output by a `_` (see\n" -"table)" #: r-novice-gapminder/_episodes/12-plyr.md:141 -msgid "" -"Note here that plyr's use of \"array\" is different to R's,\n" +msgid "Note here that plyr's use of \"array\" is different to R's,\n" "an array in ply can include a vector or matrix." msgstr "" -"Note here that plyr's use of \"array\" is different to R's,\n" -"an array in ply can include a vector or matrix." #: r-novice-gapminder/_episodes/12-plyr.md:144 msgid "![Full apply suite](../fig/12-plyr-fig2.png)" -msgstr "![Full apply suite](../fig/12-plyr-fig2.png)" +msgstr "" #: r-novice-gapminder/_episodes/12-plyr.md:147 -msgid "" -"Each of the xxply functions (`daply`, `ddply`, `llply`, `laply`, ...) has the\n" +msgid "Each of the xxply functions (`daply`, `ddply`, `llply`, `laply`, ...) has the\n" "same structure and has 4 key features and structure:" msgstr "" -"Each of the xxply functions (`daply`, `ddply`, `llply`, `laply`, ...) has the\n" -"same structure and has 4 key features and structure:" -# code block #: r-novice-gapminder/_episodes/12-plyr.md:151 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "xxply(.data, .variables, .fun)\n" "~~~" msgstr "" -"~~~\n" -"xxply(.data, .variables, .fun)\n" -"~~~" -# unordered list #: r-novice-gapminder/_episodes/12-plyr.md:156 +# unordered list msgid "* The first letter of the function name gives the input type and the second gives the output type." -msgstr "* The first letter of the function name gives the input type and the second gives the output type." +msgstr "" -# unordered list #: r-novice-gapminder/_episodes/12-plyr.md:157 +# unordered list msgid "* .data - gives the data object to be processed" -msgstr "* .data - gives the data object to be processed" +msgstr "" -# unordered list #: r-novice-gapminder/_episodes/12-plyr.md:158 +# unordered list msgid "* .variables - identifies the splitting variables" -msgstr "* .variables - identifies the splitting variables" +msgstr "" -# unordered list #: r-novice-gapminder/_episodes/12-plyr.md:159 +# unordered list msgid "* .fun - gives the function to be called on each piece" -msgstr "* .fun - gives the function to be called on each piece" +msgstr "" #: r-novice-gapminder/_episodes/12-plyr.md:161 msgid "Now we can quickly calculate the mean GDP per continent:" -msgstr "Now we can quickly calculate the mean GDP per continent:" +msgstr "" -# code block #: r-novice-gapminder/_episodes/12-plyr.md:164 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "ddply(\n" " .data = calcGDP(gapminder),\n" " .variables = \"continent\",\n" @@ -16337,18 +10482,10 @@ msgid "" ")\n" "~~~" msgstr "" -"~~~\n" -"ddply(\n" -" .data = calcGDP(gapminder),\n" -" .variables = \"continent\",\n" -" .fun = function(x) mean(x$gdp)\n" -")\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/12-plyr.md:175 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" " continent V1\n" "1 Africa 20904782844\n" "2 Americas 379262350210\n" @@ -16357,27 +10494,18 @@ msgid "" "5 Oceania 188187105354\n" "~~~" msgstr "" -"~~~\n" -" continent V1\n" -"1 Africa 20904782844\n" -"2 Americas 379262350210\n" -"3 Asia 227233738153\n" -"4 Europe 269442085301\n" -"5 Oceania 188187105354\n" -"~~~" #: r-novice-gapminder/_episodes/12-plyr.md:185 msgid "Let's walk through the previous code:" -msgstr "Let's walk through the previous code:" +msgstr "" -# unordered list #: r-novice-gapminder/_episodes/12-plyr.md:187 +# unordered list msgid "- The `ddply` function feeds in a `data.frame` (function starts with **d**) and" -msgstr "- The `ddply` function feeds in a `data.frame` (function starts with **d**) and" +msgstr "" #: r-novice-gapminder/_episodes/12-plyr.md:188 -msgid "" -"returns another `data.frame` (2nd letter is a **d**) i\n" +msgid "returns another `data.frame` (2nd letter is a **d**) i\n" "- the first argument we gave was the data.frame we wanted to operate on: in this\n" " case the gapminder data. We called `calcGDP` on it first so that it would have\n" " the additional `gdp` column added to it.\n" @@ -16390,37 +10518,20 @@ msgid "" " function: we haven't defined it elsewhere, and it has no name. It only exists\n" " in the scope of our call to `ddply`." msgstr "" -"returns another `data.frame` (2nd letter is a **d**) i\n" -"- the first argument we gave was the data.frame we wanted to operate on: in this\n" -" case the gapminder data. We called `calcGDP` on it first so that it would have\n" -" the additional `gdp` column added to it.\n" -"- The second argument indicated our split criteria: in this case the \"continent\"\n" -" column. Note that we gave the name of the column, not the values of the column like we had done previously with subsetting. Plyr takes care of these\n" -" implementation details for you.\n" -"- The third argument is the function we want to apply to each grouping of the\n" -" data. We had to define our own short function here: each subset of the data\n" -" gets stored in `x`, the first argument of our function. This is an anonymous\n" -" function: we haven't defined it elsewhere, and it has no name. It only exists\n" -" in the scope of our call to `ddply`." #: r-novice-gapminder/_episodes/12-plyr.md:202 -msgid "" -">\n" +msgid ">\n" "> Calculate the average life expectancy per continent. Which has the longest?\n" "> Which had the shortest?" msgstr "" -">\n" -"> Calculate the average life expectancy per continent. Which has the longest?\n" -"> Which had the shortest?" #: r-novice-gapminder/_episodes/12-plyr.md:207 msgid "What if we want a different type of output data structure?:" -msgstr "What if we want a different type of output data structure?:" +msgstr "" -# code block #: r-novice-gapminder/_episodes/12-plyr.md:210 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "dlply(\n" " .data = calcGDP(gapminder),\n" " .variables = \"continent\",\n" @@ -16428,45 +10539,10 @@ msgid "" ")\n" "~~~" msgstr "" -"~~~\n" -"dlply(\n" -" .data = calcGDP(gapminder),\n" -" .variables = \"continent\",\n" -" .fun = function(x) mean(x$gdp)\n" -")\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/12-plyr.md:221 -msgid "" -"~~~\n" -"$Africa\n" -"[1] 20904782844\n" -"\n" -"$Americas\n" -"[1] 379262350210\n" -"\n" -"$Asia\n" -"[1] 227233738153\n" -"\n" -"$Europe\n" -"[1] 269442085301\n" -"\n" -"$Oceania\n" -"[1] 188187105354\n" -"\n" -"attr(,\"split_type\")\n" -"[1] \"data.frame\"\n" -"attr(,\"split_labels\")\n" -" continent\n" -"1 Africa\n" -"2 Americas\n" -"3 Asia\n" -"4 Europe\n" -"5 Oceania\n" -"~~~" -msgstr "" -"~~~\n" +# code block +msgid "~~~\n" "$Africa\n" "[1] 20904782844\n" "\n" @@ -16492,23 +10568,20 @@ msgstr "" "4 Europe\n" "5 Oceania\n" "~~~" +msgstr "" #: r-novice-gapminder/_episodes/12-plyr.md:249 -msgid "" -"We called the same function again, but changed the second letter to an `l`, so\n" +msgid "We called the same function again, but changed the second letter to an `l`, so\n" "the output was returned as a list." msgstr "" -"We called the same function again, but changed the second letter to an `l`, so\n" -"the output was returned as a list." #: r-novice-gapminder/_episodes/12-plyr.md:252 msgid "We can specify multiple columns to group by:" -msgstr "We can specify multiple columns to group by:" +msgstr "" -# code block #: r-novice-gapminder/_episodes/12-plyr.md:255 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "ddply(\n" " .data = calcGDP(gapminder),\n" " .variables = c(\"continent\", \"year\"),\n" @@ -16516,18 +10589,10 @@ msgid "" ")\n" "~~~" msgstr "" -"~~~\n" -"ddply(\n" -" .data = calcGDP(gapminder),\n" -" .variables = c(\"continent\", \"year\"),\n" -" .fun = function(x) mean(x$gdp)\n" -")\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/12-plyr.md:266 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" " continent year V1\n" "1 Africa 1952 5992294608\n" "2 Africa 1957 7359188796\n" @@ -16591,74 +10656,10 @@ msgid "" "60 Oceania 2007 403657044512\n" "~~~" msgstr "" -"~~~\n" -" continent year V1\n" -"1 Africa 1952 5992294608\n" -"2 Africa 1957 7359188796\n" -"3 Africa 1962 8784876958\n" -"4 Africa 1967 11443994101\n" -"5 Africa 1972 15072241974\n" -"6 Africa 1977 18694898732\n" -"7 Africa 1982 22040401045\n" -"8 Africa 1987 24107264108\n" -"9 Africa 1992 26256977719\n" -"10 Africa 1997 30023173824\n" -"11 Africa 2002 35303511424\n" -"12 Africa 2007 45778570846\n" -"13 Americas 1952 117738997171\n" -"14 Americas 1957 140817061264\n" -"15 Americas 1962 169153069442\n" -"16 Americas 1967 217867530844\n" -"17 Americas 1972 268159178814\n" -"18 Americas 1977 324085389022\n" -"19 Americas 1982 363314008350\n" -"20 Americas 1987 439447790357\n" -"21 Americas 1992 489899820623\n" -"22 Americas 1997 582693307146\n" -"23 Americas 2002 661248623419\n" -"24 Americas 2007 776723426068\n" -"25 Asia 1952 34095762661\n" -"26 Asia 1957 47267432088\n" -"27 Asia 1962 60136869012\n" -"28 Asia 1967 84648519224\n" -"29 Asia 1972 124385747313\n" -"30 Asia 1977 159802590186\n" -"31 Asia 1982 194429049919\n" -"32 Asia 1987 241784763369\n" -"33 Asia 1992 307100497486\n" -"34 Asia 1997 387597655323\n" -"35 Asia 2002 458042336179\n" -"36 Asia 2007 627513635079\n" -"37 Europe 1952 84971341466\n" -"38 Europe 1957 109989505140\n" -"39 Europe 1962 138984693095\n" -"40 Europe 1967 173366641137\n" -"41 Europe 1972 218691462733\n" -"42 Europe 1977 255367522034\n" -"43 Europe 1982 279484077072\n" -"44 Europe 1987 316507473546\n" -"45 Europe 1992 342703247405\n" -"46 Europe 1997 383606933833\n" -"47 Europe 2002 436448815097\n" -"48 Europe 2007 493183311052\n" -"49 Oceania 1952 54157223944\n" -"50 Oceania 1957 66826828013\n" -"51 Oceania 1962 82336453245\n" -"52 Oceania 1967 105958863585\n" -"53 Oceania 1972 134112109227\n" -"54 Oceania 1977 154707711162\n" -"55 Oceania 1982 176177151380\n" -"56 Oceania 1987 209451563998\n" -"57 Oceania 1992 236319179826\n" -"58 Oceania 1997 289304255183\n" -"59 Oceania 2002 345236880176\n" -"60 Oceania 2007 403657044512\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/12-plyr.md:332 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "daply(\n" " .data = calcGDP(gapminder),\n" " .variables = c(\"continent\", \"year\"),\n" @@ -16666,18 +10667,10 @@ msgid "" ")\n" "~~~" msgstr "" -"~~~\n" -"daply(\n" -" .data = calcGDP(gapminder),\n" -" .variables = c(\"continent\", \"year\"),\n" -" .fun = function(x) mean(x$gdp)\n" -")\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/12-plyr.md:343 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" " year\n" "continent 1952 1957 1962 1967\n" " Africa 5992294608 7359188796 8784876958 11443994101\n" @@ -16701,58 +10694,16 @@ msgid "" " Oceania 236319179826 289304255183 345236880176 403657044512\n" "~~~" msgstr "" -"~~~\n" -" year\n" -"continent 1952 1957 1962 1967\n" -" Africa 5992294608 7359188796 8784876958 11443994101\n" -" Americas 117738997171 140817061264 169153069442 217867530844\n" -" Asia 34095762661 47267432088 60136869012 84648519224\n" -" Europe 84971341466 109989505140 138984693095 173366641137\n" -" Oceania 54157223944 66826828013 82336453245 105958863585\n" -" year\n" -"continent 1972 1977 1982 1987\n" -" Africa 15072241974 18694898732 22040401045 24107264108\n" -" Americas 268159178814 324085389022 363314008350 439447790357\n" -" Asia 124385747313 159802590186 194429049919 241784763369\n" -" Europe 218691462733 255367522034 279484077072 316507473546\n" -" Oceania 134112109227 154707711162 176177151380 209451563998\n" -" year\n" -"continent 1992 1997 2002 2007\n" -" Africa 26256977719 30023173824 35303511424 45778570846\n" -" Americas 489899820623 582693307146 661248623419 776723426068\n" -" Asia 307100497486 387597655323 458042336179 627513635079\n" -" Europe 342703247405 383606933833 436448815097 493183311052\n" -" Oceania 236319179826 289304255183 345236880176 403657044512\n" -"~~~" #: r-novice-gapminder/_episodes/12-plyr.md:368 -msgid "" -"You can use these functions in place of `for` loops (and its usually faster to\n" +msgid "You can use these functions in place of `for` loops (and its usually faster to\n" "do so).\n" "To replace a for loop, put the code that was in the body of the `for` loop inside an anonymous function." msgstr "" -"You can use these functions in place of `for` loops (and its usually faster to\n" -"do so).\n" -"To replace a for loop, put the code that was in the body of the `for` loop inside an anonymous function." -# code block #: r-novice-gapminder/_episodes/12-plyr.md:373 -msgid "" -"~~~\n" -"d_ply(\n" -" .data=gapminder,\n" -" .variables = \"continent\",\n" -" .fun = function(x) {\n" -" meanGDPperCap <- mean(x$gdpPercap)\n" -" print(paste(\n" -" \"The mean GDP per capita for\", unique(x$continent),\n" -" \"is\", format(meanGDPperCap, big.mark=\",\")\n" -" ))\n" -" }\n" -")\n" -"~~~" -msgstr "" -"~~~\n" +# code block +msgid "~~~\n" "d_ply(\n" " .data=gapminder,\n" " .variables = \"continent\",\n" @@ -16762,137 +10713,60 @@ msgstr "" " \"The mean GDP per capita for\", unique(x$continent),\n" " \"is\", format(meanGDPperCap, big.mark=\",\")\n" " ))\n" -" }\n" -")\n" -"~~~" - -# code block -#: r-novice-gapminder/_episodes/12-plyr.md:390 -msgid "" -"~~~\n" -"[1] \"The mean GDP per capita for Africa is 2,193.755\"\n" -"[1] \"The mean GDP per capita for Americas is 7,136.11\"\n" -"[1] \"The mean GDP per capita for Asia is 7,902.15\"\n" -"[1] \"The mean GDP per capita for Europe is 14,469.48\"\n" -"[1] \"The mean GDP per capita for Oceania is 18,621.61\"\n" -"~~~" -msgstr "" -"~~~\n" -"[1] \"The mean GDP per capita for Africa is 2,193.755\"\n" -"[1] \"The mean GDP per capita for Americas is 7,136.11\"\n" -"[1] \"The mean GDP per capita for Asia is 7,902.15\"\n" -"[1] \"The mean GDP per capita for Europe is 14,469.48\"\n" -"[1] \"The mean GDP per capita for Oceania is 18,621.61\"\n" -"~~~" - -# blockquote, which can be cascaded -#: r-novice-gapminder/_episodes/12-plyr.md:399 -msgid "> ## Tip: printing numbers" -msgstr "> ## Tip: printing numbers" - -#: r-novice-gapminder/_episodes/12-plyr.md:400 -msgid "" -">\n" -"> The `format` function can be used to make numeric\n" -"> values \"pretty\" for printing out in messages." -msgstr "" -">\n" -"> The `format` function can be used to make numeric\n" -"> values \"pretty\" for printing out in messages." - -#: r-novice-gapminder/_episodes/12-plyr.md:407 -msgid "" -">\n" -"> Calculate the average life expectancy per continent and year. Which had the\n" -"> longest and shortest in 2007? Which had the greatest change in between 1952\n" -"> and 2007?" -msgstr "" -">\n" -"> Calculate the average life expectancy per continent and year. Which had the\n" -"> longest and shortest in 2007? Which had the greatest change in between 1952\n" -"> and 2007?" - -# blockquote, which can be cascaded -#: r-novice-gapminder/_episodes/12-plyr.md:414 -#: r-novice-gapminder/_episodes/13-dplyr.md:572 -msgid "> ## Advanced Challenge" -msgstr "> ## Advanced Challenge" - -#: r-novice-gapminder/_episodes/12-plyr.md:415 -msgid "" -">\n" -"> Calculate the difference in mean life expectancy between\n" -"> the years 1952 and 2007 from the output of challenge 2\n" -"> using one of the `plyr` functions." -msgstr "" -">\n" -"> Calculate the difference in mean life expectancy between\n" -"> the years 1952 and 2007 from the output of challenge 2\n" -"> using one of the `plyr` functions." - -# blockquote, which can be cascaded -#: r-novice-gapminder/_episodes/12-plyr.md:421 -msgid "> ## Alternate Challenge if class seems lost" -msgstr "> ## Alternate Challenge if class seems lost" - -#: r-novice-gapminder/_episodes/12-plyr.md:422 -msgid "" -">\n" -"> Without running them, which of the following will calculate the average\n" -"> life expectancy per continent:\n" -">\n" -"> 1.\n" -"> \n" -"> ~~~\n" -"> ddply(\n" -"> .data = gapminder,\n" -"> .variables = gapminder$continent,\n" -"> .fun = function(dataGroup) {\n" -"> mean(dataGroup$lifeExp)\n" -"> }\n" -"> )\n" -"> ~~~\n" -"> {: .language-r}\n" -">\n" -"> 2.\n" -"> \n" -"> ~~~\n" -"> ddply(\n" -"> .data = gapminder,\n" -"> .variables = \"continent\",\n" -"> .fun = mean(dataGroup$lifeExp)\n" -"> )\n" -"> ~~~\n" -"> {: .language-r}\n" -">\n" -"> 3.\n" -"> \n" -"> ~~~\n" -"> ddply(\n" -"> .data = gapminder,\n" -"> .variables = \"continent\",\n" -"> .fun = function(dataGroup) {\n" -"> mean(dataGroup$lifeExp)\n" -"> }\n" -"> )\n" -"> ~~~\n" -"> {: .language-r}\n" -">\n" -"> 4.\n" -"> \n" -"> ~~~\n" -"> adply(\n" -"> .data = gapminder,\n" -"> .variables = \"continent\",\n" -"> .fun = function(dataGroup) {\n" -"> mean(dataGroup$lifeExp)\n" -"> }\n" -"> )\n" -"> ~~~\n" -"> {: .language-r}\n" -">" +" }\n" +")\n" +"~~~" msgstr "" -">\n" + +#: r-novice-gapminder/_episodes/12-plyr.md:390 +# code block +msgid "~~~\n" +"[1] \"The mean GDP per capita for Africa is 2,193.755\"\n" +"[1] \"The mean GDP per capita for Americas is 7,136.11\"\n" +"[1] \"The mean GDP per capita for Asia is 7,902.15\"\n" +"[1] \"The mean GDP per capita for Europe is 14,469.48\"\n" +"[1] \"The mean GDP per capita for Oceania is 18,621.61\"\n" +"~~~" +msgstr "" + +#: r-novice-gapminder/_episodes/12-plyr.md:399 +# blockquote, which can be cascaded +msgid "> ## Tip: printing numbers" +msgstr "" + +#: r-novice-gapminder/_episodes/12-plyr.md:400 +msgid ">\n" +"> The `format` function can be used to make numeric\n" +"> values \"pretty\" for printing out in messages." +msgstr "" + +#: r-novice-gapminder/_episodes/12-plyr.md:407 +msgid ">\n" +"> Calculate the average life expectancy per continent and year. Which had the\n" +"> longest and shortest in 2007? Which had the greatest change in between 1952\n" +"> and 2007?" +msgstr "" + +#: r-novice-gapminder/_episodes/12-plyr.md:414 +#: r-novice-gapminder/_episodes/13-dplyr.md:572 +# blockquote, which can be cascaded +msgid "> ## Advanced Challenge" +msgstr "" + +#: r-novice-gapminder/_episodes/12-plyr.md:415 +msgid ">\n" +"> Calculate the difference in mean life expectancy between\n" +"> the years 1952 and 2007 from the output of challenge 2\n" +"> using one of the `plyr` functions." +msgstr "" + +#: r-novice-gapminder/_episodes/12-plyr.md:421 +# blockquote, which can be cascaded +msgid "> ## Alternate Challenge if class seems lost" +msgstr "" + +#: r-novice-gapminder/_episodes/12-plyr.md:422 +msgid ">\n" "> Without running them, which of the following will calculate the average\n" "> life expectancy per continent:\n" ">\n" @@ -16946,11 +10820,11 @@ msgstr "" "> ~~~\n" "> {: .language-r}\n" ">" +msgstr "" -# Front Matter #: r-novice-gapminder/_episodes/13-dplyr.md:1 -msgid "" -"---\n" +# Front Matter +msgid "---\n" "# Please do not edit this file directly; it is auto generated.\n" "# Instead, please edit 13-dplyr.md in _episodes_rmd/\n" "title: Dataframe Manipulation with dplyr\n" @@ -16971,255 +10845,166 @@ msgid "" "source: Rmd\n" "---" msgstr "" -"---\n" -"# Please do not edit this file directly; it is auto generated.\n" -"# Instead, please edit 13-dplyr.md in _episodes_rmd/\n" -"title: Dataframe Manipulation with dplyr\n" -"teaching: 40\n" -"exercises: 15\n" -"questions:\n" -"- \"How can I manipulate dataframes without repeating myself?\"\n" -"objectives:\n" -"- \" To be able to use the six main dataframe manipulation 'verbs' with pipes in `dplyr`.\"\n" -"- \" To understand how `group_by()` and `summarize()` can be combined to summarize datasets.\"\n" -"- \" Be able to analyze a subset of data using logical filtering.\"\n" -"keypoints:\n" -"- \"Use the `dplyr` package to manipulate dataframes.\"\n" -"- \"Use `select()` to choose variables from a dataframe.\"\n" -"- \"Use `filter()` to choose data based on values.\"\n" -"- \"Use `group_by()` and `summarize()` to work with subsets of data.\"\n" -"- \"Use `mutate()` to create new variables.\"\n" -"source: Rmd\n" -"---" #: r-novice-gapminder/_episodes/13-dplyr.md:24 -msgid "" -"Manipulation of dataframes means many things to many researchers, we often\n" +msgid "Manipulation of dataframes means many things to many researchers, we often\n" "select certain observations (rows) or variables (columns), we often group the\n" "data by a certain variable(s), or we even calculate summary statistics. We can\n" "do these operations using the normal base R operations:" msgstr "" -"Manipulation of dataframes means many things to many researchers, we often\n" -"select certain observations (rows) or variables (columns), we often group the\n" -"data by a certain variable(s), or we even calculate summary statistics. We can\n" -"do these operations using the normal base R operations:" -# code block #: r-novice-gapminder/_episodes/13-dplyr.md:30 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "mean(gapminder[gapminder$continent == \"Africa\", \"gdpPercap\"])\n" "~~~" msgstr "" -"~~~\n" -"mean(gapminder[gapminder$continent == \"Africa\", \"gdpPercap\"])\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/13-dplyr.md:37 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "[1] 2193.755\n" "~~~" msgstr "" -"~~~\n" -"[1] 2193.755\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/13-dplyr.md:44 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "mean(gapminder[gapminder$continent == \"Americas\", \"gdpPercap\"])\n" "~~~" msgstr "" -"~~~\n" -"mean(gapminder[gapminder$continent == \"Americas\", \"gdpPercap\"])\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/13-dplyr.md:51 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "[1] 7136.11\n" "~~~" msgstr "" -"~~~\n" -"[1] 7136.11\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/13-dplyr.md:58 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "mean(gapminder[gapminder$continent == \"Asia\", \"gdpPercap\"])\n" "~~~" msgstr "" -"~~~\n" -"mean(gapminder[gapminder$continent == \"Asia\", \"gdpPercap\"])\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/13-dplyr.md:65 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "[1] 7902.15\n" "~~~" msgstr "" -"~~~\n" -"[1] 7902.15\n" -"~~~" #: r-novice-gapminder/_episodes/13-dplyr.md:70 -msgid "" -"But this isn't very *nice* because there is a fair bit of repetition. Repeating\n" +msgid "But this isn't very *nice* because there is a fair bit of repetition. Repeating\n" "yourself will cost you time, both now and later, and potentially introduce some\n" "nasty bugs." msgstr "" -"But this isn't very *nice* because there is a fair bit of repetition. Repeating\n" -"yourself will cost you time, both now and later, and potentially introduce some\n" -"nasty bugs." -# header #: r-novice-gapminder/_episodes/13-dplyr.md:74 +# header msgid "## The `dplyr` package" -msgstr "## The `dplyr` package" +msgstr "" #: r-novice-gapminder/_episodes/13-dplyr.md:76 -msgid "" -"Luckily, the [`dplyr`](https://cran.r-project.org/web/packages/dplyr/dplyr.pdf)\n" +msgid "Luckily, the [`dplyr`](https://cran.r-project.org/web/packages/dplyr/dplyr.pdf)\n" "package provides a number of very useful functions for manipulating dataframes\n" "in a way that will reduce the above repetition, reduce the probability of making\n" "errors, and probably even save you some typing. As an added bonus, you might\n" "even find the `dplyr` grammar easier to read." msgstr "" -"Luckily, the [`dplyr`](https://cran.r-project.org/web/packages/dplyr/dplyr.pdf)\n" -"package provides a number of very useful functions for manipulating dataframes\n" -"in a way that will reduce the above repetition, reduce the probability of making\n" -"errors, and probably even save you some typing. As an added bonus, you might\n" -"even find the `dplyr` grammar easier to read." #: r-novice-gapminder/_episodes/13-dplyr.md:82 -msgid "" -"Here we're going to cover 6 of the most commonly used functions as well as using\n" +msgid "Here we're going to cover 6 of the most commonly used functions as well as using\n" "pipes (`%>%`) to combine them." msgstr "" -"Here we're going to cover 6 of the most commonly used functions as well as using\n" -"pipes (`%>%`) to combine them." -# ordered list #: r-novice-gapminder/_episodes/13-dplyr.md:85 +# ordered list msgid "1. `select()`" -msgstr "1. `select()`" +msgstr "" -# ordered list #: r-novice-gapminder/_episodes/13-dplyr.md:86 +# ordered list msgid "2. `filter()`" -msgstr "2. `filter()`" +msgstr "" -# ordered list #: r-novice-gapminder/_episodes/13-dplyr.md:87 +# ordered list msgid "3. `group_by()`" -msgstr "3. `group_by()`" +msgstr "" -# ordered list #: r-novice-gapminder/_episodes/13-dplyr.md:88 +# ordered list msgid "4. `summarize()`" -msgstr "4. `summarize()`" +msgstr "" -# ordered list #: r-novice-gapminder/_episodes/13-dplyr.md:89 +# ordered list msgid "5. `mutate()`" -msgstr "5. `mutate()`" +msgstr "" #: r-novice-gapminder/_episodes/13-dplyr.md:91 msgid "If you have have not installed this package earlier, please do so:" -msgstr "If you have have not installed this package earlier, please do so:" +msgstr "" -# code block #: r-novice-gapminder/_episodes/13-dplyr.md:94 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "install.packages('dplyr')\n" "~~~" msgstr "" -"~~~\n" -"install.packages('dplyr')\n" -"~~~" #: r-novice-gapminder/_episodes/13-dplyr.md:99 msgid "Now let's load the package:" -msgstr "Now let's load the package:" +msgstr "" -# code block #: r-novice-gapminder/_episodes/13-dplyr.md:102 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "library(\"dplyr\")\n" "~~~" msgstr "" -"~~~\n" -"library(\"dplyr\")\n" -"~~~" -# header #: r-novice-gapminder/_episodes/13-dplyr.md:107 +# header msgid "## Using select()" -msgstr "## Using select()" +msgstr "" #: r-novice-gapminder/_episodes/13-dplyr.md:109 -msgid "" -"If, for example, we wanted to move forward with only a few of the variables in\n" +msgid "If, for example, we wanted to move forward with only a few of the variables in\n" "our dataframe we could use the `select()` function. This will keep only the\n" "variables you select." msgstr "" -"If, for example, we wanted to move forward with only a few of the variables in\n" -"our dataframe we could use the `select()` function. This will keep only the\n" -"variables you select." -# code block #: r-novice-gapminder/_episodes/13-dplyr.md:114 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "year_country_gdp <- select(gapminder,year,country,gdpPercap)\n" "~~~" msgstr "" -"~~~\n" -"year_country_gdp <- select(gapminder,year,country,gdpPercap)\n" -"~~~" #: r-novice-gapminder/_episodes/13-dplyr.md:119 msgid "![](../fig/13-dplyr-fig1.png)" -msgstr "![](../fig/13-dplyr-fig1.png)" +msgstr "" #: r-novice-gapminder/_episodes/13-dplyr.md:121 -msgid "" -"If we open up `year_country_gdp` we'll see that it only contains the year,\n" +msgid "If we open up `year_country_gdp` we'll see that it only contains the year,\n" "country and gdpPercap. Above we used 'normal' grammar, but the strengths of\n" "`dplyr` lie in combining several functions using pipes. Since the pipes grammar\n" "is unlike anything we've seen in R before, let's repeat what we've done above\n" "using pipes." msgstr "" -"If we open up `year_country_gdp` we'll see that it only contains the year,\n" -"country and gdpPercap. Above we used 'normal' grammar, but the strengths of\n" -"`dplyr` lie in combining several functions using pipes. Since the pipes grammar\n" -"is unlike anything we've seen in R before, let's repeat what we've done above\n" -"using pipes." -# code block #: r-novice-gapminder/_episodes/13-dplyr.md:128 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "year_country_gdp <- gapminder %>% select(year,country,gdpPercap)\n" "~~~" msgstr "" -"~~~\n" -"year_country_gdp <- gapminder %>% select(year,country,gdpPercap)\n" -"~~~" #: r-novice-gapminder/_episodes/13-dplyr.md:133 -msgid "" -"To help you understand why we wrote that in that way, let's walk through it step\n" +msgid "To help you understand why we wrote that in that way, let's walk through it step\n" "by step. First we summon the gapminder dataframe and pass it on, using the pipe\n" "symbol `%>%`, to the next step, which is the `select()` function. In this case\n" "we don't specify which data object we use in the `select()` function since in\n" @@ -17227,45 +11012,28 @@ msgid "" "encountered pipes before in the shell. In R, a pipe symbol is `%>%` while in the\n" "shell it is `|` but the concept is the same!" msgstr "" -"To help you understand why we wrote that in that way, let's walk through it step\n" -"by step. First we summon the gapminder dataframe and pass it on, using the pipe\n" -"symbol `%>%`, to the next step, which is the `select()` function. In this case\n" -"we don't specify which data object we use in the `select()` function since in\n" -"gets that from the previous pipe. **Fun Fact**: There is a good chance you have\n" -"encountered pipes before in the shell. In R, a pipe symbol is `%>%` while in the\n" -"shell it is `|` but the concept is the same!" -# header #: r-novice-gapminder/_episodes/13-dplyr.md:141 +# header msgid "## Using filter()" -msgstr "## Using filter()" +msgstr "" #: r-novice-gapminder/_episodes/13-dplyr.md:143 -msgid "" -"If we now wanted to move forward with the above, but only with European\n" +msgid "If we now wanted to move forward with the above, but only with European\n" "countries, we can combine `select` and `filter`" msgstr "" -"If we now wanted to move forward with the above, but only with European\n" -"countries, we can combine `select` and `filter`" -# code block #: r-novice-gapminder/_episodes/13-dplyr.md:147 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "year_country_gdp_euro <- gapminder %>%\n" " filter(continent==\"Europe\") %>%\n" " select(year,country,gdpPercap)\n" "~~~" msgstr "" -"~~~\n" -"year_country_gdp_euro <- gapminder %>%\n" -" filter(continent==\"Europe\") %>%\n" -" select(year,country,gdpPercap)\n" -"~~~" #: r-novice-gapminder/_episodes/13-dplyr.md:155 -msgid "" -">\n" +msgid ">\n" "> Write a single command (which can span multiple lines and includes pipes) that\n" "> will produce a dataframe that has the African values for `lifeExp`, `country`\n" "> and `year`, but not for other Continents. How many rows does your dataframe\n" @@ -17280,72 +11048,40 @@ msgid "" "> >~~~\n" "> >{: .language-r}" msgstr "" -">\n" -"> Write a single command (which can span multiple lines and includes pipes) that\n" -"> will produce a dataframe that has the African values for `lifeExp`, `country`\n" -"> and `year`, but not for other Continents. How many rows does your dataframe\n" -"> have and why?\n" -">\n" -"> > ## Solution to Challenge 1\n" -"> >\n" -"> >~~~\n" -"> >year_country_lifeExp_Africa <- gapminder %>%\n" -"> > filter(continent==\"Africa\") %>%\n" -"> > select(year,country,lifeExp)\n" -"> >~~~\n" -"> >{: .language-r}" #: r-novice-gapminder/_episodes/13-dplyr.md:172 -msgid "" -"As with last time, first we pass the gapminder dataframe to the `filter()`\n" +msgid "As with last time, first we pass the gapminder dataframe to the `filter()`\n" "function, then we pass the filtered version of the gapminder dataframe to the\n" "`select()` function. **Note:** The order of operations is very important in this\n" "case. If we used 'select' first, filter would not be able to find the variable\n" "continent since we would have removed it in the previous step." msgstr "" -"As with last time, first we pass the gapminder dataframe to the `filter()`\n" -"function, then we pass the filtered version of the gapminder dataframe to the\n" -"`select()` function. **Note:** The order of operations is very important in this\n" -"case. If we used 'select' first, filter would not be able to find the variable\n" -"continent since we would have removed it in the previous step." -# header #: r-novice-gapminder/_episodes/13-dplyr.md:178 +# header msgid "## Using group_by() and summarize()" -msgstr "## Using group_by() and summarize()" +msgstr "" #: r-novice-gapminder/_episodes/13-dplyr.md:180 -msgid "" -"Now, we were supposed to be reducing the error prone repetitiveness of what can\n" +msgid "Now, we were supposed to be reducing the error prone repetitiveness of what can\n" "be done with base R, but up to now we haven't done that since we would have to\n" "repeat the above for each continent. Instead of `filter()`, which will only pass\n" "observations that meet your criteria (in the above: `continent==\"Europe\"`), we\n" "can use `group_by()`, which will essentially use every unique criteria that you\n" "could have used in filter." msgstr "" -"Now, we were supposed to be reducing the error prone repetitiveness of what can\n" -"be done with base R, but up to now we haven't done that since we would have to\n" -"repeat the above for each continent. Instead of `filter()`, which will only pass\n" -"observations that meet your criteria (in the above: `continent==\"Europe\"`), we\n" -"can use `group_by()`, which will essentially use every unique criteria that you\n" -"could have used in filter." -# code block #: r-novice-gapminder/_episodes/13-dplyr.md:208 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "str(gapminder %>% group_by(continent))\n" "~~~" msgstr "" -"~~~\n" -"str(gapminder %>% group_by(continent))\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/13-dplyr.md:215 -msgid "" -"~~~\n" -"Classes 'grouped_df', 'tbl_df', 'tbl' and 'data.frame':\t1704 obs. of 6 variables:\n" +# code block +msgid "~~~\n" +"Classes 'grouped_df', 'tbl_df', 'tbl' and 'data.frame': 1704 obs. of 6 variables:\n" " $ country : Factor w/ 142 levels \"Afghanistan\",..: 1 1 1 1 1 1 1 1 1 1 ...\n" " $ year : int 1952 1957 1962 1967 1972 1977 1982 1987 1992 1997 ...\n" " $ pop : num 8425333 9240934 10267083 11537966 13079460 ...\n" @@ -17362,98 +11098,55 @@ msgid "" " ..$ : int 60 61 62 63 64 65 66 67 68 69 ...\n" " - attr(*, \"group_sizes\")= int 624 300 396 360 24\n" " - attr(*, \"biggest_group_size\")= int 624\n" -" - attr(*, \"labels\")='data.frame':\t5 obs. of 1 variable:\n" +" - attr(*, \"labels\")='data.frame': 5 obs. of 1 variable:\n" " ..$ continent: Factor w/ 5 levels \"Africa\",\"Americas\",..: 1 2 3 4 5\n" " ..- attr(*, \"vars\")= chr \"continent\"\n" " ..- attr(*, \"drop\")= logi TRUE\n" "~~~" msgstr "" -"~~~\n" -"Classes 'grouped_df', 'tbl_df', 'tbl' and 'data.frame':\t1704 obs. of 6 variables:\n" -" $ country : Factor w/ 142 levels \"Afghanistan\",..: 1 1 1 1 1 1 1 1 1 1 ...\n" -" $ year : int 1952 1957 1962 1967 1972 1977 1982 1987 1992 1997 ...\n" -" $ pop : num 8425333 9240934 10267083 11537966 13079460 ...\n" -" $ continent: Factor w/ 5 levels \"Africa\",\"Americas\",..: 3 3 3 3 3 3 3 3 3 3 ...\n" -" $ lifeExp : num 28.8 30.3 32 34 36.1 ...\n" -" $ gdpPercap: num 779 821 853 836 740 ...\n" -" - attr(*, \"vars\")= chr \"continent\"\n" -" - attr(*, \"drop\")= logi TRUE\n" -" - attr(*, \"indices\")=List of 5\n" -" ..$ : int 24 25 26 27 28 29 30 31 32 33 ...\n" -" ..$ : int 48 49 50 51 52 53 54 55 56 57 ...\n" -" ..$ : int 0 1 2 3 4 5 6 7 8 9 ...\n" -" ..$ : int 12 13 14 15 16 17 18 19 20 21 ...\n" -" ..$ : int 60 61 62 63 64 65 66 67 68 69 ...\n" -" - attr(*, \"group_sizes\")= int 624 300 396 360 24\n" -" - attr(*, \"biggest_group_size\")= int 624\n" -" - attr(*, \"labels\")='data.frame':\t5 obs. of 1 variable:\n" -" ..$ continent: Factor w/ 5 levels \"Africa\",\"Americas\",..: 1 2 3 4 5\n" -" ..- attr(*, \"vars\")= chr \"continent\"\n" -" ..- attr(*, \"drop\")= logi TRUE\n" -"~~~" #: r-novice-gapminder/_episodes/13-dplyr.md:239 -msgid "" -"You will notice that the structure of the dataframe where we used `group_by()`\n" +msgid "You will notice that the structure of the dataframe where we used `group_by()`\n" "(`grouped_df`) is not the same as the original `gapminder` (`data.frame`). A\n" "`grouped_df` can be thought of as a `list` where each item in the `list`is a\n" "`data.frame` which contains only the rows that correspond to the a particular\n" "value `continent` (at least in the example above)." msgstr "" -"You will notice that the structure of the dataframe where we used `group_by()`\n" -"(`grouped_df`) is not the same as the original `gapminder` (`data.frame`). A\n" -"`grouped_df` can be thought of as a `list` where each item in the `list`is a\n" -"`data.frame` which contains only the rows that correspond to the a particular\n" -"value `continent` (at least in the example above)." #: r-novice-gapminder/_episodes/13-dplyr.md:245 msgid "![](../fig/13-dplyr-fig2.png)" -msgstr "![](../fig/13-dplyr-fig2.png)" +msgstr "" -# header #: r-novice-gapminder/_episodes/13-dplyr.md:247 +# header msgid "## Using summarize()" -msgstr "## Using summarize()" +msgstr "" #: r-novice-gapminder/_episodes/13-dplyr.md:249 -msgid "" -"The above was a bit on the uneventful side but `group_by()` is much more\n" +msgid "The above was a bit on the uneventful side but `group_by()` is much more\n" "exciting in conjunction with `summarize()`. This will allow us to create new\n" "variable(s) by using functions that repeat for each of the continent-specific\n" "data frames. That is to say, using the `group_by()` function, we split our\n" "original dataframe into multiple pieces, then we can run functions\n" "(e.g. `mean()` or `sd()`) within `summarize()`." msgstr "" -"The above was a bit on the uneventful side but `group_by()` is much more\n" -"exciting in conjunction with `summarize()`. This will allow us to create new\n" -"variable(s) by using functions that repeat for each of the continent-specific\n" -"data frames. That is to say, using the `group_by()` function, we split our\n" -"original dataframe into multiple pieces, then we can run functions\n" -"(e.g. `mean()` or `sd()`) within `summarize()`." -# code block #: r-novice-gapminder/_episodes/13-dplyr.md:257 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "gdp_bycontinents <- gapminder %>%\n" " group_by(continent) %>%\n" " summarize(mean_gdpPercap=mean(gdpPercap))\n" "~~~" msgstr "" -"~~~\n" -"gdp_bycontinents <- gapminder %>%\n" -" group_by(continent) %>%\n" -" summarize(mean_gdpPercap=mean(gdpPercap))\n" -"~~~" #: r-novice-gapminder/_episodes/13-dplyr.md:264 msgid "![](../fig/13-dplyr-fig3.png)" -msgstr "![](../fig/13-dplyr-fig3.png)" +msgstr "" -# code block #: r-novice-gapminder/_episodes/13-dplyr.md:267 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "continent mean_gdpPercap\n" " \n" "1 Africa 2193.755\n" @@ -17463,27 +11156,14 @@ msgid "" "5 Oceania 18621.609\n" "~~~" msgstr "" -"~~~\n" -"continent mean_gdpPercap\n" -" \n" -"1 Africa 2193.755\n" -"2 Americas 7136.110\n" -"3 Asia 7902.150\n" -"4 Europe 14469.476\n" -"5 Oceania 18621.609\n" -"~~~" #: r-novice-gapminder/_episodes/13-dplyr.md:278 -msgid "" -"That allowed us to calculate the mean gdpPercap for each continent, but it gets\n" +msgid "That allowed us to calculate the mean gdpPercap for each continent, but it gets\n" "even better." msgstr "" -"That allowed us to calculate the mean gdpPercap for each continent, but it gets\n" -"even better." #: r-novice-gapminder/_episodes/13-dplyr.md:282 -msgid "" -">\n" +msgid ">\n" ">\n" "> Calculate the average life expectancy per country. Which has the longest average life\n" "> expectancy and which has the shortest average life expectancy?\n" @@ -17551,101 +11231,27 @@ msgid "" "> >~~~\n" "> >{: .output}" msgstr "" -">\n" -">\n" -"> Calculate the average life expectancy per country. Which has the longest average life\n" -"> expectancy and which has the shortest average life expectancy?\n" -">\n" -"> > ## Solution to Challenge 2\n" -"> >\n" -"> >~~~\n" -"> >lifeExp_bycountry <- gapminder %>%\n" -"> > group_by(country) %>%\n" -"> > summarize(mean_lifeExp=mean(lifeExp))\n" -"> >lifeExp_bycountry %>%\n" -"> > filter(mean_lifeExp == min(mean_lifeExp) | mean_lifeExp == max(mean_lifeExp))\n" -"> >~~~\n" -"> >{: .language-r}\n" -"> >\n" -"> >\n" -"> >\n" -"> >~~~\n" -"> ># A tibble: 2 x 2\n" -"> > country mean_lifeExp\n" -"> > \n" -"> >1 Iceland 76.5\n" -"> >2 Sierra Leone 36.8\n" -"> >~~~\n" -"> >{: .output}\n" -"> Another way to do this is to use the `dplyr` function `arrange()`, which\n" -"> arranges the rows in a data frame according to the order of one or more\n" -"> variables from the data frame. It has similar syntax to other functions from\n" -"> the `dplyr` package. You can use `desc()` inside `arrange()` to sort in\n" -"> descending order.\n" -"> >\n" -"> >~~~\n" -"> >lifeExp_bycountry %>%\n" -"> > arrange(mean_lifeExp) %>%\n" -"> > head(1)\n" -"> >~~~\n" -"> >{: .language-r}\n" -"> >\n" -"> >\n" -"> >\n" -"> >~~~\n" -"> ># A tibble: 1 x 2\n" -"> > country mean_lifeExp\n" -"> > \n" -"> >1 Sierra Leone 36.8\n" -"> >~~~\n" -"> >{: .output}\n" -"> >\n" -"> >\n" -"> >\n" -"> >~~~\n" -"> >lifeExp_bycountry %>%\n" -"> > arrange(desc(mean_lifeExp)) %>%\n" -"> > head(1)\n" -"> >~~~\n" -"> >{: .language-r}\n" -"> >\n" -"> >\n" -"> >\n" -"> >~~~\n" -"> ># A tibble: 1 x 2\n" -"> > country mean_lifeExp\n" -"> > \n" -"> >1 Iceland 76.5\n" -"> >~~~\n" -"> >{: .output}" #: r-novice-gapminder/_episodes/13-dplyr.md:352 msgid "The function `group_by()` allows us to group by multiple variables. Let's group by `year` and `continent`." -msgstr "The function `group_by()` allows us to group by multiple variables. Let's group by `year` and `continent`." +msgstr "" -# code block #: r-novice-gapminder/_episodes/13-dplyr.md:356 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "gdp_bycontinents_byyear <- gapminder %>%\n" " group_by(continent,year) %>%\n" " summarize(mean_gdpPercap=mean(gdpPercap))\n" "~~~" msgstr "" -"~~~\n" -"gdp_bycontinents_byyear <- gapminder %>%\n" -" group_by(continent,year) %>%\n" -" summarize(mean_gdpPercap=mean(gdpPercap))\n" -"~~~" #: r-novice-gapminder/_episodes/13-dplyr.md:363 msgid "That is already quite powerful, but it gets even better! You're not limited to defining 1 new variable in `summarize()`." -msgstr "That is already quite powerful, but it gets even better! You're not limited to defining 1 new variable in `summarize()`." +msgstr "" -# code block #: r-novice-gapminder/_episodes/13-dplyr.md:366 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "gdp_pop_bycontinents_byyear <- gapminder %>%\n" " group_by(continent,year) %>%\n" " summarize(mean_gdpPercap=mean(gdpPercap),\n" @@ -17654,59 +11260,36 @@ msgid "" " sd_pop=sd(pop))\n" "~~~" msgstr "" -"~~~\n" -"gdp_pop_bycontinents_byyear <- gapminder %>%\n" -" group_by(continent,year) %>%\n" -" summarize(mean_gdpPercap=mean(gdpPercap),\n" -" sd_gdpPercap=sd(gdpPercap),\n" -" mean_pop=mean(pop),\n" -" sd_pop=sd(pop))\n" -"~~~" -# header #: r-novice-gapminder/_episodes/13-dplyr.md:376 +# header msgid "## count() and n()" -msgstr "## count() and n()" +msgstr "" #: r-novice-gapminder/_episodes/13-dplyr.md:378 -msgid "" -"A very common operation is to count the number of observations for each\n" +msgid "A very common operation is to count the number of observations for each\n" "group. The `dplyr` package comes with two related functions that help with this." msgstr "" -"A very common operation is to count the number of observations for each\n" -"group. The `dplyr` package comes with two related functions that help with this." #: r-novice-gapminder/_episodes/13-dplyr.md:381 -msgid "" -"For instance, if we wanted to check the number of countries included in the\n" +msgid "For instance, if we wanted to check the number of countries included in the\n" "dataset for the year 2002, we can use the `count()` function. It takes the name\n" "of one or more columns that contain the groups we are interested in, and we can\n" "optionally sort the results in descending order by adding `sort=TRUE`:" msgstr "" -"For instance, if we wanted to check the number of countries included in the\n" -"dataset for the year 2002, we can use the `count()` function. It takes the name\n" -"of one or more columns that contain the groups we are interested in, and we can\n" -"optionally sort the results in descending order by adding `sort=TRUE`:" -# code block #: r-novice-gapminder/_episodes/13-dplyr.md:387 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "gapminder %>%\n" " filter(year == 2002) %>%\n" " count(continent, sort = TRUE)\n" "~~~" msgstr "" -"~~~\n" -"gapminder %>%\n" -" filter(year == 2002) %>%\n" -" count(continent, sort = TRUE)\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/13-dplyr.md:396 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "# A tibble: 5 x 2\n" " continent n\n" " \n" @@ -17717,46 +11300,25 @@ msgid "" "5 Oceania 2\n" "~~~" msgstr "" -"~~~\n" -"# A tibble: 5 x 2\n" -" continent n\n" -" \n" -"1 Africa 52\n" -"2 Asia 33\n" -"3 Europe 30\n" -"4 Americas 25\n" -"5 Oceania 2\n" -"~~~" #: r-novice-gapminder/_episodes/13-dplyr.md:408 -msgid "" -"If we need to use the number of observations in calculations, the `n()` function\n" +msgid "If we need to use the number of observations in calculations, the `n()` function\n" "is useful. For instance, if we wanted to get the standard error of the life\n" "expectency per continent:" msgstr "" -"If we need to use the number of observations in calculations, the `n()` function\n" -"is useful. For instance, if we wanted to get the standard error of the life\n" -"expectency per continent:" -# code block #: r-novice-gapminder/_episodes/13-dplyr.md:413 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "gapminder %>%\n" " group_by(continent) %>%\n" " summarize(se_le = sd(lifeExp)/sqrt(n()))\n" "~~~" msgstr "" -"~~~\n" -"gapminder %>%\n" -" group_by(continent) %>%\n" -" summarize(se_le = sd(lifeExp)/sqrt(n()))\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/13-dplyr.md:422 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "# A tibble: 5 x 2\n" " continent se_le\n" " \n" @@ -17767,25 +11329,14 @@ msgid "" "5 Oceania 0.775\n" "~~~" msgstr "" -"~~~\n" -"# A tibble: 5 x 2\n" -" continent se_le\n" -" \n" -"1 Africa 0.366\n" -"2 Americas 0.540\n" -"3 Asia 0.596\n" -"4 Europe 0.286\n" -"5 Oceania 0.775\n" -"~~~" #: r-novice-gapminder/_episodes/13-dplyr.md:434 msgid "You can also chain together several summary operations; in this case calculating the `minimum`, `maximum`, `mean` and `se` of each continent's per-country life-expectancy:" -msgstr "You can also chain together several summary operations; in this case calculating the `minimum`, `maximum`, `mean` and `se` of each continent's per-country life-expectancy:" +msgstr "" -# code block #: r-novice-gapminder/_episodes/13-dplyr.md:437 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "gapminder %>%\n" " group_by(continent) %>%\n" " summarize(\n" @@ -17795,20 +11346,10 @@ msgid "" " se_le = sd(lifeExp)/sqrt(n()))\n" "~~~" msgstr "" -"~~~\n" -"gapminder %>%\n" -" group_by(continent) %>%\n" -" summarize(\n" -" mean_le = mean(lifeExp),\n" -" min_le = min(lifeExp),\n" -" max_le = max(lifeExp),\n" -" se_le = sd(lifeExp)/sqrt(n()))\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/13-dplyr.md:450 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "# A tibble: 5 x 5\n" " continent mean_le min_le max_le se_le\n" " \n" @@ -17819,30 +11360,19 @@ msgid "" "5 Oceania 74.3 69.1 81.2 0.775\n" "~~~" msgstr "" -"~~~\n" -"# A tibble: 5 x 5\n" -" continent mean_le min_le max_le se_le\n" -" \n" -"1 Africa 48.9 23.6 76.4 0.366\n" -"2 Americas 64.7 37.6 80.7 0.540\n" -"3 Asia 60.1 28.8 82.6 0.596\n" -"4 Europe 71.9 43.6 81.8 0.286\n" -"5 Oceania 74.3 69.1 81.2 0.775\n" -"~~~" -# header #: r-novice-gapminder/_episodes/13-dplyr.md:462 +# header msgid "## Using mutate()" -msgstr "## Using mutate()" +msgstr "" #: r-novice-gapminder/_episodes/13-dplyr.md:464 msgid "We can also create new variables prior to (or even after) summarizing information using `mutate()`." -msgstr "We can also create new variables prior to (or even after) summarizing information using `mutate()`." +msgstr "" -# code block #: r-novice-gapminder/_episodes/13-dplyr.md:467 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "gdp_pop_bycontinents_byyear <- gapminder %>%\n" " mutate(gdp_billion=gdpPercap*pop/10^9) %>%\n" " group_by(continent,year) %>%\n" @@ -17854,39 +11384,22 @@ msgid "" " sd_gdp_billion=sd(gdp_billion))\n" "~~~" msgstr "" -"~~~\n" -"gdp_pop_bycontinents_byyear <- gapminder %>%\n" -" mutate(gdp_billion=gdpPercap*pop/10^9) %>%\n" -" group_by(continent,year) %>%\n" -" summarize(mean_gdpPercap=mean(gdpPercap),\n" -" sd_gdpPercap=sd(gdpPercap),\n" -" mean_pop=mean(pop),\n" -" sd_pop=sd(pop),\n" -" mean_gdp_billion=mean(gdp_billion),\n" -" sd_gdp_billion=sd(gdp_billion))\n" -"~~~" -# header #: r-novice-gapminder/_episodes/13-dplyr.md:480 +# header msgid "## Connect mutate with logical filtering: ifelse" -msgstr "## Connect mutate with logical filtering: ifelse" +msgstr "" #: r-novice-gapminder/_episodes/13-dplyr.md:482 -msgid "" -"When creating new variables, we can hook this with a logical condition. A simple combination of\n" +msgid "When creating new variables, we can hook this with a logical condition. A simple combination of\n" "`mutate()` and `ifelse()` facilitates filtering right where it is needed: in the moment of creating something new.\n" "This easy-to-read statement is a fast and powerful way of discarding certain data (even though the overall dimension\n" "of the data frame will not change) or for updating values depending on this given condition." msgstr "" -"When creating new variables, we can hook this with a logical condition. A simple combination of\n" -"`mutate()` and `ifelse()` facilitates filtering right where it is needed: in the moment of creating something new.\n" -"This easy-to-read statement is a fast and powerful way of discarding certain data (even though the overall dimension\n" -"of the data frame will not change) or for updating values depending on this given condition." -# code block #: r-novice-gapminder/_episodes/13-dplyr.md:488 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "## keeping all data but \"filtering\" after a certain condition\n" "# calculate GDP only for people with a life expectation above 25\n" "gdp_pop_bycontinents_byyear_above25 <- gapminder %>%\n" @@ -17908,57 +11421,21 @@ msgid "" " mean_gdpPercap_expected = mean(gdp_futureExpectation))\n" "~~~" msgstr "" -"~~~\n" -"## keeping all data but \"filtering\" after a certain condition\n" -"# calculate GDP only for people with a life expectation above 25\n" -"gdp_pop_bycontinents_byyear_above25 <- gapminder %>%\n" -" mutate(gdp_billion = ifelse(lifeExp > 25, gdpPercap * pop / 10^9, NA)) %>%\n" -" group_by(continent, year) %>%\n" -" summarize(mean_gdpPercap = mean(gdpPercap),\n" -" sd_gdpPercap = sd(gdpPercap),\n" -" mean_pop = mean(pop),\n" -" sd_pop = sd(pop),\n" -" mean_gdp_billion = mean(gdp_billion),\n" -" sd_gdp_billion = sd(gdp_billion))\n" -"\n" -"## updating only if certain condition is fullfilled\n" -"# for life expectations above 40 years, the gpd to be expected in the future is scaled\n" -"gdp_future_bycontinents_byyear_high_lifeExp <- gapminder %>%\n" -" mutate(gdp_futureExpectation = ifelse(lifeExp > 40, gdpPercap * 1.5, gdpPercap)) %>%\n" -" group_by(continent, year) %>%\n" -" summarize(mean_gdpPercap = mean(gdpPercap),\n" -" mean_gdpPercap_expected = mean(gdp_futureExpectation))\n" -"~~~" -# header #: r-novice-gapminder/_episodes/13-dplyr.md:511 +# header msgid "## Combining `dplyr` and `ggplot2`" -msgstr "## Combining `dplyr` and `ggplot2`" - -#: r-novice-gapminder/_episodes/13-dplyr.md:513 -msgid "" -"In the plotting lesson we looked at how to make a multi-panel figure by adding\n" -"a layer of facet panels using `ggplot2`. Here is the code we used (with some\n" -"extra comments):" msgstr "" -"In the plotting lesson we looked at how to make a multi-panel figure by adding\n" -"a layer of facet panels using `ggplot2`. Here is the code we used (with some\n" -"extra comments):" -# code block -#: r-novice-gapminder/_episodes/13-dplyr.md:518 -msgid "" -"~~~\n" -"# Get the start letter of each country\n" -"starts.with <- substr(gapminder$country, start = 1, stop = 1)\n" -"# Filter countries that start with \"A\" or \"Z\"\n" -"az.countries <- gapminder[starts.with %in% c(\"A\", \"Z\"), ]\n" -"# Make the plot\n" -"ggplot(data = az.countries, aes(x = year, y = lifeExp, color = continent)) +\n" -" geom_line() + facet_wrap( ~ country)\n" -"~~~" +#: r-novice-gapminder/_episodes/13-dplyr.md:513 +msgid "In the plotting lesson we looked at how to make a multi-panel figure by adding\n" +"a layer of facet panels using `ggplot2`. Here is the code we used (with some\n" +"extra comments):" msgstr "" -"~~~\n" + +#: r-novice-gapminder/_episodes/13-dplyr.md:518 +# code block +msgid "~~~\n" "# Get the start letter of each country\n" "starts.with <- substr(gapminder$country, start = 1, stop = 1)\n" "# Filter countries that start with \"A\" or \"Z\"\n" @@ -17967,14 +11444,14 @@ msgstr "" "ggplot(data = az.countries, aes(x = year, y = lifeExp, color = continent)) +\n" " geom_line() + facet_wrap( ~ country)\n" "~~~" +msgstr "" #: r-novice-gapminder/_episodes/13-dplyr.md:529 msgid "\"plot" -msgstr "\"plot" +msgstr "" #: r-novice-gapminder/_episodes/13-dplyr.md:531 -msgid "" -"This code makes the right plot but it also creates some variables (`starts.with`\n" +msgid "This code makes the right plot but it also creates some variables (`starts.with`\n" "and `az.countries`) that we might not have any other uses for. Just as we used\n" "`%>%` to pipe data along a chain of `dplyr` functions we can use it to pass data\n" "to `ggplot()`. Because `%>%` replaces the first argument in a function we don't\n" @@ -17982,18 +11459,10 @@ msgid "" "`dplyr` and `ggplot2` functions we can make the same figure without creating any\n" "new variables or modifying the data." msgstr "" -"This code makes the right plot but it also creates some variables (`starts.with`\n" -"and `az.countries`) that we might not have any other uses for. Just as we used\n" -"`%>%` to pipe data along a chain of `dplyr` functions we can use it to pass data\n" -"to `ggplot()`. Because `%>%` replaces the first argument in a function we don't\n" -"need to specify the `data =` argument in the `ggplot()` function. By combining\n" -"`dplyr` and `ggplot2` functions we can make the same figure without creating any\n" -"new variables or modifying the data." -# code block #: r-novice-gapminder/_episodes/13-dplyr.md:540 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "gapminder %>%\n" " # Get the start letter of each country\n" " mutate(startsWith = substr(country, start = 1, stop = 1)) %>%\n" @@ -18005,60 +11474,35 @@ msgid "" " facet_wrap( ~ country)\n" "~~~" msgstr "" -"~~~\n" -"gapminder %>%\n" -" # Get the start letter of each country\n" -" mutate(startsWith = substr(country, start = 1, stop = 1)) %>%\n" -" # Filter countries that start with \"A\" or \"Z\"\n" -" filter(startsWith %in% c(\"A\", \"Z\")) %>%\n" -" # Make the plot\n" -" ggplot(aes(x = year, y = lifeExp, color = continent)) +\n" -" geom_line() +\n" -" facet_wrap( ~ country)\n" -"~~~" #: r-novice-gapminder/_episodes/13-dplyr.md:553 msgid "\"plot" -msgstr "\"plot" +msgstr "" #: r-novice-gapminder/_episodes/13-dplyr.md:555 -msgid "" -"Using `dplyr` functions also helps us simplify things, for example we could\n" +msgid "Using `dplyr` functions also helps us simplify things, for example we could\n" "combine the first two steps:" msgstr "" -"Using `dplyr` functions also helps us simplify things, for example we could\n" -"combine the first two steps:" -# code block #: r-novice-gapminder/_episodes/13-dplyr.md:559 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "gapminder %>%\n" " # Filter countries that start with \"A\" or \"Z\"\n" -"\tfilter(substr(country, start = 1, stop = 1) %in% c(\"A\", \"Z\")) %>%\n" -"\t# Make the plot\n" -"\tggplot(aes(x = year, y = lifeExp, color = continent)) +\n" -"\tgeom_line() +\n" -"\tfacet_wrap( ~ country)\n" +" filter(substr(country, start = 1, stop = 1) %in% c(\"A\", \"Z\")) %>%\n" +" # Make the plot\n" +" ggplot(aes(x = year, y = lifeExp, color = continent)) +\n" +" geom_line() +\n" +" facet_wrap( ~ country)\n" "~~~" msgstr "" -"~~~\n" -"gapminder %>%\n" -" # Filter countries that start with \"A\" or \"Z\"\n" -"\tfilter(substr(country, start = 1, stop = 1) %in% c(\"A\", \"Z\")) %>%\n" -"\t# Make the plot\n" -"\tggplot(aes(x = year, y = lifeExp, color = continent)) +\n" -"\tgeom_line() +\n" -"\tfacet_wrap( ~ country)\n" -"~~~" #: r-novice-gapminder/_episodes/13-dplyr.md:570 msgid "\"plot" -msgstr "\"plot" +msgstr "" #: r-novice-gapminder/_episodes/13-dplyr.md:573 -msgid "" -">\n" +msgid ">\n" "> Calculate the average life expectancy in 2002 of 2 randomly selected countries\n" "> for each continent. Then arrange the continent names in reverse order.\n" "> **Hint:** Use the `dplyr` functions `arrange()` and `sample_n()`, they have\n" @@ -18076,56 +11520,38 @@ msgid "" "> >~~~\n" "> >{: .language-r}" msgstr "" -">\n" -"> Calculate the average life expectancy in 2002 of 2 randomly selected countries\n" -"> for each continent. Then arrange the continent names in reverse order.\n" -"> **Hint:** Use the `dplyr` functions `arrange()` and `sample_n()`, they have\n" -"> similar syntax to other dplyr functions.\n" -">\n" -"> > ## Solution to Advanced Challenge\n" -"> >\n" -"> >~~~\n" -"> >lifeExp_2countries_bycontinents <- gapminder %>%\n" -"> > filter(year==2002) %>%\n" -"> > group_by(continent) %>%\n" -"> > sample_n(2) %>%\n" -"> > summarize(mean_lifeExp=mean(lifeExp)) %>%\n" -"> > arrange(desc(mean_lifeExp))\n" -"> >~~~\n" -"> >{: .language-r}" -# header #: r-novice-gapminder/_episodes/13-dplyr.md:593 #: r-novice-gapminder/_episodes/14-tidyr.md:645 +# header msgid "## Other great resources" -msgstr "## Other great resources" +msgstr "" -# unordered list #: r-novice-gapminder/_episodes/13-dplyr.md:595 +# unordered list msgid "* [R for Data Science](http://r4ds.had.co.nz/)" -msgstr "* [R for Data Science](http://r4ds.had.co.nz/)" +msgstr "" -# unordered list #: r-novice-gapminder/_episodes/13-dplyr.md:596 #: r-novice-gapminder/_episodes/14-tidyr.md:648 +# unordered list msgid "* [Data Wrangling Cheat sheet](https://www.rstudio.com/wp-content/uploads/2015/02/data-wrangling-cheatsheet.pdf)" -msgstr "* [Data Wrangling Cheat sheet](https://www.rstudio.com/wp-content/uploads/2015/02/data-wrangling-cheatsheet.pdf)" +msgstr "" -# unordered list #: r-novice-gapminder/_episodes/13-dplyr.md:597 +# unordered list msgid "* [Introduction to dplyr](https://cran.rstudio.com/web/packages/dplyr/vignettes/introduction.html)" -msgstr "* [Introduction to dplyr](https://cran.rstudio.com/web/packages/dplyr/vignettes/introduction.html)" +msgstr "" -# unordered list #: r-novice-gapminder/_episodes/13-dplyr.md:598 #: r-novice-gapminder/_episodes/14-tidyr.md:650 +# unordered list msgid "* [Data wrangling with R and RStudio](https://www.rstudio.com/resources/webinars/data-wrangling-with-r-and-rstudio/)" -msgstr "* [Data wrangling with R and RStudio](https://www.rstudio.com/resources/webinars/data-wrangling-with-r-and-rstudio/)" +msgstr "" -# Front Matter #: r-novice-gapminder/_episodes/14-tidyr.md:1 -msgid "" -"---\n" +# Front Matter +msgid "---\n" "# Please do not edit this file directly; it is auto generated.\n" "# Instead, please edit 14-tidyr.md in _episodes_rmd/\n" "title: Dataframe Manipulation with tidyr\n" @@ -18142,52 +11568,29 @@ msgid "" "source: Rmd\n" "---" msgstr "" -"---\n" -"# Please do not edit this file directly; it is auto generated.\n" -"# Instead, please edit 14-tidyr.md in _episodes_rmd/\n" -"title: Dataframe Manipulation with tidyr\n" -"teaching: 30\n" -"exercises: 15\n" -"questions:\n" -"- \"How can I change the format of dataframes?\"\n" -"objectives:\n" -"- \"To be understand the concepts of 'long' and 'wide' data formats and be able to convert between them with `tidyr`.\"\n" -"keypoints:\n" -"- \"Use the `tidyr` package to change the layout of dataframes.\"\n" -"- \"Use `gather()` to go from wide to long format.\"\n" -"- \"Use `spread()` to go from long to wide format.\"\n" -"source: Rmd\n" -"---" #: r-novice-gapminder/_episodes/14-tidyr.md:20 -msgid "" -"Researchers often want to manipulate their data from the 'wide' to the 'long'\n" +msgid "Researchers often want to manipulate their data from the 'wide' to the 'long'\n" "format, or vice-versa. The 'long' format is where:" msgstr "" -"Researchers often want to manipulate their data from the 'wide' to the 'long'\n" -"format, or vice-versa. The 'long' format is where:" -# unordered list #: r-novice-gapminder/_episodes/14-tidyr.md:23 +# unordered list msgid " - each column is a variable" -msgstr " - each column is a variable" +msgstr "" -# unordered list #: r-novice-gapminder/_episodes/14-tidyr.md:24 +# unordered list msgid " - each row is an observation" -msgstr " - each row is an observation" +msgstr "" #: r-novice-gapminder/_episodes/14-tidyr.md:26 -msgid "" -"In the 'long' format, you usually have 1 column for the observed variable and\n" +msgid "In the 'long' format, you usually have 1 column for the observed variable and\n" "the other columns are ID variables." msgstr "" -"In the 'long' format, you usually have 1 column for the observed variable and\n" -"the other columns are ID variables." #: r-novice-gapminder/_episodes/14-tidyr.md:30 -msgid "" -"For the 'wide' format each row is often a site/subject/patient and you have\n" +msgid "For the 'wide' format each row is often a site/subject/patient and you have\n" "multiple observation variables containing the same type of data. These can be\n" "either repeated observations over time, or observation of multiple variables (or\n" "a mix of both). You may find data input may be simpler or some other\n" @@ -18195,84 +11598,57 @@ msgid "" "been designed assuming you have 'long' format data. This tutorial will help you\n" "efficiently transform your data regardless of original format." msgstr "" -"For the 'wide' format each row is often a site/subject/patient and you have\n" -"multiple observation variables containing the same type of data. These can be\n" -"either repeated observations over time, or observation of multiple variables (or\n" -"a mix of both). You may find data input may be simpler or some other\n" -"applications may prefer the 'wide' format. However, many of `R`'s functions have\n" -"been designed assuming you have 'long' format data. This tutorial will help you\n" -"efficiently transform your data regardless of original format." #: r-novice-gapminder/_episodes/14-tidyr.md:38 msgid "![](../fig/14-tidyr-fig1.png)" -msgstr "![](../fig/14-tidyr-fig1.png)" +msgstr "" #: r-novice-gapminder/_episodes/14-tidyr.md:40 -msgid "" -"These data formats mainly affect readability. For humans, the wide format is\n" +msgid "These data formats mainly affect readability. For humans, the wide format is\n" "often more intuitive since we can often see more of the data on the screen due\n" "to its shape. However, the long format is more machine readable and is closer\n" "to the formatting of databases. The ID variables in our dataframes are similar to\n" "the fields in a database and observed variables are like the database values." msgstr "" -"These data formats mainly affect readability. For humans, the wide format is\n" -"often more intuitive since we can often see more of the data on the screen due\n" -"to its shape. However, the long format is more machine readable and is closer\n" -"to the formatting of databases. The ID variables in our dataframes are similar to\n" -"the fields in a database and observed variables are like the database values." -# header #: r-novice-gapminder/_episodes/14-tidyr.md:46 +# header msgid "## Getting started" -msgstr "## Getting started" +msgstr "" #: r-novice-gapminder/_episodes/14-tidyr.md:48 -msgid "" -"First install the packages if you haven't already done so (you probably\n" +msgid "First install the packages if you haven't already done so (you probably\n" "installed dplyr in the previous lesson):" msgstr "" -"First install the packages if you haven't already done so (you probably\n" -"installed dplyr in the previous lesson):" -# code block #: r-novice-gapminder/_episodes/14-tidyr.md:52 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "#install.packages(\"tidyr\")\n" "#install.packages(\"dplyr\")\n" "~~~" msgstr "" -"~~~\n" -"#install.packages(\"tidyr\")\n" -"#install.packages(\"dplyr\")\n" -"~~~" #: r-novice-gapminder/_episodes/14-tidyr.md:58 msgid "Load the packages" -msgstr "Load the packages" +msgstr "" -# code block #: r-novice-gapminder/_episodes/14-tidyr.md:61 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "library(\"tidyr\")\n" "library(\"dplyr\")\n" "~~~" msgstr "" -"~~~\n" -"library(\"tidyr\")\n" -"library(\"dplyr\")\n" -"~~~" #: r-novice-gapminder/_episodes/14-tidyr.md:67 msgid "First, lets look at the structure of our original gapminder dataframe:" -msgstr "First, lets look at the structure of our original gapminder dataframe:" +msgstr "" -# code block #: r-novice-gapminder/_episodes/14-tidyr.md:77 -msgid "" -"~~~\n" -"'data.frame':\t1704 obs. of 6 variables:\n" +# code block +msgid "~~~\n" +"'data.frame': 1704 obs. of 6 variables:\n" " $ country : chr \"Afghanistan\" \"Afghanistan\" \"Afghanistan\" \"Afghanistan\" ...\n" " $ year : int 1952 1957 1962 1967 1972 1977 1982 1987 1992 1997 ...\n" " $ pop : num 8425333 9240934 10267083 11537966 13079460 ...\n" @@ -18281,19 +11657,9 @@ msgid "" " $ gdpPercap: num 779 821 853 836 740 ...\n" "~~~" msgstr "" -"~~~\n" -"'data.frame':\t1704 obs. of 6 variables:\n" -" $ country : chr \"Afghanistan\" \"Afghanistan\" \"Afghanistan\" \"Afghanistan\" ...\n" -" $ year : int 1952 1957 1962 1967 1972 1977 1982 1987 1992 1997 ...\n" -" $ pop : num 8425333 9240934 10267083 11537966 13079460 ...\n" -" $ continent: chr \"Asia\" \"Asia\" \"Asia\" \"Asia\" ...\n" -" $ lifeExp : num 28.8 30.3 32 34 36.1 ...\n" -" $ gdpPercap: num 779 821 853 836 740 ...\n" -"~~~" #: r-novice-gapminder/_episodes/14-tidyr.md:89 -msgid "" -">\n" +msgid ">\n" "> Is gapminder a purely long, purely wide, or some intermediate format?\n" ">\n" ">\n" @@ -18303,19 +11669,9 @@ msgid "" "> > purely long since it had multiple observation variables\n" "> > (`pop`,`lifeExp`,`gdpPercap`)." msgstr "" -">\n" -"> Is gapminder a purely long, purely wide, or some intermediate format?\n" -">\n" -">\n" -"> > ## Solution to Challenge 1\n" -"> >\n" -"> > The original gapminder data.frame is in an intermediate format. It is not\n" -"> > purely long since it had multiple observation variables\n" -"> > (`pop`,`lifeExp`,`gdpPercap`)." #: r-novice-gapminder/_episodes/14-tidyr.md:102 -msgid "" -"Sometimes, as with the gapminder dataset, we have multiple types of observed\n" +msgid "Sometimes, as with the gapminder dataset, we have multiple types of observed\n" "data. It is somewhere in between the purely 'long' and 'wide' data formats. We\n" "have 3 \"ID variables\" (`continent`, `country`, `year`) and 3 \"Observation\n" "variables\" (`pop`,`lifeExp`,`gdpPercap`). I usually prefer my data in this\n" @@ -18324,18 +11680,9 @@ msgid "" "few operations that would need us to stretch out this dataframe any longer\n" "(i.e. 4 ID variables and 1 Observation variable)." msgstr "" -"Sometimes, as with the gapminder dataset, we have multiple types of observed\n" -"data. It is somewhere in between the purely 'long' and 'wide' data formats. We\n" -"have 3 \"ID variables\" (`continent`, `country`, `year`) and 3 \"Observation\n" -"variables\" (`pop`,`lifeExp`,`gdpPercap`). I usually prefer my data in this\n" -"intermediate format in most cases despite not having ALL observations in 1\n" -"column given that all 3 observation variables have different units. There are\n" -"few operations that would need us to stretch out this dataframe any longer\n" -"(i.e. 4 ID variables and 1 Observation variable)." #: r-novice-gapminder/_episodes/14-tidyr.md:111 -msgid "" -"While using many of the functions in R, which are often vector based, you\n" +msgid "While using many of the functions in R, which are often vector based, you\n" "usually do not want to do mathematical operations on values with different\n" "units. For example, using the purely long format, a single mean for all of the\n" "values of population, life expectancy, and GDP would not be meaningful since it\n" @@ -18344,67 +11691,45 @@ msgid "" "we change the structure of the dataframe. **Note:** Some plotting functions in\n" "R actually work better in the wide format data." msgstr "" -"While using many of the functions in R, which are often vector based, you\n" -"usually do not want to do mathematical operations on values with different\n" -"units. For example, using the purely long format, a single mean for all of the\n" -"values of population, life expectancy, and GDP would not be meaningful since it\n" -"would return the mean of values with 3 incompatible units. The solution is that\n" -"we first manipulate the data either by grouping (see the lesson on `dplyr`), or\n" -"we change the structure of the dataframe. **Note:** Some plotting functions in\n" -"R actually work better in the wide format data." -# header #: r-novice-gapminder/_episodes/14-tidyr.md:120 +# header msgid "## From wide to long format with gather()" -msgstr "## From wide to long format with gather()" +msgstr "" #: r-novice-gapminder/_episodes/14-tidyr.md:122 -msgid "" -"Until now, we've been using the nicely formatted original gapminder dataset, but\n" +msgid "Until now, we've been using the nicely formatted original gapminder dataset, but\n" "'real' data (i.e. our own research data) will never be so well organized. Here\n" "let's start with the wide format version of the gapminder dataset." msgstr "" -"Until now, we've been using the nicely formatted original gapminder dataset, but\n" -"'real' data (i.e. our own research data) will never be so well organized. Here\n" -"let's start with the wide format version of the gapminder dataset." -# blockquote, which can be cascaded #: r-novice-gapminder/_episodes/14-tidyr.md:126 +# blockquote, which can be cascaded msgid "> Download the wide version of the gapminder data from [here](https://raw.githubusercontent.com/swcarpentry/r-novice-gapminder/gh-pages/_episodes_rmd/data/gapminder_wide.csv)" -msgstr "> Download the wide version of the gapminder data from [here](https://raw.githubusercontent.com/swcarpentry/r-novice-gapminder/gh-pages/_episodes_rmd/data/gapminder_wide.csv)" +msgstr "" #: r-novice-gapminder/_episodes/14-tidyr.md:127 msgid "and save it in your data folder." -msgstr "and save it in your data folder." +msgstr "" #: r-novice-gapminder/_episodes/14-tidyr.md:129 -msgid "" -"We'll load the data file and look at it. Note: we don't want our continent and\n" +msgid "We'll load the data file and look at it. Note: we don't want our continent and\n" "country columns to be factors, so we use the stringsAsFactors argument for\n" "`read.csv()` to disable that." msgstr "" -"We'll load the data file and look at it. Note: we don't want our continent and\n" -"country columns to be factors, so we use the stringsAsFactors argument for\n" -"`read.csv()` to disable that." -# code block #: r-novice-gapminder/_episodes/14-tidyr.md:134 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "gap_wide <- read.csv(\"data/gapminder_wide.csv\", stringsAsFactors = FALSE)\n" "str(gap_wide)\n" "~~~" msgstr "" -"~~~\n" -"gap_wide <- read.csv(\"data/gapminder_wide.csv\", stringsAsFactors = FALSE)\n" -"str(gap_wide)\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/14-tidyr.md:142 -msgid "" -"~~~\n" -"'data.frame':\t142 obs. of 38 variables:\n" +# code block +msgid "~~~\n" +"'data.frame': 142 obs. of 38 variables:\n" " $ continent : chr \"Africa\" \"Africa\" \"Africa\" \"Africa\" ...\n" " $ country : chr \"Algeria\" \"Angola\" \"Benin\" \"Botswana\" ...\n" " $ gdpPercap_1952: num 2449 3521 1063 851 543 ...\n" @@ -18445,115 +11770,50 @@ msgid "" " $ pop_2007 : int 33333216 12420476 8078314 1639131 14326203 8390505 17696293 4369038 10238807 710960 ...\n" "~~~" msgstr "" -"~~~\n" -"'data.frame':\t142 obs. of 38 variables:\n" -" $ continent : chr \"Africa\" \"Africa\" \"Africa\" \"Africa\" ...\n" -" $ country : chr \"Algeria\" \"Angola\" \"Benin\" \"Botswana\" ...\n" -" $ gdpPercap_1952: num 2449 3521 1063 851 543 ...\n" -" $ gdpPercap_1957: num 3014 3828 960 918 617 ...\n" -" $ gdpPercap_1962: num 2551 4269 949 984 723 ...\n" -" $ gdpPercap_1967: num 3247 5523 1036 1215 795 ...\n" -" $ gdpPercap_1972: num 4183 5473 1086 2264 855 ...\n" -" $ gdpPercap_1977: num 4910 3009 1029 3215 743 ...\n" -" $ gdpPercap_1982: num 5745 2757 1278 4551 807 ...\n" -" $ gdpPercap_1987: num 5681 2430 1226 6206 912 ...\n" -" $ gdpPercap_1992: num 5023 2628 1191 7954 932 ...\n" -" $ gdpPercap_1997: num 4797 2277 1233 8647 946 ...\n" -" $ gdpPercap_2002: num 5288 2773 1373 11004 1038 ...\n" -" $ gdpPercap_2007: num 6223 4797 1441 12570 1217 ...\n" -" $ lifeExp_1952 : num 43.1 30 38.2 47.6 32 ...\n" -" $ lifeExp_1957 : num 45.7 32 40.4 49.6 34.9 ...\n" -" $ lifeExp_1962 : num 48.3 34 42.6 51.5 37.8 ...\n" -" $ lifeExp_1967 : num 51.4 36 44.9 53.3 40.7 ...\n" -" $ lifeExp_1972 : num 54.5 37.9 47 56 43.6 ...\n" -" $ lifeExp_1977 : num 58 39.5 49.2 59.3 46.1 ...\n" -" $ lifeExp_1982 : num 61.4 39.9 50.9 61.5 48.1 ...\n" -" $ lifeExp_1987 : num 65.8 39.9 52.3 63.6 49.6 ...\n" -" $ lifeExp_1992 : num 67.7 40.6 53.9 62.7 50.3 ...\n" -" $ lifeExp_1997 : num 69.2 41 54.8 52.6 50.3 ...\n" -" $ lifeExp_2002 : num 71 41 54.4 46.6 50.6 ...\n" -" $ lifeExp_2007 : num 72.3 42.7 56.7 50.7 52.3 ...\n" -" $ pop_1952 : num 9279525 4232095 1738315 442308 4469979 ...\n" -" $ pop_1957 : num 10270856 4561361 1925173 474639 4713416 ...\n" -" $ pop_1962 : num 11000948 4826015 2151895 512764 4919632 ...\n" -" $ pop_1967 : num 12760499 5247469 2427334 553541 5127935 ...\n" -" $ pop_1972 : num 14760787 5894858 2761407 619351 5433886 ...\n" -" $ pop_1977 : num 17152804 6162675 3168267 781472 5889574 ...\n" -" $ pop_1982 : num 20033753 7016384 3641603 970347 6634596 ...\n" -" $ pop_1987 : num 23254956 7874230 4243788 1151184 7586551 ...\n" -" $ pop_1992 : num 26298373 8735988 4981671 1342614 8878303 ...\n" -" $ pop_1997 : num 29072015 9875024 6066080 1536536 10352843 ...\n" -" $ pop_2002 : int 31287142 10866106 7026113 1630347 12251209 7021078 15929988 4048013 8835739 614382 ...\n" -" $ pop_2007 : int 33333216 12420476 8078314 1639131 14326203 8390505 17696293 4369038 10238807 710960 ...\n" -"~~~" #: r-novice-gapminder/_episodes/14-tidyr.md:185 msgid "![](../fig/14-tidyr-fig2.png)" -msgstr "![](../fig/14-tidyr-fig2.png)" +msgstr "" #: r-novice-gapminder/_episodes/14-tidyr.md:187 -msgid "" -"The first step towards getting our nice intermediate data format is to first\n" +msgid "The first step towards getting our nice intermediate data format is to first\n" "convert from the wide to the long format. The `tidyr` function `gather()` will\n" "'gather' your observation variables into a single variable." msgstr "" -"The first step towards getting our nice intermediate data format is to first\n" -"convert from the wide to the long format. The `tidyr` function `gather()` will\n" -"'gather' your observation variables into a single variable." #: r-novice-gapminder/_episodes/14-tidyr.md:191 msgid "![](../fig/14-tidyr-fig3.png)" -msgstr "![](../fig/14-tidyr-fig3.png)" +msgstr "" -# code block #: r-novice-gapminder/_episodes/14-tidyr.md:194 -msgid "" -"~~~\n" -"gap_long <- gap_wide %>%\n" -" gather(obstype_year, obs_values, starts_with('pop'),\n" -" starts_with('lifeExp'), starts_with('gdpPercap'))\n" -"str(gap_long)\n" -"~~~" -msgstr "" -"~~~\n" +# code block +msgid "~~~\n" "gap_long <- gap_wide %>%\n" " gather(obstype_year, obs_values, starts_with('pop'),\n" " starts_with('lifeExp'), starts_with('gdpPercap'))\n" -"str(gap_long)\n" -"~~~" - -# code block -#: r-novice-gapminder/_episodes/14-tidyr.md:204 -msgid "" -"~~~\n" -"'data.frame':\t5112 obs. of 4 variables:\n" -" $ continent : chr \"Africa\" \"Africa\" \"Africa\" \"Africa\" ...\n" -" $ country : chr \"Algeria\" \"Angola\" \"Benin\" \"Botswana\" ...\n" -" $ obstype_year: chr \"pop_1952\" \"pop_1952\" \"pop_1952\" \"pop_1952\" ...\n" -" $ obs_values : num 9279525 4232095 1738315 442308 4469979 ...\n" +"str(gap_long)\n" "~~~" msgstr "" -"~~~\n" -"'data.frame':\t5112 obs. of 4 variables:\n" + +#: r-novice-gapminder/_episodes/14-tidyr.md:204 +# code block +msgid "~~~\n" +"'data.frame': 5112 obs. of 4 variables:\n" " $ continent : chr \"Africa\" \"Africa\" \"Africa\" \"Africa\" ...\n" " $ country : chr \"Algeria\" \"Angola\" \"Benin\" \"Botswana\" ...\n" " $ obstype_year: chr \"pop_1952\" \"pop_1952\" \"pop_1952\" \"pop_1952\" ...\n" " $ obs_values : num 9279525 4232095 1738315 442308 4469979 ...\n" "~~~" +msgstr "" #: r-novice-gapminder/_episodes/14-tidyr.md:213 -msgid "" -"Here we have used piping syntax which is similar to what we were doing in the\n" +msgid "Here we have used piping syntax which is similar to what we were doing in the\n" "previous lesson with dplyr. In fact, these are compatible and you can use a mix\n" "of tidyr and dplyr functions by piping them together" msgstr "" -"Here we have used piping syntax which is similar to what we were doing in the\n" -"previous lesson with dplyr. In fact, these are compatible and you can use a mix\n" -"of tidyr and dplyr functions by piping them together" #: r-novice-gapminder/_episodes/14-tidyr.md:217 -msgid "" -"Inside `gather()` we first name the new column for the new ID variable\n" +msgid "Inside `gather()` we first name the new column for the new ID variable\n" "(`obstype_year`), the name for the new amalgamated observation variable\n" "(`obs_value`), then the names of the old observation variable. We could have\n" "typed out all the observation variables, but as in the `select()` function (see\n" @@ -18562,87 +11822,52 @@ msgid "" "syntax of using the `-` symbol to identify which variables are not to be\n" "gathered (i.e. ID variables)" msgstr "" -"Inside `gather()` we first name the new column for the new ID variable\n" -"(`obstype_year`), the name for the new amalgamated observation variable\n" -"(`obs_value`), then the names of the old observation variable. We could have\n" -"typed out all the observation variables, but as in the `select()` function (see\n" -"`dplyr` lesson), we can use the `starts_with()` argument to select all variables\n" -"that starts with the desired character string. Gather also allows the alternative\n" -"syntax of using the `-` symbol to identify which variables are not to be\n" -"gathered (i.e. ID variables)" #: r-novice-gapminder/_episodes/14-tidyr.md:226 msgid "![](../fig/14-tidyr-fig4.png)" -msgstr "![](../fig/14-tidyr-fig4.png)" +msgstr "" -# code block #: r-novice-gapminder/_episodes/14-tidyr.md:229 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "gap_long <- gap_wide %>% gather(obstype_year,obs_values,-continent,-country)\n" "str(gap_long)\n" "~~~" msgstr "" -"~~~\n" -"gap_long <- gap_wide %>% gather(obstype_year,obs_values,-continent,-country)\n" -"str(gap_long)\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/14-tidyr.md:237 -msgid "" -"~~~\n" -"'data.frame':\t5112 obs. of 4 variables:\n" +# code block +msgid "~~~\n" +"'data.frame': 5112 obs. of 4 variables:\n" " $ continent : chr \"Africa\" \"Africa\" \"Africa\" \"Africa\" ...\n" " $ country : chr \"Algeria\" \"Angola\" \"Benin\" \"Botswana\" ...\n" " $ obstype_year: chr \"gdpPercap_1952\" \"gdpPercap_1952\" \"gdpPercap_1952\" \"gdpPercap_1952\" ...\n" " $ obs_values : num 2449 3521 1063 851 543 ...\n" "~~~" msgstr "" -"~~~\n" -"'data.frame':\t5112 obs. of 4 variables:\n" -" $ continent : chr \"Africa\" \"Africa\" \"Africa\" \"Africa\" ...\n" -" $ country : chr \"Algeria\" \"Angola\" \"Benin\" \"Botswana\" ...\n" -" $ obstype_year: chr \"gdpPercap_1952\" \"gdpPercap_1952\" \"gdpPercap_1952\" \"gdpPercap_1952\" ...\n" -" $ obs_values : num 2449 3521 1063 851 543 ...\n" -"~~~" #: r-novice-gapminder/_episodes/14-tidyr.md:246 -msgid "" -"That may seem trivial with this particular dataframe, but sometimes you have 1\n" +msgid "That may seem trivial with this particular dataframe, but sometimes you have 1\n" "ID variable and 40 Observation variables with irregular variables names. The\n" "flexibility is a huge time saver!" msgstr "" -"That may seem trivial with this particular dataframe, but sometimes you have 1\n" -"ID variable and 40 Observation variables with irregular variables names. The\n" -"flexibility is a huge time saver!" #: r-novice-gapminder/_episodes/14-tidyr.md:251 -msgid "" -"Now `obstype_year` actually contains 2 pieces of information, the observation\n" +msgid "Now `obstype_year` actually contains 2 pieces of information, the observation\n" "type (`pop`,`lifeExp`, or `gdpPercap`) and the `year`. We can use the\n" "`separate()` function to split the character strings into multiple variables" msgstr "" -"Now `obstype_year` actually contains 2 pieces of information, the observation\n" -"type (`pop`,`lifeExp`, or `gdpPercap`) and the `year`. We can use the\n" -"`separate()` function to split the character strings into multiple variables" -# code block #: r-novice-gapminder/_episodes/14-tidyr.md:256 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "gap_long <- gap_long %>% separate(obstype_year,into=c('obs_type','year'),sep=\"_\")\n" "gap_long$year <- as.integer(gap_long$year)\n" "~~~" msgstr "" -"~~~\n" -"gap_long <- gap_long %>% separate(obstype_year,into=c('obs_type','year'),sep=\"_\")\n" -"gap_long$year <- as.integer(gap_long$year)\n" -"~~~" #: r-novice-gapminder/_episodes/14-tidyr.md:264 -msgid "" -">\n" +msgid ">\n" "> Using `gap_long`, calculate the mean life expectancy, population, and gdpPercap for each continent.\n" ">**Hint:** use the `group_by()` and `summarize()` functions we learned in the `dplyr` lesson\n" ">\n" @@ -18679,133 +11904,65 @@ msgid "" "> >~~~\n" "> >{: .output}" msgstr "" -">\n" -"> Using `gap_long`, calculate the mean life expectancy, population, and gdpPercap for each continent.\n" -">**Hint:** use the `group_by()` and `summarize()` functions we learned in the `dplyr` lesson\n" -">\n" -"> > ## Solution to Challenge 2\n" -"> >\n" -"> >~~~\n" -"> >gap_long %>% group_by(continent,obs_type) %>%\n" -"> > summarize(means=mean(obs_values))\n" -"> >~~~\n" -"> >{: .language-r}\n" -"> >\n" -"> >\n" -"> >\n" -"> >~~~\n" -"> ># A tibble: 15 x 3\n" -"> ># Groups: continent [?]\n" -"> > continent obs_type means\n" -"> > \n" -"> > 1 Africa gdpPercap 2194. \n" -"> > 2 Africa lifeExp 48.9\n" -"> > 3 Africa pop 9916003. \n" -"> > 4 Americas gdpPercap 7136. \n" -"> > 5 Americas lifeExp 64.7\n" -"> > 6 Americas pop 24504795. \n" -"> > 7 Asia gdpPercap 7902. \n" -"> > 8 Asia lifeExp 60.1\n" -"> > 9 Asia pop 77038722. \n" -"> >10 Europe gdpPercap 14469. \n" -"> >11 Europe lifeExp 71.9\n" -"> >12 Europe pop 17169765. \n" -"> >13 Oceania gdpPercap 18622. \n" -"> >14 Oceania lifeExp 74.3\n" -"> >15 Oceania pop 8874672. \n" -"> >~~~\n" -"> >{: .output}" -# header #: r-novice-gapminder/_episodes/14-tidyr.md:303 +# header msgid "## From long to intermediate format with spread()" -msgstr "## From long to intermediate format with spread()" +msgstr "" #: r-novice-gapminder/_episodes/14-tidyr.md:305 -msgid "" -"It is always good to check work. So, let's use the opposite of `gather()` to\n" +msgid "It is always good to check work. So, let's use the opposite of `gather()` to\n" "spread our observation variables back out with the aptly named `spread()`. We\n" "can then spread our `gap_long()` to the original intermediate format or the\n" "widest format. Let's start with the intermediate format." msgstr "" -"It is always good to check work. So, let's use the opposite of `gather()` to\n" -"spread our observation variables back out with the aptly named `spread()`. We\n" -"can then spread our `gap_long()` to the original intermediate format or the\n" -"widest format. Let's start with the intermediate format." -# code block #: r-novice-gapminder/_episodes/14-tidyr.md:311 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "gap_normal <- gap_long %>% spread(obs_type,obs_values)\n" "dim(gap_normal)\n" "~~~" msgstr "" -"~~~\n" -"gap_normal <- gap_long %>% spread(obs_type,obs_values)\n" -"dim(gap_normal)\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/14-tidyr.md:340 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "names(gap_normal)\n" "~~~" msgstr "" -"~~~\n" -"names(gap_normal)\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/14-tidyr.md:347 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "[1] \"continent\" \"country\" \"year\" \"gdpPercap\" \"lifeExp\" \"pop\" \n" "~~~" msgstr "" -"~~~\n" -"[1] \"continent\" \"country\" \"year\" \"gdpPercap\" \"lifeExp\" \"pop\" \n" -"~~~" -# code block #: r-novice-gapminder/_episodes/14-tidyr.md:354 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "names(gapminder)\n" "~~~" msgstr "" -"~~~\n" -"names(gapminder)\n" -"~~~" #: r-novice-gapminder/_episodes/14-tidyr.md:366 -msgid "" -"Now we've got an intermediate dataframe `gap_normal` with the same dimensions as\n" +msgid "Now we've got an intermediate dataframe `gap_normal` with the same dimensions as\n" "the original `gapminder`, but the order of the variables is different. Let's fix\n" "that before checking if they are `all.equal()`." msgstr "" -"Now we've got an intermediate dataframe `gap_normal` with the same dimensions as\n" -"the original `gapminder`, but the order of the variables is different. Let's fix\n" -"that before checking if they are `all.equal()`." -# code block #: r-novice-gapminder/_episodes/14-tidyr.md:371 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "gap_normal <- gap_normal[,names(gapminder)]\n" "all.equal(gap_normal,gapminder)\n" "~~~" msgstr "" -"~~~\n" -"gap_normal <- gap_normal[,names(gapminder)]\n" -"all.equal(gap_normal,gapminder)\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/14-tidyr.md:379 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "[1] \"Component \\\"country\\\": 1704 string mismatches\" \n" "[2] \"Component \\\"pop\\\": Mean relative difference: 1.634504\" \n" "[3] \"Component \\\"continent\\\": 1212 string mismatches\" \n" @@ -18813,29 +11970,17 @@ msgid "" "[5] \"Component \\\"gdpPercap\\\": Mean relative difference: 1.162302\"\n" "~~~" msgstr "" -"~~~\n" -"[1] \"Component \\\"country\\\": 1704 string mismatches\" \n" -"[2] \"Component \\\"pop\\\": Mean relative difference: 1.634504\" \n" -"[3] \"Component \\\"continent\\\": 1212 string mismatches\" \n" -"[4] \"Component \\\"lifeExp\\\": Mean relative difference: 0.203822\" \n" -"[5] \"Component \\\"gdpPercap\\\": Mean relative difference: 1.162302\"\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/14-tidyr.md:390 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "head(gap_normal)\n" "~~~" msgstr "" -"~~~\n" -"head(gap_normal)\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/14-tidyr.md:397 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" " country year pop continent lifeExp gdpPercap\n" "1 Algeria 1952 9279525 Africa 43.077 2449.008\n" "2 Algeria 1957 10270856 Africa 45.685 3013.976\n" @@ -18845,202 +11990,94 @@ msgid "" "6 Algeria 1977 17152804 Africa 58.014 4910.417\n" "~~~" msgstr "" -"~~~\n" -" country year pop continent lifeExp gdpPercap\n" -"1 Algeria 1952 9279525 Africa 43.077 2449.008\n" -"2 Algeria 1957 10270856 Africa 45.685 3013.976\n" -"3 Algeria 1962 11000948 Africa 48.303 2550.817\n" -"4 Algeria 1967 12760499 Africa 51.407 3246.992\n" -"5 Algeria 1972 14760787 Africa 54.518 4182.664\n" -"6 Algeria 1977 17152804 Africa 58.014 4910.417\n" -"~~~" #: r-novice-gapminder/_episodes/14-tidyr.md:428 -msgid "" -"We're almost there, the original was sorted by `country`, `continent`, then\n" +msgid "We're almost there, the original was sorted by `country`, `continent`, then\n" "`year`." msgstr "" -"We're almost there, the original was sorted by `country`, `continent`, then\n" -"`year`." -# code block #: r-novice-gapminder/_episodes/14-tidyr.md:432 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "gap_normal <- gap_normal %>% arrange(country,continent,year)\n" "all.equal(gap_normal,gapminder)\n" "~~~" msgstr "" -"~~~\n" -"gap_normal <- gap_normal %>% arrange(country,continent,year)\n" -"all.equal(gap_normal,gapminder)\n" -"~~~" #: r-novice-gapminder/_episodes/14-tidyr.md:445 -msgid "" -"That's great! We've gone from the longest format back to the intermediate and we\n" +msgid "That's great! We've gone from the longest format back to the intermediate and we\n" "didn't introduce any errors in our code." msgstr "" -"That's great! We've gone from the longest format back to the intermediate and we\n" -"didn't introduce any errors in our code." #: r-novice-gapminder/_episodes/14-tidyr.md:448 -msgid "" -"Now lets convert the long all the way back to the wide. In the wide format, we\n" +msgid "Now lets convert the long all the way back to the wide. In the wide format, we\n" "will keep country and continent as ID variables and spread the observations\n" "across the 3 metrics (`pop`,`lifeExp`,`gdpPercap`) and time (`year`). First we\n" "need to create appropriate labels for all our new variables (time*metric\n" "combinations) and we also need to unify our ID variables to simplify the process\n" "of defining `gap_wide`" msgstr "" -"Now lets convert the long all the way back to the wide. In the wide format, we\n" -"will keep country and continent as ID variables and spread the observations\n" -"across the 3 metrics (`pop`,`lifeExp`,`gdpPercap`) and time (`year`). First we\n" -"need to create appropriate labels for all our new variables (time*metric\n" -"combinations) and we also need to unify our ID variables to simplify the process\n" -"of defining `gap_wide`" -# code block #: r-novice-gapminder/_episodes/14-tidyr.md:456 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "gap_temp <- gap_long %>% unite(var_ID,continent,country,sep=\"_\")\n" "str(gap_temp)\n" "~~~" msgstr "" -"~~~\n" -"gap_temp <- gap_long %>% unite(var_ID,continent,country,sep=\"_\")\n" -"str(gap_temp)\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/14-tidyr.md:464 -msgid "" -"~~~\n" -"'data.frame':\t5112 obs. of 4 variables:\n" +# code block +msgid "~~~\n" +"'data.frame': 5112 obs. of 4 variables:\n" " $ var_ID : chr \"Africa_Algeria\" \"Africa_Angola\" \"Africa_Benin\" \"Africa_Botswana\" ...\n" " $ obs_type : chr \"gdpPercap\" \"gdpPercap\" \"gdpPercap\" \"gdpPercap\" ...\n" " $ year : int 1952 1952 1952 1952 1952 1952 1952 1952 1952 1952 ...\n" " $ obs_values: num 2449 3521 1063 851 543 ...\n" "~~~" msgstr "" -"~~~\n" -"'data.frame':\t5112 obs. of 4 variables:\n" -" $ var_ID : chr \"Africa_Algeria\" \"Africa_Angola\" \"Africa_Benin\" \"Africa_Botswana\" ...\n" -" $ obs_type : chr \"gdpPercap\" \"gdpPercap\" \"gdpPercap\" \"gdpPercap\" ...\n" -" $ year : int 1952 1952 1952 1952 1952 1952 1952 1952 1952 1952 ...\n" -" $ obs_values: num 2449 3521 1063 851 543 ...\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/14-tidyr.md:475 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "gap_temp <- gap_long %>%\n" " unite(ID_var,continent,country,sep=\"_\") %>%\n" " unite(var_names,obs_type,year,sep=\"_\")\n" "str(gap_temp)\n" "~~~" msgstr "" -"~~~\n" -"gap_temp <- gap_long %>%\n" -" unite(ID_var,continent,country,sep=\"_\") %>%\n" -" unite(var_names,obs_type,year,sep=\"_\")\n" -"str(gap_temp)\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/14-tidyr.md:485 -msgid "" -"~~~\n" -"'data.frame':\t5112 obs. of 3 variables:\n" -" $ ID_var : chr \"Africa_Algeria\" \"Africa_Angola\" \"Africa_Benin\" \"Africa_Botswana\" ...\n" -" $ var_names : chr \"gdpPercap_1952\" \"gdpPercap_1952\" \"gdpPercap_1952\" \"gdpPercap_1952\" ...\n" -" $ obs_values: num 2449 3521 1063 851 543 ...\n" -"~~~" -msgstr "" -"~~~\n" -"'data.frame':\t5112 obs. of 3 variables:\n" +# code block +msgid "~~~\n" +"'data.frame': 5112 obs. of 3 variables:\n" " $ ID_var : chr \"Africa_Algeria\" \"Africa_Angola\" \"Africa_Benin\" \"Africa_Botswana\" ...\n" " $ var_names : chr \"gdpPercap_1952\" \"gdpPercap_1952\" \"gdpPercap_1952\" \"gdpPercap_1952\" ...\n" " $ obs_values: num 2449 3521 1063 851 543 ...\n" "~~~" - -#: r-novice-gapminder/_episodes/14-tidyr.md:493 -msgid "" -"Using `unite()` we now have a single ID variable which is a combination of\n" -"`continent`,`country`,and we have defined variable names. We're now ready to\n" -"pipe in `spread()`" -msgstr "" -"Using `unite()` we now have a single ID variable which is a combination of\n" -"`continent`,`country`,and we have defined variable names. We're now ready to\n" -"pipe in `spread()`" - -# code block -#: r-novice-gapminder/_episodes/14-tidyr.md:498 -msgid "" -"~~~\n" -"gap_wide_new <- gap_long %>%\n" -" unite(ID_var,continent,country,sep=\"_\") %>%\n" -" unite(var_names,obs_type,year,sep=\"_\") %>%\n" -" spread(var_names,obs_values)\n" -"str(gap_wide_new)\n" -"~~~" -msgstr "" -"~~~\n" -"gap_wide_new <- gap_long %>%\n" -" unite(ID_var,continent,country,sep=\"_\") %>%\n" -" unite(var_names,obs_type,year,sep=\"_\") %>%\n" -" spread(var_names,obs_values)\n" -"str(gap_wide_new)\n" -"~~~" - -# code block -#: r-novice-gapminder/_episodes/14-tidyr.md:509 -msgid "" -"~~~\n" -"'data.frame':\t142 obs. of 37 variables:\n" -" $ ID_var : chr \"Africa_Algeria\" \"Africa_Angola\" \"Africa_Benin\" \"Africa_Botswana\" ...\n" -" $ gdpPercap_1952: num 2449 3521 1063 851 543 ...\n" -" $ gdpPercap_1957: num 3014 3828 960 918 617 ...\n" -" $ gdpPercap_1962: num 2551 4269 949 984 723 ...\n" -" $ gdpPercap_1967: num 3247 5523 1036 1215 795 ...\n" -" $ gdpPercap_1972: num 4183 5473 1086 2264 855 ...\n" -" $ gdpPercap_1977: num 4910 3009 1029 3215 743 ...\n" -" $ gdpPercap_1982: num 5745 2757 1278 4551 807 ...\n" -" $ gdpPercap_1987: num 5681 2430 1226 6206 912 ...\n" -" $ gdpPercap_1992: num 5023 2628 1191 7954 932 ...\n" -" $ gdpPercap_1997: num 4797 2277 1233 8647 946 ...\n" -" $ gdpPercap_2002: num 5288 2773 1373 11004 1038 ...\n" -" $ gdpPercap_2007: num 6223 4797 1441 12570 1217 ...\n" -" $ lifeExp_1952 : num 43.1 30 38.2 47.6 32 ...\n" -" $ lifeExp_1957 : num 45.7 32 40.4 49.6 34.9 ...\n" -" $ lifeExp_1962 : num 48.3 34 42.6 51.5 37.8 ...\n" -" $ lifeExp_1967 : num 51.4 36 44.9 53.3 40.7 ...\n" -" $ lifeExp_1972 : num 54.5 37.9 47 56 43.6 ...\n" -" $ lifeExp_1977 : num 58 39.5 49.2 59.3 46.1 ...\n" -" $ lifeExp_1982 : num 61.4 39.9 50.9 61.5 48.1 ...\n" -" $ lifeExp_1987 : num 65.8 39.9 52.3 63.6 49.6 ...\n" -" $ lifeExp_1992 : num 67.7 40.6 53.9 62.7 50.3 ...\n" -" $ lifeExp_1997 : num 69.2 41 54.8 52.6 50.3 ...\n" -" $ lifeExp_2002 : num 71 41 54.4 46.6 50.6 ...\n" -" $ lifeExp_2007 : num 72.3 42.7 56.7 50.7 52.3 ...\n" -" $ pop_1952 : num 9279525 4232095 1738315 442308 4469979 ...\n" -" $ pop_1957 : num 10270856 4561361 1925173 474639 4713416 ...\n" -" $ pop_1962 : num 11000948 4826015 2151895 512764 4919632 ...\n" -" $ pop_1967 : num 12760499 5247469 2427334 553541 5127935 ...\n" -" $ pop_1972 : num 14760787 5894858 2761407 619351 5433886 ...\n" -" $ pop_1977 : num 17152804 6162675 3168267 781472 5889574 ...\n" -" $ pop_1982 : num 20033753 7016384 3641603 970347 6634596 ...\n" -" $ pop_1987 : num 23254956 7874230 4243788 1151184 7586551 ...\n" -" $ pop_1992 : num 26298373 8735988 4981671 1342614 8878303 ...\n" -" $ pop_1997 : num 29072015 9875024 6066080 1536536 10352843 ...\n" -" $ pop_2002 : num 31287142 10866106 7026113 1630347 12251209 ...\n" -" $ pop_2007 : num 33333216 12420476 8078314 1639131 14326203 ...\n" -"~~~" msgstr "" -"~~~\n" -"'data.frame':\t142 obs. of 37 variables:\n" + +#: r-novice-gapminder/_episodes/14-tidyr.md:493 +msgid "Using `unite()` we now have a single ID variable which is a combination of\n" +"`continent`,`country`,and we have defined variable names. We're now ready to\n" +"pipe in `spread()`" +msgstr "" + +#: r-novice-gapminder/_episodes/14-tidyr.md:498 +# code block +msgid "~~~\n" +"gap_wide_new <- gap_long %>%\n" +" unite(ID_var,continent,country,sep=\"_\") %>%\n" +" unite(var_names,obs_type,year,sep=\"_\") %>%\n" +" spread(var_names,obs_values)\n" +"str(gap_wide_new)\n" +"~~~" +msgstr "" + +#: r-novice-gapminder/_episodes/14-tidyr.md:509 +# code block +msgid "~~~\n" +"'data.frame': 142 obs. of 37 variables:\n" " $ ID_var : chr \"Africa_Algeria\" \"Africa_Angola\" \"Africa_Benin\" \"Africa_Botswana\" ...\n" " $ gdpPercap_1952: num 2449 3521 1063 851 543 ...\n" " $ gdpPercap_1957: num 3014 3828 960 918 617 ...\n" @@ -19079,10 +12116,10 @@ msgstr "" " $ pop_2002 : num 31287142 10866106 7026113 1630347 12251209 ...\n" " $ pop_2007 : num 33333216 12420476 8078314 1639131 14326203 ...\n" "~~~" +msgstr "" #: r-novice-gapminder/_episodes/14-tidyr.md:552 -msgid "" -">\n" +msgid ">\n" "> Take this 1 step further and create a `gap_ludicrously_wide` format data by spreading over countries, year and the 3 metrics?\n" ">**Hint** this new dataframe should only have 5 rows.\n" ">\n" @@ -19095,31 +12132,15 @@ msgid "" "> >~~~\n" "> >{: .language-r}" msgstr "" -">\n" -"> Take this 1 step further and create a `gap_ludicrously_wide` format data by spreading over countries, year and the 3 metrics?\n" -">**Hint** this new dataframe should only have 5 rows.\n" -">\n" -"> > ## Solution to Challenge 3\n" -"> >\n" -"> >~~~\n" -"> >gap_ludicrously_wide <- gap_long %>%\n" -"> > unite(var_names,obs_type,year,country,sep=\"_\") %>%\n" -"> > spread(var_names,obs_values)\n" -"> >~~~\n" -"> >{: .language-r}" #: r-novice-gapminder/_episodes/14-tidyr.md:567 -msgid "" -"Now we have a great 'wide' format dataframe, but the `ID_var` could be more\n" +msgid "Now we have a great 'wide' format dataframe, but the `ID_var` could be more\n" "usable, let's separate it into 2 variables with `separate()`" msgstr "" -"Now we have a great 'wide' format dataframe, but the `ID_var` could be more\n" -"usable, let's separate it into 2 variables with `separate()`" -# code block #: r-novice-gapminder/_episodes/14-tidyr.md:572 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "gap_wide_betterID <- separate(gap_wide_new,ID_var,c(\"continent\",\"country\"),sep=\"_\")\n" "gap_wide_betterID <- gap_long %>%\n" " unite(ID_var, continent,country,sep=\"_\") %>%\n" @@ -19129,21 +12150,11 @@ msgid "" "str(gap_wide_betterID)\n" "~~~" msgstr "" -"~~~\n" -"gap_wide_betterID <- separate(gap_wide_new,ID_var,c(\"continent\",\"country\"),sep=\"_\")\n" -"gap_wide_betterID <- gap_long %>%\n" -" unite(ID_var, continent,country,sep=\"_\") %>%\n" -" unite(var_names, obs_type,year,sep=\"_\") %>%\n" -" spread(var_names, obs_values) %>%\n" -" separate(ID_var, c(\"continent\",\"country\"),sep=\"_\")\n" -"str(gap_wide_betterID)\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/14-tidyr.md:585 -msgid "" -"~~~\n" -"'data.frame':\t142 obs. of 38 variables:\n" +# code block +msgid "~~~\n" +"'data.frame': 142 obs. of 38 variables:\n" " $ continent : chr \"Africa\" \"Africa\" \"Africa\" \"Africa\" ...\n" " $ country : chr \"Algeria\" \"Angola\" \"Benin\" \"Botswana\" ...\n" " $ gdpPercap_1952: num 2449 3521 1063 851 543 ...\n" @@ -19184,77 +12195,31 @@ msgid "" " $ pop_2007 : num 33333216 12420476 8078314 1639131 14326203 ...\n" "~~~" msgstr "" -"~~~\n" -"'data.frame':\t142 obs. of 38 variables:\n" -" $ continent : chr \"Africa\" \"Africa\" \"Africa\" \"Africa\" ...\n" -" $ country : chr \"Algeria\" \"Angola\" \"Benin\" \"Botswana\" ...\n" -" $ gdpPercap_1952: num 2449 3521 1063 851 543 ...\n" -" $ gdpPercap_1957: num 3014 3828 960 918 617 ...\n" -" $ gdpPercap_1962: num 2551 4269 949 984 723 ...\n" -" $ gdpPercap_1967: num 3247 5523 1036 1215 795 ...\n" -" $ gdpPercap_1972: num 4183 5473 1086 2264 855 ...\n" -" $ gdpPercap_1977: num 4910 3009 1029 3215 743 ...\n" -" $ gdpPercap_1982: num 5745 2757 1278 4551 807 ...\n" -" $ gdpPercap_1987: num 5681 2430 1226 6206 912 ...\n" -" $ gdpPercap_1992: num 5023 2628 1191 7954 932 ...\n" -" $ gdpPercap_1997: num 4797 2277 1233 8647 946 ...\n" -" $ gdpPercap_2002: num 5288 2773 1373 11004 1038 ...\n" -" $ gdpPercap_2007: num 6223 4797 1441 12570 1217 ...\n" -" $ lifeExp_1952 : num 43.1 30 38.2 47.6 32 ...\n" -" $ lifeExp_1957 : num 45.7 32 40.4 49.6 34.9 ...\n" -" $ lifeExp_1962 : num 48.3 34 42.6 51.5 37.8 ...\n" -" $ lifeExp_1967 : num 51.4 36 44.9 53.3 40.7 ...\n" -" $ lifeExp_1972 : num 54.5 37.9 47 56 43.6 ...\n" -" $ lifeExp_1977 : num 58 39.5 49.2 59.3 46.1 ...\n" -" $ lifeExp_1982 : num 61.4 39.9 50.9 61.5 48.1 ...\n" -" $ lifeExp_1987 : num 65.8 39.9 52.3 63.6 49.6 ...\n" -" $ lifeExp_1992 : num 67.7 40.6 53.9 62.7 50.3 ...\n" -" $ lifeExp_1997 : num 69.2 41 54.8 52.6 50.3 ...\n" -" $ lifeExp_2002 : num 71 41 54.4 46.6 50.6 ...\n" -" $ lifeExp_2007 : num 72.3 42.7 56.7 50.7 52.3 ...\n" -" $ pop_1952 : num 9279525 4232095 1738315 442308 4469979 ...\n" -" $ pop_1957 : num 10270856 4561361 1925173 474639 4713416 ...\n" -" $ pop_1962 : num 11000948 4826015 2151895 512764 4919632 ...\n" -" $ pop_1967 : num 12760499 5247469 2427334 553541 5127935 ...\n" -" $ pop_1972 : num 14760787 5894858 2761407 619351 5433886 ...\n" -" $ pop_1977 : num 17152804 6162675 3168267 781472 5889574 ...\n" -" $ pop_1982 : num 20033753 7016384 3641603 970347 6634596 ...\n" -" $ pop_1987 : num 23254956 7874230 4243788 1151184 7586551 ...\n" -" $ pop_1992 : num 26298373 8735988 4981671 1342614 8878303 ...\n" -" $ pop_1997 : num 29072015 9875024 6066080 1536536 10352843 ...\n" -" $ pop_2002 : num 31287142 10866106 7026113 1630347 12251209 ...\n" -" $ pop_2007 : num 33333216 12420476 8078314 1639131 14326203 ...\n" -"~~~" -# code block #: r-novice-gapminder/_episodes/14-tidyr.md:630 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "all.equal(gap_wide, gap_wide_betterID)\n" "~~~" msgstr "" -"~~~\n" -"all.equal(gap_wide, gap_wide_betterID)\n" -"~~~" #: r-novice-gapminder/_episodes/14-tidyr.md:642 msgid "There and back again!" -msgstr "There and back again!" +msgstr "" -# unordered list #: r-novice-gapminder/_episodes/14-tidyr.md:647 +# unordered list msgid "* [R for Data Science](http://r4ds.had.co.nz/index.html)" -msgstr "* [R for Data Science](http://r4ds.had.co.nz/index.html)" +msgstr "" -# unordered list #: r-novice-gapminder/_episodes/14-tidyr.md:649 +# unordered list msgid "* [Introduction to tidyr](https://cran.r-project.org/web/packages/tidyr/vignettes/tidy-data.html)" -msgstr "* [Introduction to tidyr](https://cran.r-project.org/web/packages/tidyr/vignettes/tidy-data.html)" +msgstr "" -# Front Matter #: r-novice-gapminder/_episodes/15-knitr-markdown.md:1 -msgid "" -"---\n" +# Front Matter +msgid "---\n" "# Please do not edit this file directly; it is auto generated.\n" "# Instead, please edit 15-knitr-markdown.md in _episodes_rmd/\n" "title: Producing Reports With knitr\n" @@ -19276,162 +12241,100 @@ msgid "" "source: Rmd\n" "---" msgstr "" -"---\n" -"# Please do not edit this file directly; it is auto generated.\n" -"# Instead, please edit 15-knitr-markdown.md in _episodes_rmd/\n" -"title: Producing Reports With knitr\n" -"teaching: 60\n" -"exercises: 15\n" -"questions:\n" -"- \"How can I integrate software and reports?\"\n" -"objectives:\n" -"- Value of reproducible reports\n" -"- Basics of Markdown\n" -"- R code chunks\n" -"- Chunk options\n" -"- Inline R code\n" -"- Other output formats\n" -"keypoints:\n" -"- \"Mix reporting written in R Markdown with software written in R.\"\n" -"- \"Specify chunk options to control formatting.\"\n" -"- \"Use `knitr` to convert these documents into PDF and other formats.\"\n" -"source: Rmd\n" -"---" -# header #: r-novice-gapminder/_episodes/15-knitr-markdown.md:26 +# header msgid "## Data analysis reports" -msgstr "## Data analysis reports" +msgstr "" #: r-novice-gapminder/_episodes/15-knitr-markdown.md:28 -msgid "" -"Data analysts tend to write a lot of reports, describing their\n" +msgid "Data analysts tend to write a lot of reports, describing their\n" "analyses and results, for their collaborators or to document their\n" "work for future reference." msgstr "" -"Data analysts tend to write a lot of reports, describing their\n" -"analyses and results, for their collaborators or to document their\n" -"work for future reference." #: r-novice-gapminder/_episodes/15-knitr-markdown.md:32 -msgid "" -"When I was first starting out, I'd write an R script with all of my\n" +msgid "When I was first starting out, I'd write an R script with all of my\n" "work, and would just send an email to my collaborator, describing the\n" "results and attaching various graphs. In discussing the results, there\n" "would often be confusion about which graph was which." msgstr "" -"When I was first starting out, I'd write an R script with all of my\n" -"work, and would just send an email to my collaborator, describing the\n" -"results and attaching various graphs. In discussing the results, there\n" -"would often be confusion about which graph was which." #: r-novice-gapminder/_episodes/15-knitr-markdown.md:37 -msgid "" -"I moved to writing formal reports, with Word or LaTeX, but I'd have to\n" +msgid "I moved to writing formal reports, with Word or LaTeX, but I'd have to\n" "spend a lot of time getting the figures to look right. Mostly, the\n" "concern is about page breaks." msgstr "" -"I moved to writing formal reports, with Word or LaTeX, but I'd have to\n" -"spend a lot of time getting the figures to look right. Mostly, the\n" -"concern is about page breaks." #: r-novice-gapminder/_episodes/15-knitr-markdown.md:41 -msgid "" -"Everything is easier now that I create a web page (as an html\n" +msgid "Everything is easier now that I create a web page (as an html\n" "file). It can be one long stream, so I can use tall figures that\n" "wouldn't ordinary fit on one page. Scrolling is your friend." msgstr "" -"Everything is easier now that I create a web page (as an html\n" -"file). It can be one long stream, so I can use tall figures that\n" -"wouldn't ordinary fit on one page. Scrolling is your friend." -# header #: r-novice-gapminder/_episodes/15-knitr-markdown.md:46 +# header msgid "## Literate programming" -msgstr "## Literate programming" +msgstr "" #: r-novice-gapminder/_episodes/15-knitr-markdown.md:48 -msgid "" -"Ideally, such analysis reports are _reproducible_ documents: If an\n" +msgid "Ideally, such analysis reports are _reproducible_ documents: If an\n" "error is discovered, or if some additional subjects are added to the\n" "data, you can just re-compile the report and get the new or corrected\n" "results (versus having to reconstruct figures, paste them into\n" "a Word document, and further hand-edit various detailed results)." msgstr "" -"Ideally, such analysis reports are _reproducible_ documents: If an\n" -"error is discovered, or if some additional subjects are added to the\n" -"data, you can just re-compile the report and get the new or corrected\n" -"results (versus having to reconstruct figures, paste them into\n" -"a Word document, and further hand-edit various detailed results)." #: r-novice-gapminder/_episodes/15-knitr-markdown.md:54 -msgid "" -"The key tool for R is [knitr](http://yihui.name/knitr/), which allows\n" +msgid "The key tool for R is [knitr](http://yihui.name/knitr/), which allows\n" "you to create a document that is a mixture of text and some chunks of\n" "code. When the document is processed by knitr, chunks of R code will\n" "be executed, and graphs or other results inserted." msgstr "" -"The key tool for R is [knitr](http://yihui.name/knitr/), which allows\n" -"you to create a document that is a mixture of text and some chunks of\n" -"code. When the document is processed by knitr, chunks of R code will\n" -"be executed, and graphs or other results inserted." #: r-novice-gapminder/_episodes/15-knitr-markdown.md:59 msgid "This sort of idea has been called \"literate programming\"." -msgstr "This sort of idea has been called \"literate programming\"." +msgstr "" #: r-novice-gapminder/_episodes/15-knitr-markdown.md:61 -msgid "" -"knitr allows you to mix basically any sort of text with any sort of\n" +msgid "knitr allows you to mix basically any sort of text with any sort of\n" "code, but we recommend that you use R Markdown, which mixes Markdown\n" "with R. Markdown is a light-weight mark-up language for creating web\n" "pages." msgstr "" -"knitr allows you to mix basically any sort of text with any sort of\n" -"code, but we recommend that you use R Markdown, which mixes Markdown\n" -"with R. Markdown is a light-weight mark-up language for creating web\n" -"pages." -# header #: r-novice-gapminder/_episodes/15-knitr-markdown.md:67 +# header msgid "## Creating an R Markdown file" -msgstr "## Creating an R Markdown file" +msgstr "" #: r-novice-gapminder/_episodes/15-knitr-markdown.md:69 -msgid "" -"Within R Studio, click File → New File → R Markdown and\n" +msgid "Within R Studio, click File → New File → R Markdown and\n" "you'll get a dialog box like this:" msgstr "" -"Within R Studio, click File → New File → R Markdown and\n" -"you'll get a dialog box like this:" #: r-novice-gapminder/_episodes/15-knitr-markdown.md:72 msgid "![](../fig/New_R_Markdown.png)" -msgstr "![](../fig/New_R_Markdown.png)" +msgstr "" #: r-novice-gapminder/_episodes/15-knitr-markdown.md:74 msgid "You can stick with the default (HTML output), but give it a title." -msgstr "You can stick with the default (HTML output), but give it a title." +msgstr "" -# header #: r-novice-gapminder/_episodes/15-knitr-markdown.md:77 +# header msgid "## Basic components of R Markdown" -msgstr "## Basic components of R Markdown" +msgstr "" #: r-novice-gapminder/_episodes/15-knitr-markdown.md:79 -msgid "" -"The initial chunk of text contains instructions for R: you give the\n" +msgid "The initial chunk of text contains instructions for R: you give the\n" "thing a title, author, and date, and tell it that you're going to want\n" "to produce html output (in other words, a web page)." msgstr "" -"The initial chunk of text contains instructions for R: you give the\n" -"thing a title, author, and date, and tell it that you're going to want\n" -"to produce html output (in other words, a web page)." -# code block #: r-novice-gapminder/_episodes/15-knitr-markdown.md:83 -msgid "" -"```\n" +# code block +msgid "```\n" "---\n" "title: \"Initial R Markdown document\"\n" "author: \"Karl Broman\"\n" @@ -19440,683 +12343,478 @@ msgid "" "---\n" "```" msgstr "" -"```\n" -"---\n" -"title: \"Initial R Markdown document\"\n" -"author: \"Karl Broman\"\n" -"date: \"April 23, 2015\"\n" -"output: html_document\n" -"---\n" -"```" #: r-novice-gapminder/_episodes/15-knitr-markdown.md:92 -msgid "" -"You can delete any of those fields if you don't want them\n" +msgid "You can delete any of those fields if you don't want them\n" "included. The double-quotes aren't strictly _necessary_ in this case.\n" "They're mostly needed if you want to include a colon in the title." msgstr "" -"You can delete any of those fields if you don't want them\n" -"included. The double-quotes aren't strictly _necessary_ in this case.\n" -"They're mostly needed if you want to include a colon in the title." #: r-novice-gapminder/_episodes/15-knitr-markdown.md:96 -msgid "" -"RStudio creates the document with some example text to get you\n" +msgid "RStudio creates the document with some example text to get you\n" "started. Note below that there are chunks like" msgstr "" -"RStudio creates the document with some example text to get you\n" -"started. Note below that there are chunks like" -# inline html #: r-novice-gapminder/_episodes/15-knitr-markdown.md:99 -msgid "" -"
\n"
+# inline html
+msgid "
\n"
 "```{r}\n"
 "summary(cars)\n"
 "```\n"
 "
" msgstr "" -"
\n"
-"```{r}\n"
-"summary(cars)\n"
-"```\n"
-"
" #: r-novice-gapminder/_episodes/15-knitr-markdown.md:105 -msgid "" -"These are chunks of R code that will be executed by knitr and replaced\n" +msgid "These are chunks of R code that will be executed by knitr and replaced\n" "by their results. More on this later." msgstr "" -"These are chunks of R code that will be executed by knitr and replaced\n" -"by their results. More on this later." #: r-novice-gapminder/_episodes/15-knitr-markdown.md:108 -msgid "" -"Also note the web address that's put between angle brackets (`< >`) as\n" +msgid "Also note the web address that's put between angle brackets (`< >`) as\n" "well as the double-asterisks in `**Knit**`. This is\n" "[Markdown](http://daringfireball.net/projects/markdown/syntax)." msgstr "" -"Also note the web address that's put between angle brackets (`< >`) as\n" -"well as the double-asterisks in `**Knit**`. This is\n" -"[Markdown](http://daringfireball.net/projects/markdown/syntax)." -# header #: r-novice-gapminder/_episodes/15-knitr-markdown.md:112 +# header msgid "## Markdown" -msgstr "## Markdown" +msgstr "" #: r-novice-gapminder/_episodes/15-knitr-markdown.md:114 -msgid "" -"Markdown is a system for writing web pages by marking up the text much\n" +msgid "Markdown is a system for writing web pages by marking up the text much\n" "as you would in an email rather than writing html code. The marked-up\n" "text gets _converted_ to html, replacing the marks with the proper\n" "html code." msgstr "" -"Markdown is a system for writing web pages by marking up the text much\n" -"as you would in an email rather than writing html code. The marked-up\n" -"text gets _converted_ to html, replacing the marks with the proper\n" -"html code." #: r-novice-gapminder/_episodes/15-knitr-markdown.md:119 -msgid "" -"For now, let's delete all of the stuff that's there and write a bit of\n" +msgid "For now, let's delete all of the stuff that's there and write a bit of\n" "markdown." msgstr "" -"For now, let's delete all of the stuff that's there and write a bit of\n" -"markdown." #: r-novice-gapminder/_episodes/15-knitr-markdown.md:122 -msgid "" -"You make things **bold** using two asterisks, like this: `**bold**`,\n" +msgid "You make things **bold** using two asterisks, like this: `**bold**`,\n" "and you make things _italics_ by using underscores, like this:\n" "`_italics_`." msgstr "" -"You make things **bold** using two asterisks, like this: `**bold**`,\n" -"and you make things _italics_ by using underscores, like this:\n" -"`_italics_`." #: r-novice-gapminder/_episodes/15-knitr-markdown.md:126 -msgid "" -"You can make a bulleted list by writing a list with hyphens or\n" +msgid "You can make a bulleted list by writing a list with hyphens or\n" "asterisks, like this:" msgstr "" -"You can make a bulleted list by writing a list with hyphens or\n" -"asterisks, like this:" -# code block #: r-novice-gapminder/_episodes/15-knitr-markdown.md:129 -msgid "" -"```\n" +# code block +msgid "```\n" "* bold with double-asterisks\n" "* italics with underscores\n" "* code-type font with backticks\n" "```" msgstr "" -"```\n" -"* bold with double-asterisks\n" -"* italics with underscores\n" -"* code-type font with backticks\n" -"```" #: r-novice-gapminder/_episodes/15-knitr-markdown.md:135 msgid "or like this:" -msgstr "or like this:" +msgstr "" -# code block #: r-novice-gapminder/_episodes/15-knitr-markdown.md:137 -msgid "" -"```\n" +# code block +msgid "```\n" "- bold with double-asterisks\n" "- italics with underscores\n" "- code-type font with backticks\n" "```" msgstr "" -"```\n" -"- bold with double-asterisks\n" -"- italics with underscores\n" -"- code-type font with backticks\n" -"```" #: r-novice-gapminder/_episodes/15-knitr-markdown.md:143 msgid "Each will appear as:" -msgstr "Each will appear as:" +msgstr "" -# unordered list #: r-novice-gapminder/_episodes/15-knitr-markdown.md:145 +# unordered list msgid "- bold with double-asterisks" -msgstr "- bold with double-asterisks" +msgstr "" -# unordered list #: r-novice-gapminder/_episodes/15-knitr-markdown.md:146 +# unordered list msgid "- italics with underscores" -msgstr "- italics with underscores" +msgstr "" -# unordered list #: r-novice-gapminder/_episodes/15-knitr-markdown.md:147 +# unordered list msgid "- code-type font with backticks" -msgstr "- code-type font with backticks" +msgstr "" #: r-novice-gapminder/_episodes/15-knitr-markdown.md:149 msgid "(I prefer hyphens over asterisks, myself.)" -msgstr "(I prefer hyphens over asterisks, myself.)" +msgstr "" #: r-novice-gapminder/_episodes/15-knitr-markdown.md:151 -msgid "" -"You can make a numbered list by just using numbers. You can use the\n" +msgid "You can make a numbered list by just using numbers. You can use the\n" "same number over and over if you want:" msgstr "" -"You can make a numbered list by just using numbers. You can use the\n" -"same number over and over if you want:" -# code block #: r-novice-gapminder/_episodes/15-knitr-markdown.md:154 -msgid "" -"```\n" +# code block +msgid "```\n" "1. bold with double-asterisks\n" "1. italics with underscores\n" "1. code-type font with backticks\n" "```" msgstr "" -"```\n" -"1. bold with double-asterisks\n" -"1. italics with underscores\n" -"1. code-type font with backticks\n" -"```" #: r-novice-gapminder/_episodes/15-knitr-markdown.md:160 msgid "This will appear as:" -msgstr "This will appear as:" +msgstr "" -# ordered list #: r-novice-gapminder/_episodes/15-knitr-markdown.md:162 +# ordered list msgid "1. bold with double-asterisks" -msgstr "1. bold with double-asterisks" +msgstr "" -# ordered list #: r-novice-gapminder/_episodes/15-knitr-markdown.md:163 +# ordered list msgid "1. italics with underscores" -msgstr "1. italics with underscores" +msgstr "" -# ordered list #: r-novice-gapminder/_episodes/15-knitr-markdown.md:164 +# ordered list msgid "1. code-type font with backticks" -msgstr "1. code-type font with backticks" +msgstr "" #: r-novice-gapminder/_episodes/15-knitr-markdown.md:166 -msgid "" -"You can make section headers of different sizes by initiating a line\n" +msgid "You can make section headers of different sizes by initiating a line\n" "with some number of `#` symbols:" msgstr "" -"You can make section headers of different sizes by initiating a line\n" -"with some number of `#` symbols:" -# code block #: r-novice-gapminder/_episodes/15-knitr-markdown.md:169 -msgid "" -"```\n" +# code block +msgid "```\n" "# Title\n" "## Main section\n" "### Sub-section\n" "#### Sub-sub section\n" "```" msgstr "" -"```\n" -"# Title\n" -"## Main section\n" -"### Sub-section\n" -"#### Sub-sub section\n" -"```" #: r-novice-gapminder/_episodes/15-knitr-markdown.md:176 -msgid "" -"You _compile_ the R Markdown document to an html webpage by clicking\n" +msgid "You _compile_ the R Markdown document to an html webpage by clicking\n" "the \"Knit HTML\" in the upper-left. And note the little question mark\n" "next to it; click the question mark and you'll get a \"Markdown Quick\n" "Reference\" (with the Markdown syntax) as well to the RStudio\n" "documentation on R Markdown." msgstr "" -"You _compile_ the R Markdown document to an html webpage by clicking\n" -"the \"Knit HTML\" in the upper-left. And note the little question mark\n" -"next to it; click the question mark and you'll get a \"Markdown Quick\n" -"Reference\" (with the Markdown syntax) as well to the RStudio\n" -"documentation on R Markdown." -# blockquote, which can be cascaded #: r-novice-gapminder/_episodes/15-knitr-markdown.md:182 #: r-novice-gapminder/_episodes/15-knitr-markdown.md:234 #: r-novice-gapminder/_episodes/15-knitr-markdown.md:301 #: r-novice-gapminder/_episodes/15-knitr-markdown.md:329 +# blockquote, which can be cascaded msgid "> ## Challenge" -msgstr "> ## Challenge" +msgstr "" #: r-novice-gapminder/_episodes/15-knitr-markdown.md:183 -msgid "" -">\n" +msgid ">\n" "> Create a new R Markdown document. Delete all of the R code chunks\n" "> and write a bit of Markdown (some sections, some italicized\n" "> text, and an itemized list).\n" ">\n" "> Convert the document to a webpage." msgstr "" -">\n" -"> Create a new R Markdown document. Delete all of the R code chunks\n" -"> and write a bit of Markdown (some sections, some italicized\n" -"> text, and an itemized list).\n" -">\n" -"> Convert the document to a webpage." -# header #: r-novice-gapminder/_episodes/15-knitr-markdown.md:192 +# header msgid "## A bit more Markdown" -msgstr "## A bit more Markdown" +msgstr "" #: r-novice-gapminder/_episodes/15-knitr-markdown.md:194 -msgid "" -"You can make a hyperlink like this:\n" +msgid "You can make a hyperlink like this:\n" "`[text to show](http://the-web-page.com)`." msgstr "" -"You can make a hyperlink like this:\n" -"`[text to show](http://the-web-page.com)`." #: r-novice-gapminder/_episodes/15-knitr-markdown.md:197 msgid "You can include an image file like this: `![caption](http://url/for/file)`" -msgstr "You can include an image file like this: `![caption](http://url/for/file)`" +msgstr "" #: r-novice-gapminder/_episodes/15-knitr-markdown.md:199 -msgid "" -"You can do subscripts (e.g., F~2~) with `F~2` and superscripts (e.g.,\n" +msgid "You can do subscripts (e.g., F~2~) with `F~2` and superscripts (e.g.,\n" "F^2^) with `F^2^`." msgstr "" -"You can do subscripts (e.g., F~2~) with `F~2` and superscripts (e.g.,\n" -"F^2^) with `F^2^`." #: r-novice-gapminder/_episodes/15-knitr-markdown.md:202 -msgid "" -"If you know how to write equations in\n" +msgid "If you know how to write equations in\n" "[LaTeX](http://www.latex-project.org/), you'll be glad to know that\n" "you can use `$ $` and `$$ $$` to insert math equations, like\n" "`$E = mc^2$` and" msgstr "" -"If you know how to write equations in\n" -"[LaTeX](http://www.latex-project.org/), you'll be glad to know that\n" -"you can use `$ $` and `$$ $$` to insert math equations, like\n" -"`$E = mc^2$` and" -# code block #: r-novice-gapminder/_episodes/15-knitr-markdown.md:207 -msgid "" -"```\n" +# code block +msgid "```\n" "$$y = \\mu + \\sum_{i=1}^p \\beta_i x_i + \\epsilon$$\n" "```" msgstr "" -"```\n" -"$$y = \\mu + \\sum_{i=1}^p \\beta_i x_i + \\epsilon$$\n" -"```" -# header #: r-novice-gapminder/_episodes/15-knitr-markdown.md:213 +# header msgid "## R code chunks" -msgstr "## R code chunks" +msgstr "" #: r-novice-gapminder/_episodes/15-knitr-markdown.md:215 -msgid "" -"Markdown is interesting and useful, but the real power comes from\n" +msgid "Markdown is interesting and useful, but the real power comes from\n" "mixing markdown with chunks of R code. This is R Markdown. When\n" "processed, the R code will be executed; if they produce figures, the\n" "figures will be inserted in the final document." msgstr "" -"Markdown is interesting and useful, but the real power comes from\n" -"mixing markdown with chunks of R code. This is R Markdown. When\n" -"processed, the R code will be executed; if they produce figures, the\n" -"figures will be inserted in the final document." #: r-novice-gapminder/_episodes/15-knitr-markdown.md:220 msgid "The main code chunks look like this:" -msgstr "The main code chunks look like this:" +msgstr "" -# inline html #: r-novice-gapminder/_episodes/15-knitr-markdown.md:222 -msgid "" -"
\n"
+# inline html
+msgid "
\n"
 "```{r load_data}\n"
 "gapminder <- read.csv(\"~/Desktop/gapminder.csv\")\n"
 "```\n"
 "
" msgstr "" -"
\n"
-"```{r load_data}\n"
-"gapminder <- read.csv(\"~/Desktop/gapminder.csv\")\n"
-"```\n"
-"
" #: r-novice-gapminder/_episodes/15-knitr-markdown.md:228 -msgid "" -"That is, you place a chunk of R code between ```{r chunk_name}\n" +msgid "That is, you place a chunk of R code between ```{r chunk_name}\n" "and ```. It's a good idea to give each chunk\n" "a name, as they will help you to fix errors and, if any graphs are\n" "produced, the file names are based on the name of the code chunk that\n" "produced them." msgstr "" -"That is, you place a chunk of R code between ```{r chunk_name}\n" -"and ```. It's a good idea to give each chunk\n" -"a name, as they will help you to fix errors and, if any graphs are\n" -"produced, the file names are based on the name of the code chunk that\n" -"produced them." #: r-novice-gapminder/_episodes/15-knitr-markdown.md:235 -msgid "" -">\n" +msgid ">\n" "> Add code chunks to\n" ">\n" "> - Load the ggplot2 package\n" "> - Read the gapminder data\n" "> - Create a plot" msgstr "" -">\n" -"> Add code chunks to\n" -">\n" -"> - Load the ggplot2 package\n" -"> - Read the gapminder data\n" -"> - Create a plot" -# header #: r-novice-gapminder/_episodes/15-knitr-markdown.md:243 +# header msgid "## How things get compiled" -msgstr "## How things get compiled" +msgstr "" #: r-novice-gapminder/_episodes/15-knitr-markdown.md:245 -msgid "" -"When you press the \"Knit HTML\" button, the R Markdown document is\n" +msgid "When you press the \"Knit HTML\" button, the R Markdown document is\n" "processed by [knitr](http://yihui.name/knitr) and a plain Markdown\n" "document is produced (as well as, potentially, a set of figure files): the R code is executed\n" "and replaced by both the input and the output; if figures are\n" "produced, links to those figures are included." msgstr "" -"When you press the \"Knit HTML\" button, the R Markdown document is\n" -"processed by [knitr](http://yihui.name/knitr) and a plain Markdown\n" -"document is produced (as well as, potentially, a set of figure files): the R code is executed\n" -"and replaced by both the input and the output; if figures are\n" -"produced, links to those figures are included." #: r-novice-gapminder/_episodes/15-knitr-markdown.md:251 -msgid "" -"The Markdown and figure documents are then processed by the tool\n" +msgid "The Markdown and figure documents are then processed by the tool\n" "[pandoc](http://pandoc.org/), which converts the Markdown file into an\n" "html file, with the figures embedded." msgstr "" -"The Markdown and figure documents are then processed by the tool\n" -"[pandoc](http://pandoc.org/), which converts the Markdown file into an\n" -"html file, with the figures embedded." #: r-novice-gapminder/_episodes/15-knitr-markdown.md:255 msgid "\"plot" -msgstr "\"plot" +msgstr "" -# header #: r-novice-gapminder/_episodes/15-knitr-markdown.md:260 +# header msgid "## Chunk options" -msgstr "## Chunk options" +msgstr "" #: r-novice-gapminder/_episodes/15-knitr-markdown.md:262 -msgid "" -"There are a variety of options to affect how the code chunks are\n" +msgid "There are a variety of options to affect how the code chunks are\n" "treated." msgstr "" -"There are a variety of options to affect how the code chunks are\n" -"treated." -# unordered list #: r-novice-gapminder/_episodes/15-knitr-markdown.md:265 +# unordered list msgid "- Use `echo=FALSE` to avoid having the code itself shown." -msgstr "- Use `echo=FALSE` to avoid having the code itself shown." +msgstr "" -# unordered list #: r-novice-gapminder/_episodes/15-knitr-markdown.md:266 +# unordered list msgid "- Use `results=\"hide\"` to avoid having any results printed." -msgstr "- Use `results=\"hide\"` to avoid having any results printed." +msgstr "" -# unordered list #: r-novice-gapminder/_episodes/15-knitr-markdown.md:267 +# unordered list msgid "- Use `eval=FALSE` to have the code shown but not evaluated." -msgstr "- Use `eval=FALSE` to have the code shown but not evaluated." +msgstr "" -# unordered list #: r-novice-gapminder/_episodes/15-knitr-markdown.md:268 +# unordered list msgid "- Use `warning=FALSE` and `message=FALSE` to hide any warnings or" -msgstr "- Use `warning=FALSE` and `message=FALSE` to hide any warnings or" +msgstr "" #: r-novice-gapminder/_episodes/15-knitr-markdown.md:269 -msgid "" -" messages produced.\n" +msgid " messages produced.\n" "- Use `fig.height` and `fig.width` to control the size of the figures\n" " produced (in inches)." msgstr "" -" messages produced.\n" -"- Use `fig.height` and `fig.width` to control the size of the figures\n" -" produced (in inches)." #: r-novice-gapminder/_episodes/15-knitr-markdown.md:273 msgid "So you might write:" -msgstr "So you might write:" +msgstr "" -# inline html #: r-novice-gapminder/_episodes/15-knitr-markdown.md:275 -msgid "" -"
\n"
+# inline html
+msgid "
\n"
 "```{r load_libraries, echo=FALSE, message=FALSE}\n"
 "library(\"dplyr\")\n"
 "library(\"ggplot2\")\n"
 "```\n"
 "
" msgstr "" -"
\n"
-"```{r load_libraries, echo=FALSE, message=FALSE}\n"
-"library(\"dplyr\")\n"
-"library(\"ggplot2\")\n"
-"```\n"
-"
" #: r-novice-gapminder/_episodes/15-knitr-markdown.md:282 -msgid "" -"Often there will be particular options that you'll want to use\n" +msgid "Often there will be particular options that you'll want to use\n" "repeatedly; for this, you can set _global_ chunk options, like so:" msgstr "" -"Often there will be particular options that you'll want to use\n" -"repeatedly; for this, you can set _global_ chunk options, like so:" -# inline html #: r-novice-gapminder/_episodes/15-knitr-markdown.md:285 -msgid "" -"
\n"
+# inline html
+msgid "
\n"
 "```{r global_options, echo=FALSE}\n"
 "knitr::opts_chunk$set(fig.path=\"Figs/\", message=FALSE, warning=FALSE,\n"
 "                      echo=FALSE, results=\"hide\", fig.width=11)\n"
 "```\n"
 "
" msgstr "" -"
\n"
-"```{r global_options, echo=FALSE}\n"
-"knitr::opts_chunk$set(fig.path=\"Figs/\", message=FALSE, warning=FALSE,\n"
-"                      echo=FALSE, results=\"hide\", fig.width=11)\n"
-"```\n"
-"
" #: r-novice-gapminder/_episodes/15-knitr-markdown.md:292 -msgid "" -"The `fig.path` option defines where the figures will be saved. The `/`\n" +msgid "The `fig.path` option defines where the figures will be saved. The `/`\n" "here is really important; without it, the figures would be saved in\n" "the standard place but just with names that begin with `Figs`." msgstr "" -"The `fig.path` option defines where the figures will be saved. The `/`\n" -"here is really important; without it, the figures would be saved in\n" -"the standard place but just with names that begin with `Figs`." #: r-novice-gapminder/_episodes/15-knitr-markdown.md:296 -msgid "" -"If you have multiple R Markdown files in a common directory, you might\n" +msgid "If you have multiple R Markdown files in a common directory, you might\n" "want to use `fig.path` to define separate prefixes for the figure file\n" "names, like `fig.path=\"Figs/cleaning-\"` and `fig.path=\"Figs/analysis-\"`." msgstr "" -"If you have multiple R Markdown files in a common directory, you might\n" -"want to use `fig.path` to define separate prefixes for the figure file\n" -"names, like `fig.path=\"Figs/cleaning-\"` and `fig.path=\"Figs/analysis-\"`." #: r-novice-gapminder/_episodes/15-knitr-markdown.md:302 -msgid "" -">\n" +msgid ">\n" "> Use chunk options to control the size of a figure and to hide the\n" "> code." msgstr "" -">\n" -"> Use chunk options to control the size of a figure and to hide the\n" -"> code." -# header #: r-novice-gapminder/_episodes/15-knitr-markdown.md:308 +# header msgid "## Inline R code" -msgstr "## Inline R code" +msgstr "" #: r-novice-gapminder/_episodes/15-knitr-markdown.md:310 -msgid "" -"You can make _every_ number in your report reproducible. Use\n" +msgid "You can make _every_ number in your report reproducible. Use\n" "`r and ` for an in-line code chunk,\n" "like so: `r round(some_value, 2)`. The code will be\n" "executed and replaced with the _value_ of the result." msgstr "" -"You can make _every_ number in your report reproducible. Use\n" -"`r and ` for an in-line code chunk,\n" -"like so: `r round(some_value, 2)`. The code will be\n" -"executed and replaced with the _value_ of the result." #: r-novice-gapminder/_episodes/15-knitr-markdown.md:315 msgid "Don't let these in-line chunks get split across lines." -msgstr "Don't let these in-line chunks get split across lines." +msgstr "" #: r-novice-gapminder/_episodes/15-knitr-markdown.md:317 -msgid "" -"Perhaps precede the paragraph with a larger code chunk that does\n" +msgid "Perhaps precede the paragraph with a larger code chunk that does\n" "calculations and defines things, with `include=FALSE` for that larger\n" "chunk (which is the same as `echo=FALSE` and `results=\"hide\"`)." msgstr "" -"Perhaps precede the paragraph with a larger code chunk that does\n" -"calculations and defines things, with `include=FALSE` for that larger\n" -"chunk (which is the same as `echo=FALSE` and `results=\"hide\"`)." #: r-novice-gapminder/_episodes/15-knitr-markdown.md:321 -msgid "" -"I'm very particular about rounding in such situations. I may want\n" +msgid "I'm very particular about rounding in such situations. I may want\n" "`2.0`, but `round(2.03, 1)` will give just `2`." msgstr "" -"I'm very particular about rounding in such situations. I may want\n" -"`2.0`, but `round(2.03, 1)` will give just `2`." #: r-novice-gapminder/_episodes/15-knitr-markdown.md:324 -msgid "" -"The\n" +msgid "The\n" "[`myround`](https://github.com/kbroman/broman/blob/master/R/myround.R)\n" "function in my [R/broman](https://github.com/kbroman) package handles\n" "this." msgstr "" -"The\n" -"[`myround`](https://github.com/kbroman/broman/blob/master/R/myround.R)\n" -"function in my [R/broman](https://github.com/kbroman) package handles\n" -"this." #: r-novice-gapminder/_episodes/15-knitr-markdown.md:330 -msgid "" -">\n" +msgid ">\n" "> Try out a bit of in-line R code." msgstr "" -">\n" -"> Try out a bit of in-line R code." -# header #: r-novice-gapminder/_episodes/15-knitr-markdown.md:335 +# header msgid "## Other output options" -msgstr "## Other output options" +msgstr "" #: r-novice-gapminder/_episodes/15-knitr-markdown.md:337 -msgid "" -"You can also convert R Markdown to a PDF or a Word document. Click the\n" +msgid "You can also convert R Markdown to a PDF or a Word document. Click the\n" "little triangle next to the \"Knit HTML\" button to get a drop-down\n" "menu. Or you could put `pdf_document` or `word_document` in the header\n" "of the file." msgstr "" -"You can also convert R Markdown to a PDF or a Word document. Click the\n" -"little triangle next to the \"Knit HTML\" button to get a drop-down\n" -"menu. Or you could put `pdf_document` or `word_document` in the header\n" -"of the file." -# blockquote, which can be cascaded #: r-novice-gapminder/_episodes/15-knitr-markdown.md:342 +# blockquote, which can be cascaded msgid "> ## Tip: Creating PDF documents" -msgstr "> ## Tip: Creating PDF documents" +msgstr "" #: r-novice-gapminder/_episodes/15-knitr-markdown.md:343 -msgid "" -">\n" +msgid ">\n" "> Creating .pdf documents may require installation of some extra software. If\n" "> required this is detailed in an error message.\n" ">\n" "> - [TeX installers for Windows](https://miktex.org/2.9/setup).\n" "> - [TeX installers for macOS](https://tug.org/mactex)." msgstr "" -">\n" -"> Creating .pdf documents may require installation of some extra software. If\n" -"> required this is detailed in an error message.\n" -">\n" -"> - [TeX installers for Windows](https://miktex.org/2.9/setup).\n" -"> - [TeX installers for macOS](https://tug.org/mactex)." -# header #: r-novice-gapminder/_episodes/15-knitr-markdown.md:352 +# header msgid "## Resources" -msgstr "## Resources" +msgstr "" -# unordered list #: r-novice-gapminder/_episodes/15-knitr-markdown.md:354 +# unordered list msgid "- [Knitr in a knutshell tutorial](http://kbroman.org/knitr_knutshell)" -msgstr "- [Knitr in a knutshell tutorial](http://kbroman.org/knitr_knutshell)" +msgstr "" -# unordered list #: r-novice-gapminder/_episodes/15-knitr-markdown.md:355 +# unordered list msgid "- [Dynamic Documents with R and knitr](http://www.amazon.com/exec/obidos/ASIN/1482203537/7210-20) (book)" -msgstr "- [Dynamic Documents with R and knitr](http://www.amazon.com/exec/obidos/ASIN/1482203537/7210-20) (book)" +msgstr "" -# unordered list #: r-novice-gapminder/_episodes/15-knitr-markdown.md:356 +# unordered list msgid "- [R Markdown documentation](http://rmarkdown.rstudio.com)" -msgstr "- [R Markdown documentation](http://rmarkdown.rstudio.com)" +msgstr "" -# unordered list #: r-novice-gapminder/_episodes/15-knitr-markdown.md:357 +# unordered list msgid "- [R Markdown cheat sheet](http://www.rstudio.com/wp-content/uploads/2015/02/rmarkdown-cheatsheet.pdf)" -msgstr "- [R Markdown cheat sheet](http://www.rstudio.com/wp-content/uploads/2015/02/rmarkdown-cheatsheet.pdf)" +msgstr "" -# unordered list #: r-novice-gapminder/_episodes/15-knitr-markdown.md:358 +# unordered list msgid "* [Getting started with R Markdown](https://www.rstudio.com/resources/webinars/getting-started-with-r-markdown/)" -msgstr "* [Getting started with R Markdown](https://www.rstudio.com/resources/webinars/getting-started-with-r-markdown/)" +msgstr "" -# unordered list #: r-novice-gapminder/_episodes/15-knitr-markdown.md:359 +# unordered list msgid "* [Reproducible Reporting](https://www.rstudio.com/resources/webinars/reproducible-reporting/)" -msgstr "* [Reproducible Reporting](https://www.rstudio.com/resources/webinars/reproducible-reporting/)" +msgstr "" -# unordered list #: r-novice-gapminder/_episodes/15-knitr-markdown.md:360 +# unordered list msgid "* [The Ecosystem of R Markdown](https://www.rstudio.com/resources/webinars/the-ecosystem-of-r-markdown/)" -msgstr "* [The Ecosystem of R Markdown](https://www.rstudio.com/resources/webinars/the-ecosystem-of-r-markdown/)" +msgstr "" -# unordered list #: r-novice-gapminder/_episodes/15-knitr-markdown.md:361 +# unordered list msgid "* [Introducing Bookdown](https://www.rstudio.com/resources/webinars/introducing-bookdown/)" -msgstr "* [Introducing Bookdown](https://www.rstudio.com/resources/webinars/introducing-bookdown/)" +msgstr "" -# Front Matter #: r-novice-gapminder/_episodes/16-wrap-up.md:1 -msgid "" -"---\n" +# Front Matter +msgid "---\n" "# Please do not edit this file directly; it is auto generated.\n" "# Instead, please edit 16-wrap-up.md in _episodes_rmd/\n" "title: Writing Good Software\n" @@ -20137,44 +12835,23 @@ msgid "" "source: Rmd\n" "---" msgstr "" -"---\n" -"# Please do not edit this file directly; it is auto generated.\n" -"# Instead, please edit 16-wrap-up.md in _episodes_rmd/\n" -"title: Writing Good Software\n" -"teaching: 15\n" -"exercises: 0\n" -"questions:\n" -"- \"How can I write software that other people can use?\"\n" -"objectives:\n" -"- \"Describe best practices for writing R and explain the justification for each.\"\n" -"keypoints:\n" -"- \"Keep your project folder structured, organized and tidy.\"\n" -"- \"Document what and why, not how.\"\n" -"- \"Break programs into short single-purpose functions.\"\n" -"- \"Write re-runnable tests.\"\n" -"- \"Don't repeat yourself.\"\n" -"- \"Don't repeat yourself.\"\n" -"- \"Be consistent in naming, indentation, and other aspects of style.\"\n" -"source: Rmd\n" -"---" -# header #: r-novice-gapminder/_episodes/16-wrap-up.md:22 +# header msgid "## Structure your project folder" -msgstr "## Structure your project folder" +msgstr "" #: r-novice-gapminder/_episodes/16-wrap-up.md:24 msgid "Keep your project folder structured, organized and tidy, by creating subfolders for your code files, manuals, data, binaries, output plots, etc. It can be done completely manually, or with the help of RStudio's `New Project` functionality, or a desginated package, such as `ProjectTemplate`." -msgstr "Keep your project folder structured, organized and tidy, by creating subfolders for your code files, manuals, data, binaries, output plots, etc. It can be done completely manually, or with the help of RStudio's `New Project` functionality, or a desginated package, such as `ProjectTemplate`." +msgstr "" -# blockquote, which can be cascaded #: r-novice-gapminder/_episodes/16-wrap-up.md:26 +# blockquote, which can be cascaded msgid "> ## Tip: ProjectTemplate - a possible solution" -msgstr "> ## Tip: ProjectTemplate - a possible solution" +msgstr "" #: r-novice-gapminder/_episodes/16-wrap-up.md:27 -msgid "" -">\n" +msgid ">\n" "> One way to automate the management of projects is to install the third-party package, `ProjectTemplate`.\n" "> This package will set up an ideal directory structure for project management.\n" "> This is very useful as it enables you to have your analysis pipeline/workflow organised and structured.\n" @@ -20195,52 +12872,26 @@ msgid "" "> For more information on ProjectTemplate and its functionality visit the\n" "> home page [ProjectTemplate](http://projecttemplate.net/index.html)" msgstr "" -">\n" -"> One way to automate the management of projects is to install the third-party package, `ProjectTemplate`.\n" -"> This package will set up an ideal directory structure for project management.\n" -"> This is very useful as it enables you to have your analysis pipeline/workflow organised and structured.\n" -"> Together with the default RStudio project functionality and Git you will be able to keep track of your\n" -"> work as well as be able to share your work with collaborators.\n" -">\n" -"> 1. Install `ProjectTemplate`.\n" -"> 2. Load the library\n" -"> 3. Initialise the project:\n" -">\n" -"> \n" -"> ```r\n" -"> install.packages(\"ProjectTemplate\")\n" -"> library(\"ProjectTemplate\")\n" -"> create.project(\"../my_project\", merge.strategy = \"allow.non.conflict\")\n" -"> ```\n" -">\n" -"> For more information on ProjectTemplate and its functionality visit the\n" -"> home page [ProjectTemplate](http://projecttemplate.net/index.html)" -# header #: r-novice-gapminder/_episodes/16-wrap-up.md:50 +# header msgid "## Make code readable" -msgstr "## Make code readable" +msgstr "" #: r-novice-gapminder/_episodes/16-wrap-up.md:52 -msgid "" -"The most important part of writing code is making it readable and understandable.\n" +msgid "The most important part of writing code is making it readable and understandable.\n" "You want someone else to be able to pick up your code and be able to understand\n" "what it does: more often than not this someone will be you 6 months down the line,\n" "who will otherwise be cursing past-self." msgstr "" -"The most important part of writing code is making it readable and understandable.\n" -"You want someone else to be able to pick up your code and be able to understand\n" -"what it does: more often than not this someone will be you 6 months down the line,\n" -"who will otherwise be cursing past-self." -# header #: r-novice-gapminder/_episodes/16-wrap-up.md:57 +# header msgid "## Documentation: tell us what and why, not how" -msgstr "## Documentation: tell us what and why, not how" +msgstr "" #: r-novice-gapminder/_episodes/16-wrap-up.md:59 -msgid "" -"When you first start out, your comments will often describe what a command does,\n" +msgid "When you first start out, your comments will often describe what a command does,\n" "since you're still learning yourself and it can help to clarify concepts and\n" "remind you later. However, these comments aren't particularly useful later on\n" "when you don't remember what problem your code is trying to solve. Try to also\n" @@ -20248,235 +12899,179 @@ msgid "" "that is. The *how* can come after that: it's an implementation detail you ideally\n" "shouldn't have to worry about." msgstr "" -"When you first start out, your comments will often describe what a command does,\n" -"since you're still learning yourself and it can help to clarify concepts and\n" -"remind you later. However, these comments aren't particularly useful later on\n" -"when you don't remember what problem your code is trying to solve. Try to also\n" -"include comments that tell you *why* you're solving a problem, and *what* problem\n" -"that is. The *how* can come after that: it's an implementation detail you ideally\n" -"shouldn't have to worry about." -# header #: r-novice-gapminder/_episodes/16-wrap-up.md:67 +# header msgid "## Keep your code modular" -msgstr "## Keep your code modular" +msgstr "" #: r-novice-gapminder/_episodes/16-wrap-up.md:69 -msgid "" -"Our recommendation is that you should separate your functions from your analysis\n" +msgid "Our recommendation is that you should separate your functions from your analysis\n" "scripts, and store them in a separate file that you `source` when you open the R\n" "session in your project. This approach is nice because it leaves you with an\n" "uncluttered analysis script, and a repository of useful functions that can be\n" "loaded into any analysis script in your project. It also lets you group related\n" "functions together easily." msgstr "" -"Our recommendation is that you should separate your functions from your analysis\n" -"scripts, and store them in a separate file that you `source` when you open the R\n" -"session in your project. This approach is nice because it leaves you with an\n" -"uncluttered analysis script, and a repository of useful functions that can be\n" -"loaded into any analysis script in your project. It also lets you group related\n" -"functions together easily." -# header #: r-novice-gapminder/_episodes/16-wrap-up.md:76 +# header msgid "## Break down problem into bite size pieces" -msgstr "## Break down problem into bite size pieces" +msgstr "" #: r-novice-gapminder/_episodes/16-wrap-up.md:78 -msgid "" -"When you first start out, problem solving and function writing can be daunting\n" +msgid "When you first start out, problem solving and function writing can be daunting\n" "tasks, and hard to separate from code inexperience. Try to break down your\n" "problem into digestible chunks and worry about the implementation details later:\n" "keep breaking down the problem into smaller and smaller functions until you\n" "reach a point where you can code a solution, and build back up from there." msgstr "" -"When you first start out, problem solving and function writing can be daunting\n" -"tasks, and hard to separate from code inexperience. Try to break down your\n" -"problem into digestible chunks and worry about the implementation details later:\n" -"keep breaking down the problem into smaller and smaller functions until you\n" -"reach a point where you can code a solution, and build back up from there." -# header #: r-novice-gapminder/_episodes/16-wrap-up.md:84 +# header msgid "## Know that your code is doing the right thing" -msgstr "## Know that your code is doing the right thing" +msgstr "" #: r-novice-gapminder/_episodes/16-wrap-up.md:86 msgid "Make sure to test your functions!" -msgstr "Make sure to test your functions!" +msgstr "" -# header #: r-novice-gapminder/_episodes/16-wrap-up.md:88 +# header msgid "## Don't repeat yourself" -msgstr "## Don't repeat yourself" +msgstr "" #: r-novice-gapminder/_episodes/16-wrap-up.md:90 -msgid "" -"Functions enable easy reuse within a project. If you see blocks of similar\n" +msgid "Functions enable easy reuse within a project. If you see blocks of similar\n" "lines of code through your project, those are usually candidates for being\n" "moved into functions." msgstr "" -"Functions enable easy reuse within a project. If you see blocks of similar\n" -"lines of code through your project, those are usually candidates for being\n" -"moved into functions." #: r-novice-gapminder/_episodes/16-wrap-up.md:94 -msgid "" -"If your calculations are performed through a series of functions, then the\n" +msgid "If your calculations are performed through a series of functions, then the\n" "project becomes more modular and easier to change. This is especially the case\n" "for which a particular input always gives a particular output." msgstr "" -"If your calculations are performed through a series of functions, then the\n" -"project becomes more modular and easier to change. This is especially the case\n" -"for which a particular input always gives a particular output." -# header #: r-novice-gapminder/_episodes/16-wrap-up.md:98 +# header msgid "## Remember to be stylish" -msgstr "## Remember to be stylish" +msgstr "" #: r-novice-gapminder/_episodes/16-wrap-up.md:100 msgid "Apply consistent style to your code." -msgstr "Apply consistent style to your code." +msgstr "" -# Front Matter #: r-novice-gapminder/_extras/about.md:1 -msgid "" -"---\n" +# Front Matter +msgid "---\n" "layout: page\n" "title: About\n" "permalink: /about/\n" "---" msgstr "" -"---\n" -"layout: page\n" -"title: About\n" -"permalink: /about/\n" -"---" #: r-novice-gapminder/_extras/about.md:6 msgid "{% include carpentries.html %}" -msgstr "{% include carpentries.html %}" +msgstr "" -# Front Matter #: r-novice-gapminder/_extras/discuss.md:1 -msgid "" -"---\n" +# Front Matter +msgid "---\n" "layout: page\n" "title: Discussion\n" "permalink: /discuss/\n" "---" msgstr "" -"---\n" -"layout: page\n" -"title: Discussion\n" -"permalink: /discuss/\n" -"---" #: r-novice-gapminder/_extras/discuss.md:6 msgid "Please see [our other R lesson][r-gap] for a different presentation of these concepts." -msgstr "Please see [our other R lesson][r-gap] for a different presentation of these concepts." +msgstr "" #: r-novice-gapminder/_extras/discuss.md:8 msgid "[r-gap]: https://swcarpentry.github.io/r-novice-gapminder/" -msgstr "[r-gap]: https://swcarpentry.github.io/r-novice-gapminder/" +msgstr "" -# Front Matter #: r-novice-gapminder/_extras/guide.md:1 -msgid "" -"---\n" +# Front Matter +msgid "---\n" "layout: page\n" "title: \"Instructor Notes\"\n" "permalink: /guide/\n" "---" msgstr "" -"---\n" -"layout: page\n" -"title: \"Instructor Notes\"\n" -"permalink: /guide/\n" -"---" -# header #: r-novice-gapminder/_extras/guide.md:7 +# header msgid "## Timing" -msgstr "## Timing" +msgstr "" #: r-novice-gapminder/_extras/guide.md:9 -msgid "" -"Leave about 30 minutes at the start of each workshop and another 15 mins\n" +msgid "Leave about 30 minutes at the start of each workshop and another 15 mins\n" "at the start of each session for technical difficulties like WiFi and\n" "installing things (even if you asked students to install in advance, longer if\n" "not)." msgstr "" -"Leave about 30 minutes at the start of each workshop and another 15 mins\n" -"at the start of each session for technical difficulties like WiFi and\n" -"installing things (even if you asked students to install in advance, longer if\n" -"not)." -# header #: r-novice-gapminder/_extras/guide.md:14 +# header msgid "## Lesson Plans" -msgstr "## Lesson Plans" +msgstr "" #: r-novice-gapminder/_extras/guide.md:16 -msgid "" -"The lesson contains much more material than can be taught in a day.\n" +msgid "The lesson contains much more material than can be taught in a day.\n" "Instructors will need to pick an appropriate subset of episodes to use\n" "in a standard one day course. " msgstr "" -"The lesson contains much more material than can be taught in a day.\n" -"Instructors will need to pick an appropriate subset of episodes to use\n" -"in a standard one day course. " #: r-novice-gapminder/_extras/guide.md:20 msgid "Some suggested paths through the material are:" -msgstr "Some suggested paths through the material are:" +msgstr "" #: r-novice-gapminder/_extras/guide.md:22 msgid "(suggested by [@liz-is](https://github.com/swcarpentry/r-novice-gapminder/issues/104#issuecomment-276529213))" -msgstr "(suggested by [@liz-is](https://github.com/swcarpentry/r-novice-gapminder/issues/104#issuecomment-276529213))" +msgstr "" -# unordered list #: r-novice-gapminder/_extras/guide.md:24 #: r-novice-gapminder/_extras/guide.md:46 +# unordered list msgid "* 01 Introduction to R and RStudio" -msgstr "* 01 Introduction to R and RStudio" +msgstr "" -# unordered list #: r-novice-gapminder/_extras/guide.md:25 +# unordered list msgid "* 04 Data Structures" -msgstr "* 04 Data Structures" +msgstr "" -# unordered list #: r-novice-gapminder/_extras/guide.md:26 #: r-novice-gapminder/_extras/guide.md:48 +# unordered list msgid "* 05 Exploring Data Frames (\"Realistic example\" section onwards)" -msgstr "* 05 Exploring Data Frames (\"Realistic example\" section onwards)" +msgstr "" -# unordered list #: r-novice-gapminder/_extras/guide.md:27 #: r-novice-gapminder/_extras/guide.md:50 +# unordered list msgid "* 08 Creating Publication-Quality Graphics with ggplot2" -msgstr "* 08 Creating Publication-Quality Graphics with ggplot2" +msgstr "" -# unordered list #: r-novice-gapminder/_extras/guide.md:28 +# unordered list msgid "* 10 Functions Explained" -msgstr "* 10 Functions Explained" +msgstr "" -# unordered list #: r-novice-gapminder/_extras/guide.md:29 +# unordered list msgid "* 13 Dataframe Manipulation with dplyr" -msgstr "* 13 Dataframe Manipulation with dplyr" +msgstr "" -# unordered list #: r-novice-gapminder/_extras/guide.md:30 +# unordered list msgid "* 15 Producing Reports With knitr" -msgstr "* 15 Producing Reports With knitr" +msgstr "" #: r-novice-gapminder/_extras/guide.md:32 -msgid "" -"(suggested by [@naupaka](https://github.com/swcarpentry/r-novice-gapminder/issues/104#issuecomment-312547509))\n" +msgid "(suggested by [@naupaka](https://github.com/swcarpentry/r-novice-gapminder/issues/104#issuecomment-312547509))\n" "* 01 Introduction to R and RStudio\n" "* 02 Project Management With RStudio\n" "* 03 Seeking Help\n" @@ -20488,228 +13083,177 @@ msgid "" " 13 Dataframe Manipulation with dplyr\n" "* 15 Producing Reports With knitr" msgstr "" -"(suggested by [@naupaka](https://github.com/swcarpentry/r-novice-gapminder/issues/104#issuecomment-312547509))\n" -"* 01 Introduction to R and RStudio\n" -"* 02 Project Management With RStudio\n" -"* 03 Seeking Help\n" -"* 04 Data Structures\n" -"* 05 Exploring Data Frames\n" -"* 06 Subsetting Data\n" -"* 09 Vectorization\n" -"* 08 Creating Publication-Quality Graphics with ggplot2 *OR*\n" -" 13 Dataframe Manipulation with dplyr\n" -"* 15 Producing Reports With knitr" #: r-novice-gapminder/_extras/guide.md:44 msgid "A half day course could consist of (suggested by [@karawoo](https://github.com/swcarpentry/r-novice-gapminder/issues/104#issuecomment-277599864)):" -msgstr "A half day course could consist of (suggested by [@karawoo](https://github.com/swcarpentry/r-novice-gapminder/issues/104#issuecomment-277599864)):" +msgstr "" -# unordered list #: r-novice-gapminder/_extras/guide.md:47 +# unordered list msgid "* 04 Data Structures (only creating vectors with `c()`)" -msgstr "* 04 Data Structures (only creating vectors with `c()`)" +msgstr "" -# unordered list #: r-novice-gapminder/_extras/guide.md:49 +# unordered list msgid "* 06 Subsetting Data (excluding factor, matrix and list subsetting)" -msgstr "* 06 Subsetting Data (excluding factor, matrix and list subsetting)" +msgstr "" -# header #: r-novice-gapminder/_extras/guide.md:52 +# header msgid "## Setting up git in RStudio" -msgstr "## Setting up git in RStudio" +msgstr "" #: r-novice-gapminder/_extras/guide.md:54 -msgid "" -"There can be difficulties linking git to RStudio depending on the\n" +msgid "There can be difficulties linking git to RStudio depending on the\n" "operating system and the version of the operating system. To make sure\n" "Git is properly installed and configured, the learners should go to\n" "the Options window in the RStudio application." msgstr "" -"There can be difficulties linking git to RStudio depending on the\n" -"operating system and the version of the operating system. To make sure\n" -"Git is properly installed and configured, the learners should go to\n" -"the Options window in the RStudio application." -# unordered list #: r-novice-gapminder/_extras/guide.md:59 +# unordered list msgid "* **Mac OS X:**" -msgstr "* **Mac OS X:**" +msgstr "" -# unordered list #: r-novice-gapminder/_extras/guide.md:60 +# unordered list msgid " * Go RStudio -> Preferences... -> Git/SVN" -msgstr " * Go RStudio -> Preferences... -> Git/SVN" +msgstr "" -# unordered list #: r-novice-gapminder/_extras/guide.md:61 +# unordered list msgid " * Check and see whether there is a path to a file in the \"Git executable\" window. If not, the next challenge is figuring out where Git is located." -msgstr " * Check and see whether there is a path to a file in the \"Git executable\" window. If not, the next challenge is figuring out where Git is located." +msgstr "" -# unordered list #: r-novice-gapminder/_extras/guide.md:62 +# unordered list msgid " * In the terminal enter `which git` and you will get a path to the git executable. In the \"Git executable\" window you may have difficulties finding the directory since OS X hides many of the operating system files. While the file selection window is open, pressing \"Command-Shift-G\" will pop up a text entry box where you will be able to type or paste in the full path to your git executable: e.g. /usr/bin/git or whatever else it might be." -msgstr " * In the terminal enter `which git` and you will get a path to the git executable. In the \"Git executable\" window you may have difficulties finding the directory since OS X hides many of the operating system files. While the file selection window is open, pressing \"Command-Shift-G\" will pop up a text entry box where you will be able to type or paste in the full path to your git executable: e.g. /usr/bin/git or whatever else it might be." +msgstr "" -# unordered list #: r-novice-gapminder/_extras/guide.md:63 +# unordered list msgid "* **Windows:**" -msgstr "* **Windows:**" +msgstr "" -# unordered list #: r-novice-gapminder/_extras/guide.md:64 +# unordered list msgid " * Go Tools -> Global options... -> Git/SVN" -msgstr " * Go Tools -> Global options... -> Git/SVN" +msgstr "" -# unordered list #: r-novice-gapminder/_extras/guide.md:65 +# unordered list msgid " * If you use the Software Carpentry Installer, then 'git.exe' should be installed at `C:/Program Files/Git/bin/git.exe`." -msgstr " * If you use the Software Carpentry Installer, then 'git.exe' should be installed at `C:/Program Files/Git/bin/git.exe`." +msgstr "" #: r-novice-gapminder/_extras/guide.md:67 msgid "To prevent the learners from having to re-enter their password each time they push a commit to GitHub, this command (which can be run from a bash prompt) will make it so they only have to enter their password once:" -msgstr "To prevent the learners from having to re-enter their password each time they push a commit to GitHub, this command (which can be run from a bash prompt) will make it so they only have to enter their password once:" +msgstr "" -# code block #: r-novice-gapminder/_extras/guide.md:69 -msgid "" -"~~~\n" +# code block +msgid "~~~\n" "$ git config --global credential.helper 'cache --timeout=10000000'\n" "~~~" msgstr "" -"~~~\n" -"$ git config --global credential.helper 'cache --timeout=10000000'\n" -"~~~" -# SC/DC Template label #: r-novice-gapminder/_extras/guide.md:72 +# SC/DC Template label msgid "{: .bash}" -msgstr "{: .bash}" +msgstr "" -# header #: r-novice-gapminder/_extras/guide.md:74 +# header msgid "## Pulling in Data" -msgstr "## Pulling in Data" +msgstr "" #: r-novice-gapminder/_extras/guide.md:76 -msgid "" -"The easiest way to get the data used in this lesson during a workshop is to have\n" +msgid "The easiest way to get the data used in this lesson during a workshop is to have\n" "attendees download the raw data from [gapminder-data][gapminder-data] and\n" "[gapminder-data-wide][gapminder-data-wide]." msgstr "" -"The easiest way to get the data used in this lesson during a workshop is to have\n" -"attendees download the raw data from [gapminder-data][gapminder-data] and\n" -"[gapminder-data-wide][gapminder-data-wide]." #: r-novice-gapminder/_extras/guide.md:80 msgid "Attendees can use the `File - Save As` dialog in their browser to save the file." -msgstr "Attendees can use the `File - Save As` dialog in their browser to save the file." +msgstr "" -# header #: r-novice-gapminder/_extras/guide.md:82 +# header msgid "## Overall" -msgstr "## Overall" +msgstr "" #: r-novice-gapminder/_extras/guide.md:84 -msgid "" -"Make sure to emphasize good practices: put code in scripts, and make\n" +msgid "Make sure to emphasize good practices: put code in scripts, and make\n" "sure they're version controlled. Encourage students to create script\n" "files for challenges." msgstr "" -"Make sure to emphasize good practices: put code in scripts, and make\n" -"sure they're version controlled. Encourage students to create script\n" -"files for challenges." #: r-novice-gapminder/_extras/guide.md:88 -msgid "" -"If you're working in a cloud environment, get them to upload the\n" +msgid "If you're working in a cloud environment, get them to upload the\n" "gapminder data after the second lesson." msgstr "" -"If you're working in a cloud environment, get them to upload the\n" -"gapminder data after the second lesson." #: r-novice-gapminder/_extras/guide.md:91 -msgid "" -"Make sure to emphasize that matrices are vectors underneath the hood\n" +msgid "Make sure to emphasize that matrices are vectors underneath the hood\n" "and data frames are lists underneath the hood: this will explain a\n" "lot of the esoteric behaviour encountered in basic operations." msgstr "" -"Make sure to emphasize that matrices are vectors underneath the hood\n" -"and data frames are lists underneath the hood: this will explain a\n" -"lot of the esoteric behaviour encountered in basic operations." #: r-novice-gapminder/_extras/guide.md:95 -msgid "" -"Vector recycling and function stacks are probably best explained\n" +msgid "Vector recycling and function stacks are probably best explained\n" "with diagrams on a whiteboard." msgstr "" -"Vector recycling and function stacks are probably best explained\n" -"with diagrams on a whiteboard." #: r-novice-gapminder/_extras/guide.md:98 -msgid "" -"Be sure to actually go through examples of an R help page: help files\n" +msgid "Be sure to actually go through examples of an R help page: help files\n" "can be intimidating at first, but knowing how to read them is tremendously\n" "useful." msgstr "" -"Be sure to actually go through examples of an R help page: help files\n" -"can be intimidating at first, but knowing how to read them is tremendously\n" -"useful." #: r-novice-gapminder/_extras/guide.md:102 msgid "Be sure to show the CRAN task views, look at one of the topics." -msgstr "Be sure to show the CRAN task views, look at one of the topics." +msgstr "" #: r-novice-gapminder/_extras/guide.md:104 -msgid "" -"There's a lot of content: move quickly through the earlier lessons. Their\n" +msgid "There's a lot of content: move quickly through the earlier lessons. Their\n" "extensiveness is mostly for purposes of learning by osmosis: so that their\n" "memory will trigger later when they encounter a problem or some esoteric behaviour." msgstr "" -"There's a lot of content: move quickly through the earlier lessons. Their\n" -"extensiveness is mostly for purposes of learning by osmosis: so that their\n" -"memory will trigger later when they encounter a problem or some esoteric behaviour." #: r-novice-gapminder/_extras/guide.md:108 msgid "Key lessons to take time on:" -msgstr "Key lessons to take time on:" +msgstr "" -# unordered list #: r-novice-gapminder/_extras/guide.md:110 +# unordered list msgid "* Data subsetting - conceptually difficult for novices" -msgstr "* Data subsetting - conceptually difficult for novices" +msgstr "" -# unordered list #: r-novice-gapminder/_extras/guide.md:111 +# unordered list msgid "* Functions - learners especially struggle with this" -msgstr "* Functions - learners especially struggle with this" +msgstr "" -# unordered list #: r-novice-gapminder/_extras/guide.md:112 +# unordered list msgid "* Data structures - worth being thorough, but you can go through it quickly." -msgstr "* Data structures - worth being thorough, but you can go through it quickly." +msgstr "" #: r-novice-gapminder/_extras/guide.md:114 -msgid "" -"Don't worry about being correct or knowing the material back-to-front. Use\n" +msgid "Don't worry about being correct or knowing the material back-to-front. Use\n" "mistakes as teaching moments: the most vital skill you can impart is how to\n" "debug and recover from unexpected errors." msgstr "" -"Don't worry about being correct or knowing the material back-to-front. Use\n" -"mistakes as teaching moments: the most vital skill you can impart is how to\n" -"debug and recover from unexpected errors." #: r-novice-gapminder/_extras/guide.md:118 msgid "[gapminder-data]: https://raw.githubusercontent.com/swcarpentry/r-novice-gapminder/gh-pages/_episodes_rmd/data/gapminder_data.csv" -msgstr "[gapminder-data]: https://raw.githubusercontent.com/swcarpentry/r-novice-gapminder/gh-pages/_episodes_rmd/data/gapminder_data.csv" +msgstr "" #: r-novice-gapminder/_extras/guide.md:120 msgid "[gapminder-data-wide]: https://raw.githubusercontent.com/swcarpentry/r-novice-gapminder/gh-pages/_episodes_rmd/data/gapminder_wide.csv" -msgstr "[gapminder-data-wide]: https://raw.githubusercontent.com/swcarpentry/r-novice-gapminder/gh-pages/_episodes_rmd/data/gapminder_wide.csv" +msgstr "" #: r-novice-gapminder/_includes/links.md:1 -msgid "" -"[cc-by-human]: https://creativecommons.org/licenses/by/4.0/\n" +msgid "[cc-by-human]: https://creativecommons.org/licenses/by/4.0/\n" "[cc-by-legal]: https://creativecommons.org/licenses/by/4.0/legalcode\n" "[ci]: http://communityin.org/\n" "[coc-reporting]: https://docs.carpentries.org/topic_folders/policies/code-of-conduct.html#reporting-guidelines\n" @@ -20747,61 +13291,19 @@ msgid "" "[workshop-repo]: {{ site.workshop_repo }}\n" "[yaml]: http://yaml.org/" msgstr "" -"[cc-by-human]: https://creativecommons.org/licenses/by/4.0/\n" -"[cc-by-legal]: https://creativecommons.org/licenses/by/4.0/legalcode\n" -"[ci]: http://communityin.org/\n" -"[coc-reporting]: https://docs.carpentries.org/topic_folders/policies/code-of-conduct.html#reporting-guidelines\n" -"[coc]: https://docs.carpentries.org/topic_folders/policies/code-of-conduct.html\n" -"[concept-maps]: https://carpentries.github.io/instructor-training/05-memory/\n" -"[contrib-covenant]: https://contributor-covenant.org/\n" -"[contributing]: {{ site.github.repository_url }}/blob/gh-pages/CONTRIBUTING.md\n" -"[cran-checkpoint]: https://cran.r-project.org/package=checkpoint\n" -"[cran-knitr]: https://cran.r-project.org/package=knitr\n" -"[cran-stringr]: https://cran.r-project.org/package=stringr\n" -"[email]: mailto:team@carpentries.org\n" -"[github-importer]: https://import.github.com/\n" -"[importer]: https://github.com/new/import\n" -"[jekyll-collection]: https://jekyllrb.com/docs/collections/\n" -"[jekyll-install]: https://jekyllrb.com/docs/installation/\n" -"[jekyll-windows]: http://jekyll-windows.juthilo.com/\n" -"[jekyll]: https://jekyllrb.com/\n" -"[jupyter]: https://jupyter.org/\n" -"[lesson-example]: https://carpentries.github.io/lesson-example/\n" -"[mit-license]: https://opensource.org/licenses/mit-license.html\n" -"[morea]: https://morea-framework.github.io/\n" -"[numfocus]: https://numfocus.org/\n" -"[osi]: https://opensource.org\n" -"[pandoc]: https://pandoc.org/\n" -"[paper-now]: https://github.com/PeerJ/paper-now\n" -"[python-gapminder]: https://swcarpentry.github.io/python-novice-gapminder/\n" -"[pyyaml]: https://pypi.python.org/pypi/PyYAML\n" -"[r-markdown]: https://rmarkdown.rstudio.com/\n" -"[rstudio]: https://www.rstudio.com/\n" -"[ruby-install-guide]: https://www.ruby-lang.org/en/downloads/\n" -"[ruby-installer]: https://rubyinstaller.org/\n" -"[rubygems]: https://rubygems.org/pages/download/\n" -"[styles]: https://github.com/carpentries/styles/\n" -"[swc-releases]: https://github.com/swcarpentry/swc-releases\n" -"[workshop-repo]: {{ site.workshop_repo }}\n" -"[yaml]: http://yaml.org/" -# Front Matter #: r-novice-gapminder/aio.md:1 -msgid "" -"---\n" +# Front Matter +msgid "---\n" "layout: page \n" "root: .\n" "---" msgstr "" -"---\n" -"layout: page \n" -"root: .\n" -"---" +#: r-novice-gapminder/aio.md:5 +#: r-novice-gapminder/bin/boilerplate/aio.md:3 # inline html -#: r-novice-gapminder/aio.md:5 r-novice-gapminder/bin/boilerplate/aio.md:3 -msgid "" -"" msgstr "" -"" #: r-novice-gapminder/aio.md:31 #: r-novice-gapminder/bin/boilerplate/_extras/figures.md:33 #: r-novice-gapminder/bin/boilerplate/aio.md:29 -msgid "" -"{% comment %}\n" +msgid "{% comment %}\n" "Create anchor for each one of the episodes.\n" "{% endcomment %}\n" "{% for episode in site.episodes %}\n" "
\n" "{% endfor %}" msgstr "" -"{% comment %}\n" -"Create anchor for each one of the episodes.\n" -"{% endcomment %}\n" -"{% for episode in site.episodes %}\n" -"
\n" -"{% endfor %}" #: r-novice-gapminder/bin/boilerplate/CONTRIBUTING.md:12 -msgid "" -"By contributing,\n" +msgid "By contributing,\n" "you agree that we may redistribute your work under [our license](LICENSE.md).\n" "In exchange,\n" "we will address your issues and/or assess your change proposal as promptly as we can,\n" @@ -20883,35 +13351,20 @@ msgid "" "Everyone involved in [Software Carpentry][swc-site] and [Data Carpentry][dc-site]\n" "agrees to abide by our [code of conduct](CODE_OF_CONDUCT.md)." msgstr "" -"By contributing,\n" -"you agree that we may redistribute your work under [our license](LICENSE.md).\n" -"In exchange,\n" -"we will address your issues and/or assess your change proposal as promptly as we can,\n" -"and help you become a member of our community.\n" -"Everyone involved in [Software Carpentry][swc-site] and [Data Carpentry][dc-site]\n" -"agrees to abide by our [code of conduct](CODE_OF_CONDUCT.md)." #: r-novice-gapminder/bin/boilerplate/CONTRIBUTING.md:30 -msgid "" -" you can [send us comments by email][email].\n" +msgid " you can [send us comments by email][email].\n" " However,\n" " we will be able to respond more quickly if you use one of the other methods described below." msgstr "" -" you can [send us comments by email][email].\n" -" However,\n" -" we will be able to respond more quickly if you use one of the other methods described below." #: r-novice-gapminder/bin/boilerplate/CONTRIBUTING.md:49 -msgid "" -" please work in ,\n" +msgid " please work in ,\n" " which can be viewed at ." msgstr "" -" please work in ,\n" -" which can be viewed at ." #: r-novice-gapminder/bin/boilerplate/CONTRIBUTING.md:69 -msgid "" -"There are many ways to contribute,\n" +msgid "There are many ways to contribute,\n" "from writing new exercises and improving existing ones\n" "to updating or filling in the documentation\n" "and submitting [bug reports][issues]\n" @@ -20921,45 +13374,28 @@ msgid "" "or you may also look at the issues for [Data Carpentry][dc-issues]\n" "and [Software Carpentry][swc-issues] projects." msgstr "" -"There are many ways to contribute,\n" -"from writing new exercises and improving existing ones\n" -"to updating or filling in the documentation\n" -"and submitting [bug reports][issues]\n" -"about things that don't work, aren't clear, or are missing.\n" -"If you are looking for ideas, please see the 'Issues' tab for\n" -"a list of issues associated with this repository,\n" -"or you may also look at the issues for [Data Carpentry][dc-issues]\n" -"and [Software Carpentry][swc-issues] projects." #: r-novice-gapminder/bin/boilerplate/CONTRIBUTING.md:104 -msgid "" -"If you choose to contribute via GitHub, you may want to look at\n" +msgid "If you choose to contribute via GitHub, you may want to look at\n" "[How to Contribute to an Open Source Project on GitHub][how-contribute].\n" "To manage changes, we follow [GitHub flow][github-flow].\n" "Each lesson has two maintainers who review issues and pull requests or encourage others to do so.\n" "The maintainers are community volunteers and have final say over what gets merged into the lesson.\n" "To use the web interface for contributing to a lesson:" msgstr "" -"If you choose to contribute via GitHub, you may want to look at\n" -"[How to Contribute to an Open Source Project on GitHub][how-contribute].\n" -"To manage changes, we follow [GitHub flow][github-flow].\n" -"Each lesson has two maintainers who review issues and pull requests or encourage others to do so.\n" -"The maintainers are community volunteers and have final say over what gets merged into the lesson.\n" -"To use the web interface for contributing to a lesson:" -# ordered list #: r-novice-gapminder/bin/boilerplate/CONTRIBUTING.md:111 +# ordered list msgid "1. Fork the originating repository to your GitHub profile." -msgstr "1. Fork the originating repository to your GitHub profile." +msgstr "" -# ordered list #: r-novice-gapminder/bin/boilerplate/CONTRIBUTING.md:112 +# ordered list msgid "2. Within your version of the forked repository, move to the `gh-pages` branch and" -msgstr "2. Within your version of the forked repository, move to the `gh-pages` branch and" +msgstr "" #: r-novice-gapminder/bin/boilerplate/CONTRIBUTING.md:113 -msgid "" -"create a new branch for each significant change being made.\n" +msgid "create a new branch for each significant change being made.\n" "3. Navigate to the file(s) you wish to change within the new branches and make revisions as required.\n" "4. Commit all changed files within the appropriate branches.\n" "5. Create individual pull requests from each of your changed branches\n" @@ -20968,46 +13404,25 @@ msgid "" "repository and the pull requests will update automatically.\n" "7. Repeat as needed until all feedback has been addressed." msgstr "" -"create a new branch for each significant change being made.\n" -"3. Navigate to the file(s) you wish to change within the new branches and make revisions as required.\n" -"4. Commit all changed files within the appropriate branches.\n" -"5. Create individual pull requests from each of your changed branches\n" -"to the `gh-pages` branch within the originating repository.\n" -"6. If you receive feedback, make changes using your issue-specific branches of the forked\n" -"repository and the pull requests will update automatically.\n" -"7. Repeat as needed until all feedback has been addressed." #: r-novice-gapminder/bin/boilerplate/CONTRIBUTING.md:122 -msgid "" -"When starting work, please make sure your clone of the originating `gh-pages` branch is up-to-date\n" +msgid "When starting work, please make sure your clone of the originating `gh-pages` branch is up-to-date\n" "before creating your own revision-specific branch(es) from there.\n" "Additionally, please only work from your newly-created branch(es) and *not*\n" "your clone of the originating `gh-pages` branch.\n" "Lastly, published copies of all the lessons are available in the `gh-pages` branch of the originating\n" "repository for reference while revising." msgstr "" -"When starting work, please make sure your clone of the originating `gh-pages` branch is up-to-date\n" -"before creating your own revision-specific branch(es) from there.\n" -"Additionally, please only work from your newly-created branch(es) and *not*\n" -"your clone of the originating `gh-pages` branch.\n" -"Lastly, published copies of all the lessons are available in the `gh-pages` branch of the originating\n" -"repository for reference while revising." #: r-novice-gapminder/bin/boilerplate/CONTRIBUTING.md:131 -msgid "" -"General discussion of [Software Carpentry][swc-site] and [Data Carpentry][dc-site]\n" +msgid "General discussion of [Software Carpentry][swc-site] and [Data Carpentry][dc-site]\n" "happens on the [discussion mailing list][discuss-list],\n" "which everyone is welcome to join.\n" "You can also [reach us by email][email]." msgstr "" -"General discussion of [Software Carpentry][swc-site] and [Data Carpentry][dc-site]\n" -"happens on the [discussion mailing list][discuss-list],\n" -"which everyone is welcome to join.\n" -"You can also [reach us by email][email]." #: r-novice-gapminder/bin/boilerplate/CONTRIBUTING.md:136 -msgid "" -"[email]: mailto:admin@software-carpentry.org\n" +msgid "[email]: mailto:admin@software-carpentry.org\n" "[dc-issues]: https://github.com/issues?q=user%3Adatacarpentry\n" "[dc-lessons]: http://datacarpentry.org/lessons/\n" "[dc-site]: http://datacarpentry.org/\n" @@ -21021,28 +13436,15 @@ msgid "" "[swc-lessons]: https://software-carpentry.org/lessons/\n" "[swc-site]: https://software-carpentry.org/" msgstr "" -"[email]: mailto:admin@software-carpentry.org\n" -"[dc-issues]: https://github.com/issues?q=user%3Adatacarpentry\n" -"[dc-lessons]: http://datacarpentry.org/lessons/\n" -"[dc-site]: http://datacarpentry.org/\n" -"[discuss-list]: http://lists.software-carpentry.org/listinfo/discuss\n" -"[github]: https://github.com\n" -"[github-flow]: https://guides.github.com/introduction/flow/\n" -"[github-join]: https://github.com/join\n" -"[how-contribute]: https://egghead.io/series/how-to-contribute-to-an-open-source-project-on-github\n" -"[issues]: https://guides.github.com/features/issues/\n" -"[swc-issues]: https://github.com/issues?q=user%3Aswcarpentry\n" -"[swc-lessons]: https://software-carpentry.org/lessons/\n" -"[swc-site]: https://software-carpentry.org/" -# header #: r-novice-gapminder/bin/boilerplate/README.md:1 +# header msgid "# FIXME Lesson title" -msgstr "# FIXME Lesson title" +msgstr "" #: r-novice-gapminder/bin/boilerplate/README.md:3 msgid "[![Create a Slack Account with us](https://img.shields.io/badge/Create_Slack_Account-The_Carpentries-071159.svg)](https://swc-slack-invite.herokuapp.com/)" -msgstr "[![Create a Slack Account with us](https://img.shields.io/badge/Create_Slack_Account-The_Carpentries-071159.svg)](https://swc-slack-invite.herokuapp.com/)" +msgstr "" #: r-novice-gapminder/bin/boilerplate/README.md:5 #: r-novice-gapminder/bin/boilerplate/_episodes/01-introduction.md:12 @@ -21051,67 +13453,59 @@ msgstr "[![Create a Slack Account with us](https://img.shields.io/badge/Create_S #: r-novice-gapminder/bin/boilerplate/reference.md:7 #: r-novice-gapminder/bin/boilerplate/setup.md:4 msgid "FIXME" -msgstr "FIXME" +msgstr "" -# header #: r-novice-gapminder/bin/boilerplate/README.md:7 +# header msgid "## Contributing" -msgstr "## Contributing" +msgstr "" #: r-novice-gapminder/bin/boilerplate/README.md:9 -msgid "" -"We welcome all contributions to improve the lesson! Maintainers will do their best to help you if you have any\n" +msgid "We welcome all contributions to improve the lesson! Maintainers will do their best to help you if you have any\n" "questions, concerns, or experience any difficulties along the way." msgstr "" -"We welcome all contributions to improve the lesson! Maintainers will do their best to help you if you have any\n" -"questions, concerns, or experience any difficulties along the way." #: r-novice-gapminder/bin/boilerplate/README.md:12 -msgid "" -"We'd like to ask you to familiarize yourself with our [Contribution Guide](CONTRIBUTING.md) and have a look at\n" +msgid "We'd like to ask you to familiarize yourself with our [Contribution Guide](CONTRIBUTING.md) and have a look at\n" "the [more detailed guidelines][lesson-example] on proper formatting, ways to render the lesson locally, and even\n" "how to write new episodes." msgstr "" -"We'd like to ask you to familiarize yourself with our [Contribution Guide](CONTRIBUTING.md) and have a look at\n" -"the [more detailed guidelines][lesson-example] on proper formatting, ways to render the lesson locally, and even\n" -"how to write new episodes." -# header #: r-novice-gapminder/bin/boilerplate/README.md:16 +# header msgid "## Maintainer(s)" -msgstr "## Maintainer(s)" +msgstr "" -# unordered list #: r-novice-gapminder/bin/boilerplate/README.md:18 +# unordered list msgid "* FIXME" -msgstr "* FIXME" +msgstr "" -# header #: r-novice-gapminder/bin/boilerplate/README.md:20 +# header msgid "## Authors" -msgstr "## Authors" +msgstr "" #: r-novice-gapminder/bin/boilerplate/README.md:22 msgid "A list of contributors to the lesson can be found in [AUTHORS](AUTHORS)" -msgstr "A list of contributors to the lesson can be found in [AUTHORS](AUTHORS)" +msgstr "" -# header #: r-novice-gapminder/bin/boilerplate/README.md:24 +# header msgid "## Citation" -msgstr "## Citation" +msgstr "" #: r-novice-gapminder/bin/boilerplate/README.md:26 msgid "To cite this lesson, please consult with [CITATION](CITATION)" -msgstr "To cite this lesson, please consult with [CITATION](CITATION)" +msgstr "" #: r-novice-gapminder/bin/boilerplate/README.md:28 msgid "[lesson-example]: https://carpentries.github.io/lesson-example" -msgstr "[lesson-example]: https://carpentries.github.io/lesson-example" +msgstr "" -# Front Matter #: r-novice-gapminder/bin/boilerplate/_episodes/01-introduction.md:1 -msgid "" -"---\n" +# Front Matter +msgid "---\n" "title: \"Introduction\"\n" "teaching: 0\n" "exercises: 0\n" @@ -21123,63 +13517,36 @@ msgid "" "- \"First key point. (FIXME)\"\n" "---" msgstr "" -"---\n" -"title: \"Introduction\"\n" -"teaching: 0\n" -"exercises: 0\n" -"questions:\n" -"- \"Key question (FIXME)\"\n" -"objectives:\n" -"- \"First objective. (FIXME)\"\n" -"keypoints:\n" -"- \"First key point. (FIXME)\"\n" -"---" -# Front Matter #: r-novice-gapminder/bin/boilerplate/_extras/about.md:1 -msgid "" -"---\n" +# Front Matter +msgid "---\n" "title: About\n" "---" msgstr "" -"---\n" -"title: About\n" -"---" #: r-novice-gapminder/bin/boilerplate/_extras/about.md:4 -msgid "" -"{% include carpentries.html %}\n" +msgid "{% include carpentries.html %}\n" "{% include links.md %}" msgstr "" -"{% include carpentries.html %}\n" -"{% include links.md %}" -# Front Matter #: r-novice-gapminder/bin/boilerplate/_extras/discuss.md:1 -msgid "" -"---\n" +# Front Matter +msgid "---\n" "title: Discussion\n" "---" msgstr "" -"---\n" -"title: Discussion\n" -"---" -# Front Matter #: r-novice-gapminder/bin/boilerplate/_extras/figures.md:1 -msgid "" -"---\n" +# Front Matter +msgid "---\n" "title: Figures\n" "---" msgstr "" -"---\n" -"title: Figures\n" -"---" -# inline html #: r-novice-gapminder/bin/boilerplate/_extras/figures.md:4 -msgid "" -"" msgstr "" -"" -# Front Matter #: r-novice-gapminder/bin/boilerplate/_extras/guide.md:1 -msgid "" -"---\n" +# Front Matter +msgid "---\n" "title: \"Instructor Notes\"\n" "---" msgstr "" -"---\n" -"title: \"Instructor Notes\"\n" -"---" -# Front Matter #: r-novice-gapminder/bin/boilerplate/aio.md:1 -msgid "" -"---\n" +# Front Matter +msgid "---\n" "---" msgstr "" -"---\n" -"---" -# Front Matter #: r-novice-gapminder/bin/boilerplate/index.md:1 -msgid "" -"---\n" +# Front Matter +msgid "---\n" "layout: lesson\n" "root: . # Is the only page that don't follow the partner /:path/index.html\n" "permalink: index.html # Is the only page that don't follow the partner /:path/index.html\n" "---" msgstr "" -"---\n" -"layout: lesson\n" -"root: . # Is the only page that don't follow the partner /:path/index.html\n" -"permalink: index.html # Is the only page that don't follow the partner /:path/index.html\n" -"---" #: r-novice-gapminder/bin/boilerplate/index.md:6 msgid "FIXME: home page introduction" -msgstr "FIXME: home page introduction" +msgstr "" +#: r-novice-gapminder/bin/boilerplate/index.md:8 +#: r-novice-gapminder/index.md:27 # blockquote, which can be cascaded -#: r-novice-gapminder/bin/boilerplate/index.md:8 r-novice-gapminder/index.md:27 msgid "> ## Prerequisites" -msgstr "> ## Prerequisites" +msgstr "" #: r-novice-gapminder/bin/boilerplate/index.md:9 -msgid "" -">\n" +msgid ">\n" "> FIXME" msgstr "" -">\n" -"> FIXME" -# SC/DC Template label #: r-novice-gapminder/bin/boilerplate/index.md:11 #: r-novice-gapminder/index.md:32 +# SC/DC Template label msgid "{: .prereq}" -msgstr "{: .prereq}" +msgstr "" -# Front Matter #: r-novice-gapminder/bin/boilerplate/reference.md:1 -msgid "" -"---\n" +# Front Matter +msgid "---\n" "layout: reference\n" "---" msgstr "" -"---\n" -"layout: reference\n" -"---" -# header #: r-novice-gapminder/bin/boilerplate/reference.md:5 #: r-novice-gapminder/reference.md:253 +# header msgid "## Glossary" -msgstr "## Glossary" +msgstr "" -# Front Matter #: r-novice-gapminder/bin/boilerplate/setup.md:1 -msgid "" -"---\n" +# Front Matter +msgid "---\n" "title: Setup\n" "---" msgstr "" -"---\n" -"title: Setup\n" -"---" -# Front Matter #: r-novice-gapminder/index.md:1 -msgid "" -"---\n" +# Front Matter +msgid "---\n" "layout: lesson\n" "root: .\n" "---" msgstr "" -"---\n" -"layout: lesson\n" -"root: .\n" -"---" #: r-novice-gapminder/index.md:6 msgid "Introduction to R for non-programmers using gapminder data." -msgstr "ブログラマーでない人のためのgapminderデータ用いたR入門。" +msgstr "" #: r-novice-gapminder/index.md:17 -msgid "" -"Note that this workshop will focus on teaching the fundamentals of the\n" +msgid "Note that this workshop will focus on teaching the fundamentals of the\n" "programming language R, and will not teach statistical analysis." msgstr "" -"このワークショップでは、プログラミング言語Rの基礎を教えることに焦点を当て、\n" -"統計分析を教えることはないことに注意してください。" #: r-novice-gapminder/index.md:22 -msgid "" -"A variety of third party packages are used throughout this workshop. These\n" +msgid "A variety of third party packages are used throughout this workshop. These\n" "are not necessarily the best, nor are they comprehensive, but they are\n" "packages we find useful, and have been chosen primarily for their\n" "usability." msgstr "" -"このワークショップでは、さまざまなサードパーティパッケージが使用されています。\n" -"これらは必ずしも最高のものではなく、包括的でもありませんが、有用であり、\n" -"使いやすさのために主に選ばれたパッケージです。" #: r-novice-gapminder/index.md:28 -msgid "" -">\n" +msgid ">\n" "> Understand that computers store data and instructions (programs, scripts etc.) in files.\n" "> Files are organised in directories (folders).\n" "> Know how to access files not in the working directory by specifying the path." msgstr "" -">\n" -"> コンピュータがデータと命令(プログラムやスクリプト)をファイルに保存することを理解する。\n" -"> ファイルはディレクトリ(フォルダ)に編成されています。\n" -"> パスを指定することによって、作業ディレクトリにないファイルにアクセスする方法を理解してください。" -# Front Matter #: r-novice-gapminder/reference.md:1 -msgid "" -"---\n" +# Front Matter +msgid "---\n" "layout: reference\n" "root: .\n" "---" msgstr "" -"---\n" -"layout: reference\n" -"root: .\n" -"---" -# header #: r-novice-gapminder/reference.md:6 +# header msgid "## Reference" -msgstr "## Reference" +msgstr "" -# header #: r-novice-gapminder/reference.md:8 +# header msgid "## [Introduction to R and RStudio]({{ page.root }}/01-rstudio-intro/)" -msgstr "## [Introduction to R and RStudio]({{ page.root }}/01-rstudio-intro/)" +msgstr "" -# unordered list #: r-novice-gapminder/reference.md:10 +# unordered list msgid " - Use the escape key to cancel incomplete commands or running code" -msgstr " - Use the escape key to cancel incomplete commands or running code" +msgstr "" #: r-novice-gapminder/reference.md:11 -msgid "" -" (Ctrl+C) if you're using R from the shell.\n" +msgid " (Ctrl+C) if you're using R from the shell.\n" " - Basic arithmetic operations follow standard order of precedence:\n" " - Brackets: `(`, `)`\n" " - Exponents: `^` or `**`\n" @@ -21425,191 +13717,163 @@ msgid "" " - `rm` can be used to remove them\n" " - When assigning values to function arguments, you _must_ use `=`." msgstr "" -" (Ctrl+C) if you're using R from the shell.\n" -" - Basic arithmetic operations follow standard order of precedence:\n" -" - Brackets: `(`, `)`\n" -" - Exponents: `^` or `**`\n" -" - Divide: `/`\n" -" - Multiply: `*`\n" -" - Add: `+`\n" -" - Subtract: `-`\n" -" - Scientific notation is available, e.g: `2e-3`\n" -" - Anything to the right of a `#` is a comment, R will ignore this!\n" -" - Functions are denoted by `function_name()`. Expressions inside the\n" -" brackets are evaluated before being passed to the function, and\n" -" functions can be nested.\n" -" - Mathematical functions: `exp`, `sin`, `log`, `log10`, `log2` etc.\n" -" - Comparison operators: `<`, `<=`, `>`, `>=`, `==`, `!=`\n" -" - Use `all.equal` to compare numbers!\n" -" - `<-` is the assignment operator. Anything to the right is evaluate, then\n" -" stored in a variable named to the left.\n" -" - `ls` lists all variables and functions you've created\n" -" - `rm` can be used to remove them\n" -" - When assigning values to function arguments, you _must_ use `=`." -# header #: r-novice-gapminder/reference.md:33 +# header msgid "## [Project management with RStudio]({{ page.root }}/02-project-intro/)" -msgstr "## [Project management with RStudio]({{ page.root }}/02-project-intro/)" +msgstr "" -# unordered list #: r-novice-gapminder/reference.md:35 +# unordered list msgid " - To create a new project, go to File -> New Project" -msgstr " - To create a new project, go to File -> New Project" +msgstr "" -# unordered list #: r-novice-gapminder/reference.md:36 +# unordered list msgid " - Install the `packrat` package to create self-contained projects" -msgstr " - Install the `packrat` package to create self-contained projects" +msgstr "" -# unordered list #: r-novice-gapminder/reference.md:37 +# unordered list msgid " - `install.packages` to install packages from CRAN" -msgstr " - `install.packages` to install packages from CRAN" +msgstr "" -# unordered list #: r-novice-gapminder/reference.md:38 +# unordered list msgid " - `library` to load a package into R" -msgstr " - `library` to load a package into R" +msgstr "" -# unordered list #: r-novice-gapminder/reference.md:39 +# unordered list msgid " - `packrat::status` to check whether all packages referenced in your" -msgstr " - `packrat::status` to check whether all packages referenced in your" +msgstr "" #: r-novice-gapminder/reference.md:40 msgid " scripts have been installed." -msgstr " scripts have been installed." +msgstr "" -# header #: r-novice-gapminder/reference.md:42 +# header msgid "## [Seeking help]({{ page.root }}/03-seeking-help/)" -msgstr "## [Seeking help]({{ page.root }}/03-seeking-help/)" +msgstr "" -# unordered list #: r-novice-gapminder/reference.md:44 +# unordered list msgid "- To access help for a function type `?function_name` or `help(function_name)`" -msgstr "- To access help for a function type `?function_name` or `help(function_name)`" +msgstr "" -# unordered list #: r-novice-gapminder/reference.md:45 +# unordered list msgid "- Use quotes for special operators e.g. `?\"+\"`" -msgstr "- Use quotes for special operators e.g. `?\"+\"`" +msgstr "" -# unordered list #: r-novice-gapminder/reference.md:46 +# unordered list msgid "- Use fuzzy search if you can't remember a name '??search_term'" -msgstr "- Use fuzzy search if you can't remember a name '??search_term'" +msgstr "" -# unordered list #: r-novice-gapminder/reference.md:47 +# unordered list msgid "- [CRAN task views](http://cran.at.r-project.org/web/views) are a good starting point." -msgstr "- [CRAN task views](http://cran.at.r-project.org/web/views) are a good starting point." +msgstr "" -# unordered list #: r-novice-gapminder/reference.md:48 +# unordered list msgid "- [Stack Overflow](http://stackoverflow.com/) is a good place to get help with your code." -msgstr "- [Stack Overflow](http://stackoverflow.com/) is a good place to get help with your code." +msgstr "" -# unordered list #: r-novice-gapminder/reference.md:49 +# unordered list msgid " - `?dput` will dump data you are working from so others can load it easily." -msgstr " - `?dput` will dump data you are working from so others can load it easily." +msgstr "" -# unordered list #: r-novice-gapminder/reference.md:50 +# unordered list msgid " - `sessionInfo()` will give details of your setup that others may need for debugging." -msgstr " - `sessionInfo()` will give details of your setup that others may need for debugging." +msgstr "" -# header #: r-novice-gapminder/reference.md:52 +# header msgid "## [Data structures]({{ page.root }}/04-data-structures-part1/)" -msgstr "## [Data structures]({{ page.root }}/04-data-structures-part1/)" +msgstr "" #: r-novice-gapminder/reference.md:54 msgid "Individual values in R must be one of 5 **data types**, multiple values can be grouped in **data structures**." -msgstr "Individual values in R must be one of 5 **data types**, multiple values can be grouped in **data structures**." +msgstr "" #: r-novice-gapminder/reference.md:56 msgid " **Data types**" -msgstr " **Data types**" +msgstr "" -# unordered list #: r-novice-gapminder/reference.md:58 +# unordered list msgid " - `typeof(object)` gives information about an items data type." -msgstr " - `typeof(object)` gives information about an items data type." +msgstr "" -# unordered list #: r-novice-gapminder/reference.md:59 +# unordered list msgid " - There are 5 main data types:" -msgstr " - There are 5 main data types:" +msgstr "" -# unordered list #: r-novice-gapminder/reference.md:60 +# unordered list msgid " - `?numeric` real (decimal) numbers" -msgstr " - `?numeric` real (decimal) numbers" +msgstr "" -# unordered list #: r-novice-gapminder/reference.md:61 +# unordered list msgid " - `?integer` whole numbers only" -msgstr " - `?integer` whole numbers only" +msgstr "" -# unordered list #: r-novice-gapminder/reference.md:62 +# unordered list msgid " - `?character` text" -msgstr " - `?character` text" +msgstr "" -# unordered list #: r-novice-gapminder/reference.md:63 +# unordered list msgid " - `?complex` complex numbers" -msgstr " - `?complex` complex numbers" +msgstr "" -# unordered list #: r-novice-gapminder/reference.md:64 +# unordered list msgid " - `?logical` TRUE or FALSE values" -msgstr " - `?logical` TRUE or FALSE values" +msgstr "" #: r-novice-gapminder/reference.md:66 msgid " **Special types:**" -msgstr " **Special types:**" +msgstr "" -# unordered list #: r-novice-gapminder/reference.md:68 +# unordered list msgid " - `?NA` missing values" -msgstr " - `?NA` missing values" +msgstr "" -# unordered list #: r-novice-gapminder/reference.md:69 +# unordered list msgid " - `?NaN` \"not a number\" for undefined values (e.g. `0/0`)." -msgstr " - `?NaN` \"not a number\" for undefined values (e.g. `0/0`)." +msgstr "" -# unordered list #: r-novice-gapminder/reference.md:70 +# unordered list msgid " - `?Inf`, `-Inf` infinity." -msgstr " - `?Inf`, `-Inf` infinity." +msgstr "" -# unordered list #: r-novice-gapminder/reference.md:71 +# unordered list msgid " - `?NULL` a data structure that doesn't exist" -msgstr " - `?NULL` a data structure that doesn't exist" +msgstr "" #: r-novice-gapminder/reference.md:73 -msgid "" -" `NA` can occur in any atomic vector. `NaN`, and `Inf` can only\n" +msgid " `NA` can occur in any atomic vector. `NaN`, and `Inf` can only\n" " occur in complex, integer or numeric type vectors. Atomic vectors\n" " are the building blocks for all other data structures. A `NULL` value\n" " will occur in place of an entire data structure (but can occur as list\n" " elements)." msgstr "" -" `NA` can occur in any atomic vector. `NaN`, and `Inf` can only\n" -" occur in complex, integer or numeric type vectors. Atomic vectors\n" -" are the building blocks for all other data structures. A `NULL` value\n" -" will occur in place of an entire data structure (but can occur as list\n" -" elements)." #: r-novice-gapminder/reference.md:80 -msgid "" -" **Basic data structures in R:**\n" +msgid " **Basic data structures in R:**\n" " - atomic `?vector` (can only contain one type)\n" " - `?list` (containers for other objects)\n" " - `?data.frame` two dimensional objects whose columns can contain different types of data\n" @@ -21617,81 +13881,47 @@ msgid "" " - `?factor` vectors that contain predefined categorical data.\n" " - `?array` multi-dimensional objects that can only contain one type of data" msgstr "" -" **Basic data structures in R:**\n" -" - atomic `?vector` (can only contain one type)\n" -" - `?list` (containers for other objects)\n" -" - `?data.frame` two dimensional objects whose columns can contain different types of data\n" -" - `?matrix` two dimensional objects that can contain only one type of data.\n" -" - `?factor` vectors that contain predefined categorical data.\n" -" - `?array` multi-dimensional objects that can only contain one type of data" #: r-novice-gapminder/reference.md:88 -msgid "" -" Remember that matrices are really atomic vectors underneath the hood, and that\n" +msgid " Remember that matrices are really atomic vectors underneath the hood, and that\n" "data.frames are really lists underneath the hood (this explains some of the weirder\n" "behaviour of R)." msgstr "" -" Remember that matrices are really atomic vectors underneath the hood, and that\n" -"data.frames are really lists underneath the hood (this explains some of the weirder\n" -"behaviour of R)." #: r-novice-gapminder/reference.md:92 -msgid "" -" **[Vectors]({{ page.root }}/04-data-structures-part1/)**\n" +msgid " **[Vectors]({{ page.root }}/04-data-structures-part1/)**\n" " - `?vector()` All items in a vector must be the same type.\n" " - Items can be converted from one type to another using *coercion*.\n" " - The concatenate function 'c()' will append items to a vector.\n" " - `seq(from=0, to=1, by=1)` will create a sequence of numbers.\n" " - Items in a vector can be named using the `names()` function." msgstr "" -" **[Vectors]({{ page.root }}/04-data-structures-part1/)**\n" -" - `?vector()` All items in a vector must be the same type.\n" -" - Items can be converted from one type to another using *coercion*.\n" -" - The concatenate function 'c()' will append items to a vector.\n" -" - `seq(from=0, to=1, by=1)` will create a sequence of numbers.\n" -" - Items in a vector can be named using the `names()` function." #: r-novice-gapminder/reference.md:99 -msgid "" -" **[Factors]({{ page.root }}/04-data-structures-part1/)**\n" +msgid " **[Factors]({{ page.root }}/04-data-structures-part1/)**\n" " - `?factor()` Factors are a data structure designed to store categorical data.\n" " - `levels()` shows the valid values that can be stored in a vector of type factor." msgstr "" -" **[Factors]({{ page.root }}/04-data-structures-part1/)**\n" -" - `?factor()` Factors are a data structure designed to store categorical data.\n" -" - `levels()` shows the valid values that can be stored in a vector of type factor." #: r-novice-gapminder/reference.md:103 -msgid "" -" **[Lists]({{ page.root }}/04-data-structures-part1/)**\n" +msgid " **[Lists]({{ page.root }}/04-data-structures-part1/)**\n" " - `?list()` Lists are a data structure designed to store data of different types." msgstr "" -" **[Lists]({{ page.root }}/04-data-structures-part1/)**\n" -" - `?list()` Lists are a data structure designed to store data of different types." #: r-novice-gapminder/reference.md:106 -msgid "" -" **[Matrices]({{ page.root }}/04-data-structures-part1/)**\n" +msgid " **[Matrices]({{ page.root }}/04-data-structures-part1/)**\n" " - `?matrix()` Matrices are a data structure designed to store 2-dimensional data." msgstr "" -" **[Matrices]({{ page.root }}/04-data-structures-part1/)**\n" -" - `?matrix()` Matrices are a data structure designed to store 2-dimensional data." #: r-novice-gapminder/reference.md:109 -msgid "" -" **[Data Frames]({{ page.root }}/05-data-structures-part2/)**\n" +msgid " **[Data Frames]({{ page.root }}/05-data-structures-part2/)**\n" " - `?data.frame` is a key data structure. It is a `list` of `vectors`.\n" " - `cbind()` will add a column (vector) to a data.frame.\n" " - `rbind()` will add a row (list) to a data.frame." msgstr "" -" **[Data Frames]({{ page.root }}/05-data-structures-part2/)**\n" -" - `?data.frame` is a key data structure. It is a `list` of `vectors`.\n" -" - `cbind()` will add a column (vector) to a data.frame.\n" -" - `rbind()` will add a row (list) to a data.frame." #: r-novice-gapminder/reference.md:114 -msgid "" -" **Useful functions for querying data structures:**\n" +msgid " **Useful functions for querying data structures:**\n" " - `?str` structure, prints out a summary of the whole data structure\n" " - `?typeof` tells you the type inside an atomic vector\n" " - `?class` what is the data structure?\n" @@ -21705,721 +13935,593 @@ msgid "" " - `?nrow`, `?ncol`, `?dim` get the dimensions of a n-dimensional object\n" " (Won't work on atomic vectors or lists)." msgstr "" -" **Useful functions for querying data structures:**\n" -" - `?str` structure, prints out a summary of the whole data structure\n" -" - `?typeof` tells you the type inside an atomic vector\n" -" - `?class` what is the data structure?\n" -" - `?head` print the first `n` elements (rows for two-dimensional objects)\n" -" - `?tail` print the last `n` elements (rows for two-dimensional objects)\n" -" - `?rownames`, `?colnames`, `?dimnames` retrieve or modify the row names\n" -" and column names of an object.\n" -" - `?names` retrieve or modify the names of an atomic vector or list (or\n" -" columns of a data.frame).\n" -" - `?length` get the number of elements in an atomic vector\n" -" - `?nrow`, `?ncol`, `?dim` get the dimensions of a n-dimensional object\n" -" (Won't work on atomic vectors or lists)." -# header #: r-novice-gapminder/reference.md:128 +# header msgid "## [Exploring Data Frames]({{ page.root }}/05-data-structures-part2/)" -msgstr "## [Exploring Data Frames]({{ page.root }}/05-data-structures-part2/)" +msgstr "" -# unordered list #: r-novice-gapminder/reference.md:130 +# unordered list msgid " - `read.csv` to read in data in a regular structure" -msgstr " - `read.csv` to read in data in a regular structure" +msgstr "" -# unordered list #: r-novice-gapminder/reference.md:131 +# unordered list msgid " - `sep` argument to specify the separator" -msgstr " - `sep` argument to specify the separator" +msgstr "" -# unordered list #: r-novice-gapminder/reference.md:132 +# unordered list msgid " - \",\" for comma separated" -msgstr " - \",\" for comma separated" +msgstr "" -# unordered list #: r-novice-gapminder/reference.md:133 +# unordered list msgid " - \"\\t\" for tab separated" -msgstr " - \"\\t\" for tab separated" +msgstr "" -# unordered list #: r-novice-gapminder/reference.md:134 +# unordered list msgid " - Other arguments:" -msgstr " - Other arguments:" +msgstr "" -# unordered list #: r-novice-gapminder/reference.md:135 +# unordered list msgid " - `header=TRUE` if there is a header row" -msgstr " - `header=TRUE` if there is a header row" +msgstr "" -# header #: r-novice-gapminder/reference.md:137 +# header msgid "## [Subsetting data]({{ page.root }}/06-data-subsetting/)" -msgstr "## [Subsetting data]({{ page.root }}/06-data-subsetting/)" +msgstr "" -# unordered list #: r-novice-gapminder/reference.md:139 +# unordered list msgid " - Elements can be accessed by:" -msgstr " - Elements can be accessed by:" +msgstr "" -# unordered list #: r-novice-gapminder/reference.md:140 +# unordered list msgid " - Index" -msgstr " - Index" +msgstr "" -# unordered list #: r-novice-gapminder/reference.md:141 +# unordered list msgid " - Name" -msgstr " - Name" +msgstr "" -# unordered list #: r-novice-gapminder/reference.md:142 +# unordered list msgid " - Logical vectors" -msgstr " - Logical vectors" +msgstr "" -# unordered list #: r-novice-gapminder/reference.md:144 +# unordered list msgid "- `[` single square brackets:" -msgstr "- `[` single square brackets:" +msgstr "" -# unordered list #: r-novice-gapminder/reference.md:145 +# unordered list msgid " - *extract* single elements or *subset* vectors" -msgstr " - *extract* single elements or *subset* vectors" +msgstr "" -# unordered list #: r-novice-gapminder/reference.md:146 +# unordered list msgid " - e.g.`x[1]` extracts the first item from vector x." -msgstr " - e.g.`x[1]` extracts the first item from vector x." +msgstr "" -# unordered list #: r-novice-gapminder/reference.md:147 +# unordered list msgid " - *extract* single elements of a list. The returned value will be another `list()`." -msgstr " - *extract* single elements of a list. The returned value will be another `list()`." +msgstr "" -# unordered list #: r-novice-gapminder/reference.md:148 +# unordered list msgid " - *extract* columns from a data.frame" -msgstr " - *extract* columns from a data.frame" +msgstr "" -# unordered list #: r-novice-gapminder/reference.md:149 +# unordered list msgid " - `[` with two arguments to:" -msgstr " - `[` with two arguments to:" +msgstr "" -# unordered list #: r-novice-gapminder/reference.md:150 +# unordered list msgid " - *extract* rows and/or columns of" -msgstr " - *extract* rows and/or columns of" +msgstr "" -# unordered list #: r-novice-gapminder/reference.md:151 +# unordered list msgid " - matrices" -msgstr " - matrices" +msgstr "" -# unordered list #: r-novice-gapminder/reference.md:152 +# unordered list msgid " - data.frames" -msgstr " - data.frames" +msgstr "" -# unordered list #: r-novice-gapminder/reference.md:153 +# unordered list msgid " - e.g. `x[1,2]` will extract the value in row 1, column 2." -msgstr " - e.g. `x[1,2]` will extract the value in row 1, column 2." +msgstr "" -# unordered list #: r-novice-gapminder/reference.md:154 +# unordered list msgid " - e.g. `x[2,:]` will extract the entire second column of values." -msgstr " - e.g. `x[2,:]` will extract the entire second column of values." +msgstr "" -# unordered list #: r-novice-gapminder/reference.md:156 +# unordered list msgid " - `[[` double square brackets to extract items from lists." -msgstr " - `[[` double square brackets to extract items from lists." +msgstr "" -# unordered list #: r-novice-gapminder/reference.md:157 +# unordered list msgid " - `$` to access columns or list elements by name" -msgstr " - `$` to access columns or list elements by name" +msgstr "" -# unordered list #: r-novice-gapminder/reference.md:158 +# unordered list msgid " - negative indices skip elements" -msgstr " - negative indices skip elements" +msgstr "" -# header #: r-novice-gapminder/reference.md:160 +# header msgid "## [Control flow]({{ page.root }}/07-control-flow/)" -msgstr "## [Control flow]({{ page.root }}/07-control-flow/)" +msgstr "" -# unordered list #: r-novice-gapminder/reference.md:162 -msgid " - Use `if` condition to start a conditional statement, `else if` condition to provide" -msgstr " - Use `if` condition to start a conditional statement, `else if` condition to provide" - -#: r-novice-gapminder/reference.md:163 -msgid "" -" additional tests, and `else` to provide a default\n" -" - The bodies of the branches of conditional statements must be indented.\n" -" - Use `==` to test for equality.\n" -" - `X && Y` is only true if both X and Y are `TRUE`.\n" -" - `X || Y` is true if either X or Y, or both, are `TRUE`.\n" -" - Zero is considered `FALSE`; all other numbers are considered `TRUE`\n" -" - Nest loops to operate on multi-dimensional data." +# unordered list +msgid " - Use `if` condition to start a conditional statement, `else if` condition to provide" msgstr "" -" additional tests, and `else` to provide a default\n" + +#: r-novice-gapminder/reference.md:163 +msgid " additional tests, and `else` to provide a default\n" " - The bodies of the branches of conditional statements must be indented.\n" " - Use `==` to test for equality.\n" " - `X && Y` is only true if both X and Y are `TRUE`.\n" " - `X || Y` is true if either X or Y, or both, are `TRUE`.\n" " - Zero is considered `FALSE`; all other numbers are considered `TRUE`\n" " - Nest loops to operate on multi-dimensional data." +msgstr "" -# header #: r-novice-gapminder/reference.md:171 +# header msgid "## [Creating publication quality graphics]({{ page.root }}/08-plot-ggplot2/)" -msgstr "## [Creating publication quality graphics]({{ page.root }}/08-plot-ggplot2/)" +msgstr "" -# unordered list #: r-novice-gapminder/reference.md:173 +# unordered list msgid " - figures can be created with the grammar of graphics:" -msgstr " - figures can be created with the grammar of graphics:" +msgstr "" -# unordered list #: r-novice-gapminder/reference.md:174 +# unordered list msgid " - `library(ggplot2)`" -msgstr " - `library(ggplot2)`" +msgstr "" -# unordered list #: r-novice-gapminder/reference.md:175 +# unordered list msgid " - `ggplot` to create the base figure" -msgstr " - `ggplot` to create the base figure" +msgstr "" -# unordered list #: r-novice-gapminder/reference.md:176 +# unordered list msgid " - `aes`thetics specify the data axes, shape, color, and data size" -msgstr " - `aes`thetics specify the data axes, shape, color, and data size" +msgstr "" -# unordered list #: r-novice-gapminder/reference.md:177 +# unordered list msgid " - `geom`etry functions specify the type of plot, e.g. `point`, `line`, `density`, `box`" -msgstr " - `geom`etry functions specify the type of plot, e.g. `point`, `line`, `density`, `box`" +msgstr "" -# unordered list #: r-novice-gapminder/reference.md:178 +# unordered list msgid " - `geom`etry functions also add statistical transforms, e.g. `geom_smooth`" -msgstr " - `geom`etry functions also add statistical transforms, e.g. `geom_smooth`" +msgstr "" -# unordered list #: r-novice-gapminder/reference.md:179 +# unordered list msgid " - `scale` functions change the mapping from data to aesthetics" -msgstr " - `scale` functions change the mapping from data to aesthetics" +msgstr "" -# unordered list #: r-novice-gapminder/reference.md:180 +# unordered list msgid " - `facet` functions stratify the figure into panels" -msgstr " - `facet` functions stratify the figure into panels" +msgstr "" -# unordered list #: r-novice-gapminder/reference.md:181 +# unordered list msgid " - `aes`thetics apply to individual layers, or can be set for the whole plot" -msgstr " - `aes`thetics apply to individual layers, or can be set for the whole plot" +msgstr "" #: r-novice-gapminder/reference.md:182 -msgid "" -" inside `ggplot`.\n" +msgid " inside `ggplot`.\n" " - `theme` functions change the overall look of the plot\n" " - order of layers matters!\n" " - `ggsave` to save a figure." msgstr "" -" inside `ggplot`.\n" -" - `theme` functions change the overall look of the plot\n" -" - order of layers matters!\n" -" - `ggsave` to save a figure." -# header #: r-novice-gapminder/reference.md:187 +# header msgid "## [Vectorization]({{ page.root }}/09-vectorization/)" -msgstr "## [Vectorization]({{ page.root }}/09-vectorization/)" +msgstr "" -# unordered list #: r-novice-gapminder/reference.md:189 +# unordered list msgid "- Most functions and operations apply to each element of a vector" -msgstr "- Most functions and operations apply to each element of a vector" +msgstr "" -# unordered list #: r-novice-gapminder/reference.md:190 +# unordered list msgid "- `*` applies element-wise to matrices" -msgstr "- `*` applies element-wise to matrices" +msgstr "" -# unordered list #: r-novice-gapminder/reference.md:191 +# unordered list msgid "- `%*%` for true matrix multiplication" -msgstr "- `%*%` for true matrix multiplication" +msgstr "" -# unordered list #: r-novice-gapminder/reference.md:192 +# unordered list msgid "- `any()` will return `TRUE` if any element of a vector is `TRUE`" -msgstr "- `any()` will return `TRUE` if any element of a vector is `TRUE`" +msgstr "" -# unordered list #: r-novice-gapminder/reference.md:193 +# unordered list msgid "- `all()` will return `TRUE` if *all* elements of a vector are `TRUE`" -msgstr "- `all()` will return `TRUE` if *all* elements of a vector are `TRUE`" +msgstr "" -# header #: r-novice-gapminder/reference.md:195 +# header msgid "## [Functions explained]({{ page.root }}/10-functions/)" -msgstr "## [Functions explained]({{ page.root }}/10-functions/)" +msgstr "" -# unordered list #: r-novice-gapminder/reference.md:197 +# unordered list msgid " - `?\"function\"`" -msgstr " - `?\"function\"`" +msgstr "" -# unordered list #: r-novice-gapminder/reference.md:198 +# unordered list msgid " - Put code whose parameters change frequently in a function, then call it with" -msgstr " - Put code whose parameters change frequently in a function, then call it with" +msgstr "" #: r-novice-gapminder/reference.md:199 -msgid "" -" different parameter values to customize its behavior.\n" +msgid " different parameter values to customize its behavior.\n" " - The last line of a function is returned, or you can use `return` explicitly\n" " - Any code written in the body of the function will preferably look for variables defined inside the function.\n" " - Document Why, then What, then lastly How (if the code isn't self explanatory)" msgstr "" -" different parameter values to customize its behavior.\n" -" - The last line of a function is returned, or you can use `return` explicitly\n" -" - Any code written in the body of the function will preferably look for variables defined inside the function.\n" -" - Document Why, then What, then lastly How (if the code isn't self explanatory)" -# header #: r-novice-gapminder/reference.md:204 +# header msgid "## [Writing data]({{ page.root }}/11-writing-data/)" -msgstr "## [Writing data]({{ page.root }}/11-writing-data/)" +msgstr "" -# unordered list #: r-novice-gapminder/reference.md:206 +# unordered list msgid " - `write.table` to write out objects in regular format" -msgstr " - `write.table` to write out objects in regular format" +msgstr "" -# unordered list #: r-novice-gapminder/reference.md:207 +# unordered list msgid " - set `quote=FALSE` so that text isn't wrapped in `\"` marks" -msgstr " - set `quote=FALSE` so that text isn't wrapped in `\"` marks" +msgstr "" -# header #: r-novice-gapminder/reference.md:209 +# header msgid "## [Split-apply-combine]({{ page.root }}/12-plyr/)" -msgstr "## [Split-apply-combine]({{ page.root }}/12-plyr/)" +msgstr "" -# unordered list #: r-novice-gapminder/reference.md:211 +# unordered list msgid " - Use the `xxply` family of functions to apply functions to groups within" -msgstr " - Use the `xxply` family of functions to apply functions to groups within" +msgstr "" #: r-novice-gapminder/reference.md:212 -msgid "" -" some data.\n" +msgid " some data.\n" " - the first letter, `a`rray , `d`ata.frame or `l`ist corresponds to the input data\n" " - the second letter denotes the output data structure\n" " - Anonymous functions (those not assigned a name) are used inside the `plyr` family\n" " of functions on groups within data." msgstr "" -" some data.\n" -" - the first letter, `a`rray , `d`ata.frame or `l`ist corresponds to the input data\n" -" - the second letter denotes the output data structure\n" -" - Anonymous functions (those not assigned a name) are used inside the `plyr` family\n" -" of functions on groups within data." -# header #: r-novice-gapminder/reference.md:218 +# header msgid "## [Dataframe manipulation with dplyr]({{ page.root }}/13-dplyr/)" -msgstr "## [Dataframe manipulation with dplyr]({{ page.root }}/13-dplyr/)" +msgstr "" -# unordered list #: r-novice-gapminder/reference.md:219 +# unordered list msgid " - `library(dplyr)`" -msgstr " - `library(dplyr)`" +msgstr "" -# unordered list #: r-novice-gapminder/reference.md:220 +# unordered list msgid " - `?select` to extract variables by name." -msgstr " - `?select` to extract variables by name." +msgstr "" -# unordered list #: r-novice-gapminder/reference.md:221 +# unordered list msgid " - `?filter` return rows with matching conditions." -msgstr " - `?filter` return rows with matching conditions." +msgstr "" -# unordered list #: r-novice-gapminder/reference.md:222 +# unordered list msgid " - `?group_by` group data by one of more variables." -msgstr " - `?group_by` group data by one of more variables." +msgstr "" -# unordered list #: r-novice-gapminder/reference.md:223 +# unordered list msgid " - `?summarize` summarize multiple values to a single value." -msgstr " - `?summarize` summarize multiple values to a single value." +msgstr "" -# unordered list #: r-novice-gapminder/reference.md:224 +# unordered list msgid " - `?mutate` add new variables to a data.frame." -msgstr " - `?mutate` add new variables to a data.frame." +msgstr "" -# unordered list #: r-novice-gapminder/reference.md:225 +# unordered list msgid " - Combine operations using the `?\"%>%\"` pipe operator." -msgstr " - Combine operations using the `?\"%>%\"` pipe operator." +msgstr "" -# header #: r-novice-gapminder/reference.md:227 +# header msgid "## [Dataframe manipulation with tidyr]({{ page.root }}/14-tidyr/)" -msgstr "## [Dataframe manipulation with tidyr]({{ page.root }}/14-tidyr/)" +msgstr "" -# unordered list #: r-novice-gapminder/reference.md:228 +# unordered list msgid "- `library(tidyr)`" -msgstr "- `library(tidyr)`" +msgstr "" -# unordered list #: r-novice-gapminder/reference.md:229 +# unordered list msgid "- '?gather' convert data from *wide* to *long* format." -msgstr "- '?gather' convert data from *wide* to *long* format." +msgstr "" -# unordered list #: r-novice-gapminder/reference.md:230 +# unordered list msgid "- '?spread' convert data from *long* to *wide* format." -msgstr "- '?spread' convert data from *long* to *wide* format." +msgstr "" -# unordered list #: r-novice-gapminder/reference.md:231 +# unordered list msgid "- '?separate' split a single value into multiple values." -msgstr "- '?separate' split a single value into multiple values." +msgstr "" -# unordered list #: r-novice-gapminder/reference.md:232 +# unordered list msgid "- '?unite' merge multiple values into a single value." -msgstr "- '?unite' merge multiple values into a single value." +msgstr "" -# header #: r-novice-gapminder/reference.md:234 +# header msgid "## [Producing reports with knitr]({{ page.root }}/15-knitr-markdown/)" -msgstr "## [Producing reports with knitr]({{ page.root }}/15-knitr-markdown/)" +msgstr "" -# unordered list #: r-novice-gapminder/reference.md:235 +# unordered list msgid "- Value of reproducible reports" -msgstr "- Value of reproducible reports" +msgstr "" -# unordered list #: r-novice-gapminder/reference.md:236 +# unordered list msgid "- Basics of Markdown" -msgstr "- Basics of Markdown" +msgstr "" -# unordered list #: r-novice-gapminder/reference.md:237 +# unordered list msgid "- R code chunks" -msgstr "- R code chunks" +msgstr "" -# unordered list #: r-novice-gapminder/reference.md:238 +# unordered list msgid "- Chunk options" -msgstr "- Chunk options" +msgstr "" -# unordered list #: r-novice-gapminder/reference.md:239 +# unordered list msgid "- Inline R code" -msgstr "- Inline R code" +msgstr "" -# unordered list #: r-novice-gapminder/reference.md:240 +# unordered list msgid "- Other output formats" -msgstr "- Other output formats" +msgstr "" -# header #: r-novice-gapminder/reference.md:242 +# header msgid "## [Best practices for writing good code]({{ page.root }}/16-wrap-up/)" -msgstr "## [Best practices for writing good code]({{ page.root }}/16-wrap-up/)" +msgstr "" -# unordered list #: r-novice-gapminder/reference.md:244 +# unordered list msgid " * Program defensively, i.e., assume that errors are going to arise, and write code to detect them when they do." -msgstr " * Program defensively, i.e., assume that errors are going to arise, and write code to detect them when they do." +msgstr "" -# unordered list #: r-novice-gapminder/reference.md:245 +# unordered list msgid " * Write tests before writing code in order to help determine exactly what that code is supposed to do." -msgstr " * Write tests before writing code in order to help determine exactly what that code is supposed to do." +msgstr "" -# unordered list #: r-novice-gapminder/reference.md:246 +# unordered list msgid " * Know what code is supposed to do before trying to debug it." -msgstr " * Know what code is supposed to do before trying to debug it." +msgstr "" -# unordered list #: r-novice-gapminder/reference.md:247 +# unordered list msgid " * Make it fail every time." -msgstr " * Make it fail every time." +msgstr "" -# unordered list #: r-novice-gapminder/reference.md:248 +# unordered list msgid " * Make it fail fast." -msgstr " * Make it fail fast." +msgstr "" -# unordered list #: r-novice-gapminder/reference.md:249 +# unordered list msgid " * Change one thing at a time, and for a reason." -msgstr " * Change one thing at a time, and for a reason." +msgstr "" -# unordered list #: r-novice-gapminder/reference.md:250 +# unordered list msgid " * Keep track of what you've done." -msgstr " * Keep track of what you've done." +msgstr "" -# unordered list #: r-novice-gapminder/reference.md:251 +# unordered list msgid " * Be humble" -msgstr " * Be humble" +msgstr "" #: r-novice-gapminder/reference.md:255 -msgid "" -"{:auto_ids}\n" +msgid "{:auto_ids}\n" "argument\n" ": A value given to a function or program when it runs.\n" " The term is often used interchangeably (and inconsistently) with [parameter](#parameter)." msgstr "" -"{:auto_ids}\n" -"argument\n" -": A value given to a function or program when it runs.\n" -" The term is often used interchangeably (and inconsistently) with [parameter](#parameter)." #: r-novice-gapminder/reference.md:260 -msgid "" -"assign\n" +msgid "assign\n" ": To give a value a name by associating a variable with it." msgstr "" -"assign\n" -": To give a value a name by associating a variable with it." #: r-novice-gapminder/reference.md:263 -msgid "" -"body\n" +msgid "body\n" ": (of a function): the statements that are executed when a function runs." msgstr "" -"body\n" -": (of a function): the statements that are executed when a function runs." #: r-novice-gapminder/reference.md:266 -msgid "" -"comment\n" +msgid "comment\n" ": A remark in a program that is intended to help human readers understand what is going on,\n" " but is ignored by the computer.\n" " Comments in Python, R, and the Unix shell start with a `#` character and run to the end of the line;\n" " comments in SQL start with `--`,\n" " and other languages have other conventions." msgstr "" -"comment\n" -": A remark in a program that is intended to help human readers understand what is going on,\n" -" but is ignored by the computer.\n" -" Comments in Python, R, and the Unix shell start with a `#` character and run to the end of the line;\n" -" comments in SQL start with `--`,\n" -" and other languages have other conventions." #: r-novice-gapminder/reference.md:273 -msgid "" -"comma-separated values\n" +msgid "comma-separated values\n" ": (CSV) A common textual representation for tables\n" " in which the values in each row are separated by commas." msgstr "" -"comma-separated values\n" -": (CSV) A common textual representation for tables\n" -" in which the values in each row are separated by commas." #: r-novice-gapminder/reference.md:277 -msgid "" -"delimiter\n" +msgid "delimiter\n" ": A character or characters used to separate individual values,\n" " such as the commas between columns in a [CSV](#comma-separated-values) file." msgstr "" -"delimiter\n" -": A character or characters used to separate individual values,\n" -" such as the commas between columns in a [CSV](#comma-separated-values) file." #: r-novice-gapminder/reference.md:281 -msgid "" -"documentation\n" +msgid "documentation\n" ": Human-language text written to explain what software does,\n" " how it works, or how to use it." msgstr "" -"documentation\n" -": Human-language text written to explain what software does,\n" -" how it works, or how to use it." #: r-novice-gapminder/reference.md:285 -msgid "" -"floating-point number\n" +msgid "floating-point number\n" ": A number containing a fractional part and an exponent.\n" " See also: [integer](#integer)." msgstr "" -"floating-point number\n" -": A number containing a fractional part and an exponent.\n" -" See also: [integer](#integer)." #: r-novice-gapminder/reference.md:289 -msgid "" -"for loop\n" +msgid "for loop\n" ": A loop that is executed once for each value in some kind of set, list, or range.\n" " See also: [while loop](#while-loop)." msgstr "" -"for loop\n" -": A loop that is executed once for each value in some kind of set, list, or range.\n" -" See also: [while loop](#while-loop)." #: r-novice-gapminder/reference.md:293 -msgid "" -"index\n" +msgid "index\n" ": A subscript that specifies the location of a single value in a collection,\n" " such as a single pixel in an image." msgstr "" -"index\n" -": A subscript that specifies the location of a single value in a collection,\n" -" such as a single pixel in an image." #: r-novice-gapminder/reference.md:297 -msgid "" -"integer\n" +msgid "integer\n" ": A whole number, such as -12343. See also: [floating-point number](#floating-point-number)." msgstr "" -"integer\n" -": A whole number, such as -12343. See also: [floating-point number](#floating-point-number)." #: r-novice-gapminder/reference.md:300 -msgid "" -"library\n" +msgid "library\n" ": In R, the directory(ies) where [packages](#package) are stored." msgstr "" -"library\n" -": In R, the directory(ies) where [packages](#package) are stored." #: r-novice-gapminder/reference.md:303 -msgid "" -"package\n" +msgid "package\n" ": A collection of R functions, data and compiled code in a well-defined format. Packages are stored in a [library](#library) and loaded using the library() function." msgstr "" -"package\n" -": A collection of R functions, data and compiled code in a well-defined format. Packages are stored in a [library](#library) and loaded using the library() function." #: r-novice-gapminder/reference.md:306 -msgid "" -"parameter\n" +msgid "parameter\n" ": A variable named in the function's declaration that is used to hold a value passed into the call.\n" " The term is often used interchangeably (and inconsistently) with [argument](#argument)." msgstr "" -"parameter\n" -": A variable named in the function's declaration that is used to hold a value passed into the call.\n" -" The term is often used interchangeably (and inconsistently) with [argument](#argument)." #: r-novice-gapminder/reference.md:310 -msgid "" -"return statement\n" +msgid "return statement\n" ": A statement that causes a function to stop executing and return a value to its caller immediately." msgstr "" -"return statement\n" -": A statement that causes a function to stop executing and return a value to its caller immediately." #: r-novice-gapminder/reference.md:313 -msgid "" -"sequence\n" +msgid "sequence\n" ": A collection of information that is presented in a specific order." msgstr "" -"sequence\n" -": A collection of information that is presented in a specific order." #: r-novice-gapminder/reference.md:316 -msgid "" -"shape\n" +msgid "shape\n" ": An array's dimensions, represented as a vector.\n" " For example, a 5×3 array's shape is `(5,3)`." msgstr "" -"shape\n" -": An array's dimensions, represented as a vector.\n" -" For example, a 5×3 array's shape is `(5,3)`." #: r-novice-gapminder/reference.md:320 -msgid "" -"string\n" +msgid "string\n" ": Short for \"character string\",\n" " a [sequence](#sequence) of zero or more characters." msgstr "" -"string\n" -": Short for \"character string\",\n" -" a [sequence](#sequence) of zero or more characters." #: r-novice-gapminder/reference.md:324 -msgid "" -"syntax error\n" +msgid "syntax error\n" ": A programming error that occurs when statements are in an order or contain characters\n" " not expected by the programming language." msgstr "" -"syntax error\n" -": A programming error that occurs when statements are in an order or contain characters\n" -" not expected by the programming language." #: r-novice-gapminder/reference.md:328 -msgid "" -"type\n" +msgid "type\n" ": The classification of something in a program (for example, the contents of a variable)\n" " as a kind of number (e.g. [floating-point](#float), [integer](#integer)), [string](#string),\n" " or something else. In R the command typeof() is used to query a variables type." msgstr "" -"type\n" -": The classification of something in a program (for example, the contents of a variable)\n" -" as a kind of number (e.g. [floating-point](#float), [integer](#integer)), [string](#string),\n" -" or something else. In R the command typeof() is used to query a variables type." #: r-novice-gapminder/reference.md:333 -msgid "" -"while loop\n" +msgid "while loop\n" ": A loop that keeps executing as long as some condition is true.\n" " See also: [for loop](#for-loop)." msgstr "" -"while loop\n" -": A loop that keeps executing as long as some condition is true.\n" -" See also: [for loop](#for-loop)." -# Front Matter #: r-novice-gapminder/setup.md:1 -msgid "" -"---\n" +# Front Matter +msgid "---\n" "layout: page\n" "title: Setup\n" "root: .\n" "---" msgstr "" -"---\n" -"layout: page\n" -"title: Setup\n" -"root: .\n" -"---" #: r-novice-gapminder/setup.md:7 msgid "This lesson assumes you have the R, RStudio software installed on your computer." -msgstr "This lesson assumes you have the R, RStudio software installed on your computer." +msgstr "" #: r-novice-gapminder/setup.md:9 msgid "R can be downloaded [here](https://cran.r-project.org/mirrors.html)." -msgstr "R can be downloaded [here](https://cran.r-project.org/mirrors.html)." +msgstr "" #: r-novice-gapminder/setup.md:11 -msgid "" -"RStudio is an environment for developing using R.\n" +msgid "RStudio is an environment for developing using R.\n" "It can be downloaded [here](https://www.rstudio.com/products/rstudio/download/).\n" "You will need the Desktop version for your computer." msgstr "" -"RStudio is an environment for developing using R.\n" -"It can be downloaded [here](https://www.rstudio.com/products/rstudio/download/).\n" -"You will need the Desktop version for your computer." + diff --git a/po/.ancestors/.r-novice-inflammation.ja.po.ancestor b/po/.ancestors/.r-novice-inflammation.ja.po.ancestor new file mode 100644 index 00000000..1bc5b87d --- /dev/null +++ b/po/.ancestors/.r-novice-inflammation.ja.po.ancestor @@ -0,0 +1,1848 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: i18n\n" +"Report-Msgid-Bugs-To: https://github.com/haiwen/seafile-docs/issues\n" +"POT-Creation-Date: 2018-09-16 01:25:37+0900\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: r-novice-inflammation/CODE_OF_CONDUCT.md:1 +# Front Matter +msgid "---\n" +"layout: page\n" +"title: \"Contributor Code of Conduct\"\n" +"---" +msgstr "" + +#: r-novice-inflammation/CODE_OF_CONDUCT.md:5 +msgid "As contributors and maintainers of this project,\n" +"we pledge to follow the [Carpentry Code of Conduct][coc]." +msgstr "" + +#: r-novice-inflammation/CODE_OF_CONDUCT.md:8 +msgid "Instances of abusive, harassing, or otherwise unacceptable behavior\n" +"may be reported by following our [reporting guidelines][coc-reporting]." +msgstr "" + +#: r-novice-inflammation/CODE_OF_CONDUCT.md:11 +#: r-novice-inflammation/bin/boilerplate/_episodes/01-introduction.md:14 +#: r-novice-inflammation/bin/boilerplate/_extras/discuss.md:6 +#: r-novice-inflammation/bin/boilerplate/_extras/figures.md:68 +#: r-novice-inflammation/bin/boilerplate/_extras/guide.md:6 +#: r-novice-inflammation/bin/boilerplate/index.md:13 +#: r-novice-inflammation/bin/boilerplate/reference.md:9 +#: r-novice-inflammation/bin/boilerplate/setup.md:7 +msgid "{% include links.md %}" +msgstr "" + +#: r-novice-inflammation/CONTRIBUTING.md:1 +#: r-novice-inflammation/bin/boilerplate/CONTRIBUTING.md:1 +# header +msgid "# Contributing" +msgstr "" + +#: r-novice-inflammation/CONTRIBUTING.md:3 +#: r-novice-inflammation/bin/boilerplate/CONTRIBUTING.md:3 +msgid "[Software Carpentry][swc-site] and [Data Carpentry][dc-site] are open source projects,\n" +"and we welcome contributions of all kinds:\n" +"new lessons,\n" +"fixes to existing material,\n" +"bug reports,\n" +"and reviews of proposed changes are all welcome." +msgstr "" + +#: r-novice-inflammation/CONTRIBUTING.md:10 +#: r-novice-inflammation/bin/boilerplate/CONTRIBUTING.md:10 +# header +msgid "## Contributor Agreement" +msgstr "" + +#: r-novice-inflammation/CONTRIBUTING.md:12 +#: r-novice-inflammation/bin/boilerplate/CONTRIBUTING.md:12 +msgid "By contributing,\n" +"you agree that we may redistribute your work under [our license](LICENSE.md).\n" +"In exchange,\n" +"we will address your issues and/or assess your change proposal as promptly as we can,\n" +"and help you become a member of our community.\n" +"Everyone involved in [Software Carpentry][swc-site] and [Data Carpentry][dc-site]\n" +"agrees to abide by our [code of conduct](CODE_OF_CONDUCT.md)." +msgstr "" + +#: r-novice-inflammation/CONTRIBUTING.md:20 +#: r-novice-inflammation/bin/boilerplate/CONTRIBUTING.md:20 +# header +msgid "## How to Contribute" +msgstr "" + +#: r-novice-inflammation/CONTRIBUTING.md:22 +#: r-novice-inflammation/bin/boilerplate/CONTRIBUTING.md:22 +msgid "The easiest way to get started is to file an issue\n" +"to tell us about a spelling mistake,\n" +"some awkward wording,\n" +"or a factual error.\n" +"This is a good way to introduce yourself\n" +"and to meet some of our community members." +msgstr "" + +#: r-novice-inflammation/CONTRIBUTING.md:29 +#: r-novice-inflammation/bin/boilerplate/CONTRIBUTING.md:29 +# ordered list +msgid "1. If you do not have a [GitHub][github] account," +msgstr "" + +#: r-novice-inflammation/CONTRIBUTING.md:30 +msgid " you can [send us comments by email][contact].\n" +" However,\n" +" we will be able to respond more quickly if you use one of the other methods described below." +msgstr "" + +#: r-novice-inflammation/CONTRIBUTING.md:34 +#: r-novice-inflammation/bin/boilerplate/CONTRIBUTING.md:34 +# ordered list +msgid "2. If you have a [GitHub][github] account," +msgstr "" + +#: r-novice-inflammation/CONTRIBUTING.md:35 +#: r-novice-inflammation/bin/boilerplate/CONTRIBUTING.md:35 +msgid " or are willing to [create one][github-join],\n" +" but do not know how to use Git,\n" +" you can report problems or suggest improvements by [creating an issue][issues].\n" +" This allows us to assign the item to someone\n" +" and to respond to it in a threaded discussion." +msgstr "" + +#: r-novice-inflammation/CONTRIBUTING.md:41 +#: r-novice-inflammation/bin/boilerplate/CONTRIBUTING.md:41 +# ordered list +msgid "3. If you are comfortable with Git," +msgstr "" + +#: r-novice-inflammation/CONTRIBUTING.md:42 +msgid " and would like to resolve an existing issue that's been labeled by the maintainers \n" +" or typos/bugs, you can submit a pull request (PR). \n" +" Since the episode markdown files are generated from \n" +" the R markdown files, please commit changes to files in `_episodes_rmd` *not* `_episodes_md`. We deeply appreciate \n" +" your contributions but we cannot merge changes made directly to the markdown files.\n" +" Further instructions for submitting a PR [included below](#using-github). \n" +" If you'd like to suggest substantial changes such as removing or adding topics in the lesson,\n" +" please first raise an issue to allow the maintainers to comment, so we can discuss whether/how these\n" +" changes should be made." +msgstr "" + +#: r-novice-inflammation/CONTRIBUTING.md:52 +msgid "Issues in this repository are labeled with [labels](../../labels) by the maintainers, \n" +"which you may find useful for navigating open issues." +msgstr "" + +#: r-novice-inflammation/CONTRIBUTING.md:56 +#: r-novice-inflammation/bin/boilerplate/CONTRIBUTING.md:46 +# header +msgid "## Where to Contribute" +msgstr "" + +#: r-novice-inflammation/CONTRIBUTING.md:58 +#: r-novice-inflammation/bin/boilerplate/CONTRIBUTING.md:48 +# ordered list +msgid "1. If you wish to change this lesson," +msgstr "" + +#: r-novice-inflammation/CONTRIBUTING.md:59 +msgid " please work in ,\n" +" which can be viewed at ." +msgstr "" + +#: r-novice-inflammation/CONTRIBUTING.md:62 +#: r-novice-inflammation/bin/boilerplate/CONTRIBUTING.md:52 +# ordered list +msgid "2. If you wish to change the example lesson," +msgstr "" + +#: r-novice-inflammation/CONTRIBUTING.md:63 +#: r-novice-inflammation/bin/boilerplate/CONTRIBUTING.md:53 +msgid " please work in ,\n" +" which documents the format of our lessons\n" +" and can be viewed at ." +msgstr "" + +#: r-novice-inflammation/CONTRIBUTING.md:67 +#: r-novice-inflammation/bin/boilerplate/CONTRIBUTING.md:57 +# ordered list +msgid "3. If you wish to change the template used for workshop websites," +msgstr "" + +#: r-novice-inflammation/CONTRIBUTING.md:68 +#: r-novice-inflammation/bin/boilerplate/CONTRIBUTING.md:58 +msgid " please work in .\n" +" The home page of that repository explains how to set up workshop websites,\n" +" while the extra pages in \n" +" provide more background on our design choices." +msgstr "" + +#: r-novice-inflammation/CONTRIBUTING.md:73 +#: r-novice-inflammation/bin/boilerplate/CONTRIBUTING.md:63 +# ordered list +msgid "4. If you wish to change CSS style files, tools," +msgstr "" + +#: r-novice-inflammation/CONTRIBUTING.md:74 +#: r-novice-inflammation/bin/boilerplate/CONTRIBUTING.md:64 +msgid " or HTML boilerplate for lessons or workshops stored in `_includes` or `_layouts`,\n" +" please work in ." +msgstr "" + +#: r-novice-inflammation/CONTRIBUTING.md:77 +#: r-novice-inflammation/bin/boilerplate/CONTRIBUTING.md:67 +# header +msgid "## What to Contribute" +msgstr "" + +#: r-novice-inflammation/CONTRIBUTING.md:79 +msgid "There are many ways to contribute,\n" +"from writing new exercises and improving existing ones\n" +"to updating or filling in the documentation\n" +"and submitting [bug reports][issues]\n" +"about things that don't work, aren't clear, or are missing.\n" +"If you are looking for ideas,\n" +"please see [the list of issues for this repository][issues],\n" +"or the issues for [Data Carpentry][dc-issues]\n" +"and [Software Carpentry][swc-issues] projects." +msgstr "" + +#: r-novice-inflammation/CONTRIBUTING.md:89 +#: r-novice-inflammation/bin/boilerplate/CONTRIBUTING.md:79 +msgid "Comments on issues and reviews of pull requests are just as welcome:\n" +"we are smarter together than we are on our own.\n" +"Reviews from novices and newcomers are particularly valuable:\n" +"it's easy for people who have been using these lessons for a while\n" +"to forget how impenetrable some of this material can be,\n" +"so fresh eyes are always welcome." +msgstr "" + +#: r-novice-inflammation/CONTRIBUTING.md:96 +#: r-novice-inflammation/bin/boilerplate/CONTRIBUTING.md:86 +# header +msgid "## What *Not* to Contribute" +msgstr "" + +#: r-novice-inflammation/CONTRIBUTING.md:98 +#: r-novice-inflammation/bin/boilerplate/CONTRIBUTING.md:88 +msgid "Our lessons already contain more material than we can cover in a typical workshop,\n" +"so we are usually *not* looking for more concepts or tools to add to them.\n" +"As a rule,\n" +"if you want to introduce a new idea,\n" +"you must (a) estimate how long it will take to teach\n" +"and (b) explain what you would take out to make room for it.\n" +"The first encourages contributors to be honest about requirements;\n" +"the second, to think hard about priorities." +msgstr "" + +#: r-novice-inflammation/CONTRIBUTING.md:107 +msgid "We are also not looking for exercises or other material that only run on one platform.\n" +"Our workshops typically contain a mixture of Windows, Mac OS X, and Linux users;\n" +"in order to be usable,\n" +"our lessons must run equally well on all three." +msgstr "" + +#: r-novice-inflammation/CONTRIBUTING.md:112 +#: r-novice-inflammation/bin/boilerplate/CONTRIBUTING.md:102 +# header +msgid "## Using GitHub" +msgstr "" + +#: r-novice-inflammation/CONTRIBUTING.md:114 +msgid "If you choose to contribute via GitHub,\n" +"you may want to look at\n" +"[How to Contribute to an Open Source Project on GitHub][how-contribute].\n" +"In brief:" +msgstr "" + +#: r-novice-inflammation/CONTRIBUTING.md:119 +# ordered list +msgid "1. The published copy of the lesson is in the `gh-pages` branch of the repository and is " +msgstr "" + +#: r-novice-inflammation/CONTRIBUTING.md:120 +msgid " automatically generated by Travis from the `master` branch.\n" +" Please create all branches from the `master` branch,\n" +" and merge the [master repository][repo]'s `master` branch into your `master` branch\n" +" before starting work.\n" +" Please do *not* work directly in your `master` branch,\n" +" since that will make it difficult for you to work on other contributions.\n" +" Please do *not* issue a pull request against this repo's `gh-pages` branch since that \n" +" will not be preserved when the site is rebuilt." +msgstr "" + +#: r-novice-inflammation/CONTRIBUTING.md:129 +# ordered list +msgid "2. We use [GitHub flow][github-flow] to manage changes:" +msgstr "" + +#: r-novice-inflammation/CONTRIBUTING.md:130 +msgid " 1. Create a new branch in your desktop copy of this repository for each significant change.\n" +" 2. Commit the change in that branch.\n" +" 3. Push that branch to your fork of this repository on GitHub.\n" +" 4. Submit a pull request from that branch to the [master repository][repo].\n" +" 5. If you receive feedback,\n" +" make changes on your desktop and push to your branch on GitHub:\n" +" the pull request will update automatically." +msgstr "" + +#: r-novice-inflammation/CONTRIBUTING.md:138 +msgid "Each lesson has several maintainers who review issues and pull requests\n" +"or encourage others to do so.\n" +"The maintainers are community volunteers,\n" +"and have final say over what gets merged into the lesson." +msgstr "" + +#: r-novice-inflammation/CONTRIBUTING.md:143 +#: r-novice-inflammation/bin/boilerplate/CONTRIBUTING.md:129 +# header +msgid "## Other Resources" +msgstr "" + +#: r-novice-inflammation/CONTRIBUTING.md:145 +msgid "General discussion of [Software Carpentry][swc-site] and [Data Carpentry][dc-site]\n" +"happens on the [discussion mailing list][discuss-list],\n" +"which everyone is welcome to join.\n" +"You can also [reach us by email][contact]." +msgstr "" + +#: r-novice-inflammation/CONTRIBUTING.md:150 +msgid "[contact]: mailto:admin@software-carpentry.org\n" +"[dc-issues]: https://github.com/issues?q=user%3Adatacarpentry\n" +"[dc-lessons]: http://datacarpentry.org/lessons/\n" +"[dc-site]: http://datacarpentry.org/\n" +"[discuss-list]: http://lists.software-carpentry.org/listinfo/discuss\n" +"[github]: http://github.com\n" +"[github-flow]: https://guides.github.com/introduction/flow/\n" +"[github-join]: https://github.com/join\n" +"[how-contribute]: https://egghead.io/series/how-to-contribute-to-an-open-source-project-on-github\n" +"[issues]: https://github.com/swcarpentry/r-novice-inflammation/issues/\n" +"[repo]: https://github.com/swcarpentry/r-novice-inflammation/\n" +"[swc-issues]: https://github.com/issues?q=user%3Aswcarpentry\n" +"[swc-lessons]: http://software-carpentry.org/lessons/\n" +"[swc-site]: http://software-carpentry.org/" +msgstr "" + +#: r-novice-inflammation/LICENSE.md:1 +# Front Matter +msgid "---\n" +"layout: page\n" +"title: \"Licenses\"\n" +"root: .\n" +"---" +msgstr "" + +#: r-novice-inflammation/LICENSE.md:6 +# header +msgid "## Instructional Material" +msgstr "" + +#: r-novice-inflammation/LICENSE.md:8 +msgid "All Software Carpentry and Data Carpentry instructional material is\n" +"made available under the [Creative Commons Attribution\n" +"license][cc-by-human]. The following is a human-readable summary of\n" +"(and not a substitute for) the [full legal text of the CC BY 4.0\n" +"license][cc-by-legal]." +msgstr "" + +#: r-novice-inflammation/LICENSE.md:14 +msgid "You are free:" +msgstr "" + +#: r-novice-inflammation/LICENSE.md:16 +# unordered list +msgid "* to **Share**---copy and redistribute the material in any medium or format" +msgstr "" + +#: r-novice-inflammation/LICENSE.md:17 +# unordered list +msgid "* to **Adapt**---remix, transform, and build upon the material" +msgstr "" + +#: r-novice-inflammation/LICENSE.md:19 +msgid "for any purpose, even commercially." +msgstr "" + +#: r-novice-inflammation/LICENSE.md:21 +msgid "The licensor cannot revoke these freedoms as long as you follow the\n" +"license terms." +msgstr "" + +#: r-novice-inflammation/LICENSE.md:24 +msgid "Under the following terms:" +msgstr "" + +#: r-novice-inflammation/LICENSE.md:26 +# unordered list +msgid "* **Attribution**---You must give appropriate credit (mentioning that" +msgstr "" + +#: r-novice-inflammation/LICENSE.md:27 +msgid " your work is derived from work that is Copyright © Software\n" +" Carpentry and, where practical, linking to\n" +" http://software-carpentry.org/), provide a [link to the\n" +" license][cc-by-human], and indicate if changes were made. You may do\n" +" so in any reasonable manner, but not in any way that suggests the\n" +" licensor endorses you or your use." +msgstr "" + +#: r-novice-inflammation/LICENSE.md:34 +msgid "**No additional restrictions**---You may not apply legal terms or\n" +"technological measures that legally restrict others from doing\n" +"anything the license permits. With the understanding that:" +msgstr "" + +#: r-novice-inflammation/LICENSE.md:38 +msgid "Notices:" +msgstr "" + +#: r-novice-inflammation/LICENSE.md:40 +# unordered list +msgid "* You do not have to comply with the license for elements of the" +msgstr "" + +#: r-novice-inflammation/LICENSE.md:41 +msgid " material in the public domain or where your use is permitted by an\n" +" applicable exception or limitation.\n" +"* No warranties are given. The license may not give you all of the\n" +" permissions necessary for your intended use. For example, other\n" +" rights such as publicity, privacy, or moral rights may limit how you\n" +" use the material." +msgstr "" + +#: r-novice-inflammation/LICENSE.md:48 +# header +msgid "## Software" +msgstr "" + +#: r-novice-inflammation/LICENSE.md:50 +msgid "Except where otherwise noted, the example programs and other software\n" +"provided by Software Carpentry and Data Carpentry are made available under the\n" +"[OSI][osi]-approved\n" +"[MIT license][mit-license]." +msgstr "" + +#: r-novice-inflammation/LICENSE.md:55 +msgid "Permission is hereby granted, free of charge, to any person obtaining\n" +"a copy of this software and associated documentation files (the\n" +"\"Software\"), to deal in the Software without restriction, including\n" +"without limitation the rights to use, copy, modify, merge, publish,\n" +"distribute, sublicense, and/or sell copies of the Software, and to\n" +"permit persons to whom the Software is furnished to do so, subject to\n" +"the following conditions:" +msgstr "" + +#: r-novice-inflammation/LICENSE.md:63 +msgid "The above copyright notice and this permission notice shall be\n" +"included in all copies or substantial portions of the Software." +msgstr "" + +#: r-novice-inflammation/LICENSE.md:66 +msgid "THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n" +"EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n" +"MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n" +"NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\n" +"LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\n" +"OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\n" +"WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." +msgstr "" + +#: r-novice-inflammation/LICENSE.md:74 +# header +msgid "## Trademark" +msgstr "" + +#: r-novice-inflammation/LICENSE.md:76 +msgid "\"Software Carpentry\" and \"Data Carpentry\" and their respective logos\n" +"are registered trademarks of [Community Initiatives][CI]." +msgstr "" + +#: r-novice-inflammation/LICENSE.md:79 +msgid "[cc-by-human]: https://creativecommons.org/licenses/by/4.0/\n" +"[cc-by-legal]: https://creativecommons.org/licenses/by/4.0/legalcode\n" +"[mit-license]: https://opensource.org/licenses/mit-license.html\n" +"[ci]: http://communityin.org/\n" +"[osi]: https://opensource.org" +msgstr "" + +#: r-novice-inflammation/README.md:1 +msgid "[![Build Status](https://travis-ci.org/swcarpentry/r-novice-inflammation.svg?branch=master)](https://travis-ci.org/swcarpentry/r-novice-inflammation)\n" +"[![Create a Slack Account with us](https://img.shields.io/badge/Create_Slack_Account-The_Carpentries-071159.svg)](https://swc-slack-invite.herokuapp.com/) \n" +" [![Slack Status](https://img.shields.io/badge/Slack_Channel-swc--r--inflammation-E01563.svg)](https://swcarpentry.slack.com/messages/C9WDPCMUG) " +msgstr "" + +#: r-novice-inflammation/README.md:5 +msgid "r-novice-inflammation\n" +"=====================" +msgstr "" + +#: r-novice-inflammation/README.md:8 +msgid "Introduction to R for non-programmers using inflammation data." +msgstr "" + +#: r-novice-inflammation/README.md:10 +msgid "Current maintainers:" +msgstr "" + +#: r-novice-inflammation/README.md:12 +# unordered list +msgid "* Katrin Leinweber (@katrinleinweber)" +msgstr "" + +#: r-novice-inflammation/README.md:13 +# unordered list +msgid "* [Diya Das](https://diyadas.github.io) (@diyadas)" +msgstr "" + +#: r-novice-inflammation/README.md:14 +# unordered list +msgid "* [Daniel Chen](http://software-carpentry.org/team/#chen_daniel) (@chendaniely)" +msgstr "" + +#: r-novice-inflammation/README.md:16 +msgid "The goal of this lesson is to teach novice programmers to write modular code to\n" +"perform a data analysis. R is used to teach these skills because it is a\n" +"commonly used programming language in many scientific disciplines. However, the\n" +"emphasis is not on teaching every aspect of R, but instead on\n" +"language agnostic principles like automation with loops and encapsulation with\n" +"functions (see [Best Practices for Scientific Computing][best-practices] to\n" +"learn more). This lesson is a translation of the [Python version][py],\n" +"and is also available in [MATLAB][MATLAB]." +msgstr "" + +#: r-novice-inflammation/README.md:25 +msgid "The example used in this lesson analyzes a set of 12 data files with\n" +"inflammation data collected from a trial for a new treatment for arthritis (the\n" +"data was simulated). Learners are shown how it is better to create a function\n" +"and apply it to each of the 12 files using a loop instead of using copy-paste\n" +"to analyze the 12 files individually." +msgstr "" + +#: r-novice-inflammation/README.md:31 +msgid "[best-practices]: http://journals.plos.org/plosbiology/article?id=10.1371/journal.pbio.1001745\n" +"[py]: https://github.com/swcarpentry/python-novice-inflammation\n" +"[MATLAB]: https://github.com/swcarpentry/matlab-novice-inflammation" +msgstr "" + +#: r-novice-inflammation/README.md:35 +#: r-novice-inflammation/bin/boilerplate/README.md:7 +# header +msgid "## Contributing" +msgstr "" + +#: r-novice-inflammation/README.md:37 +msgid "Please see the current list of [issues][] for ideas for contributing to this\n" +"repository. For making your contribution, we use the GitHub flow, which is\n" +"nicely explained in the chapter [Contributing to a Project][pro-git] in Pro Git\n" +"by Scott Chacon." +msgstr "" + +#: r-novice-inflammation/README.md:42 +msgid "General instructions for making contributions are summarized in [CONTRIBUTING.md](https://github.com/swcarpentry/r-novice-inflammation/blob/master/CONTRIBUTING.md).\n" +"When editing topic pages for R lessons, you should change the source R Markdown\n" +"file (*.Rmd). Only changes to R markdown files and other supporting files (e.g. data files) should be committed to Git." +msgstr "" + +#: r-novice-inflammation/README.md:46 +msgid "To view how the changes will look, when viewed in a web browser, you can render the html pages by running `make serve` from the base of the repository. Generating the html file(s) is required for viewing the [online version of the lessons][online] (you can learn more about the [design of the build process][design]). Building the rendered page with the Makefile requires installing some dependencies first. In addition to the dependencies listed in the [lesson template documentation][dependencies], you also need to install the R package [knitr][]." +msgstr "" + +#: r-novice-inflammation/README.md:48 +msgid "Once you've made your edits and rendered the corresponding html files,\n" +"you need to add, commit, and push just the source R Markdown file(s)\n" +"and any supporting files (e.g. data files). Changes generated by the `make serve` command should not be committed or included in a pull request. These changes will be taken care of by the lesson maintainer when the PR is merged." +msgstr "" + +#: r-novice-inflammation/README.md:52 +# header +msgid "## Getting Help" +msgstr "" + +#: r-novice-inflammation/README.md:54 +msgid "Please see [https://github.com/carpentries/lesson-example](https://github.com/carpentries/lesson-example)\n" +"for instructions on formatting, building, and submitting lessons,\n" +"or run `make` in this directory for a list of helpful commands." +msgstr "" + +#: r-novice-inflammation/README.md:58 +msgid "If you have questions or proposals, please send them to the [r-discuss][] mailing list." +msgstr "" + +#: r-novice-inflammation/README.md:60 +msgid "[dependencies]: https://github.com/carpentries/lesson-example#dependencies\n" +"[design]: https://github.com/carpentries/lesson-example/blob/master/DESIGN.md\n" +"[issues]: https://github.com/swcarpentry/r-novice-inflammation/issues\n" +"[knitr]: https://cran.r-project.org/package=knitr\n" +"[online]: http://swcarpentry.github.io/r-novice-inflammation/\n" +"[pro-git]: http://git-scm.com/book/en/v2/GitHub-Contributing-to-a-Project\n" +"[r-discuss]: http://lists.software-carpentry.org/mailman/listinfo/r-discuss_lists.software-carpentry.org" +msgstr "" + +#: r-novice-inflammation/_extras/about.md:1 +# Front Matter +msgid "---\n" +"layout: page\n" +"title: About\n" +"permalink: /about/\n" +"---" +msgstr "" + +#: r-novice-inflammation/_extras/about.md:6 +msgid "{% include carpentries.html %}" +msgstr "" + +#: r-novice-inflammation/_extras/discuss.md:1 +# Front Matter +msgid "---\n" +"layout: page\n" +"title: Discussion\n" +"permalink: /discuss/\n" +"---" +msgstr "" + +#: r-novice-inflammation/_extras/discuss.md:7 +# header +msgid "## Error returned when attempting to calculate mean of data.frame rows" +msgstr "" + +#: r-novice-inflammation/_extras/discuss.md:9 +msgid "As of R version 3.0.0 one cannot use functions such as `mean()`, `max()`,\n" +"`min()`, etc., on `data.frame` rows. This can be a problem\n" +"when going through material in the [Creating functions]({{ page.root }}/02-func-R/) lesson,\n" +"**Testing and Documenting** section, if one attempts to apply any of these\n" +"functions to the example dataset rows (e.g., `center(dat[4, ], 0)`. The\n" +"examples in the lesson are all written to work only with columns, but\n" +"an error is returned if one tries using rows. This may also be a problem\n" +"if one attempts to calculate row means or medians in the\n" +"[Analyzing patient data]({{ page.root }}/01-starting-with-data/) lesson,\n" +"**Manipulating Data** section.\n" +"The **recommended solution** to this issue is to not apply these functions\n" +"to `data.frame` rows. However, one *could* get around this issue by\n" +"using the functions `rowSums` or `rowMeans` in some cases, or\n" +"explicitly converting the row to a vector of numeric values\n" +"(e.g., `center(as.numeric(dat[4, ]), 0)`)" +msgstr "" + +#: r-novice-inflammation/_extras/figures.md:1 +# Front Matter +msgid "---\n" +"layout: page\n" +"title: Figures\n" +"permalink: /figures/\n" +"---" +msgstr "" + +#: r-novice-inflammation/_extras/figures.md:6 +msgid "{% include all_figures.html %}" +msgstr "" + +#: r-novice-inflammation/_extras/guide.md:1 +# Front Matter +msgid "---\n" +"layout: page\n" +"title: \"Instructor Notes\"\n" +"permalink: /guide/\n" +"---" +msgstr "" + +#: r-novice-inflammation/_extras/guide.md:7 +msgid "This lesson is written as an introduction to R,\n" +"but its real purpose is to introduce the single most important idea in programming:\n" +"how to solve problems by building functions,\n" +"each of which can fit in a programmer's working memory.\n" +"In order to teach that,\n" +"we must teach people a little about\n" +"the mechanics of manipulating data with lists and file I/O\n" +"so that their functions can do things they actually care about.\n" +"Our teaching order tries to show practical uses of every idea as soon as it is introduced;\n" +"instructors should resist the temptation to explain\n" +"the \"other 90%\" of the language\n" +"as well." +msgstr "" + +#: r-novice-inflammation/_extras/guide.md:20 +msgid "The secondary goal of this lesson is to give them a usable mental model of how programs run\n" +"(what computer science educators call a [notional machine]({{ page.root }}/reference.html#notional-machine)\n" +"so that they can debug things when they go wrong.\n" +"In particular,\n" +"they must understand how function call stacks work." +msgstr "" + +#: r-novice-inflammation/_extras/guide.md:26 +msgid "The final example asks them to build a command-line tool\n" +"that works with the Unix pipe-and-filter model.\n" +"We do this because it is a useful skill\n" +"and because it helps learners see that the software they use isn't magical.\n" +"Tools like `grep` might be more sophisticated than\n" +"the programs our learners can write at this point in their careers,\n" +"but it's crucial they realize this is a difference of scale rather than kind." +msgstr "" + +#: r-novice-inflammation/_extras/guide.md:34 +msgid "A typical, half-day, lesson would use the first three lessons:" +msgstr "" + +#: r-novice-inflammation/_extras/guide.md:36 +# ordered list +msgid "1. [Analyzing Patient Data]({{ page.root }}/01-starting-with-data/)" +msgstr "" + +#: r-novice-inflammation/_extras/guide.md:37 +# ordered list +msgid "2. [Creating Functions]({{ page.root }}/02-func-R/)" +msgstr "" + +#: r-novice-inflammation/_extras/guide.md:38 +# ordered list +msgid "3. [Analyzing Multiple Data Sets]({{ page.root }}/03-loops-R/)" +msgstr "" + +#: r-novice-inflammation/_extras/guide.md:40 +msgid "An additional half-day could add the next two lessons:" +msgstr "" + +#: r-novice-inflammation/_extras/guide.md:42 +# ordered list +msgid "4. [Making choices]({{ page.root }}/04-cond/)" +msgstr "" + +#: r-novice-inflammation/_extras/guide.md:43 +# ordered list +msgid "5. [Command-Line Programs]({{ page.root }}/05-cmdline/)" +msgstr "" + +#: r-novice-inflammation/_extras/guide.md:45 +msgid "Time permitting,\n" +"you can fit in one of these shorter lessons that cover bigger picture ideas\n" +"like best practices for organizing code, reproducible research,\n" +"and creating packages:" +msgstr "" + +#: r-novice-inflammation/_extras/guide.md:50 +# ordered list +msgid "6. [Best practices for using R and designing programs]({{ page.root }}/06-best-practices-R/)" +msgstr "" + +#: r-novice-inflammation/_extras/guide.md:51 +# ordered list +msgid "7. [Dynamic reports with knitr]({{ page.root }}/07-knitr-R/)" +msgstr "" + +#: r-novice-inflammation/_extras/guide.md:52 +# ordered list +msgid "8. [Making packages in R]({{ page.root }}/08-making-packages-R/)" +msgstr "" + +#: r-novice-inflammation/_extras/guide.md:54 +# header +msgid "## Using Git in RStudio" +msgstr "" + +#: r-novice-inflammation/_extras/guide.md:56 +msgid "Some instructors will demo RStudio's git integration at some point during the\n" +"workshop. This often goes over very well, but there can be a few snags with the\n" +"setup. First, RStudio may not know where to find git. You can specify where git\n" +"is located in _Tools > Global Options > Git/SVN_; on Mac/Linux git is often in\n" +"`/usr/bin/git` or `/usr/local/bin/git` and on Windows it is often in\n" +"`C:/Program Files (x86)/Git/bin/git.exe`. If you don't know where git is\n" +"installed on someone's computer, open a terminal and try `which git` on\n" +"Mac/Linux, or `where git` or `whereis git.exe` on Windows. See\n" +"[Jenny Bryan's instructions](http://stat545-ubc.github.io/git03_rstudio-meet-git.html)\n" +"for more detail." +msgstr "" + +#: r-novice-inflammation/_extras/guide.md:67 +msgid "If Windows users select the option \"Run Git from the Windows command prompt\"\n" +"while setting up Git Bash, RStudio will automatically find the git executable.\n" +"If you plan to demo git in RStudio during your workshop, you should edit the\n" +"workshop setup instructions to have the Windows users choose this option during\n" +"setup." +msgstr "" + +#: r-novice-inflammation/_extras/guide.md:73 +msgid "Another common gotcha is that the push/pull buttons in RStudio are grayed out,\n" +"even after you have added a remote and pushed to it from the command line. You\n" +"need to add an upstream tracking reference before you can push and pull directly\n" +"from RStudio; have your learners do `git push -u origin master` from the command\n" +"line and this should resolve the issue." +msgstr "" + +#: r-novice-inflammation/_extras/guide.md:79 +# header +msgid "## Teaching Notes" +msgstr "" + +#: r-novice-inflammation/_extras/guide.md:81 +# unordered list +msgid "* Watching the instructor grow programs step by step" +msgstr "" + +#: r-novice-inflammation/_extras/guide.md:82 +msgid " is as helpful to learners as anything to do with R.\n" +" Resist the urge to clean up your R script as you go\n" +" (which is what you'd probably do in real life).\n" +" Instead, keep intermediate steps in your script.\n" +" Once you've reached the final version\n" +" you can say,\n" +" \"Now why don't we just breaks things into small functions right from the start?\"" +msgstr "" + +#: r-novice-inflammation/_extras/guide.md:90 +# unordered list +msgid "* The discussion of command-line scripts" +msgstr "" + +#: r-novice-inflammation/_extras/guide.md:91 +msgid " assumes that students understand standard I/O and building filters,\n" +" which are covered in the lesson on the shell." +msgstr "" + +#: r-novice-inflammation/_extras/guide.md:94 +# unordered list +msgid "* We are using a dataset with records on inflammation from patients following an" +msgstr "" + +#: r-novice-inflammation/_extras/guide.md:95 +msgid " arthritis treatment. With it we explain `R` data structure, basic data\n" +" manipulation and plotting, writing functions and loops." +msgstr "" + +#: r-novice-inflammation/_extras/guide.md:98 +# header +msgid "## [Analyzing Patient Data]({{ page.root }}/01-starting-with-data/)" +msgstr "" + +#: r-novice-inflammation/_extras/guide.md:100 +# unordered list +msgid "* Check learners are reading files from the correct location (set working" +msgstr "" + +#: r-novice-inflammation/_extras/guide.md:101 +msgid " directory); remind them of the shell lesson." +msgstr "" + +#: r-novice-inflammation/_extras/guide.md:103 +# unordered list +msgid "* Provide shortcut for the assignment operator (`<-`) (RStudio: Alt+- on" +msgstr "" + +#: r-novice-inflammation/_extras/guide.md:104 +msgid " Windows/Linux; Option+- on Mac)." +msgstr "" + +#: r-novice-inflammation/_extras/guide.md:106 +# unordered list +msgid "* When performing operations on sliced rows of data frames, be aware that some " +msgstr "" + +#: r-novice-inflammation/_extras/guide.md:107 +msgid " functions in R automatically convert the object type to a numeric vector, while \n" +" others do not. For example, `max(dat[1, ])` works as expected, while `mean(dat[1, ])` \n" +" returns an error. You can fix this by including an explicit call to `as.numeric()`, \n" +" for example `mean(as.numeric(dat[1, ]))`. This issue is also mentioned in a callout \n" +" box in the lesson materials, since it is unexpected and can create confusion when \n" +" simple examples fail (by contrast, operations on sliced columns of data frames always \n" +" work as expected, since columns of data frames are already vectors)." +msgstr "" + +#: r-novice-inflammation/_extras/guide.md:115 +# header +msgid "## [Addressing Data]({{ page.root }}/10-supp-addressing-data/)" +msgstr "" + +#: r-novice-inflammation/_extras/guide.md:117 +# unordered list +msgid "* Note that the data frame `dat` is not the same set of data as in other lessons." +msgstr "" + +#: r-novice-inflammation/_extras/guide.md:119 +# header +msgid "## [Analyzing Multiple Data Sets]({{ page.root }}/03-loops-R/)" +msgstr "" + +#: r-novice-inflammation/_extras/guide.md:121 +# unordered list +msgid "* The transition from the previous lesson to this one might be challenging for" +msgstr "" + +#: r-novice-inflammation/_extras/guide.md:122 +msgid " a very novice audience. Do not rush through the challenges, maybe drop some." +msgstr "" + +#: r-novice-inflammation/_includes/links.md:1 +msgid "{% include gh_variables.html %}" +msgstr "" + +#: r-novice-inflammation/_includes/links.md:3 +msgid "[cc-by-human]: https://creativecommons.org/licenses/by/4.0/\n" +"[cc-by-legal]: https://creativecommons.org/licenses/by/4.0/legalcode\n" +"[ci]: http://communityin.org/\n" +"[coc-reporting]: https://docs.carpentries.org/topic_folders/policies/code-of-conduct.html#reporting-guidelines\n" +"[coc]: https://docs.carpentries.org/topic_folders/policies/code-of-conduct.html\n" +"[concept-maps]: https://carpentries.github.io/instructor-training/05-memory/\n" +"[contrib-covenant]: https://contributor-covenant.org/\n" +"[contributing]: {{ repo_url }}/blob/{{ source_branch }}/CONTRIBUTING.md\n" +"[cran-checkpoint]: https://cran.r-project.org/package=checkpoint\n" +"[cran-knitr]: https://cran.r-project.org/package=knitr\n" +"[cran-stringr]: https://cran.r-project.org/package=stringr\n" +"[dc-lessons]: http://www.datacarpentry.org/lessons/\n" +"[email]: mailto:team@carpentries.org\n" +"[github-importer]: https://import.github.com/\n" +"[importer]: https://github.com/new/import\n" +"[jekyll-collection]: https://jekyllrb.com/docs/collections/\n" +"[jekyll-install]: https://jekyllrb.com/docs/installation/\n" +"[jekyll-windows]: http://jekyll-windows.juthilo.com/\n" +"[jekyll]: https://jekyllrb.com/\n" +"[jupyter]: https://jupyter.org/\n" +"[lc-lessons]: https://librarycarpentry.org/#portfolio\n" +"[lesson-example]: https://carpentries.github.io/lesson-example/\n" +"[mit-license]: https://opensource.org/licenses/mit-license.html\n" +"[morea]: https://morea-framework.github.io/\n" +"[numfocus]: https://numfocus.org/\n" +"[osi]: https://opensource.org\n" +"[pandoc]: https://pandoc.org/\n" +"[paper-now]: https://github.com/PeerJ/paper-now\n" +"[python-gapminder]: https://swcarpentry.github.io/python-novice-gapminder/\n" +"[pyyaml]: https://pypi.python.org/pypi/PyYAML\n" +"[r-markdown]: https://rmarkdown.rstudio.com/\n" +"[rstudio]: https://www.rstudio.com/\n" +"[ruby-install-guide]: https://www.ruby-lang.org/en/downloads/\n" +"[ruby-installer]: https://rubyinstaller.org/\n" +"[rubygems]: https://rubygems.org/pages/download/\n" +"[styles]: https://github.com/carpentries/styles/\n" +"[swc-lessons]: https://software-carpentry.org/lessons/ \n" +"[swc-releases]: https://github.com/swcarpentry/swc-releases\n" +"[swc-lessons]: https://software-carpentry.org/lessons/\n" +"[workshop-repo]: {{ site.workshop_repo }}\n" +"[yaml]: http://yaml.org/" +msgstr "" + +#: r-novice-inflammation/aio.md:1 +#: r-novice-inflammation/bin/boilerplate/aio.md:1 +# Front Matter +msgid "---\n" +"---" +msgstr "" + +#: r-novice-inflammation/aio.md:4 +# inline html +msgid "" +msgstr "" + +#: r-novice-inflammation/aio.md:30 +#: r-novice-inflammation/bin/boilerplate/aio.md:32 +msgid "{% comment %}\n" +"Create anchor for each one of the episodes.\n" +"{% endcomment %}\n" +"{% for episode in site.episodes %}\n" +"
\n" +"{% endfor %}" +msgstr "" + +#: r-novice-inflammation/bin/boilerplate/CONTRIBUTING.md:30 +msgid " you can [send us comments by email][email].\n" +" However,\n" +" we will be able to respond more quickly if you use one of the other methods described below." +msgstr "" + +#: r-novice-inflammation/bin/boilerplate/CONTRIBUTING.md:42 +msgid " and would like to add or change material,\n" +" you can submit a pull request (PR).\n" +" Instructions for doing this are [included below](#using-github)." +msgstr "" + +#: r-novice-inflammation/bin/boilerplate/CONTRIBUTING.md:49 +msgid " please work in ,\n" +" which can be viewed at ." +msgstr "" + +#: r-novice-inflammation/bin/boilerplate/CONTRIBUTING.md:69 +msgid "There are many ways to contribute,\n" +"from writing new exercises and improving existing ones\n" +"to updating or filling in the documentation\n" +"and submitting [bug reports][issues]\n" +"about things that don't work, aren't clear, or are missing.\n" +"If you are looking for ideas, please see the 'Issues' tab for\n" +"a list of issues associated with this repository,\n" +"or you may also look at the issues for [Data Carpentry][dc-issues]\n" +"and [Software Carpentry][swc-issues] projects." +msgstr "" + +#: r-novice-inflammation/bin/boilerplate/CONTRIBUTING.md:97 +msgid "We are also not looking for exercises or other material that only run on one platform.\n" +"Our workshops typically contain a mixture of Windows, macOS, and Linux users;\n" +"in order to be usable,\n" +"our lessons must run equally well on all three." +msgstr "" + +#: r-novice-inflammation/bin/boilerplate/CONTRIBUTING.md:104 +msgid "If you choose to contribute via GitHub, you may want to look at\n" +"[How to Contribute to an Open Source Project on GitHub][how-contribute].\n" +"To manage changes, we follow [GitHub flow][github-flow].\n" +"Each lesson has two maintainers who review issues and pull requests or encourage others to do so.\n" +"The maintainers are community volunteers and have final say over what gets merged into the lesson.\n" +"To use the web interface for contributing to a lesson:" +msgstr "" + +#: r-novice-inflammation/bin/boilerplate/CONTRIBUTING.md:111 +# ordered list +msgid "1. Fork the originating repository to your GitHub profile." +msgstr "" + +#: r-novice-inflammation/bin/boilerplate/CONTRIBUTING.md:112 +# ordered list +msgid "2. Within your version of the forked repository, move to the `gh-pages` branch and" +msgstr "" + +#: r-novice-inflammation/bin/boilerplate/CONTRIBUTING.md:113 +msgid "create a new branch for each significant change being made.\n" +"3. Navigate to the file(s) you wish to change within the new branches and make revisions as required.\n" +"4. Commit all changed files within the appropriate branches.\n" +"5. Create individual pull requests from each of your changed branches\n" +"to the `gh-pages` branch within the originating repository.\n" +"6. If you receive feedback, make changes using your issue-specific branches of the forked\n" +"repository and the pull requests will update automatically.\n" +"7. Repeat as needed until all feedback has been addressed." +msgstr "" + +#: r-novice-inflammation/bin/boilerplate/CONTRIBUTING.md:122 +msgid "When starting work, please make sure your clone of the originating `gh-pages` branch is up-to-date\n" +"before creating your own revision-specific branch(es) from there.\n" +"Additionally, please only work from your newly-created branch(es) and *not*\n" +"your clone of the originating `gh-pages` branch.\n" +"Lastly, published copies of all the lessons are available in the `gh-pages` branch of the originating\n" +"repository for reference while revising." +msgstr "" + +#: r-novice-inflammation/bin/boilerplate/CONTRIBUTING.md:131 +msgid "General discussion of [Software Carpentry][swc-site] and [Data Carpentry][dc-site]\n" +"happens on the [discussion mailing list][discuss-list],\n" +"which everyone is welcome to join.\n" +"You can also [reach us by email][email]." +msgstr "" + +#: r-novice-inflammation/bin/boilerplate/CONTRIBUTING.md:136 +msgid "[email]: mailto:admin@software-carpentry.org\n" +"[dc-issues]: https://github.com/issues?q=user%3Adatacarpentry\n" +"[dc-lessons]: http://datacarpentry.org/lessons/\n" +"[dc-site]: http://datacarpentry.org/\n" +"[discuss-list]: http://lists.software-carpentry.org/listinfo/discuss\n" +"[github]: https://github.com\n" +"[github-flow]: https://guides.github.com/introduction/flow/\n" +"[github-join]: https://github.com/join\n" +"[how-contribute]: https://egghead.io/series/how-to-contribute-to-an-open-source-project-on-github\n" +"[issues]: https://guides.github.com/features/issues/\n" +"[swc-issues]: https://github.com/issues?q=user%3Aswcarpentry\n" +"[swc-lessons]: https://software-carpentry.org/lessons/\n" +"[swc-site]: https://software-carpentry.org/" +msgstr "" + +#: r-novice-inflammation/bin/boilerplate/README.md:1 +# header +msgid "# FIXME Lesson title" +msgstr "" + +#: r-novice-inflammation/bin/boilerplate/README.md:3 +msgid "[![Create a Slack Account with us](https://img.shields.io/badge/Create_Slack_Account-The_Carpentries-071159.svg)](https://swc-slack-invite.herokuapp.com/)" +msgstr "" + +#: r-novice-inflammation/bin/boilerplate/README.md:5 +#: r-novice-inflammation/bin/boilerplate/_episodes/01-introduction.md:12 +#: r-novice-inflammation/bin/boilerplate/_extras/discuss.md:4 +#: r-novice-inflammation/bin/boilerplate/_extras/guide.md:4 +#: r-novice-inflammation/bin/boilerplate/reference.md:7 +#: r-novice-inflammation/bin/boilerplate/setup.md:4 +msgid "FIXME" +msgstr "" + +#: r-novice-inflammation/bin/boilerplate/README.md:9 +msgid "We welcome all contributions to improve the lesson! Maintainers will do their best to help you if you have any\n" +"questions, concerns, or experience any difficulties along the way." +msgstr "" + +#: r-novice-inflammation/bin/boilerplate/README.md:12 +msgid "We'd like to ask you to familiarize yourself with our [Contribution Guide](CONTRIBUTING.md) and have a look at\n" +"the [more detailed guidelines][lesson-example] on proper formatting, ways to render the lesson locally, and even\n" +"how to write new episodes." +msgstr "" + +#: r-novice-inflammation/bin/boilerplate/README.md:16 +# header +msgid "## Maintainer(s)" +msgstr "" + +#: r-novice-inflammation/bin/boilerplate/README.md:18 +# unordered list +msgid "* FIXME" +msgstr "" + +#: r-novice-inflammation/bin/boilerplate/README.md:20 +# header +msgid "## Authors" +msgstr "" + +#: r-novice-inflammation/bin/boilerplate/README.md:22 +msgid "A list of contributors to the lesson can be found in [AUTHORS](AUTHORS)" +msgstr "" + +#: r-novice-inflammation/bin/boilerplate/README.md:24 +# header +msgid "## Citation" +msgstr "" + +#: r-novice-inflammation/bin/boilerplate/README.md:26 +msgid "To cite this lesson, please consult with [CITATION](CITATION)" +msgstr "" + +#: r-novice-inflammation/bin/boilerplate/README.md:28 +msgid "[lesson-example]: https://carpentries.github.io/lesson-example" +msgstr "" + +#: r-novice-inflammation/bin/boilerplate/_episodes/01-introduction.md:1 +# Front Matter +msgid "---\n" +"title: \"Introduction\"\n" +"teaching: 0\n" +"exercises: 0\n" +"questions:\n" +"- \"Key question (FIXME)\"\n" +"objectives:\n" +"- \"First objective. (FIXME)\"\n" +"keypoints:\n" +"- \"First key point. (FIXME)\"\n" +"---" +msgstr "" + +#: r-novice-inflammation/bin/boilerplate/_extras/about.md:1 +# Front Matter +msgid "---\n" +"title: About\n" +"---" +msgstr "" + +#: r-novice-inflammation/bin/boilerplate/_extras/about.md:4 +msgid "{% include carpentries.html %}\n" +"{% include links.md %}" +msgstr "" + +#: r-novice-inflammation/bin/boilerplate/_extras/discuss.md:1 +# Front Matter +msgid "---\n" +"title: Discussion\n" +"---" +msgstr "" + +#: r-novice-inflammation/bin/boilerplate/_extras/figures.md:1 +# Front Matter +msgid "---\n" +"title: Figures\n" +"---" +msgstr "" + +#: r-novice-inflammation/bin/boilerplate/_extras/figures.md:5 +#: r-novice-inflammation/bin/boilerplate/aio.md:4 +msgid "{% include base_path.html %}" +msgstr "" + +#: r-novice-inflammation/bin/boilerplate/_extras/figures.md:7 +# inline html +msgid "" +msgstr "" + +#: r-novice-inflammation/bin/boilerplate/_extras/figures.md:61 +msgid "{% comment %}\n" +"Create anchor for each one of the episodes.\n" +"{% endcomment %}\n" +"{% for episode in site.episodes %}\n" +"
\n" +"{% endfor %}" +msgstr "" + +#: r-novice-inflammation/bin/boilerplate/_extras/guide.md:1 +# Front Matter +msgid "---\n" +"title: \"Instructor Notes\"\n" +"---" +msgstr "" + +#: r-novice-inflammation/bin/boilerplate/aio.md:6 +# inline html +msgid "" +msgstr "" + +#: r-novice-inflammation/bin/boilerplate/index.md:1 +# Front Matter +msgid "---\n" +"layout: lesson\n" +"root: . # Is the only page that don't follow the partner /:path/index.html\n" +"permalink: index.html # Is the only page that don't follow the partner /:path/index.html\n" +"---" +msgstr "" + +#: r-novice-inflammation/bin/boilerplate/index.md:6 +msgid "FIXME: home page introduction" +msgstr "" + +#: r-novice-inflammation/bin/boilerplate/index.md:8 +#: r-novice-inflammation/index.md:48 +# blockquote, which can be cascaded +msgid "> ## Prerequisites" +msgstr "" + +#: r-novice-inflammation/bin/boilerplate/index.md:9 +msgid ">\n" +"> FIXME" +msgstr "" + +#: r-novice-inflammation/bin/boilerplate/index.md:11 +#: r-novice-inflammation/index.md:53 +# SC/DC Template label +msgid "{: .prereq}" +msgstr "" + +#: r-novice-inflammation/bin/boilerplate/reference.md:1 +# Front Matter +msgid "---\n" +"layout: reference\n" +"---" +msgstr "" + +#: r-novice-inflammation/bin/boilerplate/reference.md:5 +#: r-novice-inflammation/reference.md:110 +# header +msgid "## Glossary" +msgstr "" + +#: r-novice-inflammation/bin/boilerplate/setup.md:1 +# Front Matter +msgid "---\n" +"title: Setup\n" +"---" +msgstr "" + +#: r-novice-inflammation/index.md:1 +# Front Matter +msgid "---\n" +"layout: lesson\n" +"root: .\n" +"---" +msgstr "" + +#: r-novice-inflammation/index.md:6 +msgid "The best way to learn how to program is to do something useful,\n" +"so this introduction to R is built around a common scientific task:\n" +"data analysis." +msgstr "" + +#: r-novice-inflammation/index.md:10 +msgid "Our real goal isn't to teach you R,\n" +"but to teach you the basic concepts that all programming depends on.\n" +"We use R in our lessons because:" +msgstr "" + +#: r-novice-inflammation/index.md:14 +# ordered list +msgid "1. we have to use *something* for examples;" +msgstr "" + +#: r-novice-inflammation/index.md:15 +# ordered list +msgid "2. it's free, well-documented, and runs almost everywhere;" +msgstr "" + +#: r-novice-inflammation/index.md:16 +# ordered list +msgid "3. it has a large (and growing) user base among scientists; and" +msgstr "" + +#: r-novice-inflammation/index.md:17 +# ordered list +msgid "4. it has a large library of external packages available for performing diverse tasks." +msgstr "" + +#: r-novice-inflammation/index.md:19 +msgid "But the two most important things are\n" +"to use whatever language your colleagues are using,\n" +"so you can share your work with them easily,\n" +"and to use that language *well*." +msgstr "" + +#: r-novice-inflammation/index.md:24 +msgid "We are studying inflammation in patients who have been given a new treatment for arthritis,\n" +"and need to analyze the first dozen data sets of their daily inflammation.\n" +"The data sets are stored in [comma-separated values]({{ page.root }}/reference.html#comma-separated-values-csv) (CSV) format:\n" +"each row holds information for a single patient,\n" +"and the columns represent successive days.\n" +"The first few rows of our first file look like this:" +msgstr "" + +#: r-novice-inflammation/index.md:31 +# code block +msgid "~~~\n" +"0,0,1,3,1,2,4,7,8,3,3,3,10,5,7,4,7,7,12,18,6,13,11,11,7,7,4,6,8,8,4,4,5,7,3,4,2,3,0,0\n" +"0,1,2,1,2,1,3,2,2,6,10,11,5,9,4,4,7,16,8,6,18,4,12,5,12,7,11,5,11,3,3,5,4,4,5,5,1,1,0,1\n" +"0,1,1,3,3,2,6,2,5,9,5,7,4,5,4,15,5,11,9,10,19,14,12,17,7,12,11,7,4,2,10,5,4,2,2,3,2,2,1,1\n" +"0,0,2,0,4,2,2,1,6,7,10,7,9,13,8,8,15,10,10,7,17,4,4,7,6,15,6,4,9,11,3,5,6,3,3,4,2,3,2,1\n" +"0,1,1,3,3,1,3,5,2,4,4,7,6,5,3,10,8,10,6,17,9,14,9,7,13,9,12,6,7,7,9,6,3,2,2,4,2,0,1,1\n" +"~~~" +msgstr "" + +#: r-novice-inflammation/index.md:38 +# SC/DC Template label +msgid "{: .source}" +msgstr "" + +#: r-novice-inflammation/index.md:40 +msgid "We want to:" +msgstr "" + +#: r-novice-inflammation/index.md:42 +# unordered list +msgid "* load that data into memory," +msgstr "" + +#: r-novice-inflammation/index.md:43 +# unordered list +msgid "* calculate the average inflammation per day across all patients, and" +msgstr "" + +#: r-novice-inflammation/index.md:44 +# unordered list +msgid "* plot the result." +msgstr "" + +#: r-novice-inflammation/index.md:46 +msgid "To do all that, we'll have to learn a little bit about programming." +msgstr "" + +#: r-novice-inflammation/index.md:49 +msgid ">\n" +"> Learners need to understand the concepts of files and directories\n" +"> (including the working directory).\n" +"> We often use RStudio to teach this lesson, but it is not required." +msgstr "" + +#: r-novice-inflammation/reference.md:1 +# Front Matter +msgid "---\n" +"layout: reference\n" +"root: .\n" +"---" +msgstr "" + +#: r-novice-inflammation/reference.md:6 +# header +msgid "## Basic Operation" +msgstr "" + +#: r-novice-inflammation/reference.md:8 +# unordered list +msgid "- `# this is a comment in R`" +msgstr "" + +#: r-novice-inflammation/reference.md:9 +# unordered list +msgid "- Use `x <- 3` to assign a value, `3`, to a variable, `x`" +msgstr "" + +#: r-novice-inflammation/reference.md:10 +# unordered list +msgid "- R counts from 1, unlike many other programming languages (e.g., Python)" +msgstr "" + +#: r-novice-inflammation/reference.md:11 +# unordered list +msgid "- `length(thing)` returns the number of elements contained in the variable" +msgstr "" + +#: r-novice-inflammation/reference.md:12 +msgid " `collection`\n" +"- `c(value1, value2, value3)` creates a vector\n" +"- `container[i]` selects the i'th element from the variable `container`" +msgstr "" + +#: r-novice-inflammation/reference.md:16 +msgid "List objects in current environment\n" +"`ls()`" +msgstr "" + +#: r-novice-inflammation/reference.md:19 +msgid "Remove objects in current environment\n" +"`rm(x)`" +msgstr "" + +#: r-novice-inflammation/reference.md:22 +msgid "Remove all objects from current environment\n" +"`rm(list = ls())`" +msgstr "" + +#: r-novice-inflammation/reference.md:25 +# header +msgid "## Control Flow" +msgstr "" + +#: r-novice-inflammation/reference.md:27 +# unordered list +msgid "- Create a conditional using `if`, `else if`, and `else`" +msgstr "" + +#: r-novice-inflammation/reference.md:29 +# code block +msgid "~~~\n" +"if(x > 0){\n" +" print(\"value is positive\")\n" +"} else if (x < 0){\n" +" print(\"value is negative\")\n" +"} else{\n" +" print(\"value is neither positive nor negative\")\n" +"}\n" +"~~~" +msgstr "" + +#: r-novice-inflammation/reference.md:38 +#: r-novice-inflammation/reference.md:47 +#: r-novice-inflammation/reference.md:81 +#: r-novice-inflammation/reference.md:92 +msgid "{: .language-r}" +msgstr "" + +#: r-novice-inflammation/reference.md:40 +# unordered list +msgid "- create a `for` loop to process elements in a collection one at a time" +msgstr "" + +#: r-novice-inflammation/reference.md:42 +# code block +msgid "~~~\n" +"for (i in 1:5) {\n" +" print(i)\n" +"}\n" +"~~~" +msgstr "" + +#: r-novice-inflammation/reference.md:49 +msgid "This will print:" +msgstr "" + +#: r-novice-inflammation/reference.md:51 +# code block +msgid "~~~\n" +"1\n" +"2\n" +"3\n" +"4\n" +"5\n" +"~~~" +msgstr "" + +#: r-novice-inflammation/reference.md:58 +# SC/DC Template label +msgid "{: .output}" +msgstr "" + +#: r-novice-inflammation/reference.md:61 +# unordered list +msgid "- Use `==` to test for equality" +msgstr "" + +#: r-novice-inflammation/reference.md:62 +# unordered list +msgid " - `3 == 3`, will return `TRUE`," +msgstr "" + +#: r-novice-inflammation/reference.md:63 +# unordered list +msgid " - `'apple' == 'orange'` will return `FALSE`" +msgstr "" + +#: r-novice-inflammation/reference.md:64 +# unordered list +msgid "- `X & Y` is `TRUE` is both X and Y are true" +msgstr "" + +#: r-novice-inflammation/reference.md:65 +# unordered list +msgid "- `X | Y` is `TRUE` if either X or Y, or both are true" +msgstr "" + +#: r-novice-inflammation/reference.md:67 +# header +msgid "## Functions" +msgstr "" + +#: r-novice-inflammation/reference.md:69 +# unordered list +msgid "- Defining a function:" +msgstr "" + +#: r-novice-inflammation/reference.md:71 +# code block +msgid "~~~\n" +"is_positive <- function(integer_value){\n" +" if(integer_value > 0){\n" +" TRUE\n" +" }\n" +" else{\n" +" FALSE\n" +" {\n" +"}\n" +"~~~" +msgstr "" + +#: r-novice-inflammation/reference.md:83 +msgid "In R, the last executed line of a function is automatically returned" +msgstr "" + +#: r-novice-inflammation/reference.md:85 +# unordered list +msgid "- Specifying a default value for a function argument" +msgstr "" + +#: r-novice-inflammation/reference.md:87 +# code block +msgid "~~~\n" +"increment_me <- function(value_to_increment, value_to_increment_by = 1){\n" +" value_to_increment + value_to_increment_by\n" +"}\n" +"~~~" +msgstr "" + +#: r-novice-inflammation/reference.md:94 +msgid "`increment_me(4)`, will return 5" +msgstr "" + +#: r-novice-inflammation/reference.md:96 +msgid "`increment_me(4, 6)`, will return 10" +msgstr "" + +#: r-novice-inflammation/reference.md:98 +# unordered list +msgid "- Call a function by using `function_name(function_arguments)`" +msgstr "" + +#: r-novice-inflammation/reference.md:100 +# unordered list +msgid "- apply family of functions: `apply()`, `sapply()`, `lapply()`, and `mapply()`" +msgstr "" + +#: r-novice-inflammation/reference.md:102 +msgid "`apply(dat, MARGIN = 2, mean)` will return the average (`mean`) of each column in `dat`" +msgstr "" + +#: r-novice-inflammation/reference.md:104 +# header +msgid "## Packages" +msgstr "" + +#: r-novice-inflammation/reference.md:106 +# unordered list +msgid "- Install package by using `install.packages(\"package-name\")`" +msgstr "" + +#: r-novice-inflammation/reference.md:107 +# unordered list +msgid "- Update packages by using `update.packages(\"package-name\")`" +msgstr "" + +#: r-novice-inflammation/reference.md:108 +# unordered list +msgid "- Load packages by using `library(\"package-name\")`" +msgstr "" + +#: r-novice-inflammation/reference.md:112 +msgid "{:auto_ids}\n" +"argument\n" +": A value given to a function or program when it runs. The term is often used interchangeably (and inconsistently) with [parameter](#parameter)." +msgstr "" + +#: r-novice-inflammation/reference.md:116 +msgid "call stack\n" +": A data structure inside a running program that keeps track of active function calls. Each call's variables are stored in a [stack frame](#stack-frame); a new stack frame is put on top of the stack for each call, and discarded when the call is finished." +msgstr "" + +#: r-novice-inflammation/reference.md:119 +msgid "comma-separated values (CSV)\n" +": A common textual representation for tables in which the values in each row are separated by commas." +msgstr "" + +#: r-novice-inflammation/reference.md:122 +msgid "comment\n" +": A remark in a program that is intended to help human readers understand what is going on, but is ignored by the computer. Comments in Python, R, and the Unix shell start with a `#` character and run to the end of the line; comments in SQL start with `--`, and other languages have other conventions." +msgstr "" + +#: r-novice-inflammation/reference.md:125 +msgid "conditional statement\n" +": A statement in a program that might or might not be executed depending on whether a test is true or false." +msgstr "" + +#: r-novice-inflammation/reference.md:128 +msgid "dimensions (of an array)\n" +": An array's extent, represented as a vector. For example, an array with 5 rows and 3 columns has dimensions `(5,3)`." +msgstr "" + +#: r-novice-inflammation/reference.md:131 +msgid "documentation\n" +": Human-language text written to explain what software does, how it works, or how to use it." +msgstr "" + +#: r-novice-inflammation/reference.md:134 +msgid "encapsulation\n" +": The practice of hiding something's implementation details so that the rest of a program can worry about *what* it does rather than *how* it does it." +msgstr "" + +#: r-novice-inflammation/reference.md:137 +msgid "for loop\n" +": A loop that is executed once for each value in some kind of set, list, or range. See also: [while loop](#while-loop)." +msgstr "" + +#: r-novice-inflammation/reference.md:140 +msgid "function body\n" +": The statements that are executed inside a function." +msgstr "" + +#: r-novice-inflammation/reference.md:143 +msgid "function call\n" +": A use of a function in another piece of software." +msgstr "" + +#: r-novice-inflammation/reference.md:146 +msgid "function composition\n" +": The immediate application of one function to the result of another, such as `f(g(x))`." +msgstr "" + +#: r-novice-inflammation/reference.md:149 +msgid "index\n" +": A subscript that specifies the location of a single value in a collection, such as a single pixel in an image." +msgstr "" + +#: r-novice-inflammation/reference.md:152 +msgid "loop variable\n" +": The variable that keeps track of the progress of the loop." +msgstr "" + +#: r-novice-inflammation/reference.md:155 +msgid "notional machine\n" +": An abstraction of a computer used to think about what it can and will do." +msgstr "" + +#: r-novice-inflammation/reference.md:158 +msgid "parameter\n" +": A variable named in the function's declaration that is used to hold a value passed into the call. The term is often used interchangeably (and inconsistently) with [argument](#argument)." +msgstr "" + +#: r-novice-inflammation/reference.md:161 +msgid "pipe\n" +": A connection from the output of one program to the input of another. When two or more programs are connected in this way, they are called a \"pipeline\"." +msgstr "" + +#: r-novice-inflammation/reference.md:164 +msgid "return statement\n" +": A statement that causes a function to stop executing and return a value to its caller immediately." +msgstr "" + +#: r-novice-inflammation/reference.md:167 +msgid "silent failure\n" +": Failing without producing any warning messages. Silent failures are hard to detect and debug." +msgstr "" + +#: r-novice-inflammation/reference.md:170 +msgid "slice\n" +": A regular subsequence of a larger sequence, such as the first five elements or every second element." +msgstr "" + +#: r-novice-inflammation/reference.md:173 +msgid "stack frame\n" +": A data structure that provides storage for a function's local variables. Each time a function is called, a new stack frame is created and put on the top of the [call stack](#call-stack). When the function returns, the stack frame is discarded." +msgstr "" + +#: r-novice-inflammation/reference.md:176 +msgid "standard input (stdin)\n" +": A process's default input stream. In interactive command-line applications, it is typically connected to the keyboard; in a [pipe](#pipe), it receives data from the [standard output](#standard-output-stdout) of the preceding process." +msgstr "" + +#: r-novice-inflammation/reference.md:179 +msgid "standard output (stdout)\n" +": A process's default output stream. In interactive command-line applications, data sent to standard output is displayed on the screen; in a [pipe](#pipe), it is passed to the [standard input](#standard-input-stdin) of the next process." +msgstr "" + +#: r-novice-inflammation/reference.md:182 +msgid "string\n" +": Short for \"character string\", a sequence of zero or more characters." +msgstr "" + +#: r-novice-inflammation/reference.md:185 +msgid "while loop\n" +": A loop that keeps executing as long as some condition is true. See also: [for loop](#for-loop)." +msgstr "" + +#: r-novice-inflammation/setup.md:1 +# Front Matter +msgid "---\n" +"layout: page\n" +"title: Setup\n" +"root: .\n" +"---" +msgstr "" + +#: r-novice-inflammation/setup.md:7 +msgid "This lesson assumes you have the R software and the development environment RStudio installed on your computer." +msgstr "" + +#: r-novice-inflammation/setup.md:9 +msgid "[R can be downloaded here](https://cran.r-project.org/mirrors.html)." +msgstr "" + +#: r-novice-inflammation/setup.md:11 +msgid "[RStudio can be downloaded here](https://www.rstudio.com/products/rstudio/download/).\n" +"You will need the Desktop version for your computer." +msgstr "" + +#: r-novice-inflammation/setup.md:14 +msgid "You also need to download some files to follow this lesson:" +msgstr "" + +#: r-novice-inflammation/setup.md:16 +# ordered list +msgid "1. Make a new folder in your Desktop called `r-novice-inflammation`." +msgstr "" + +#: r-novice-inflammation/setup.md:17 +# ordered list +msgid "2. Download [r-novice-inflammation-data.zip]({{ page.root }}/files/r-novice-inflammation-data.zip) and move the file to this folder." +msgstr "" + +#: r-novice-inflammation/setup.md:18 +# ordered list +msgid "3. If it's not unzipped yet, double-click on it to unzip it. You should end up with a new folder called `data`." +msgstr "" + +#: r-novice-inflammation/setup.md:19 +# ordered list +msgid "4. You can access this folder from the Unix shell with:" +msgstr "" + +#: r-novice-inflammation/setup.md:21 +# code block +msgid "~~~\n" +"$ cd\n" +"$ cd Desktop/r-novice-inflammation/data\n" +"~~~" +msgstr "" + +#: r-novice-inflammation/setup.md:25 +msgid "{: .language-bash}" +msgstr "" + diff --git a/po/.ancestors/.shell-novice.ja.po.ancestor b/po/.ancestors/.shell-novice.ja.po.ancestor new file mode 100644 index 00000000..f0571e29 --- /dev/null +++ b/po/.ancestors/.shell-novice.ja.po.ancestor @@ -0,0 +1,8186 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: i18n\n" +"Report-Msgid-Bugs-To: https://github.com/haiwen/seafile-docs/issues\n" +"POT-Creation-Date: 2018-09-16 01:25:37+0900\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: shell-novice/CONDUCT.md:1 +# Front Matter +msgid "---\n" +"layout: page\n" +"title: \"Contributor Code of Conduct\"\n" +"permalink: /conduct/\n" +"---" +msgstr "" + +#: shell-novice/CONDUCT.md:6 +msgid "As contributors and maintainers of this project,\n" +"we pledge to respect all people who contribute through reporting issues,\n" +"posting feature requests,\n" +"updating documentation,\n" +"submitting pull requests or patches,\n" +"and other activities." +msgstr "" + +#: shell-novice/CONDUCT.md:13 +msgid "We are committed to making participation in this project a harassment-free experience for everyone,\n" +"regardless of level of experience,\n" +"gender,\n" +"gender identity and expression,\n" +"sexual orientation,\n" +"disability,\n" +"personal appearance,\n" +"body size,\n" +"race,\n" +"ethnicity,\n" +"age,\n" +"or religion." +msgstr "" + +#: shell-novice/CONDUCT.md:26 +msgid "Examples of unacceptable behavior by participants include the use of sexual language or imagery,\n" +"derogatory comments or personal attacks,\n" +"trolling,\n" +"public or private harassment,\n" +"insults,\n" +"or other unprofessional conduct." +msgstr "" + +#: shell-novice/CONDUCT.md:33 +msgid "Project maintainers have the right and responsibility to remove, edit, or reject\n" +"comments, commits, code, wiki edits, issues, and other contributions\n" +"that are not aligned to our [Code of Conduct][coc].\n" +"Project maintainers who do not follow the Code of Conduct may be removed from the project team." +msgstr "" + +#: shell-novice/CONDUCT.md:38 +msgid "Instances of abusive, harassing, or otherwise unacceptable behavior\n" +"may be reported by following our [reporting guidelines][coc-reporting]." +msgstr "" + +#: shell-novice/CONDUCT.md:42 +# unordered list +msgid "- [Software and Data Carpentry Code of Conduct][coc]" +msgstr "" + +#: shell-novice/CONDUCT.md:43 +# unordered list +msgid "- [Code of Conduct Reporting Guide][coc-reporting]" +msgstr "" + +#: shell-novice/CONDUCT.md:45 +msgid "{% include links.md %}" +msgstr "" + +#: shell-novice/CONTRIBUTING.md:1 +# header +msgid "# Contributing" +msgstr "" + +#: shell-novice/CONTRIBUTING.md:3 +msgid "[Software Carpentry][swc-site] and [Data Carpentry][dc-site] are open source projects,\n" +"and we welcome contributions of all kinds:\n" +"new lessons,\n" +"fixes to existing material,\n" +"bug reports,\n" +"and reviews of proposed changes are all welcome." +msgstr "" + +#: shell-novice/CONTRIBUTING.md:10 +# header +msgid "## Contributor Agreement" +msgstr "" + +#: shell-novice/CONTRIBUTING.md:12 +msgid "By contributing,\n" +"you agree that we may redistribute your work under [our license](LICENSE.md).\n" +"In exchange,\n" +"we will address your issues and/or assess your change proposal as promptly as we can,\n" +"and help you become a member of our community.\n" +"Everyone involved in [Software Carpentry][swc-site] and [Data Carpentry][dc-site]\n" +"agrees to abide by our [code of conduct](CONDUCT.md)." +msgstr "" + +#: shell-novice/CONTRIBUTING.md:20 +# header +msgid "## How to Contribute" +msgstr "" + +#: shell-novice/CONTRIBUTING.md:22 +msgid "The easiest way to get started is to file an issue\n" +"to tell us about a spelling mistake,\n" +"some awkward wording,\n" +"or a factual error.\n" +"This is a good way to introduce yourself\n" +"and to meet some of our community members." +msgstr "" + +#: shell-novice/CONTRIBUTING.md:29 +# ordered list +msgid "1. If you do not have a [GitHub][github] account," +msgstr "" + +#: shell-novice/CONTRIBUTING.md:30 +msgid " you can [send us comments by email][contact].\n" +" However,\n" +" we will be able to respond more quickly if you use one of the other methods described below." +msgstr "" + +#: shell-novice/CONTRIBUTING.md:34 +# ordered list +msgid "2. If you have a [GitHub][github] account," +msgstr "" + +#: shell-novice/CONTRIBUTING.md:35 +msgid " or are willing to [create one][github-join],\n" +" but do not know how to use Git,\n" +" you can report problems or suggest improvements by [creating an issue][issues].\n" +" This allows us to assign the item to someone\n" +" and to respond to it in a threaded discussion." +msgstr "" + +#: shell-novice/CONTRIBUTING.md:41 +# ordered list +msgid "3. If you are comfortable with Git," +msgstr "" + +#: shell-novice/CONTRIBUTING.md:42 +msgid " and would like to add or change material,\n" +" you can submit a pull request (PR).\n" +" Instructions for doing this are [included below](#using-github)." +msgstr "" + +#: shell-novice/CONTRIBUTING.md:46 +# header +msgid "## Where to Contribute" +msgstr "" + +#: shell-novice/CONTRIBUTING.md:48 +# ordered list +msgid "1. If you wish to change this lesson," +msgstr "" + +#: shell-novice/CONTRIBUTING.md:49 +msgid " please work in ,\n" +" which can be viewed at ." +msgstr "" + +#: shell-novice/CONTRIBUTING.md:52 +# ordered list +msgid "2. If you wish to change the example lesson," +msgstr "" + +#: shell-novice/CONTRIBUTING.md:53 +msgid " please work in ,\n" +" which documents the format of our lessons\n" +" and can be viewed at ." +msgstr "" + +#: shell-novice/CONTRIBUTING.md:57 +# ordered list +msgid "3. If you wish to change the template used for workshop websites," +msgstr "" + +#: shell-novice/CONTRIBUTING.md:58 +msgid " please work in .\n" +" The home page of that repository explains how to set up workshop websites,\n" +" while the extra pages in \n" +" provide more background on our design choices." +msgstr "" + +#: shell-novice/CONTRIBUTING.md:63 +# ordered list +msgid "4. If you wish to change CSS style files, tools," +msgstr "" + +#: shell-novice/CONTRIBUTING.md:64 +msgid " or HTML boilerplate for lessons or workshops stored in `_includes` or `_layouts`,\n" +" please work in ." +msgstr "" + +#: shell-novice/CONTRIBUTING.md:67 +# header +msgid "## What to Contribute" +msgstr "" + +#: shell-novice/CONTRIBUTING.md:69 +msgid "There are many ways to contribute,\n" +"from writing new exercises and improving existing ones\n" +"to updating or filling in the documentation\n" +"and submitting [bug reports][issues]\n" +"about things that don't work, aren't clear, or are missing.\n" +"If you are looking for ideas,\n" +"please see [the list of issues for this repository][issues],\n" +"or the issues for [Data Carpentry][dc-issues]\n" +"and [Software Carpentry][swc-issues] projects." +msgstr "" + +#: shell-novice/CONTRIBUTING.md:79 +msgid "Comments on issues and reviews of pull requests are just as welcome:\n" +"we are smarter together than we are on our own.\n" +"Reviews from novices and newcomers are particularly valuable:\n" +"it's easy for people who have been using these lessons for a while\n" +"to forget how impenetrable some of this material can be,\n" +"so fresh eyes are always welcome." +msgstr "" + +#: shell-novice/CONTRIBUTING.md:86 +# header +msgid "## What *Not* to Contribute" +msgstr "" + +#: shell-novice/CONTRIBUTING.md:88 +msgid "Our lessons already contain more material than we can cover in a typical workshop,\n" +"so we are usually *not* looking for more concepts or tools to add to them.\n" +"As a rule,\n" +"if you want to introduce a new idea,\n" +"you must (a) estimate how long it will take to teach\n" +"and (b) explain what you would take out to make room for it.\n" +"The first encourages contributors to be honest about requirements;\n" +"the second, to think hard about priorities." +msgstr "" + +#: shell-novice/CONTRIBUTING.md:97 +msgid "We are also not looking for exercises or other material that only run on one platform.\n" +"Our workshops typically contain a mixture of Windows, Mac OS X, and Linux users;\n" +"in order to be usable,\n" +"our lessons must run equally well on all three." +msgstr "" + +#: shell-novice/CONTRIBUTING.md:102 +# header +msgid "## Using GitHub" +msgstr "" + +#: shell-novice/CONTRIBUTING.md:104 +msgid "If you choose to contribute via GitHub,\n" +"you may want to look at\n" +"[How to Contribute to an Open Source Project on GitHub][how-contribute].\n" +"In brief:" +msgstr "" + +#: shell-novice/CONTRIBUTING.md:109 +# ordered list +msgid "1. The published copy of the lesson is in the `gh-pages` branch of the repository" +msgstr "" + +#: shell-novice/CONTRIBUTING.md:110 +msgid " (so that GitHub will regenerate it automatically).\n" +" Please create all branches from that,\n" +" and merge the [master repository][repo]'s `gh-pages` branch into your `gh-pages` branch\n" +" before starting work.\n" +" Please do *not* work directly in your `gh-pages` branch,\n" +" since that will make it difficult for you to work on other contributions." +msgstr "" + +#: shell-novice/CONTRIBUTING.md:117 +# ordered list +msgid "2. We use [GitHub flow][github-flow] to manage changes:" +msgstr "" + +#: shell-novice/CONTRIBUTING.md:118 +msgid " 1. Create a new branch in your desktop copy of this repository for each significant change.\n" +" 2. Commit the change in that branch.\n" +" 3. Push that branch to your fork of this repository on GitHub.\n" +" 4. Submit a pull request from that branch to the [master repository][repo].\n" +" 5. If you receive feedback,\n" +" make changes on your desktop and push to your branch on GitHub:\n" +" the pull request will update automatically." +msgstr "" + +#: shell-novice/CONTRIBUTING.md:126 +msgid "Each lesson has two maintainers who review issues and pull requests\n" +"or encourage others to do so.\n" +"The maintainers are community volunteers,\n" +"and have final say over what gets merged into the lesson." +msgstr "" + +#: shell-novice/CONTRIBUTING.md:131 +# header +msgid "## Other Resources" +msgstr "" + +#: shell-novice/CONTRIBUTING.md:133 +msgid "General discussion of [Software Carpentry][swc-site] and [Data Carpentry][dc-site]\n" +"happens on the [discussion mailing list][discuss-list],\n" +"which everyone is welcome to join.\n" +"You can also [reach us by email][contact]." +msgstr "" + +#: shell-novice/CONTRIBUTING.md:138 +msgid "[contact]: mailto:admin@software-carpentry.org\n" +"[dc-issues]: https://github.com/issues?q=user%3Adatacarpentry\n" +"[dc-lessons]: http://datacarpentry.org/lessons/\n" +"[dc-site]: http://datacarpentry.org/\n" +"[discuss-list]: http://lists.software-carpentry.org/listinfo/discuss\n" +"[github]: http://github.com\n" +"[github-flow]: https://guides.github.com/introduction/flow/\n" +"[github-join]: https://github.com/join\n" +"[how-contribute]: https://egghead.io/series/how-to-contribute-to-an-open-source-project-on-github\n" +"[issues]: https://github.com/swcarpentry/shell-novice/issues/\n" +"[repo]: https://github.com/swcarpentry/shell-novice/\n" +"[swc-issues]: https://github.com/issues?q=user%3Aswcarpentry\n" +"[swc-lessons]: http://software-carpentry.org/lessons/\n" +"[swc-site]: http://software-carpentry.org/" +msgstr "" + +#: shell-novice/LICENSE.md:1 +# Front Matter +msgid "---\n" +"layout: page\n" +"title: \"Licenses\"\n" +"root: .\n" +"---" +msgstr "" + +#: shell-novice/LICENSE.md:6 +# header +msgid "## Instructional Material" +msgstr "" + +#: shell-novice/LICENSE.md:8 +msgid "All Software Carpentry and Data Carpentry instructional material is\n" +"made available under the [Creative Commons Attribution\n" +"license][cc-by-human]. The following is a human-readable summary of\n" +"(and not a substitute for) the [full legal text of the CC BY 4.0\n" +"license][cc-by-legal]." +msgstr "" + +#: shell-novice/LICENSE.md:14 +msgid "You are free:" +msgstr "" + +#: shell-novice/LICENSE.md:16 +# unordered list +msgid "* to **Share**---copy and redistribute the material in any medium or format" +msgstr "" + +#: shell-novice/LICENSE.md:17 +# unordered list +msgid "* to **Adapt**---remix, transform, and build upon the material" +msgstr "" + +#: shell-novice/LICENSE.md:19 +msgid "for any purpose, even commercially." +msgstr "" + +#: shell-novice/LICENSE.md:21 +msgid "The licensor cannot revoke these freedoms as long as you follow the\n" +"license terms." +msgstr "" + +#: shell-novice/LICENSE.md:24 +msgid "Under the following terms:" +msgstr "" + +#: shell-novice/LICENSE.md:26 +# unordered list +msgid "* **Attribution**---You must give appropriate credit (mentioning that" +msgstr "" + +#: shell-novice/LICENSE.md:27 +msgid " your work is derived from work that is Copyright © Software\n" +" Carpentry and, where practical, linking to\n" +" http://software-carpentry.org/), provide a [link to the\n" +" license][cc-by-human], and indicate if changes were made. You may do\n" +" so in any reasonable manner, but not in any way that suggests the\n" +" licensor endorses you or your use." +msgstr "" + +#: shell-novice/LICENSE.md:34 +msgid "**No additional restrictions**---You may not apply legal terms or\n" +"technological measures that legally restrict others from doing\n" +"anything the license permits. With the understanding that:" +msgstr "" + +#: shell-novice/LICENSE.md:38 +msgid "Notices:" +msgstr "" + +#: shell-novice/LICENSE.md:40 +# unordered list +msgid "* You do not have to comply with the license for elements of the" +msgstr "" + +#: shell-novice/LICENSE.md:41 +msgid " material in the public domain or where your use is permitted by an\n" +" applicable exception or limitation.\n" +"* No warranties are given. The license may not give you all of the\n" +" permissions necessary for your intended use. For example, other\n" +" rights such as publicity, privacy, or moral rights may limit how you\n" +" use the material." +msgstr "" + +#: shell-novice/LICENSE.md:48 +# header +msgid "## Software" +msgstr "" + +#: shell-novice/LICENSE.md:50 +msgid "Except where otherwise noted, the example programs and other software\n" +"provided by Software Carpentry and Data Carpentry are made available under the\n" +"[OSI][osi]-approved\n" +"[MIT license][mit-license]." +msgstr "" + +#: shell-novice/LICENSE.md:55 +msgid "Permission is hereby granted, free of charge, to any person obtaining\n" +"a copy of this software and associated documentation files (the\n" +"\"Software\"), to deal in the Software without restriction, including\n" +"without limitation the rights to use, copy, modify, merge, publish,\n" +"distribute, sublicense, and/or sell copies of the Software, and to\n" +"permit persons to whom the Software is furnished to do so, subject to\n" +"the following conditions:" +msgstr "" + +#: shell-novice/LICENSE.md:63 +msgid "The above copyright notice and this permission notice shall be\n" +"included in all copies or substantial portions of the Software." +msgstr "" + +#: shell-novice/LICENSE.md:66 +msgid "THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n" +"EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n" +"MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n" +"NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\n" +"LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\n" +"OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\n" +"WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." +msgstr "" + +#: shell-novice/LICENSE.md:74 +# header +msgid "## Trademark" +msgstr "" + +#: shell-novice/LICENSE.md:76 +msgid "\"Software Carpentry\" and \"Data Carpentry\" and their respective logos\n" +"are registered trademarks of [Community Initiatives][CI]." +msgstr "" + +#: shell-novice/LICENSE.md:79 +msgid "[cc-by-human]: https://creativecommons.org/licenses/by/4.0/\n" +"[cc-by-legal]: https://creativecommons.org/licenses/by/4.0/legalcode\n" +"[mit-license]: http://opensource.org/licenses/mit-license.html\n" +"[ci]: http://communityin.org/\n" +"[osi]: http://opensource.org" +msgstr "" + +#: shell-novice/README.md:1 +msgid "shell-novice\n" +"============" +msgstr "" + +#: shell-novice/README.md:4 +msgid "An introduction to the Unix shell for people who have never used the command line before.\n" +"Please see for a rendered version of this material,\n" +"[the lesson template documentation][lesson-example]\n" +"for instructions on formatting, building, and submitting material,\n" +"or run `make` in this directory for a list of helpful commands." +msgstr "" + +#: shell-novice/README.md:10 +msgid "Maintainers:" +msgstr "" + +#: shell-novice/README.md:12 +# unordered list +msgid "* [Gabriel Devenyi][devenyi_gabriel]" +msgstr "" + +#: shell-novice/README.md:13 +# unordered list +msgid "* [Ashwin Srinath][srinath_ashwin]" +msgstr "" + +#: shell-novice/README.md:14 +# unordered list +msgid "* [Colin Morris][colin_morris]" +msgstr "" + +#: shell-novice/README.md:15 +# unordered list +msgid "* [Will Pitchers][will_pitchers]" +msgstr "" + +#: shell-novice/README.md:17 +msgid "[devenyi_gabriel]: http://software-carpentry.org/team/#devenyi_gabriel\n" +"[srinath_ashwin]: http://software-carpentry.org/team/#srinath_ashwin\n" +"[colin_morris]: https://github.com/colinmorris\n" +"[will_pitchers]: https://software-carpentry.org/team/#pitchers_w\n" +"[lesson-example]: https://swcarpentry.github.io/lesson-example/" +msgstr "" + +#: shell-novice/_episodes/01-intro.md:1 +# Front Matter +msgid "---\n" +"title: \"Introducing the Shell\"\n" +"teaching: 5\n" +"exercises: 0\n" +"questions:\n" +"- \"What is a command shell and why would I use one?\"\n" +"objectives:\n" +"- \"Explain how the shell relates to the keyboard, the screen, the operating system, and users' programs.\"\n" +"- \"Explain when and why command-line interfaces should be used instead of graphical interfaces.\"\n" +"keypoints:\n" +"- \"Explain the steps in the shell's read-run-print cycle.\"\n" +"- \"Most commands take flags (options) which begin with a `-`.\"\n" +"- \"Identify the actual command, flags, and filenames in a command-line call.\"\n" +"- \"Explain the steps in the shell's read-run-print cycle.\"\n" +"- \"Demonstrate the use of tab completion and explain its advantages.\"\n" +"keypoints:\n" +"- \"A shell is a program whose primary purpose is to read commands and run other programs.\"\n" +"- \"The shell's main advantages are its high action-to-keystroke ratio, its support for automating repetitive tasks, and its capacity to access networked machines.\"\n" +"- \"The shell's main disadvantages are its primarily textual nature and how cryptic its commands and operation can be.\"\n" +"---" +msgstr "" + +#: shell-novice/_episodes/01-intro.md:21 +# header +msgid "### Background" +msgstr "" + +#: shell-novice/_episodes/01-intro.md:22 +msgid "At a high level, computers do four things:" +msgstr "" + +#: shell-novice/_episodes/01-intro.md:24 +# unordered list +msgid "- run programs" +msgstr "" + +#: shell-novice/_episodes/01-intro.md:25 +# unordered list +msgid "- store data" +msgstr "" + +#: shell-novice/_episodes/01-intro.md:26 +# unordered list +msgid "- communicate with each other, and" +msgstr "" + +#: shell-novice/_episodes/01-intro.md:27 +# unordered list +msgid "- interact with us" +msgstr "" + +#: shell-novice/_episodes/01-intro.md:29 +msgid "They can do the last of these in many different ways,\n" +"including through a keyboard and mouse, or touch screen interfaces, or speech recognition using systems.\n" +"While such hardware interfaces are becoming more commonplace, most interaction is still\n" +"done using screens, mice, touchpads and keyboards." +msgstr "" + +#: shell-novice/_episodes/01-intro.md:34 +msgid "We are all familiar with **graphical user interfaces** (GUI - windows, icons and pointers). \n" +"They are easy to learn and fantastic for simple tasks where a vocabulary consisting of\n" +"\"click\" translates easily into \"do the thing I want\". But this magic relies on \n" +"wanting a simple set of things, and having programs that can do exactly those things." +msgstr "" + +#: shell-novice/_episodes/01-intro.md:39 +msgid "If you wish to do complex, purpose-specific things it helps to have a richer means\n" +"of expressing your instructions to the computer. It doesn't need to be complicated or\n" +"difficult, just a vocabulary of commands and a simple grammar for using them." +msgstr "" + +#: shell-novice/_episodes/01-intro.md:43 +msgid "This is what the shell provides - a simple language and a **command-line interface** \n" +"to use it through. " +msgstr "" + +#: shell-novice/_episodes/01-intro.md:46 +msgid "The heart of a command-line interface is a **read-evaluate-print loop**, or REPL, called\n" +"so because when you type a command and press the Enter (or Return) key, the shell:\n" +"1. Reads it\n" +"2. Executes (or \"evaluates\" it)\n" +"3. Prints the output" +msgstr "" + +#: shell-novice/_episodes/01-intro.md:52 +msgid "and then prints the prompt and waits for you to enter another command." +msgstr "" + +#: shell-novice/_episodes/01-intro.md:54 +# header +msgid "### The Shell" +msgstr "" + +#: shell-novice/_episodes/01-intro.md:56 +msgid "A shell is a program like any other.\n" +"What's special about it is that its job is to run other programs\n" +"rather than to do calculations itself.\n" +"The most popular Unix shell is Bash,\n" +"the Bourne Again SHell\n" +"(so-called because it's derived from a shell written by Stephen Bourne).\n" +"Bash is the default shell on most modern implementations of Unix\n" +"and in most packages that provide Unix-like tools for Windows." +msgstr "" + +#: shell-novice/_episodes/01-intro.md:65 +# header +msgid "### What does it look like?" +msgstr "" + +#: shell-novice/_episodes/01-intro.md:67 +msgid "A typical shell command and output looks something like this:" +msgstr "" + +#: shell-novice/_episodes/01-intro.md:69 +# code block +msgid "~~~\n" +"bash-3.2$ \n" +"bash-3.2$ ls -F / \n" +"Applications/ System/\n" +"Library/ Users/\n" +"Network/ Volumes/\n" +"bash-3.2$ \n" +"~~~" +msgstr "" + +#: shell-novice/_episodes/01-intro.md:77 +#: shell-novice/_episodes/02-filedir.md:50 +#: shell-novice/_episodes/02-filedir.md:129 +#: shell-novice/_episodes/02-filedir.md:152 +#: shell-novice/_episodes/02-filedir.md:201 +#: shell-novice/_episodes/02-filedir.md:409 +#: shell-novice/_episodes/02-filedir.md:437 +#: shell-novice/_episodes/02-filedir.md:464 +#: shell-novice/_episodes/02-filedir.md:477 +#: shell-novice/_episodes/02-filedir.md:487 +#: shell-novice/_episodes/02-filedir.md:501 +#: shell-novice/_episodes/02-filedir.md:521 +#: shell-novice/_episodes/02-filedir.md:533 +#: shell-novice/_episodes/02-filedir.md:546 +#: shell-novice/_episodes/02-filedir.md:599 +#: shell-novice/_episodes/02-filedir.md:606 +#: shell-novice/_episodes/02-filedir.md:623 +#: shell-novice/_episodes/02-filedir.md:650 +#: shell-novice/_episodes/02-filedir.md:660 +#: shell-novice/_episodes/02-filedir.md:799 +#: shell-novice/_episodes/02-filedir.md:808 +#: shell-novice/_episodes/02-filedir.md:816 +#: shell-novice/_episodes/03-create.md:30 +#: shell-novice/_episodes/03-create.md:40 +#: shell-novice/_episodes/03-create.md:53 +#: shell-novice/_episodes/03-create.md:64 +#: shell-novice/_episodes/03-create.md:112 +#: shell-novice/_episodes/03-create.md:121 +#: shell-novice/_episodes/03-create.md:183 +#: shell-novice/_episodes/03-create.md:236 +#: shell-novice/_episodes/03-create.md:246 +#: shell-novice/_episodes/03-create.md:265 +#: shell-novice/_episodes/03-create.md:276 +#: shell-novice/_episodes/03-create.md:286 +#: shell-novice/_episodes/03-create.md:294 +#: shell-novice/_episodes/03-create.md:309 +#: shell-novice/_episodes/03-create.md:353 +#: shell-novice/_episodes/03-create.md:365 +#: shell-novice/_episodes/03-create.md:379 +#: shell-novice/_episodes/03-create.md:392 +#: shell-novice/_episodes/03-create.md:419 +#: shell-novice/_episodes/03-create.md:427 +#: shell-novice/_episodes/03-create.md:436 +#: shell-novice/_episodes/03-create.md:484 +#: shell-novice/_episodes/03-create.md:499 +#: shell-novice/_episodes/04-pipefilter.md:37 +#: shell-novice/_episodes/04-pipefilter.md:55 +#: shell-novice/_episodes/04-pipefilter.md:177 +#: shell-novice/_episodes/04-pipefilter.md:201 +#: shell-novice/_episodes/04-pipefilter.md:215 +#: shell-novice/_episodes/04-pipefilter.md:275 +#: shell-novice/_episodes/04-pipefilter.md:351 +#: shell-novice/_episodes/04-pipefilter.md:374 +#: shell-novice/_episodes/04-pipefilter.md:413 +#: shell-novice/_episodes/04-pipefilter.md:437 +#: shell-novice/_episodes/04-pipefilter.md:455 +#: shell-novice/_episodes/04-pipefilter.md:746 +#: shell-novice/_episodes/04-pipefilter.md:766 +#: shell-novice/_episodes/04-pipefilter.md:788 +#: shell-novice/_episodes/04-pipefilter.md:808 +#: shell-novice/_episodes/05-loop.md:39 +#: shell-novice/_episodes/05-loop.md:46 +#: shell-novice/_episodes/05-loop.md:70 +#: shell-novice/_episodes/05-loop.md:223 +#: shell-novice/_episodes/05-loop.md:233 +#: shell-novice/_episodes/05-loop.md:295 +#: shell-novice/_episodes/05-loop.md:306 +#: shell-novice/_episodes/05-loop.md:327 +#: shell-novice/_episodes/05-loop.md:392 +#: shell-novice/_episodes/05-loop.md:402 +#: shell-novice/_episodes/05-loop.md:409 +#: shell-novice/_episodes/05-loop.md:439 +#: shell-novice/_episodes/05-loop.md:462 +#: shell-novice/_episodes/05-loop.md:489 +#: shell-novice/_episodes/05-loop.md:497 +#: shell-novice/_episodes/05-loop.md:511 +#: shell-novice/_episodes/06-script.md:36 +#: shell-novice/_episodes/06-script.md:64 +#: shell-novice/_episodes/06-script.md:99 +#: shell-novice/_episodes/06-script.md:115 +#: shell-novice/_episodes/06-script.md:131 +#: shell-novice/_episodes/06-script.md:157 +#: shell-novice/_episodes/06-script.md:169 +#: shell-novice/_episodes/06-script.md:186 +#: shell-novice/_episodes/06-script.md:204 +#: shell-novice/_episodes/06-script.md:226 +#: shell-novice/_episodes/06-script.md:248 +#: shell-novice/_episodes/06-script.md:260 +#: shell-novice/_episodes/06-script.md:351 +#: shell-novice/_episodes/06-script.md:411 +#: shell-novice/_episodes/06-script.md:419 +#: shell-novice/_episodes/06-script.md:426 +#: shell-novice/_episodes/06-script.md:443 +#: shell-novice/_episodes/07-find.md:39 +#: shell-novice/_episodes/07-find.md:69 +#: shell-novice/_episodes/07-find.md:87 +#: shell-novice/_episodes/07-find.md:107 +#: shell-novice/_episodes/07-find.md:123 +#: shell-novice/_episodes/07-find.md:141 +#: shell-novice/_episodes/07-find.md:159 +#: shell-novice/_episodes/07-find.md:172 +#: shell-novice/_episodes/07-find.md:187 +#: shell-novice/_episodes/07-find.md:207 +#: shell-novice/_episodes/07-find.md:405 +#: shell-novice/_episodes/07-find.md:442 +#: shell-novice/_episodes/07-find.md:460 +#: shell-novice/_episodes/07-find.md:479 +#: shell-novice/_episodes/07-find.md:495 +#: shell-novice/_episodes/07-find.md:508 +#: shell-novice/_episodes/07-find.md:539 +#: shell-novice/_episodes/07-find.md:559 +#: shell-novice/_episodes/07-find.md:574 +msgid "{: .language-bash}" +msgstr "" + +#: shell-novice/_episodes/01-intro.md:79 +msgid "The first line shows only a **prompt**, indicating that the shell is waiting\n" +"for input. Your shell may use different text for the prompt. Most importantly: \n" +"when typing commands, either from these lessons or from other sources,\n" +"*do not type the prompt*, only the commands that follow it." +msgstr "" + +#: shell-novice/_episodes/01-intro.md:84 +msgid "The part that you type (in this example `ls -F /`)\n" +"typically has the following structure: a **command**,\n" +"some **flags** (also called **options** or **switches**) and an **argument**.\n" +"Flags start with a dash (`-`), and change the behaviour of a command.\n" +"Arguments tell the command what to operate on (e.g. files and directories).\n" +"Sometimes flags and arguments are referred to as parameters.\n" +"A command can be called with more than one flag and more than one argument: but a\n" +"command doesn't always require an argument or a flag." +msgstr "" + +#: shell-novice/_episodes/01-intro.md:93 +msgid "In the example above, our **command** is `ls`, with a **flag** `-F` and an\n" +"**argument** `/`. Each part is separated by spaces: if you omit the space \n" +"between `ls` and `-F` the shell will look for a command called `ls-F`, which \n" +"doesn't exist. Also, capitalization matters: `LS` is different to `ls`. " +msgstr "" + +#: shell-novice/_episodes/01-intro.md:98 +msgid "Next we see the output that our command produced. In this case it is a listing \n" +"of files and folders in a location called `/` - we'll cover what all these mean \n" +"later today. Those with a Mac might recognize the output in this example." +msgstr "" + +#: shell-novice/_episodes/01-intro.md:102 +msgid "Finally, the shell again prints the prompt and waits for you to type the next \n" +"command." +msgstr "" + +#: shell-novice/_episodes/01-intro.md:105 +msgid "In the examples for this lesson, we'll show the prompt as `$ `. You can make your \n" +"prompt look the same by entering the command `PS1='$ '`. But you can also leave \n" +"your prompt as it is - often the prompt includes useful information about who and where \n" +"you are." +msgstr "" + +#: shell-novice/_episodes/01-intro.md:110 +msgid "Open a shell window and try entering `ls -F /` for yourself (don't forget that spaces\n" +"and capitalization are important!). You can change the prompt too, if you like." +msgstr "" + +#: shell-novice/_episodes/01-intro.md:113 +# header +msgid "### How does the shell know what `ls` and its flags mean?" +msgstr "" + +#: shell-novice/_episodes/01-intro.md:115 +msgid "Every command is a program stored somewhere on the computer, and the shell keeps a\n" +"list of places to search for commands (the list is in a **variable** called `$PATH`, \n" +"but those are concepts we'll meet later and not too important at the moment). Recall\n" +"that commands, flags and arguments are separated by spaces." +msgstr "" + +#: shell-novice/_episodes/01-intro.md:120 +msgid "So let's look at the REPL (read-evaluate-print loop) in more detail. Notice that the\n" +"\"evaluate\" step is made of two parts:" +msgstr "" + +#: shell-novice/_episodes/01-intro.md:123 +# ordered list +msgid "1. Read what was typed (`ls -F /` in our example) " +msgstr "" + +#: shell-novice/_episodes/01-intro.md:124 +msgid " The shell uses the spaces to split the line into the command, flags, and arguments\n" +"2. Evaluate: \n" +" a. Find a program called `ls` \n" +" b. Execute it, passing it the flags and arguments (`-F` and `/`) to \n" +" interpret as the program sees fit \n" +"3. Print the output produced by the program" +msgstr "" + +#: shell-novice/_episodes/01-intro.md:131 +msgid "and then print the prompt and wait for you to enter another command." +msgstr "" + +#: shell-novice/_episodes/01-intro.md:133 +# blockquote, which can be cascaded +msgid "> ## Command not found " +msgstr "" + +#: shell-novice/_episodes/01-intro.md:134 +# blockquote, which can be cascaded +msgid "> If the shell can't find a program whose name is the command you typed, it " +msgstr "" + +#: shell-novice/_episodes/01-intro.md:135 +# blockquote, which can be cascaded +msgid "> will print an erorr message like:" +msgstr "" + +#: shell-novice/_episodes/01-intro.md:136 +#: shell-novice/_episodes/01-intro.md:142 +#: shell-novice/_episodes/05-loop.md:349 +#: shell-novice/_episodes/05-loop.md:351 +#: shell-novice/_episodes/07-find.md:283 +#: shell-novice/_episodes/07-find.md:286 +#: shell-novice/_episodes/07-find.md:661 +# blockquote, which can be cascaded +msgid "> " +msgstr "" + +#: shell-novice/_episodes/01-intro.md:137 +#: shell-novice/_episodes/01-intro.md:140 +#: shell-novice/_episodes/03-create.md:570 +#: shell-novice/_episodes/03-create.md:572 +#: shell-novice/_episodes/03-create.md:574 +#: shell-novice/_episodes/03-create.md:576 +#: shell-novice/_episodes/03-create.md:578 +#: shell-novice/_episodes/03-create.md:583 +#: shell-novice/_episodes/03-create.md:633 +#: shell-novice/_episodes/03-create.md:635 +#: shell-novice/_episodes/03-create.md:637 +#: shell-novice/_episodes/03-create.md:639 +#: shell-novice/_episodes/03-create.md:675 +#: shell-novice/_episodes/03-create.md:677 +#: shell-novice/_episodes/05-loop.md:352 +#: shell-novice/_episodes/05-loop.md:357 +#: shell-novice/_episodes/07-find.md:287 +#: shell-novice/_episodes/07-find.md:293 +# blockquote, which can be cascaded +msgid "> ~~~" +msgstr "" + +#: shell-novice/_episodes/01-intro.md:138 +# blockquote, which can be cascaded +msgid "> $ ls-F" +msgstr "" + +#: shell-novice/_episodes/01-intro.md:139 +# blockquote, which can be cascaded +msgid "> -bash: ls-F: command not found" +msgstr "" + +#: shell-novice/_episodes/01-intro.md:141 +#: shell-novice/_episodes/03-create.md:573 +#: shell-novice/_episodes/03-create.md:584 +#: shell-novice/_episodes/03-create.md:636 +#: shell-novice/_episodes/03-create.md:678 +#: shell-novice/_episodes/05-loop.md:358 +# blockquote, which can be cascaded +msgid "> {: .language-bash}" +msgstr "" + +#: shell-novice/_episodes/01-intro.md:143 +# blockquote, which can be cascaded +msgid "> Usually this means that you have mis-typed the command - in this case we omitted" +msgstr "" + +#: shell-novice/_episodes/01-intro.md:144 +# blockquote, which can be cascaded +msgid "> the space between `ls` and `-F`. " +msgstr "" + +#: shell-novice/_episodes/01-intro.md:145 +#: shell-novice/_episodes/02-filedir.md:70 +#: shell-novice/_episodes/02-filedir.md:107 +#: shell-novice/_episodes/02-filedir.md:190 +#: shell-novice/_episodes/02-filedir.md:337 +#: shell-novice/_episodes/02-filedir.md:576 +#: shell-novice/_episodes/02-filedir.md:589 +#: shell-novice/_episodes/02-filedir.md:678 +#: shell-novice/_episodes/02-filedir.md:781 +#: shell-novice/_episodes/03-create.md:77 +#: shell-novice/_episodes/03-create.md:105 +#: shell-novice/_episodes/03-create.md:145 +#: shell-novice/_episodes/03-create.md:175 +#: shell-novice/_episodes/03-create.md:257 +#: shell-novice/_episodes/03-create.md:344 +#: shell-novice/_episodes/03-create.md:532 +#: shell-novice/_episodes/04-pipefilter.md:99 +#: shell-novice/_episodes/04-pipefilter.md:297 +#: shell-novice/_episodes/04-pipefilter.md:402 +#: shell-novice/_episodes/04-pipefilter.md:558 +#: shell-novice/_episodes/05-loop.md:85 +#: shell-novice/_episodes/05-loop.md:195 +#: shell-novice/_episodes/05-loop.md:209 +#: shell-novice/_episodes/05-loop.md:381 +#: shell-novice/_episodes/05-loop.md:517 +#: shell-novice/_episodes/05-loop.md:563 +#: shell-novice/_episodes/05-loop.md:579 +#: shell-novice/_episodes/06-script.md:89 +#: shell-novice/_episodes/06-script.md:147 +#: shell-novice/_episodes/06-script.md:337 +#: shell-novice/_episodes/07-find.md:62 +#: shell-novice/_episodes/07-find.md:280 +#: shell-novice/_episodes/07-find.md:524 +#: shell-novice/_episodes/07-find.md:631 +#: shell-novice/setup.md:63 +# SC/DC Template label +msgid "{: .callout}" +msgstr "" + +#: shell-novice/_episodes/01-intro.md:147 +# header +msgid "### Is it difficult?" +msgstr "" + +#: shell-novice/_episodes/01-intro.md:149 +msgid "It isn't difficult, but it is a different model of interacting than a GUI, and that \n" +"will take some effort - and some time - to learn. A GUI \n" +"presents you with choices and you select one. With a CLI the choices are combinations \n" +"of commands and parameters, more like words in a language than buttons on a screen. They\n" +"are not presented to you so\n" +"you must learn a few, like learning some vocabulary in a new language. But a small \n" +"number of commands gets you a long way, and we'll cover those essential few today." +msgstr "" + +#: shell-novice/_episodes/01-intro.md:157 +# header +msgid "### Flexibility and automation " +msgstr "" + +#: shell-novice/_episodes/01-intro.md:159 +msgid "The grammar of a shell allows you to combine existing tools into powerful\n" +"pipelines and handle large volumes of data automatically. Sequences of\n" +"commands can be written into a *script*, improving the reproducibility of \n" +"workflows and allowing you to repeat them easily." +msgstr "" + +#: shell-novice/_episodes/01-intro.md:164 +msgid "In addition, the command line is often the easiest way to interact with remote machines and supercomputers.\n" +"Familiarity with the shell is near essential to run a variety of specialized tools and resources\n" +"including high-performance computing systems.\n" +"As clusters and cloud computing systems become more popular for scientific data crunching,\n" +"being able to interact with the shell is becoming a necessary skill.\n" +"We can build on the command-line skills covered here\n" +"to tackle a wide range of scientific questions and computational challenges." +msgstr "" + +#: shell-novice/_episodes/01-intro.md:172 +# header +msgid "## Nelle's Pipeline: Starting Point" +msgstr "" + +#: shell-novice/_episodes/01-intro.md:174 +msgid "Nelle Nemo, a marine biologist,\n" +"has just returned from a six-month survey of the\n" +"[North Pacific Gyre](http://en.wikipedia.org/wiki/North_Pacific_Gyre),\n" +"where she has been sampling gelatinous marine life in the\n" +"[Great Pacific Garbage Patch](http://en.wikipedia.org/wiki/Great_Pacific_Garbage_Patch).\n" +"She has 1520 samples in all and now needs to:" +msgstr "" + +#: shell-novice/_episodes/01-intro.md:181 +# ordered list +msgid "1. Run each sample through an assay machine" +msgstr "" + +#: shell-novice/_episodes/01-intro.md:182 +msgid " that will measure the relative abundance of 300 different proteins.\n" +" The machine's output for a single sample is\n" +" a file with one line for each protein.\n" +"2. Calculate statistics for each of the proteins separately\n" +" using a program her supervisor wrote called `goostats`.\n" +"3. Write up results.\n" +" Her supervisor would really like her to do this by the end of the month\n" +" so that her paper can appear in an upcoming special issue of *Aquatic Goo Letters*." +msgstr "" + +#: shell-novice/_episodes/01-intro.md:191 +msgid "It takes about half an hour for the assay machine to process each sample.\n" +"The good news is that\n" +"it only takes two minutes to set each one up.\n" +"Since her lab has eight assay machines that she can use in parallel,\n" +"this step will \"only\" take about two weeks." +msgstr "" + +#: shell-novice/_episodes/01-intro.md:197 +msgid "The bad news is that if she has to run `goostats` by hand,\n" +"she'll have to enter filenames and click \"OK\" 1520 times.\n" +"At 30 seconds per sample,\n" +"the whole process will take more than 12 hours\n" +"(and that's assuming the best-case scenario where she is ready to enter the next file name\n" +"as soon as the previous sample analysis has finished).\n" +"This zero-breaks always-ready scenario is only achieveable by a machine so it would\n" +"likely take much longer than 12 hours, not to mention that\n" +"the chances of her typing all of those commands correctly are practically zero.\n" +"Missing that paper deadline is looking increasingly likely." +msgstr "" + +#: shell-novice/_episodes/01-intro.md:208 +msgid "The next few lessons will explore what she should do instead.\n" +"More specifically,\n" +"they explain how she can use a command shell\n" +"to automate the repetitive steps in her processing pipeline\n" +"so that her computer can work 24 hours a day while she writes her paper.\n" +"As a bonus,\n" +"once she has put a processing pipeline together,\n" +"she will be able to use it again whenever she collects more data." +msgstr "" + +#: shell-novice/_episodes/02-filedir.md:1 +# Front Matter +msgid "---\n" +"title: \"Navigating Files and Directories\"\n" +"teaching: 30\n" +"exercises: 10\n" +"questions:\n" +"- \"How can I move around on my computer?\"\n" +"- \"How can I see what files and directories I have?\"\n" +"- \"How can I specify the location of a file or directory on my computer?\"\n" +"objectives:\n" +"- \"Explain the similarities and differences between a file and a directory.\"\n" +"- \"Translate an absolute path into a relative path and vice versa.\"\n" +"- \"Construct absolute and relative paths that identify specific files and directories.\"\n" +"- \"Demonstrate the use of tab completion, and explain its advantages.\"\n" +"keypoints:\n" +"- \"The file system is responsible for managing information on the disk.\"\n" +"- \"Information is stored in files, which are stored in directories (folders).\"\n" +"- \"Directories can also store other directories, which forms a directory tree.\"\n" +"- \"`cd path` changes the current working directory.\"\n" +"- \"`ls path` prints a listing of a specific file or directory; `ls` on its own lists the current working directory.\"\n" +"- \"`pwd` prints the user's current working directory.\"\n" +"- \"`whoami` shows the user's current identity.\"\n" +"- \"`/` on its own is the root directory of the whole file system.\"\n" +"- \"A relative path specifies a location starting from the current location.\"\n" +"- \"An absolute path specifies a location from the root of the file system.\"\n" +"- \"Directory names in a path are separated with `/` on Unix, but `\\\\\\\\` on Windows.\"\n" +"- \"`..` means 'the directory above the current one'; `.` on its own means 'the current directory'.\"\n" +"- \"Most files' names are `something.extension`. The extension isn't required, and doesn't guarantee anything, but is normally used to indicate the type of data in the file.\"\n" +"---" +msgstr "" + +#: shell-novice/_episodes/02-filedir.md:30 +msgid "The part of the operating system responsible for managing files and directories \n" +"is called the **file system**.\n" +"It organizes our data into files,\n" +"which hold information,\n" +"and directories (also called \"folders\"),\n" +"which hold files or other directories." +msgstr "" + +#: shell-novice/_episodes/02-filedir.md:37 +msgid "Several commands are frequently used to create, inspect, rename, and delete files and directories.\n" +"To start exploring them, we'll go to our open shell window:" +msgstr "" + +#: shell-novice/_episodes/02-filedir.md:40 +msgid "First let's find out where we are by running a command called `pwd`\n" +"(which stands for \"print working directory\"). Directories are like *places* - at any time\n" +"while we are using the shell we are in exactly one place, called\n" +"our **current working directory**. Commands mostly read and write files in the \n" +"current working directory, i.e. \"here\", so knowing where you are before running\n" +"a command is important. `pwd` shows you where you are:" +msgstr "" + +#: shell-novice/_episodes/02-filedir.md:47 +#: shell-novice/_episodes/02-filedir.md:474 +#: shell-novice/_episodes/02-filedir.md:530 +#: shell-novice/_episodes/02-filedir.md:603 +#: shell-novice/_episodes/02-filedir.md:647 +#: shell-novice/_episodes/03-create.md:27 +#: shell-novice/_episodes/03-create.md:262 +#: shell-novice/_episodes/03-create.md:350 +# code block +msgid "~~~\n" +"$ pwd\n" +"~~~" +msgstr "" + +#: shell-novice/_episodes/02-filedir.md:52 +#: shell-novice/_episodes/02-filedir.md:608 +# code block +msgid "~~~\n" +"/Users/nelle\n" +"~~~" +msgstr "" + +#: shell-novice/_episodes/02-filedir.md:55 +#: shell-novice/_episodes/02-filedir.md:135 +#: shell-novice/_episodes/02-filedir.md:158 +#: shell-novice/_episodes/02-filedir.md:321 +#: shell-novice/_episodes/02-filedir.md:414 +#: shell-novice/_episodes/02-filedir.md:443 +#: shell-novice/_episodes/02-filedir.md:482 +#: shell-novice/_episodes/02-filedir.md:493 +#: shell-novice/_episodes/02-filedir.md:538 +#: shell-novice/_episodes/02-filedir.md:552 +#: shell-novice/_episodes/02-filedir.md:611 +#: shell-novice/_episodes/02-filedir.md:655 +#: shell-novice/_episodes/03-create.md:35 +#: shell-novice/_episodes/03-create.md:45 +#: shell-novice/_episodes/03-create.md:69 +#: shell-novice/_episodes/03-create.md:188 +#: shell-novice/_episodes/03-create.md:270 +#: shell-novice/_episodes/03-create.md:281 +#: shell-novice/_episodes/03-create.md:358 +#: shell-novice/_episodes/03-create.md:370 +#: shell-novice/_episodes/03-create.md:397 +#: shell-novice/_episodes/03-create.md:441 +#: shell-novice/_episodes/03-create.md:489 +#: shell-novice/_episodes/04-pipefilter.md:43 +#: shell-novice/_episodes/04-pipefilter.md:66 +#: shell-novice/_episodes/04-pipefilter.md:188 +#: shell-novice/_episodes/04-pipefilter.md:220 +#: shell-novice/_episodes/04-pipefilter.md:286 +#: shell-novice/_episodes/04-pipefilter.md:362 +#: shell-novice/_episodes/04-pipefilter.md:379 +#: shell-novice/_episodes/04-pipefilter.md:418 +#: shell-novice/_episodes/04-pipefilter.md:448 +#: shell-novice/_episodes/04-pipefilter.md:460 +#: shell-novice/_episodes/04-pipefilter.md:759 +#: shell-novice/_episodes/04-pipefilter.md:775 +#: shell-novice/_episodes/04-pipefilter.md:797 +#: shell-novice/_episodes/04-pipefilter.md:813 +#: shell-novice/_episodes/05-loop.md:80 +#: shell-novice/_episodes/05-loop.md:313 +#: shell-novice/_episodes/05-loop.md:449 +#: shell-novice/_episodes/05-loop.md:472 +#: shell-novice/_episodes/05-loop.md:528 +#: shell-novice/_episodes/06-script.md:73 +#: shell-novice/_episodes/06-script.md:106 +#: shell-novice/_episodes/06-script.md:124 +#: shell-novice/_episodes/06-script.md:140 +#: shell-novice/_episodes/06-script.md:162 +#: shell-novice/_episodes/06-script.md:178 +#: shell-novice/_episodes/06-script.md:195 +#: shell-novice/_episodes/06-script.md:211 +#: shell-novice/_episodes/06-script.md:255 +#: shell-novice/_episodes/06-script.md:272 +#: shell-novice/_episodes/07-find.md:54 +#: shell-novice/_episodes/07-find.md:76 +#: shell-novice/_episodes/07-find.md:93 +#: shell-novice/_episodes/07-find.md:112 +#: shell-novice/_episodes/07-find.md:128 +#: shell-novice/_episodes/07-find.md:148 +#: shell-novice/_episodes/07-find.md:165 +#: shell-novice/_episodes/07-find.md:179 +#: shell-novice/_episodes/07-find.md:200 +#: shell-novice/_episodes/07-find.md:230 +#: shell-novice/_episodes/07-find.md:422 +#: shell-novice/_episodes/07-find.md:451 +#: shell-novice/_episodes/07-find.md:472 +#: shell-novice/_episodes/07-find.md:484 +#: shell-novice/_episodes/07-find.md:516 +#: shell-novice/_episodes/07-find.md:548 +#: shell-novice/_episodes/07-find.md:579 +# SC/DC Template label +msgid "{: .output}" +msgstr "" + +#: shell-novice/_episodes/02-filedir.md:57 +msgid "Here,\n" +"the computer's response is `/Users/nelle`,\n" +"which is Nelle's **home directory**:" +msgstr "" + +#: shell-novice/_episodes/02-filedir.md:61 +# blockquote, which can be cascaded +msgid "> ## Home Directory Variation" +msgstr "" + +#: shell-novice/_episodes/02-filedir.md:62 +msgid ">\n" +"> The home directory path will look different on different operating systems.\n" +"> On Linux it may look like `/home/nelle`,\n" +"> and on Windows it will be similar to `C:\\Documents and Settings\\nelle` or\n" +"> `C:\\Users\\nelle`. \n" +"> (Note that it may look slightly different for different versions of Windows.)\n" +"> In future examples, we've used Mac output as the default - Linux and Windows\n" +"> output may differ slightly, but should be generally similar. " +msgstr "" + +#: shell-novice/_episodes/02-filedir.md:72 +msgid "To understand what a \"home directory\" is,\n" +"let's have a look at how the file system as a whole is organized. For the\n" +"sake of this example, we'll be\n" +"illustrating the filesystem on our scientist Nelle's computer. After this\n" +"illustration, you'll be learning commands to explore your own filesystem,\n" +"which will be constructed in a similar way, but not be exactly identical. " +msgstr "" + +#: shell-novice/_episodes/02-filedir.md:79 +msgid "On Nelle's computer, the filesystem looks like this:" +msgstr "" + +#: shell-novice/_episodes/02-filedir.md:81 +msgid "![The File System](../fig/filesystem.svg)" +msgstr "" + +#: shell-novice/_episodes/02-filedir.md:83 +msgid "At the top is the **root directory**\n" +"that holds everything else.\n" +"We refer to it using a slash character `/` on its own;\n" +"this is the leading slash in `/Users/nelle`." +msgstr "" + +#: shell-novice/_episodes/02-filedir.md:88 +msgid "Inside that directory are several other directories:\n" +"`bin` (which is where some built-in programs are stored),\n" +"`data` (for miscellaneous data files),\n" +"`Users` (where users' personal directories are located),\n" +"`tmp` (for temporary files that don't need to be stored long-term),\n" +"and so on. " +msgstr "" + +#: shell-novice/_episodes/02-filedir.md:95 +msgid "We know that our current working directory `/Users/nelle` is stored inside `/Users`\n" +"because `/Users` is the first part of its name.\n" +"Similarly,\n" +"we know that `/Users` is stored inside the root directory `/`\n" +"because its name begins with `/`." +msgstr "" + +#: shell-novice/_episodes/02-filedir.md:101 +# blockquote, which can be cascaded +msgid "> ## Slashes" +msgstr "" + +#: shell-novice/_episodes/02-filedir.md:102 +msgid ">\n" +"> Notice that there are two meanings for the `/` character.\n" +"> When it appears at the front of a file or directory name,\n" +"> it refers to the root directory. When it appears *inside* a name,\n" +"> it's just a separator." +msgstr "" + +#: shell-novice/_episodes/02-filedir.md:109 +msgid "Underneath `/Users`,\n" +"we find one directory for each user with an account on Nelle's machine,\n" +"her colleagues the Mummy and Wolfman. " +msgstr "" + +#: shell-novice/_episodes/02-filedir.md:113 +msgid "![Home Directories](../fig/home-directories.svg)" +msgstr "" + +#: shell-novice/_episodes/02-filedir.md:115 +msgid "The Mummy's files are stored in `/Users/imhotep`,\n" +"Wolfman's in `/Users/larry`,\n" +"and Nelle's in `/Users/nelle`. Because Nelle is the user in our\n" +"examples here, this is why we get `/Users/nelle` as our home directory. \n" +"Typically, when you open a new command prompt you will be in\n" +"your home directory to start. " +msgstr "" + +#: shell-novice/_episodes/02-filedir.md:122 +msgid "Now let's learn the command that will let us see the contents of our\n" +"own filesystem. We can see what's in our home directory by running `ls`,\n" +"which stands for \"listing\":" +msgstr "" + +#: shell-novice/_episodes/02-filedir.md:126 +#: shell-novice/_episodes/03-create.md:180 +#: shell-novice/_episodes/03-create.md:243 +# code block +msgid "~~~\n" +"$ ls\n" +"~~~" +msgstr "" + +#: shell-novice/_episodes/02-filedir.md:131 +# code block +msgid "~~~\n" +"Applications Documents Library Music Public\n" +"Desktop Downloads Movies Pictures\n" +"~~~" +msgstr "" + +#: shell-novice/_episodes/02-filedir.md:137 +msgid "(Again, your results may be slightly different depending on your operating\n" +"system and how you have customized your filesystem.)" +msgstr "" + +#: shell-novice/_episodes/02-filedir.md:140 +msgid "`ls` prints the names of the files and directories in the current directory. \n" +"We can make its output more comprehensible by using the **flag** `-F`\n" +"(also known as a **switch** or an **option**) ,\n" +"which tells `ls` to add a marker to file and directory names to indicate what\n" +"they are. A trailing `/` indicates that this is a directory. Depending on your\n" +"settings, it might also use colors to indicate whether each entry is a file or \n" +"directory.\n" +"You might recall that we used `ls -F` in an earlier example." +msgstr "" + +#: shell-novice/_episodes/02-filedir.md:149 +#: shell-novice/_episodes/02-filedir.md:484 +#: shell-novice/_episodes/03-create.md:37 +#: shell-novice/_episodes/03-create.md:61 +# code block +msgid "~~~\n" +"$ ls -F\n" +"~~~" +msgstr "" + +#: shell-novice/_episodes/02-filedir.md:154 +# code block +msgid "~~~\n" +"Applications/ Documents/ Library/ Music/ Public/\n" +"Desktop/ Downloads/ Movies/ Pictures/\n" +"~~~" +msgstr "" + +#: shell-novice/_episodes/02-filedir.md:160 +# header +msgid "### Getting help" +msgstr "" + +#: shell-novice/_episodes/02-filedir.md:162 +msgid "`ls` has lots of other **flags**. There are two common ways to find out how \n" +"to use a command and what flags it accepts:" +msgstr "" + +#: shell-novice/_episodes/02-filedir.md:165 +# ordered list +msgid "1. We can pass a `--help` flag to the command, such as:" +msgstr "" + +#: shell-novice/_episodes/02-filedir.md:166 +msgid " ~~~\n" +" $ ls --help\n" +" ~~~" +msgstr "" + +#: shell-novice/_episodes/02-filedir.md:169 +#: shell-novice/_episodes/02-filedir.md:175 +#: shell-novice/_extras/guide.md:210 +# SC/DC Template label +msgid " {: .bash}" +msgstr "" + +#: shell-novice/_episodes/02-filedir.md:171 +# ordered list +msgid "2. We can read its manual with `man`, such as:" +msgstr "" + +#: shell-novice/_episodes/02-filedir.md:172 +msgid " ~~~\n" +" $ man ls \n" +" ~~~" +msgstr "" + +#: shell-novice/_episodes/02-filedir.md:177 +msgid "If you use a Mac, or Git for Windows, you might find that only one of these works \n" +"(probably `man` on Mac and `--help` in Windows). We'll describe both ways." +msgstr "" + +#: shell-novice/_episodes/02-filedir.md:180 +msgid "Of course there is a third way: searching the internet via your web browser. \n" +"When using internet search, including the phrase `unix man page` in your search\n" +"query will help to find relevant results." +msgstr "" + +#: shell-novice/_episodes/02-filedir.md:184 +# blockquote, which can be cascaded +msgid "> ## Manual pages on the web" +msgstr "" + +#: shell-novice/_episodes/02-filedir.md:185 +msgid ">\n" +"> GNU provides links to its\n" +"> [manuals](http://www.gnu.org/manual/manual.html) including the\n" +"> [core GNU utilities](http://www.gnu.org/software/coreutils/manual/coreutils.html),\n" +"> which covers many commands introduced within this lesson." +msgstr "" + +#: shell-novice/_episodes/02-filedir.md:192 +# header +msgid "#### The `--help` flag" +msgstr "" + +#: shell-novice/_episodes/02-filedir.md:194 +msgid "Many bash commands, and programs that people have written that can be\n" +"run from within bash, support a `--help` flag to display more\n" +"information on how to use the command or program." +msgstr "" + +#: shell-novice/_episodes/02-filedir.md:198 +# code block +msgid "~~~\n" +"$ ls --help\n" +"~~~" +msgstr "" + +#: shell-novice/_episodes/02-filedir.md:203 +# code block +msgid "~~~\n" +"Usage: ls [OPTION]... [FILE]...\n" +"List information about the FILEs (the current directory by default).\n" +"Sort entries alphabetically if none of -cftuvSUX nor --sort is specified.\n" +"\n" +"Mandatory arguments to long options are mandatory for short options too.\n" +" -a, --all do not ignore entries starting with .\n" +" -A, --almost-all do not list implied . and ..\n" +" --author with -l, print the author of each file\n" +" -b, --escape print C-style escapes for nongraphic characters\n" +" --block-size=SIZE scale sizes by SIZE before printing them; e.g.,\n" +" '--block-size=M' prints sizes in units of\n" +" 1,048,576 bytes; see SIZE format below\n" +" -B, --ignore-backups do not list implied entries ending with ~\n" +" -c with -lt: sort by, and show, ctime (time of last\n" +" modification of file status information);\n" +" with -l: show ctime and sort by name;\n" +" otherwise: sort by ctime, newest first\n" +" -C list entries by columns\n" +" --color[=WHEN] colorize the output; WHEN can be 'always' (default\n" +" if omitted), 'auto', or 'never'; more info below\n" +" -d, --directory list directories themselves, not their contents\n" +" -D, --dired generate output designed for Emacs' dired mode\n" +" -f do not sort, enable -aU, disable -ls --color\n" +" -F, --classify append indicator (one of */=>@|) to entries\n" +" --file-type likewise, except do not append '*'\n" +" --format=WORD across -x, commas -m, horizontal -x, long -l,\n" +" single-column -1, verbose -l, vertical -C\n" +" --full-time like -l --time-style=full-iso\n" +" -g like -l, but do not list owner\n" +" --group-directories-first\n" +" group directories before files;\n" +" can be augmented with a --sort option, but any\n" +" use of --sort=none (-U) disables grouping\n" +" -G, --no-group in a long listing, don't print group names\n" +" -h, --human-readable with -l and/or -s, print human readable sizes\n" +" (e.g., 1K 234M 2G)\n" +" --si likewise, but use powers of 1000 not 1024\n" +" -H, --dereference-command-line\n" +" follow symbolic links listed on the command line\n" +" --dereference-command-line-symlink-to-dir\n" +" follow each command line symbolic link\n" +" that points to a directory\n" +" --hide=PATTERN do not list implied entries matching shell PATTERN\n" +" (overridden by -a or -A)\n" +" --indicator-style=WORD append indicator with style WORD to entry names:\n" +" none (default), slash (-p),\n" +" file-type (--file-type), classify (-F)\n" +" -i, --inode print the index number of each file\n" +" -I, --ignore=PATTERN do not list implied entries matching shell PATTERN\n" +" -k, --kibibytes default to 1024-byte blocks for disk usage\n" +" -l use a long listing format\n" +" -L, --dereference when showing file information for a symbolic\n" +" link, show information for the file the link\n" +" references rather than for the link itself\n" +" -m fill width with a comma separated list of entries\n" +" -n, --numeric-uid-gid like -l, but list numeric user and group IDs\n" +" -N, --literal print raw entry names (don't treat e.g. control\n" +" characters specially)\n" +" -o like -l, but do not list group information\n" +" -p, --indicator-style=slash\n" +" append / indicator to directories\n" +" -q, --hide-control-chars print ? instead of nongraphic characters\n" +" --show-control-chars show nongraphic characters as-is (the default,\n" +" unless program is 'ls' and output is a terminal)\n" +" -Q, --quote-name enclose entry names in double quotes\n" +" --quoting-style=WORD use quoting style WORD for entry names:\n" +" literal, locale, shell, shell-always,\n" +" shell-escape, shell-escape-always, c, escape\n" +" -r, --reverse reverse order while sorting\n" +" -R, --recursive list subdirectories recursively\n" +" -s, --size print the allocated size of each file, in blocks\n" +" -S sort by file size, largest first\n" +" --sort=WORD sort by WORD instead of name: none (-U), size (-S),\n" +" time (-t), version (-v), extension (-X)\n" +" --time=WORD with -l, show time as WORD instead of default\n" +" modification time: atime or access or use (-u);\n" +" ctime or status (-c); also use specified time\n" +" as sort key if --sort=time (newest first)\n" +" --time-style=STYLE with -l, show times using style STYLE:\n" +" full-iso, long-iso, iso, locale, or +FORMAT;\n" +" FORMAT is interpreted like in 'date'; if FORMAT\n" +" is FORMAT1FORMAT2, then FORMAT1 applies\n" +" to non-recent files and FORMAT2 to recent files;\n" +" if STYLE is prefixed with 'posix-', STYLE\n" +" takes effect only outside the POSIX locale\n" +" -t sort by modification time, newest first\n" +" -T, --tabsize=COLS assume tab stops at each COLS instead of 8\n" +" -u with -lt: sort by, and show, access time;\n" +" with -l: show access time and sort by name;\n" +" otherwise: sort by access time, newest first\n" +" -U do not sort; list entries in directory order\n" +" -v natural sort of (version) numbers within text\n" +" -w, --width=COLS set output width to COLS. 0 means no limit\n" +" -x list entries by lines instead of by columns\n" +" -X sort alphabetically by entry extension\n" +" -Z, --context print any security context of each file\n" +" -1 list one file per line. Avoid '\\n' with -q or -b\n" +" --help display this help and exit\n" +" --version output version information and exit\n" +"\n" +"The SIZE argument is an integer and optional unit (example: 10K is 10*1024).\n" +"Units are K,M,G,T,P,E,Z,Y (powers of 1024) or KB,MB,... (powers of 1000).\n" +"\n" +"Using color to distinguish file types is disabled both by default and\n" +"with --color=never. With --color=auto, ls emits color codes only when\n" +"standard output is connected to a terminal. The LS_COLORS environment\n" +"variable can change the settings. Use the dircolors command to set it.\n" +"\n" +"Exit status:\n" +" 0 if OK,\n" +" 1 if minor problems (e.g., cannot access subdirectory),\n" +" 2 if serious trouble (e.g., cannot access command-line argument).\n" +"\n" +"GNU coreutils online help: \n" +"Full documentation at: \n" +"or available locally via: info '(coreutils) ls invocation'\n" +"~~~" +msgstr "" + +#: shell-novice/_episodes/02-filedir.md:323 +# blockquote, which can be cascaded +msgid "> ## Unsupported command-line options" +msgstr "" + +#: shell-novice/_episodes/02-filedir.md:324 +# blockquote, which can be cascaded +msgid "> If you try to use an option (flag) that is not supported, `ls` and other programs" +msgstr "" + +#: shell-novice/_episodes/02-filedir.md:325 +# blockquote, which can be cascaded +msgid "> will usually print an error message similar to this:" +msgstr "" + +#: shell-novice/_episodes/02-filedir.md:326 +msgid ">\n" +"> ~~~\n" +"> $ ls -j\n" +"> ~~~\n" +"> {: .language-bash}\n" +"> \n" +"> ~~~\n" +"> ls: invalid option -- 'j'\n" +"> Try 'ls --help' for more information.\n" +"> ~~~" +msgstr "" + +#: shell-novice/_episodes/02-filedir.md:336 +# SC/DC Template label +msgid "> {: .error}" +msgstr "" + +#: shell-novice/_episodes/02-filedir.md:339 +# header +msgid "#### The `man` command" +msgstr "" + +#: shell-novice/_episodes/02-filedir.md:341 +msgid "The other way to learn about `ls` is to type \n" +"~~~\n" +"$ man ls\n" +"~~~" +msgstr "" + +#: shell-novice/_episodes/02-filedir.md:345 +# SC/DC Template label +msgid "{: .bash}" +msgstr "" + +#: shell-novice/_episodes/02-filedir.md:347 +msgid "This will turn your terminal into a page with a description \n" +"of the `ls` command and its options and, if you're lucky, some examples\n" +"of how to use it." +msgstr "" + +#: shell-novice/_episodes/02-filedir.md:351 +msgid "To navigate through the `man` pages,\n" +"you may use the up and down arrow keys to move line-by-line,\n" +"or try the \"b\" and spacebar keys to skip up and down by a full page.\n" +"To search for a character or word in the `man` pages, \n" +"use \"/\" followed by the character or word you are searching for. " +msgstr "" + +#: shell-novice/_episodes/02-filedir.md:357 +msgid "To **quit** the `man` pages, press `q`. " +msgstr "" + +#: shell-novice/_episodes/02-filedir.md:360 +# blockquote, which can be cascaded +msgid "> ## Exploring More `ls` Flags" +msgstr "" + +#: shell-novice/_episodes/02-filedir.md:361 +msgid ">\n" +"> What does the command `ls` do when used with the `-l` and `-h` flags?\n" +">\n" +"> Some of its output is about properties that we do not cover in this lesson (such\n" +"> as file permissions and ownership), but the rest should be useful\n" +"> nevertheless.\n" +">\n" +"> > ## Solution\n" +"> > The `-l` flag makes `ls` use a **l**ong listing format, showing not only\n" +"> > the file/directory names but also additional information such as the file size\n" +"> > and the time of its last modification. The `-h` flag makes the file size\n" +"> > \"**h**uman readable\", i.e. display something like `5.3K` instead of `5369`." +msgstr "" + +#: shell-novice/_episodes/02-filedir.md:373 +#: shell-novice/_episodes/02-filedir.md:387 +#: shell-novice/_episodes/02-filedir.md:706 +#: shell-novice/_episodes/02-filedir.md:727 +#: shell-novice/_episodes/02-filedir.md:753 +#: shell-novice/_episodes/03-create.md:226 +#: shell-novice/_episodes/03-create.md:324 +#: shell-novice/_episodes/03-create.md:471 +#: shell-novice/_episodes/03-create.md:555 +#: shell-novice/_episodes/03-create.md:604 +#: shell-novice/_episodes/03-create.md:650 +#: shell-novice/_episodes/03-create.md:691 +#: shell-novice/_episodes/03-create.md:740 +#: shell-novice/_episodes/04-pipefilter.md:123 +#: shell-novice/_episodes/04-pipefilter.md:168 +#: shell-novice/_episodes/04-pipefilter.md:263 +#: shell-novice/_episodes/04-pipefilter.md:340 +#: shell-novice/_episodes/04-pipefilter.md:483 +#: shell-novice/_episodes/04-pipefilter.md:604 +#: shell-novice/_episodes/04-pipefilter.md:641 +#: shell-novice/_episodes/04-pipefilter.md:702 +#: shell-novice/_episodes/04-pipefilter.md:733 +#: shell-novice/_episodes/04-pipefilter.md:860 +#: shell-novice/_episodes/04-pipefilter.md:884 +#: shell-novice/_episodes/05-loop.md:186 +#: shell-novice/_episodes/05-loop.md:261 +#: shell-novice/_episodes/05-loop.md:282 +#: shell-novice/_episodes/05-loop.md:606 +#: shell-novice/_episodes/05-loop.md:633 +#: shell-novice/_episodes/05-loop.md:685 +#: shell-novice/_episodes/05-loop.md:712 +#: shell-novice/_episodes/06-script.md:312 +#: shell-novice/_episodes/06-script.md:387 +#: shell-novice/_episodes/06-script.md:496 +#: shell-novice/_episodes/06-script.md:526 +#: shell-novice/_episodes/06-script.md:570 +#: shell-novice/_episodes/06-script.md:612 +#: shell-novice/_episodes/07-find.md:249 +#: shell-novice/_episodes/07-find.md:338 +#: shell-novice/_episodes/07-find.md:382 +#: shell-novice/_episodes/07-find.md:605 +#: shell-novice/_episodes/07-find.md:657 +#: shell-novice/_episodes/07-find.md:679 +# SC/DC Template label +msgid "> {: .solution}" +msgstr "" + +#: shell-novice/_episodes/02-filedir.md:374 +#: shell-novice/_episodes/02-filedir.md:388 +#: shell-novice/_episodes/02-filedir.md:707 +#: shell-novice/_episodes/02-filedir.md:728 +#: shell-novice/_episodes/02-filedir.md:754 +#: shell-novice/_episodes/03-create.md:227 +#: shell-novice/_episodes/03-create.md:325 +#: shell-novice/_episodes/03-create.md:472 +#: shell-novice/_episodes/03-create.md:556 +#: shell-novice/_episodes/03-create.md:605 +#: shell-novice/_episodes/03-create.md:651 +#: shell-novice/_episodes/03-create.md:692 +#: shell-novice/_episodes/03-create.md:741 +#: shell-novice/_episodes/04-pipefilter.md:124 +#: shell-novice/_episodes/04-pipefilter.md:169 +#: shell-novice/_episodes/04-pipefilter.md:239 +#: shell-novice/_episodes/04-pipefilter.md:264 +#: shell-novice/_episodes/04-pipefilter.md:341 +#: shell-novice/_episodes/04-pipefilter.md:484 +#: shell-novice/_episodes/04-pipefilter.md:605 +#: shell-novice/_episodes/04-pipefilter.md:642 +#: shell-novice/_episodes/04-pipefilter.md:667 +#: shell-novice/_episodes/04-pipefilter.md:703 +#: shell-novice/_episodes/04-pipefilter.md:734 +#: shell-novice/_episodes/04-pipefilter.md:861 +#: shell-novice/_episodes/04-pipefilter.md:885 +#: shell-novice/_episodes/05-loop.md:187 +#: shell-novice/_episodes/05-loop.md:283 +#: shell-novice/_episodes/05-loop.md:607 +#: shell-novice/_episodes/05-loop.md:634 +#: shell-novice/_episodes/05-loop.md:686 +#: shell-novice/_episodes/05-loop.md:713 +#: shell-novice/_episodes/06-script.md:313 +#: shell-novice/_episodes/06-script.md:388 +#: shell-novice/_episodes/06-script.md:497 +#: shell-novice/_episodes/06-script.md:527 +#: shell-novice/_episodes/06-script.md:571 +#: shell-novice/_episodes/06-script.md:613 +#: shell-novice/_episodes/07-find.md:250 +#: shell-novice/_episodes/07-find.md:339 +#: shell-novice/_episodes/07-find.md:383 +#: shell-novice/_episodes/07-find.md:606 +#: shell-novice/_episodes/07-find.md:658 +#: shell-novice/_episodes/07-find.md:680 +# SC/DC Template label +msgid "{: .challenge}" +msgstr "" + +#: shell-novice/_episodes/02-filedir.md:376 +# blockquote, which can be cascaded +msgid "> ## Listing Recursively and By Time" +msgstr "" + +#: shell-novice/_episodes/02-filedir.md:377 +msgid ">\n" +"> The command `ls -R` lists the contents of directories recursively, i.e., lists\n" +"> their sub-directories, sub-sub-directories, and so on at each level. The command\n" +"> `ls -t` lists things by time of last change, with most recently changed files or\n" +"> directories first.\n" +"> In what order does `ls -R -t` display things? Hint: `ls -l` uses a long listing\n" +"> format to view timestamps.\n" +">\n" +"> > ## Solution\n" +"> > The files/directories in each directory are sorted by time of last change." +msgstr "" + +#: shell-novice/_episodes/02-filedir.md:390 +msgid "Here,\n" +"we can see that our home directory contains mostly **sub-directories**.\n" +"Any names in your output that don't have trailing slashes,\n" +"are plain old **files**.\n" +"And note that there is a space between `ls` and `-F`:\n" +"without it,\n" +"the shell thinks we're trying to run a command called `ls-F`,\n" +"which doesn't exist." +msgstr "" + +#: shell-novice/_episodes/02-filedir.md:399 +msgid "We can also use `ls` to see the contents of a different directory. Let's take a\n" +"look at our `Desktop` directory by running `ls -F Desktop`,\n" +"i.e.,\n" +"the command `ls` with the `-F` **flag** and the **argument** `Desktop`.\n" +"The argument `Desktop` tells `ls` that\n" +"we want a listing of something other than our current working directory:" +msgstr "" + +#: shell-novice/_episodes/02-filedir.md:406 +# code block +msgid "~~~\n" +"$ ls -F Desktop\n" +"~~~" +msgstr "" + +#: shell-novice/_episodes/02-filedir.md:411 +# code block +msgid "~~~\n" +"data-shell/\n" +"~~~" +msgstr "" + +#: shell-novice/_episodes/02-filedir.md:416 +msgid "Your output should be a list of all the files and sub-directories on your\n" +"Desktop, including the `data-shell` directory you downloaded at\n" +"the start of the lesson. Take a look at your Desktop to confirm that\n" +"your output is accurate. " +msgstr "" + +#: shell-novice/_episodes/02-filedir.md:421 +msgid "As you may now see, using a bash shell is strongly dependent on the idea that\n" +"your files are organized in a hierarchical file system.\n" +"Organizing things hierarchically in this way helps us keep track of our work:\n" +"it's possible to put hundreds of files in our home directory,\n" +"just as it's possible to pile hundreds of printed papers on our desk,\n" +"but it's a self-defeating strategy." +msgstr "" + +#: shell-novice/_episodes/02-filedir.md:428 +msgid "Now that we know the `data-shell` directory is located on our Desktop, we\n" +"can do two things. " +msgstr "" + +#: shell-novice/_episodes/02-filedir.md:431 +msgid "First, we can look at its contents, using the same strategy as before, passing\n" +"a directory name to `ls`:" +msgstr "" + +#: shell-novice/_episodes/02-filedir.md:434 +# code block +msgid "~~~\n" +"$ ls -F Desktop/data-shell\n" +"~~~" +msgstr "" + +#: shell-novice/_episodes/02-filedir.md:439 +# code block +msgid "~~~\n" +"creatures/ molecules/ notes.txt solar.pdf\n" +"data/ north-pacific-gyre/ pizza.cfg writing/\n" +"~~~" +msgstr "" + +#: shell-novice/_episodes/02-filedir.md:445 +msgid "Second, we can actually change our location to a different directory, so\n" +"we are no longer located in\n" +"our home directory. " +msgstr "" + +#: shell-novice/_episodes/02-filedir.md:449 +msgid "The command to change locations is `cd` followed by a\n" +"directory name to change our working directory.\n" +"`cd` stands for \"change directory\",\n" +"which is a bit misleading:\n" +"the command doesn't change the directory,\n" +"it changes the shell's idea of what directory we are in." +msgstr "" + +#: shell-novice/_episodes/02-filedir.md:456 +msgid "Let's say we want to move to the `data` directory we saw above. We can\n" +"use the following series of commands to get there:" +msgstr "" + +#: shell-novice/_episodes/02-filedir.md:459 +# code block +msgid "~~~\n" +"$ cd Desktop\n" +"$ cd data-shell\n" +"$ cd data\n" +"~~~" +msgstr "" + +#: shell-novice/_episodes/02-filedir.md:466 +msgid "These commands will move us from our home directory onto our Desktop, then into\n" +"the `data-shell` directory, then into the `data` directory. `cd` doesn't print anything,\n" +"but if we run `pwd` after it, we can see that we are now\n" +"in `/Users/nelle/Desktop/data-shell/data`.\n" +"If we run `ls` without arguments now,\n" +"it lists the contents of `/Users/nelle/Desktop/data-shell/data`,\n" +"because that's where we now are:" +msgstr "" + +#: shell-novice/_episodes/02-filedir.md:479 +#: shell-novice/_episodes/02-filedir.md:652 +# code block +msgid "~~~\n" +"/Users/nelle/Desktop/data-shell/data\n" +"~~~" +msgstr "" + +#: shell-novice/_episodes/02-filedir.md:489 +# code block +msgid "~~~\n" +"amino-acids.txt elements/ pdb/ salmon.txt\n" +"animals.txt morse.txt planets.txt sunspot.txt\n" +"~~~" +msgstr "" + +#: shell-novice/_episodes/02-filedir.md:495 +msgid "We now know how to go down the directory tree, but\n" +"how do we go up? We might try the following:" +msgstr "" + +#: shell-novice/_episodes/02-filedir.md:498 +# code block +msgid "~~~\n" +"$ cd data-shell\n" +"~~~" +msgstr "" + +#: shell-novice/_episodes/02-filedir.md:503 +# code block +msgid "~~~\n" +"-bash: cd: data-shell: No such file or directory\n" +"~~~" +msgstr "" + +#: shell-novice/_episodes/02-filedir.md:506 +#: shell-novice/_episodes/03-create.md:299 +#: shell-novice/_episodes/03-create.md:505 +#: shell-novice/_episodes/05-loop.md:53 +# SC/DC Template label +msgid "{: .error}" +msgstr "" + +#: shell-novice/_episodes/02-filedir.md:508 +msgid "But we get an error! Why is this? " +msgstr "" + +#: shell-novice/_episodes/02-filedir.md:510 +msgid "With our methods so far,\n" +"`cd` can only see sub-directories inside your current directory. There are\n" +"different ways to see directories above your current location; we'll start\n" +"with the simplest. " +msgstr "" + +#: shell-novice/_episodes/02-filedir.md:515 +msgid "There is a shortcut in the shell to move up one directory level\n" +"that looks like this:" +msgstr "" + +#: shell-novice/_episodes/02-filedir.md:518 +#: shell-novice/_episodes/03-create.md:283 +# code block +msgid "~~~\n" +"$ cd ..\n" +"~~~" +msgstr "" + +#: shell-novice/_episodes/02-filedir.md:523 +msgid "`..` is a special directory name meaning\n" +"\"the directory containing this one\",\n" +"or more succinctly,\n" +"the **parent** of the current directory.\n" +"Sure enough,\n" +"if we run `pwd` after running `cd ..`, we're back in `/Users/nelle/Desktop/data-shell`:" +msgstr "" + +#: shell-novice/_episodes/02-filedir.md:535 +#: shell-novice/_episodes/03-create.md:32 +#: shell-novice/_episodes/03-create.md:355 +# code block +msgid "~~~\n" +"/Users/nelle/Desktop/data-shell\n" +"~~~" +msgstr "" + +#: shell-novice/_episodes/02-filedir.md:540 +msgid "The special directory `..` doesn't usually show up when we run `ls`. If we want\n" +"to display it, we can give `ls` the `-a` flag:" +msgstr "" + +#: shell-novice/_episodes/02-filedir.md:543 +# code block +msgid "~~~\n" +"$ ls -F -a\n" +"~~~" +msgstr "" + +#: shell-novice/_episodes/02-filedir.md:548 +# code block +msgid "~~~\n" +"./ .bash_profile data/ north-pacific-gyre/ pizza.cfg thesis/\n" +"../ creatures/ molecules/ notes.txt solar.pdf writing/\n" +"~~~" +msgstr "" + +#: shell-novice/_episodes/02-filedir.md:554 +msgid "`-a` stands for \"show all\";\n" +"it forces `ls` to show us file and directory names that begin with `.`,\n" +"such as `..` (which, if we're in `/Users/nelle`, refers to the `/Users` directory)\n" +"As you can see,\n" +"it also displays another special directory that's just called `.`,\n" +"which means \"the current working directory\".\n" +"It may seem redundant to have a name for it,\n" +"but we'll see some uses for it soon." +msgstr "" + +#: shell-novice/_episodes/02-filedir.md:563 +msgid "Note that in most command line tools, multiple flags can be combined \n" +"with a single `-` and no spaces between the flags: `ls -F -a` is \n" +"equivalent to `ls -Fa`." +msgstr "" + +#: shell-novice/_episodes/02-filedir.md:567 +# blockquote, which can be cascaded +msgid "> ## Other Hidden Files" +msgstr "" + +#: shell-novice/_episodes/02-filedir.md:568 +msgid ">\n" +"> In addition to the hidden directories `..` and `.`, you may also see a file\n" +"> called `.bash_profile`. This file usually contains shell configuration\n" +"> settings. You may also see other files and directories beginning\n" +"> with `.`. These are usually files and directories that are used to configure\n" +"> different programs on your computer. The prefix `.` is used to prevent these\n" +"> configuration files from cluttering the terminal when a standard `ls` command\n" +"> is used." +msgstr "" + +#: shell-novice/_episodes/02-filedir.md:578 +# blockquote, which can be cascaded +msgid "> ## Orthogonality" +msgstr "" + +#: shell-novice/_episodes/02-filedir.md:579 +msgid ">\n" +"> The special names `.` and `..` don't belong to `cd`;\n" +"> they are interpreted the same way by every program.\n" +"> For example,\n" +"> if we are in `/Users/nelle/data`,\n" +"> the command `ls ..` will give us a listing of `/Users/nelle`.\n" +"> When the meanings of the parts are the same no matter how they're combined,\n" +"> programmers say they are **orthogonal**:\n" +"> Orthogonal systems tend to be easier for people to learn\n" +"> because there are fewer special cases and exceptions to keep track of." +msgstr "" + +#: shell-novice/_episodes/02-filedir.md:591 +msgid "These then, are the basic commands for navigating the filesystem on your computer:\n" +"`pwd`, `ls` and `cd`. Let's explore some variations on those commands. What happens\n" +"if you type `cd` on its own, without giving\n" +"a directory? " +msgstr "" + +#: shell-novice/_episodes/02-filedir.md:596 +# code block +msgid "~~~\n" +"$ cd\n" +"~~~" +msgstr "" + +#: shell-novice/_episodes/02-filedir.md:601 +msgid "How can you check what happened? `pwd` gives us the answer! " +msgstr "" + +#: shell-novice/_episodes/02-filedir.md:613 +msgid "It turns out that `cd` without an argument will return you to your home directory,\n" +"which is great if you've gotten lost in your own filesystem. " +msgstr "" + +#: shell-novice/_episodes/02-filedir.md:616 +msgid "Let's try returning to the `data` directory from before. Last time, we used\n" +"three commands, but we can actually string together the list of directories\n" +"to move to `data` in one step:" +msgstr "" + +#: shell-novice/_episodes/02-filedir.md:620 +# code block +msgid "~~~\n" +"$ cd Desktop/data-shell/data\n" +"~~~" +msgstr "" + +#: shell-novice/_episodes/02-filedir.md:625 +msgid "Check that we've moved to the right place by running `pwd` and `ls -F` " +msgstr "" + +#: shell-novice/_episodes/02-filedir.md:627 +msgid "If we want to move up one level from the data directory, we could use `cd ..`. But\n" +"there is another way to move to any directory, regardless of your\n" +"current location. " +msgstr "" + +#: shell-novice/_episodes/02-filedir.md:631 +msgid "So far, when specifying directory names, or even a directory path (as above),\n" +"we have been using **relative paths**. When you use a relative path with a command\n" +"like `ls` or `cd`, it tries to find that location from where we are,\n" +"rather than from the root of the file system. " +msgstr "" + +#: shell-novice/_episodes/02-filedir.md:636 +msgid "However, it is possible to specify the **absolute path** to a directory by\n" +"including its entire path from the root directory, which is indicated by a\n" +"leading slash. The leading `/` tells the computer to follow the path from\n" +"the root of the file system, so it always refers to exactly one directory,\n" +"no matter where we are when we run the command." +msgstr "" + +#: shell-novice/_episodes/02-filedir.md:642 +msgid "This allows us to move to our `data-shell` directory from anywhere on\n" +"the filesystem (including from inside `data`). To find the absolute path\n" +"we're looking for, we can use `pwd` and then extract the piece we need\n" +"to move to `data-shell`. " +msgstr "" + +#: shell-novice/_episodes/02-filedir.md:657 +# code block +msgid "~~~\n" +"$ cd /Users/nelle/Desktop/data-shell\n" +"~~~" +msgstr "" + +#: shell-novice/_episodes/02-filedir.md:662 +msgid "Run `pwd` and `ls -F` to ensure that we're in the directory we expect. " +msgstr "" + +#: shell-novice/_episodes/02-filedir.md:664 +# blockquote, which can be cascaded +msgid "> ## Two More Shortcuts" +msgstr "" + +#: shell-novice/_episodes/02-filedir.md:665 +msgid ">\n" +"> The shell interprets the character `~` (tilde) at the start of a path to\n" +"> mean \"the current user's home directory\". For example, if Nelle's home\n" +"> directory is `/Users/nelle`, then `~/data` is equivalent to\n" +"> `/Users/nelle/data`. This only works if it is the first character in the\n" +"> path: `here/there/~/elsewhere` is *not* `here/there/Users/nelle/elsewhere`.\n" +">\n" +"> Another shortcut is the `-` (dash) character. `cd` will translate `-` into\n" +"> *the previous directory I was in*, which is faster than having to remember,\n" +"> then type, the full path. This is a *very* efficient way of moving back\n" +"> and forth between directories. The difference between `cd ..` and `cd -` is\n" +"> that the former brings you *up*, while the latter brings you *back*. You can\n" +"> think of it as the *Last Channel* button on a TV remote." +msgstr "" + +#: shell-novice/_episodes/02-filedir.md:680 +# blockquote, which can be cascaded +msgid "> ## Absolute vs Relative Paths" +msgstr "" + +#: shell-novice/_episodes/02-filedir.md:681 +msgid ">\n" +"> Starting from `/Users/amanda/data/`,\n" +"> which of the following commands could Amanda use to navigate to her home directory,\n" +"> which is `/Users/amanda`?\n" +">\n" +"> 1. `cd .`\n" +"> 2. `cd /`\n" +"> 3. `cd /home/amanda`\n" +"> 4. `cd ../..`\n" +"> 5. `cd ~`\n" +"> 6. `cd home`\n" +"> 7. `cd ~/data/..`\n" +"> 8. `cd`\n" +"> 9. `cd ..`\n" +">\n" +"> > ## Solution\n" +"> > 1. No: `.` stands for the current directory.\n" +"> > 2. No: `/` stands for the root directory.\n" +"> > 3. No: Amanda's home directory is `/Users/amanda`.\n" +"> > 4. No: this goes up two levels, i.e. ends in `/Users`.\n" +"> > 5. Yes: `~` stands for the user's home directory, in this case `/Users/amanda`.\n" +"> > 6. No: this would navigate into a directory `home` in the current directory if it exists.\n" +"> > 7. Yes: unnecessarily complicated, but correct.\n" +"> > 8. Yes: shortcut to go back to the user's home directory.\n" +"> > 9. Yes: goes up one level." +msgstr "" + +#: shell-novice/_episodes/02-filedir.md:709 +# blockquote, which can be cascaded +msgid "> ## Relative Path Resolution" +msgstr "" + +#: shell-novice/_episodes/02-filedir.md:710 +msgid ">\n" +"> Using the filesystem diagram below, if `pwd` displays `/Users/thing`,\n" +"> what will `ls -F ../backup` display?\n" +">\n" +"> 1. `../backup: No such file or directory`\n" +"> 2. `2012-12-01 2013-01-08 2013-01-27`\n" +"> 3. `2012-12-01/ 2013-01-08/ 2013-01-27/`\n" +"> 4. `original/ pnas_final/ pnas_sub/`\n" +">\n" +"> ![File System for Challenge Questions](../fig/filesystem-challenge.svg)\n" +">\n" +"> > ## Solution\n" +"> > 1. No: there *is* a directory `backup` in `/Users`.\n" +"> > 2. No: this is the content of `Users/thing/backup`,\n" +"> > but with `..` we asked for one level further up.\n" +"> > 3. No: see previous explanation.\n" +"> > 4. Yes: `../backup/` refers to `/Users/backup/`." +msgstr "" + +#: shell-novice/_episodes/02-filedir.md:730 +# blockquote, which can be cascaded +msgid "> ## `ls` Reading Comprehension" +msgstr "" + +#: shell-novice/_episodes/02-filedir.md:731 +msgid ">\n" +"> Assuming a directory structure as in the above Figure\n" +"> (File System for Challenge Questions), if `pwd` displays `/Users/backup`,\n" +"> and `-r` tells `ls` to display things in reverse order,\n" +"> what command will display:\n" +">\n" +"> ~~~\n" +"> pnas_sub/ pnas_final/ original/\n" +"> ~~~" +msgstr "" + +#: shell-novice/_episodes/02-filedir.md:740 +#: shell-novice/_episodes/03-create.md:569 +#: shell-novice/_episodes/03-create.md:577 +#: shell-novice/_episodes/03-create.md:619 +#: shell-novice/_episodes/03-create.md:632 +#: shell-novice/_episodes/03-create.md:640 +#: shell-novice/_episodes/03-create.md:674 +#: shell-novice/_episodes/04-pipefilter.md:323 +#: shell-novice/_episodes/04-pipefilter.md:334 +#: shell-novice/_episodes/04-pipefilter.md:630 +#: shell-novice/_episodes/04-pipefilter.md:691 +#: shell-novice/_episodes/04-pipefilter.md:716 +#: shell-novice/_episodes/05-loop.md:124 +#: shell-novice/_episodes/05-loop.md:369 +#: shell-novice/_episodes/05-loop.md:559 +#: shell-novice/_episodes/07-find.md:239 +#: shell-novice/_episodes/07-find.md:272 +# SC/DC Template label +msgid "> {: .output}" +msgstr "" + +#: shell-novice/_episodes/02-filedir.md:741 +msgid ">\n" +"> 1. `ls pwd`\n" +"> 2. `ls -r -F`\n" +"> 3. `ls -r -F /Users/backup`\n" +"> 4. Either #2 or #3 above, but not #1.\n" +">\n" +"> > ## Solution\n" +"> > 1. No: `pwd` is not the name of a directory.\n" +"> > 2. Yes: `ls` without directory argument lists files and directories\n" +"> > in the current directory.\n" +"> > 3. Yes: uses the absolute path explicitly.\n" +"> > 4. Correct: see explanations above." +msgstr "" + +#: shell-novice/_episodes/02-filedir.md:756 +# header +msgid "### Nelle's Pipeline: Organizing Files" +msgstr "" + +#: shell-novice/_episodes/02-filedir.md:758 +msgid "Knowing just this much about files and directories,\n" +"Nelle is ready to organize the files that the protein assay machine will create.\n" +"First,\n" +"she creates a directory called `north-pacific-gyre`\n" +"(to remind herself where the data came from).\n" +"Inside that,\n" +"she creates a directory called `2012-07-03`,\n" +"which is the date she started processing the samples.\n" +"She used to use names like `conference-paper` and `revised-results`,\n" +"but she found them hard to understand after a couple of years.\n" +"(The final straw was when she found herself creating\n" +"a directory called `revised-revised-results-3`.)" +msgstr "" + +#: shell-novice/_episodes/02-filedir.md:771 +# blockquote, which can be cascaded +msgid "> ## Sorting Output" +msgstr "" + +#: shell-novice/_episodes/02-filedir.md:772 +msgid ">\n" +"> Nelle names her directories \"year-month-day\",\n" +"> with leading zeroes for months and days,\n" +"> because the shell displays file and directory names in alphabetical order.\n" +"> If she used month names,\n" +"> December would come before July;\n" +"> if she didn't use leading zeroes,\n" +"> November ('11') would come before July ('7'). Similarly, putting the year first\n" +"> means that June 2012 will come before June 2013." +msgstr "" + +#: shell-novice/_episodes/02-filedir.md:783 +msgid "Each of her physical samples is labelled according to her lab's convention\n" +"with a unique ten-character ID,\n" +"such as \"NENE01729A\".\n" +"This is what she used in her collection log\n" +"to record the location, time, depth, and other characteristics of the sample,\n" +"so she decides to use it as part of each data file's name.\n" +"Since the assay machine's output is plain text,\n" +"she will call her files `NENE01729A.txt`, `NENE01812A.txt`, and so on.\n" +"All 1520 files will go into the same directory." +msgstr "" + +#: shell-novice/_episodes/02-filedir.md:793 +msgid "Now in her current directory `data-shell`,\n" +"Nelle can see what files she has using the command:" +msgstr "" + +#: shell-novice/_episodes/02-filedir.md:796 +# code block +msgid "~~~\n" +"$ ls north-pacific-gyre/2012-07-03/\n" +"~~~" +msgstr "" + +#: shell-novice/_episodes/02-filedir.md:801 +msgid "This is a lot to type,\n" +"but she can let the shell do most of the work through what is called **tab completion**.\n" +"If she types:" +msgstr "" + +#: shell-novice/_episodes/02-filedir.md:805 +# code block +msgid "~~~\n" +"$ ls nor\n" +"~~~" +msgstr "" + +#: shell-novice/_episodes/02-filedir.md:810 +msgid "and then presses tab (the tab key on her keyboard),\n" +"the shell automatically completes the directory name for her:" +msgstr "" + +#: shell-novice/_episodes/02-filedir.md:813 +# code block +msgid "~~~\n" +"$ ls north-pacific-gyre/\n" +"~~~" +msgstr "" + +#: shell-novice/_episodes/02-filedir.md:818 +msgid "If she presses tab again,\n" +"Bash will add `2012-07-03/` to the command,\n" +"since it's the only possible completion.\n" +"Pressing tab again does nothing,\n" +"since there are 19 possibilities;\n" +"pressing tab twice brings up a list of all the files,\n" +"and so on.\n" +"This is called **tab completion**,\n" +"and we will see it in many other tools as we go on." +msgstr "" + +#: shell-novice/_episodes/03-create.md:1 +# Front Matter +msgid "---\n" +"title: \"Working With Files and Directories\"\n" +"teaching: 25\n" +"exercises: 10\n" +"questions:\n" +"- \"How can I create, copy, and delete files and directories?\"\n" +"- \"How can I edit files?\"\n" +"objectives:\n" +"- \"Create a directory hierarchy that matches a given diagram.\"\n" +"- \"Create files in that hierarchy using an editor or by copying and renaming existing files.\"\n" +"- \"Delete specified files and/or directories.\"\n" +"keypoints:\n" +"- \"`cp old new` copies a file.\"\n" +"- \"`mkdir path` creates a new directory.\"\n" +"- \"`mv old new` moves (renames) a file or directory.\"\n" +"- \"`rm path` removes (deletes) a file.\"\n" +"- \"Use of the Control key may be described in many ways, including `Ctrl-X`, `Control-X`, and `^X`.\"\n" +"- \"The shell does not have a trash bin: once something is deleted, it's really gone.\"\n" +"- \"Depending on the type of work you do, you may need a more powerful text editor than Nano.\"\n" +"---" +msgstr "" + +#: shell-novice/_episodes/03-create.md:22 +msgid "We now know how to explore files and directories,\n" +"but how do we create them in the first place?\n" +"Let's go back to our `data-shell` directory on the Desktop\n" +"and use `ls -F` to see what it contains:" +msgstr "" + +#: shell-novice/_episodes/03-create.md:42 +# code block +msgid "~~~\n" +"creatures/ data/ molecules/ north-pacific-gyre/ notes.txt pizza.cfg solar.pdf writing/\n" +"~~~" +msgstr "" + +#: shell-novice/_episodes/03-create.md:47 +msgid "Let's create a new directory called `thesis` using the command `mkdir thesis`\n" +"(which has no output):" +msgstr "" + +#: shell-novice/_episodes/03-create.md:50 +# code block +msgid "~~~\n" +"$ mkdir thesis\n" +"~~~" +msgstr "" + +#: shell-novice/_episodes/03-create.md:55 +msgid "As you might guess from its name,\n" +"`mkdir` means \"make directory\".\n" +"Since `thesis` is a relative path\n" +"(i.e., doesn't have a leading slash),\n" +"the new directory is created in the current working directory:" +msgstr "" + +#: shell-novice/_episodes/03-create.md:66 +# code block +msgid "~~~\n" +"creatures/ data/ molecules/ north-pacific-gyre/ notes.txt pizza.cfg solar.pdf thesis/ writing/\n" +"~~~" +msgstr "" + +#: shell-novice/_episodes/03-create.md:71 +# blockquote, which can be cascaded +msgid "> ## Two ways of doing the same thing" +msgstr "" + +#: shell-novice/_episodes/03-create.md:72 +# blockquote, which can be cascaded +msgid "> Using the shell to create a directory is no different than using a file explorer." +msgstr "" + +#: shell-novice/_episodes/03-create.md:73 +# blockquote, which can be cascaded +msgid "> If you open the current directory using your operating system's graphical file explorer," +msgstr "" + +#: shell-novice/_episodes/03-create.md:74 +# blockquote, which can be cascaded +msgid "> the `thesis` directory will appear there too." +msgstr "" + +#: shell-novice/_episodes/03-create.md:75 +# blockquote, which can be cascaded +msgid "> While they are two different ways of interacting with the files," +msgstr "" + +#: shell-novice/_episodes/03-create.md:76 +# blockquote, which can be cascaded +msgid "> the files and directories themselves are the same." +msgstr "" + +#: shell-novice/_episodes/03-create.md:79 +# blockquote, which can be cascaded +msgid "> ## Good names for files and directories" +msgstr "" + +#: shell-novice/_episodes/03-create.md:80 +msgid ">\n" +"> Complicated names of files and directories can make your life painful\n" +"> when working on the command line. Here we provide a few useful\n" +"> tips for the names of your files.\n" +">\n" +"> 1. Don't use whitespaces.\n" +">\n" +"> Whitespaces can make a name more meaningful\n" +"> but since whitespace is used to break arguments on the command line\n" +"> it is better to avoid them in names of files and directories.\n" +"> You can use `-` or `_` instead of whitespace.\n" +">\n" +"> 2. Don't begin the name with `-` (dash).\n" +">\n" +"> Commands treat names starting with `-` as options.\n" +">\n" +"> 3. Stick with letters, numbers, `.` (period), `-` (dash) and `_` (underscore).\n" +">\n" +"> Many other characters have special meanings on the command line.\n" +"> We will learn about some of these during this lesson.\n" +"> There are special characters that can cause your command to not work as\n" +"> expected and can even result in data loss.\n" +">\n" +"> If you need to refer to names of files or directories that have whitespace\n" +"> or another non-alphanumeric character, you should surround the name in quotes (`\"\"`)." +msgstr "" + +#: shell-novice/_episodes/03-create.md:107 +msgid "Since we've just created the `thesis` directory, there's nothing in it yet:" +msgstr "" + +#: shell-novice/_episodes/03-create.md:109 +# code block +msgid "~~~\n" +"$ ls -F thesis\n" +"~~~" +msgstr "" + +#: shell-novice/_episodes/03-create.md:114 +msgid "Let's change our working directory to `thesis` using `cd`,\n" +"then run a text editor called Nano to create a file called `draft.txt`:" +msgstr "" + +#: shell-novice/_episodes/03-create.md:117 +# code block +msgid "~~~\n" +"$ cd thesis\n" +"$ nano draft.txt\n" +"~~~" +msgstr "" + +#: shell-novice/_episodes/03-create.md:123 +# blockquote, which can be cascaded +msgid "> ## Which Editor?" +msgstr "" + +#: shell-novice/_episodes/03-create.md:124 +msgid ">\n" +"> When we say, \"`nano` is a text editor,\" we really do mean \"text\": it can\n" +"> only work with plain character data, not tables, images, or any other\n" +"> human-friendly media. We use it in examples because it is one of the \n" +"> least complex text editors. However, because of this trait, it may \n" +"> not be powerful enough or flexible enough for the work you need to do\n" +"> after this workshop. On Unix systems (such as Linux and Mac OS X),\n" +"> many programmers use [Emacs](http://www.gnu.org/software/emacs/) or\n" +"> [Vim](http://www.vim.org/) (both of which require more time to learn), \n" +"> or a graphical editor such as\n" +"> [Gedit](http://projects.gnome.org/gedit/). On Windows, you may wish to\n" +"> use [Notepad++](http://notepad-plus-plus.org/). Windows also has a built-in\n" +"> editor called `notepad` that can be run from the command line in the same\n" +"> way as `nano` for the purposes of this lesson. \n" +">\n" +"> No matter what editor you use, you will need to know where it searches\n" +"> for and saves files. If you start it from the shell, it will (probably)\n" +"> use your current working directory as its default location. If you use\n" +"> your computer's start menu, it may want to save files in your desktop or\n" +"> documents directory instead. You can change this by navigating to\n" +"> another directory the first time you \"Save As...\"" +msgstr "" + +#: shell-novice/_episodes/03-create.md:147 +msgid "Let's type in a few lines of text.\n" +"Once we're happy with our text, we can press `Ctrl-O` (press the Ctrl or Control key and, while\n" +"holding it down, press the O key) to write our data to disk\n" +"(we'll be asked what file we want to save this to:\n" +"press Return to accept the suggested default of `draft.txt`)." +msgstr "" + +#: shell-novice/_episodes/03-create.md:153 +msgid "![Nano in Action](../fig/nano-screenshot.png)" +msgstr "" + +#: shell-novice/_episodes/03-create.md:155 +msgid "Once our file is saved, we can use `Ctrl-X` to quit the editor and\n" +"return to the shell." +msgstr "" + +#: shell-novice/_episodes/03-create.md:158 +# blockquote, which can be cascaded +msgid "> ## Control, Ctrl, or ^ Key" +msgstr "" + +#: shell-novice/_episodes/03-create.md:159 +msgid ">\n" +"> The Control key is also called the \"Ctrl\" key. There are various ways\n" +"> in which using the Control key may be described. For example, you may\n" +"> see an instruction to press the Control key and, while holding it down,\n" +"> press the X key, described as any of:\n" +">\n" +"> * `Control-X`\n" +"> * `Control+X`\n" +"> * `Ctrl-X`\n" +"> * `Ctrl+X`\n" +"> * `^X`\n" +"> * `C-x`\n" +">\n" +"> In nano, along the bottom of the screen you'll see `^G Get Help ^O WriteOut`.\n" +"> This means that you can use `Control-G` to get help and `Control-O` to save your\n" +"> file." +msgstr "" + +#: shell-novice/_episodes/03-create.md:177 +msgid "`nano` doesn't leave any output on the screen after it exits,\n" +"but `ls` now shows that we have created a file called `draft.txt`:" +msgstr "" + +#: shell-novice/_episodes/03-create.md:185 +#: shell-novice/_episodes/03-create.md:278 +#: shell-novice/_episodes/03-create.md:367 +# code block +msgid "~~~\n" +"draft.txt\n" +"~~~" +msgstr "" + +#: shell-novice/_episodes/03-create.md:190 +# blockquote, which can be cascaded +msgid "> ## Creating Files a Different Way" +msgstr "" + +#: shell-novice/_episodes/03-create.md:191 +msgid ">\n" +"> We have seen how to create text files using the `nano` editor.\n" +"> Now, try the following command in your home directory:\n" +">\n" +"> ~~~\n" +"> $ cd # go to your home directory\n" +"> $ touch my_file.txt\n" +"> ~~~\n" +"> {: .language-bash}\n" +">\n" +"> 1. What did the touch command do?\n" +"> When you look at your home directory using the GUI file explorer,\n" +"> does the file show up?\n" +">\n" +"> 2. Use `ls -l` to inspect the files. How large is `my_file.txt`?\n" +">\n" +"> 3. When might you want to create a file this way?\n" +">\n" +"> > ## Solution\n" +"> > 1. The touch command generates a new file called 'my_file.txt' in\n" +"> > your home directory. If you are in your home directory, you\n" +"> > can observe this newly generated file by typing 'ls' at the \n" +"> > command line prompt. 'my_file.txt' can also be viewed in your\n" +"> > GUI file explorer.\n" +"> >\n" +"> > 2. When you inspect the file with 'ls -l', note that the size of\n" +"> > 'my_file.txt' is 0kb. In other words, it contains no data.\n" +"> > If you open 'my_file.txt' using your text editor it is blank.\n" +"> >\n" +"> > 3. Some programs do not generate output files themselves, but\n" +"> > instead require that empty files have already been generated.\n" +"> > When the program is run, it searches for an existing file to\n" +"> > populate with its output. The touch command allows you to\n" +"> > efficiently generate a blank text file to be used by such\n" +"> > programs." +msgstr "" + +#: shell-novice/_episodes/03-create.md:229 +msgid "Returning to the `data-shell` directory,\n" +"let's tidy up the `thesis` directory by removing the draft we created:" +msgstr "" + +#: shell-novice/_episodes/03-create.md:232 +# code block +msgid "~~~\n" +"$ cd thesis\n" +"$ rm draft.txt\n" +"~~~" +msgstr "" + +#: shell-novice/_episodes/03-create.md:238 +msgid "This command removes files (`rm` is short for \"remove\").\n" +"If we run `ls` again,\n" +"its output is empty once more,\n" +"which tells us that our file is gone:" +msgstr "" + +#: shell-novice/_episodes/03-create.md:248 +# blockquote, which can be cascaded +msgid "> ## Deleting Is Forever" +msgstr "" + +#: shell-novice/_episodes/03-create.md:249 +msgid ">\n" +"> The Unix shell doesn't have a trash bin that we can recover deleted\n" +"> files from (though most graphical interfaces to Unix do). Instead,\n" +"> when we delete files, they are unhooked from the file system so that\n" +"> their storage space on disk can be recycled. Tools for finding and\n" +"> recovering deleted files do exist, but there's no guarantee they'll\n" +"> work in any particular situation, since the computer may recycle the\n" +"> file's disk space right away." +msgstr "" + +#: shell-novice/_episodes/03-create.md:259 +msgid "Let's re-create that file\n" +"and then move up one directory to `/Users/nelle/Desktop/data-shell` using `cd ..`:" +msgstr "" + +#: shell-novice/_episodes/03-create.md:267 +# code block +msgid "~~~\n" +"/Users/nelle/Desktop/data-shell/thesis\n" +"~~~" +msgstr "" + +#: shell-novice/_episodes/03-create.md:272 +# code block +msgid "~~~\n" +"$ nano draft.txt\n" +"$ ls\n" +"~~~" +msgstr "" + +#: shell-novice/_episodes/03-create.md:288 +msgid "If we try to remove the entire `thesis` directory using `rm thesis`,\n" +"we get an error message:" +msgstr "" + +#: shell-novice/_episodes/03-create.md:291 +# code block +msgid "~~~\n" +"$ rm thesis\n" +"~~~" +msgstr "" + +#: shell-novice/_episodes/03-create.md:296 +# code block +msgid "~~~\n" +"rm: cannot remove `thesis': Is a directory\n" +"~~~" +msgstr "" + +#: shell-novice/_episodes/03-create.md:301 +msgid "This happens because `rm` by default only works on files, not directories." +msgstr "" + +#: shell-novice/_episodes/03-create.md:303 +msgid "To really get rid of `thesis` we must also delete the file `draft.txt`.\n" +"We can do this with the [recursive](https://en.wikipedia.org/wiki/Recursion) option for `rm`:" +msgstr "" + +#: shell-novice/_episodes/03-create.md:306 +# code block +msgid "~~~\n" +"$ rm -r thesis\n" +"~~~" +msgstr "" + +#: shell-novice/_episodes/03-create.md:311 +# blockquote, which can be cascaded +msgid "> ## Using `rm` Safely" +msgstr "" + +#: shell-novice/_episodes/03-create.md:312 +msgid ">\n" +"> What happens when we type `rm -i thesis/quotations.txt`?\n" +"> Why would we want this protection when using `rm`?\n" +">\n" +"> > ## Solution\n" +"> > ```\n" +"> > $ rm: remove regular file 'thesis/quotations.txt'?\n" +"> > ```\n" +"> > {: .language-bash} \n" +"> > The -i option will prompt before every removal. \n" +"> > The Unix shell doesn't have a trash bin, so all the files removed will disappear forever. \n" +"> > By using the -i flag, we have the chance to check that we are deleting only the files that we want to remove." +msgstr "" + +#: shell-novice/_episodes/03-create.md:327 +# blockquote, which can be cascaded +msgid "> ## With Great Power Comes Great Responsibility" +msgstr "" + +#: shell-novice/_episodes/03-create.md:328 +msgid ">\n" +"> Removing the files in a directory recursively can be a very dangerous\n" +"> operation. If we're concerned about what we might be deleting we can\n" +"> add the \"interactive\" flag `-i` to `rm` which will ask us for confirmation\n" +"> before each step\n" +">\n" +"> ~~~\n" +"> $ rm -r -i thesis\n" +"> rm: descend into directory ‘thesis’? y\n" +"> rm: remove regular file ‘thesis/draft.txt’? y\n" +"> rm: remove directory ‘thesis’? y\n" +"> ~~~\n" +"> {: .language-bash}\n" +">\n" +"> This removes everything in the directory, then the directory itself, asking\n" +"> at each step for you to confirm the deletion." +msgstr "" + +#: shell-novice/_episodes/03-create.md:346 +msgid "Let's create that directory and file one more time.\n" +"(Note that this time we're running `nano` with the path `thesis/draft.txt`,\n" +"rather than going into the `thesis` directory and running `nano` on `draft.txt` there.)" +msgstr "" + +#: shell-novice/_episodes/03-create.md:360 +# code block +msgid "~~~\n" +"$ mkdir thesis\n" +"$ nano thesis/draft.txt\n" +"$ ls thesis\n" +"~~~" +msgstr "" + +#: shell-novice/_episodes/03-create.md:372 +msgid "`draft.txt` isn't a particularly informative name,\n" +"so let's change the file's name using `mv`,\n" +"which is short for \"move\":" +msgstr "" + +#: shell-novice/_episodes/03-create.md:376 +# code block +msgid "~~~\n" +"$ mv thesis/draft.txt thesis/quotes.txt\n" +"~~~" +msgstr "" + +#: shell-novice/_episodes/03-create.md:381 +msgid "The first argument tells `mv` what we're \"moving\",\n" +"while the second is where it's to go.\n" +"In this case,\n" +"we're moving `thesis/draft.txt` to `thesis/quotes.txt`,\n" +"which has the same effect as renaming the file.\n" +"Sure enough,\n" +"`ls` shows us that `thesis` now contains one file called `quotes.txt`:" +msgstr "" + +#: shell-novice/_episodes/03-create.md:389 +#: shell-novice/_episodes/03-create.md:424 +# code block +msgid "~~~\n" +"$ ls thesis\n" +"~~~" +msgstr "" + +#: shell-novice/_episodes/03-create.md:394 +#: shell-novice/_episodes/03-create.md:438 +# code block +msgid "~~~\n" +"quotes.txt\n" +"~~~" +msgstr "" + +#: shell-novice/_episodes/03-create.md:399 +msgid "One has to be careful when specifying the target file name, since `mv` will\n" +"silently overwrite any existing file with the same name, which could\n" +"lead to data loss. An additional flag, `mv -i` (or `mv --interactive`),\n" +"can be used to make `mv` ask you for confirmation before overwriting." +msgstr "" + +#: shell-novice/_episodes/03-create.md:404 +msgid "Just for the sake of consistency,\n" +"`mv` also works on directories" +msgstr "" + +#: shell-novice/_episodes/03-create.md:407 +msgid "Let's move `quotes.txt` into the current working directory.\n" +"We use `mv` once again,\n" +"but this time we'll just use the name of a directory as the second argument\n" +"to tell `mv` that we want to keep the filename,\n" +"but put the file somewhere new.\n" +"(This is why the command is called \"move\".)\n" +"In this case,\n" +"the directory name we use is the special directory name `.` that we mentioned earlier." +msgstr "" + +#: shell-novice/_episodes/03-create.md:416 +# code block +msgid "~~~\n" +"$ mv thesis/quotes.txt .\n" +"~~~" +msgstr "" + +#: shell-novice/_episodes/03-create.md:421 +msgid "The effect is to move the file from the directory it was in to the current working directory.\n" +"`ls` now shows us that `thesis` is empty:" +msgstr "" + +#: shell-novice/_episodes/03-create.md:429 +msgid "Further,\n" +"`ls` with a filename or directory name as an argument only lists that file or directory.\n" +"We can use this to see that `quotes.txt` is still in our current directory:" +msgstr "" + +#: shell-novice/_episodes/03-create.md:433 +# code block +msgid "~~~\n" +"$ ls quotes.txt\n" +"~~~" +msgstr "" + +#: shell-novice/_episodes/03-create.md:443 +# blockquote, which can be cascaded +msgid "> ## Moving to the Current Folder" +msgstr "" + +#: shell-novice/_episodes/03-create.md:444 +msgid ">\n" +"> After running the following commands,\n" +"> Jamie realizes that she put the files `sucrose.dat` and `maltose.dat` into the wrong folder:\n" +">\n" +"> ~~~\n" +"> $ ls -F\n" +"> analyzed/ raw/\n" +"> $ ls -F analyzed\n" +"> fructose.dat glucose.dat maltose.dat sucrose.dat\n" +"> $ cd raw/\n" +"> ~~~\n" +"> {: .language-bash}\n" +">\n" +"> Fill in the blanks to move these files to the current folder\n" +"> (i.e., the one she is currently in):\n" +">\n" +"> ~~~\n" +"> $ mv ___/sucrose.dat ___/maltose.dat ___\n" +"> ~~~\n" +"> {: .language-bash}\n" +"> > ## Solution\n" +"> > ```\n" +"> > $ mv ../analyzed/sucrose.dat ../analyzed/maltose.dat .\n" +"> > ```\n" +"> > {: .language-bash}\n" +"> > Recall that `..` refers to the parent directory (i.e. one above the current directory)\n" +"> > and that `.` refers to the current directory." +msgstr "" + +#: shell-novice/_episodes/03-create.md:474 +msgid "The `cp` command works very much like `mv`,\n" +"except it copies a file instead of moving it.\n" +"We can check that it did the right thing using `ls`\n" +"with two paths as arguments --- like most Unix commands,\n" +"`ls` can be given multiple paths at once:" +msgstr "" + +#: shell-novice/_episodes/03-create.md:480 +# code block +msgid "~~~\n" +"$ cp quotes.txt thesis/quotations.txt\n" +"$ ls quotes.txt thesis/quotations.txt\n" +"~~~" +msgstr "" + +#: shell-novice/_episodes/03-create.md:486 +# code block +msgid "~~~\n" +"quotes.txt thesis/quotations.txt\n" +"~~~" +msgstr "" + +#: shell-novice/_episodes/03-create.md:491 +msgid "To prove that we made a copy,\n" +"let's delete the `quotes.txt` file in the current directory\n" +"and then run that same `ls` again." +msgstr "" + +#: shell-novice/_episodes/03-create.md:495 +# code block +msgid "~~~\n" +"$ rm quotes.txt\n" +"$ ls quotes.txt thesis/quotations.txt\n" +"~~~" +msgstr "" + +#: shell-novice/_episodes/03-create.md:501 +# code block +msgid "~~~\n" +"ls: cannot access quotes.txt: No such file or directory\n" +"thesis/quotations.txt\n" +"~~~" +msgstr "" + +#: shell-novice/_episodes/03-create.md:507 +msgid "This time it tells us that it can't find `quotes.txt` in the current directory,\n" +"but it does find the copy in `thesis` that we didn't delete." +msgstr "" + +#: shell-novice/_episodes/03-create.md:510 +# blockquote, which can be cascaded +msgid "> ## What's In A Name?" +msgstr "" + +#: shell-novice/_episodes/03-create.md:511 +msgid ">\n" +"> You may have noticed that all of Nelle's files' names are \"something dot\n" +"> something\", and in this part of the lesson, we always used the extension\n" +"> `.txt`. This is just a convention: we can call a file `mythesis` or\n" +"> almost anything else we want. However, most people use two-part names\n" +"> most of the time to help them (and their programs) tell different kinds\n" +"> of files apart. The second part of such a name is called the\n" +"> **filename extension**, and indicates\n" +"> what type of data the file holds: `.txt` signals a plain text file, `.pdf`\n" +"> indicates a PDF document, `.cfg` is a configuration file full of parameters\n" +"> for some program or other, `.png` is a PNG image, and so on.\n" +">\n" +"> This is just a convention, albeit an important one. Files contain\n" +"> bytes: it's up to us and our programs to interpret those bytes\n" +"> according to the rules for plain text files, PDF documents, configuration\n" +"> files, images, and so on.\n" +">\n" +"> Naming a PNG image of a whale as `whale.mp3` doesn't somehow\n" +"> magically turn it into a recording of whalesong, though it *might*\n" +"> cause the operating system to try to open it with a music player\n" +"> when someone double-clicks it." +msgstr "" + +#: shell-novice/_episodes/03-create.md:534 +# blockquote, which can be cascaded +msgid "> ## Renaming Files" +msgstr "" + +#: shell-novice/_episodes/03-create.md:535 +msgid ">\n" +"> Suppose that you created a `.txt` file in your current directory to contain a list of the\n" +"> statistical tests you will need to do to analyze your data, and named it: `statstics.txt`\n" +">\n" +"> After creating and saving this file you realize you misspelled the filename! You want to\n" +"> correct the mistake, which of the following commands could you use to do so?\n" +">\n" +"> 1. `cp statstics.txt statistics.txt`\n" +"> 2. `mv statstics.txt statistics.txt`\n" +"> 3. `mv statstics.txt .`\n" +"> 4. `cp statstics.txt .`\n" +">\n" +"> > ## Solution\n" +"> > 1. No. While this would create a file with the correct name, the incorrectly named file still exists in the directory\n" +"> > and would need to be deleted.\n" +"> > 2. Yes, this would work to rename the file.\n" +"> > 3. No, the period(.) indicates where to move the file, but does not provide a new file name; identical file names\n" +"> > cannot be created.\n" +"> > 4. No, the period(.) indicates where to copy the file, but does not provide a new file name; identical file names\n" +"> > cannot be created." +msgstr "" + +#: shell-novice/_episodes/03-create.md:558 +# blockquote, which can be cascaded +msgid "> ## Moving and Copying" +msgstr "" + +#: shell-novice/_episodes/03-create.md:559 +msgid ">\n" +"> What is the output of the closing `ls` command in the sequence shown below?\n" +">\n" +"> ~~~\n" +"> $ pwd\n" +"> ~~~\n" +"> {: .language-bash}\n" +"> ~~~\n" +"> /Users/jamie/data\n" +"> ~~~" +msgstr "" + +#: shell-novice/_episodes/03-create.md:571 +#: shell-novice/_episodes/03-create.md:582 +# blockquote, which can be cascaded +msgid "> $ ls" +msgstr "" + +#: shell-novice/_episodes/03-create.md:575 +# blockquote, which can be cascaded +msgid "> proteins.dat" +msgstr "" + +#: shell-novice/_episodes/03-create.md:579 +# blockquote, which can be cascaded +msgid "> $ mkdir recombine" +msgstr "" + +#: shell-novice/_episodes/03-create.md:580 +# blockquote, which can be cascaded +msgid "> $ mv proteins.dat recombine/" +msgstr "" + +#: shell-novice/_episodes/03-create.md:581 +# blockquote, which can be cascaded +msgid "> $ cp recombine/proteins.dat ../proteins-saved.dat" +msgstr "" + +#: shell-novice/_episodes/03-create.md:585 +msgid ">\n" +"> 1. `proteins-saved.dat recombine`\n" +"> 2. `recombine`\n" +"> 3. `proteins.dat recombine`\n" +"> 4. `proteins-saved.dat`\n" +">\n" +"> > ## Solution\n" +"> > We start in the `/Users/jamie/data` directory, and create a new folder called `recombine`.\n" +"> > The second line moves (`mv`) the file `proteins.dat` to the new folder (`recombine`).\n" +"> > The third line makes a copy of the file we just moved. The tricky part here is where the file was\n" +"> > copied to. Recall that `..` means \"go up a level\", so the copied file is now in `/Users/jamie`.\n" +"> > Notice that `..` is interpreted with respect to the current working\n" +"> > directory, **not** with respect to the location of the file being copied.\n" +"> > So, the only thing that will show using ls (in `/Users/jamie/data`) is the recombine folder.\n" +"> >\n" +"> > 1. No, see explanation above. `proteins-saved.dat` is located at `/Users/jamie`\n" +"> > 2. Yes\n" +"> > 3. No, see explanation above. `proteins.dat` is located at `/Users/jamie/data/recombine`\n" +"> > 4. No, see explanation above. `proteins-saved.dat` is located at `/Users/jamie`" +msgstr "" + +#: shell-novice/_episodes/03-create.md:607 +# blockquote, which can be cascaded +msgid "> ## Organizing Directories and Files" +msgstr "" + +#: shell-novice/_episodes/03-create.md:608 +msgid ">\n" +"> Jamie is working on a project and she sees that her files aren't very well\n" +"> organized:\n" +">\n" +"> ~~~\n" +"> $ ls -F\n" +"> ~~~\n" +"> {: .language-bash}\n" +"> ~~~\n" +"> analyzed/ fructose.dat raw/ sucrose.dat\n" +"> ~~~" +msgstr "" + +#: shell-novice/_episodes/03-create.md:620 +msgid ">\n" +"> The `fructose.dat` and `sucrose.dat` files contain output from her data\n" +"> analysis. What command(s) covered in this lesson does she need to run so that the commands below will\n" +"> produce the output shown?\n" +">\n" +"> ~~~\n" +"> $ ls -F\n" +"> ~~~\n" +"> {: .language-bash}\n" +"> ~~~\n" +"> analyzed/ raw/\n" +"> ~~~" +msgstr "" + +#: shell-novice/_episodes/03-create.md:634 +# blockquote, which can be cascaded +msgid "> $ ls analyzed" +msgstr "" + +#: shell-novice/_episodes/03-create.md:638 +# blockquote, which can be cascaded +msgid "> fructose.dat sucrose.dat" +msgstr "" + +#: shell-novice/_episodes/03-create.md:641 +msgid ">\n" +"> > ## Solution\n" +"> > ```\n" +"> > mv *.dat analyzed\n" +"> > ```\n" +"> > {: .language-bash}\n" +"> > Jamie needs to move her files `fructose.dat` and `sucrose.dat` to the `analyzed` directory.\n" +"> > The shell will expand *.dat to match all .dat files in the current directory.\n" +"> > The `mv` command then moves the list of .dat files to the \"analyzed\" directory." +msgstr "" + +#: shell-novice/_episodes/03-create.md:653 +# blockquote, which can be cascaded +msgid "> ## Copy with Multiple Filenames" +msgstr "" + +#: shell-novice/_episodes/03-create.md:654 +msgid ">\n" +"> For this exercise, you can test the commands in the `data-shell/data directory`.\n" +">\n" +"> In the example below, what does `cp` do when given several filenames and a directory name?\n" +">\n" +"> ~~~\n" +"> $ mkdir backup\n" +"> $ cp amino-acids.txt animals.txt backup/\n" +"> ~~~\n" +"> {: .language-bash}\n" +">\n" +"> In the example below, what does `cp` do when given three or more file names?\n" +">\n" +"> ~~~\n" +"> $ ls -F\n" +"> ~~~\n" +"> {: .language-bash}\n" +"> ~~~\n" +"> amino-acids.txt animals.txt backup/ elements/ morse.txt pdb/ planets.txt salmon.txt sunspot.txt\n" +"> ~~~" +msgstr "" + +#: shell-novice/_episodes/03-create.md:676 +# blockquote, which can be cascaded +msgid "> $ cp amino-acids.txt animals.txt morse.txt " +msgstr "" + +#: shell-novice/_episodes/03-create.md:679 +msgid ">\n" +"> > ## Solution\n" +"> > If given more than one file name followed by a directory name (i.e. the destination directory must \n" +"> > be the last argument), `cp` copies the files to the named directory.\n" +"> >\n" +"> > If given three file names, `cp` throws an error because it is expecting a directory\n" +"> > name as the last argument.\n" +"> >\n" +"> > ```\n" +"> > cp: target ‘morse.txt’ is not a directory\n" +"> > ```\n" +"> > {: .output}" +msgstr "" + +#: shell-novice/_episodes/03-create.md:694 +# blockquote, which can be cascaded +msgid "> ## Copy a folder structure sans files" +msgstr "" + +#: shell-novice/_episodes/03-create.md:695 +msgid ">\n" +"> You're starting a new experiment, and would like to duplicate the file\n" +"> structure from your previous experiment without the data files so you can\n" +"> add new data.\n" +">\n" +"> Assume that the file structure is in a folder called '2016-05-18-data',\n" +"> which contains a `data` folder that in turn contains folders named `raw` and\n" +"> `processed` that contain data files. The goal is to copy the file structure\n" +"> of the `2016-05-18-data` folder into a folder called `2016-05-20-data` and\n" +"> remove the data files from the directory you just created.\n" +">\n" +"> Which of the following set of commands would achieve this objective?\n" +"> What would the other commands do?\n" +">\n" +"> ~~~\n" +"> $ cp -r 2016-05-18-data/ 2016-05-20-data/\n" +"> $ rm 2016-05-20-data/raw/*\n" +"> $ rm 2016-05-20-data/processed/*\n" +"> ~~~\n" +"> {: .language-bash}\n" +"> ~~~\n" +"> $ rm 2016-05-20-data/raw/*\n" +"> $ rm 2016-05-20-data/processed/*\n" +"> $ cp -r 2016-05-18-data/ 2016-5-20-data/\n" +"> ~~~\n" +"> {: .language-bash}\n" +"> ~~~\n" +"> $ cp -r 2016-05-18-data/ 2016-05-20-data/\n" +"> $ rm -r -i 2016-05-20-data/\n" +"> ~~~\n" +"> {: .language-bash}\n" +"> >\n" +"> > ## Solution\n" +"> > The first set of commands achieves this objective.\n" +"> > First we have a recursive copy of a data folder.\n" +"> > Then two `rm` commands which remove all files in the specified directories.\n" +"> > The shell expands the '*' wild card to match all files and subdirectories.\n" +"> >\n" +"> > The second set of commands have the wrong order: \n" +"> > attempting to delete files which haven't yet been copied,\n" +"> > followed by the recursive copy command which would copy them.\n" +"> >\n" +"> > The third set of commands would achieve the objective, but in a time-consuming way:\n" +"> > the first command copies the directory recursively, but the second command deletes\n" +"> > interactively, prompting for confirmation for each file and directory." +msgstr "" + +#: shell-novice/_episodes/04-pipefilter.md:1 +# Front Matter +msgid "---\n" +"title: \"Pipes and Filters\"\n" +"teaching: 30\n" +"exercises: 20\n" +"questions:\n" +"- \"How can I combine existing commands to do new things?\"\n" +"objectives:\n" +"- \"Redirect a command's output to a file.\"\n" +"- \"Process a file instead of keyboard input using redirection.\"\n" +"- \"Construct command pipelines with two or more stages.\"\n" +"- \"Explain what usually happens if a program or pipeline isn't given any input to process.\"\n" +"- \"Explain Unix's 'small pieces, loosely joined' philosophy.\"\n" +"keypoints:\n" +"- \"`cat` displays the contents of its inputs.\"\n" +"- \"`head` displays the first few lines of its input.\"\n" +"- \"`tail` displays the last few lines of its input.\"\n" +"- \"`sort` sorts its inputs.\"\n" +"- \"`wc` counts lines, words, and characters in its inputs.\"\n" +"- \"`*` matches zero or more characters in a filename, so `*.txt` matches all files ending in `.txt`.\"\n" +"- \"`?` matches any single character in a filename, so `?.txt` matches `a.txt` but not `any.txt`.\"\n" +"- \"`command > file` redirects a command's output to a file.\"\n" +"- \"`first | second` is a pipeline: the output of the first command is used as the input to the second.\"\n" +"- \"The best way to use the shell is to use pipes to combine simple single-purpose programs (filters).\"\n" +"---" +msgstr "" + +#: shell-novice/_episodes/04-pipefilter.md:26 +msgid "Now that we know a few basic commands,\n" +"we can finally look at the shell's most powerful feature:\n" +"the ease with which it lets us combine existing programs in new ways.\n" +"We'll start with a directory called `molecules`\n" +"that contains six files describing some simple organic molecules.\n" +"The `.pdb` extension indicates that these files are in Protein Data Bank format,\n" +"a simple text format that specifies the type and position of each atom in the molecule." +msgstr "" + +#: shell-novice/_episodes/04-pipefilter.md:34 +# code block +msgid "~~~\n" +"$ ls molecules\n" +"~~~" +msgstr "" + +#: shell-novice/_episodes/04-pipefilter.md:39 +# code block +msgid "~~~\n" +"cubane.pdb ethane.pdb methane.pdb\n" +"octane.pdb pentane.pdb propane.pdb\n" +"~~~" +msgstr "" + +#: shell-novice/_episodes/04-pipefilter.md:45 +msgid "Let's go into that directory with `cd` and run the command `wc *.pdb`.\n" +"`wc` is the \"word count\" command:\n" +"it counts the number of lines, words, and characters in files.\n" +"The `*` in `*.pdb` matches zero or more characters,\n" +"so the shell turns `*.pdb` into a list of all `.pdb` files in the current directory:" +msgstr "" + +#: shell-novice/_episodes/04-pipefilter.md:51 +# code block +msgid "~~~\n" +"$ cd molecules\n" +"$ wc *.pdb\n" +"~~~" +msgstr "" + +#: shell-novice/_episodes/04-pipefilter.md:57 +# code block +msgid "~~~\n" +" 20 156 1158 cubane.pdb\n" +" 12 84 622 ethane.pdb\n" +" 9 57 422 methane.pdb\n" +" 30 246 1828 octane.pdb\n" +" 21 165 1226 pentane.pdb\n" +" 15 111 825 propane.pdb\n" +" 107 819 6081 total\n" +"~~~" +msgstr "" + +#: shell-novice/_episodes/04-pipefilter.md:68 +#: shell-novice/_episodes/07-find.md:252 +# blockquote, which can be cascaded +msgid "> ## Wildcards" +msgstr "" + +#: shell-novice/_episodes/04-pipefilter.md:69 +msgid ">\n" +"> `*` is a **wildcard**. It matches zero or more\n" +"> characters, so `*.pdb` matches `ethane.pdb`, `propane.pdb`, and every\n" +"> file that ends with '.pdb'. On the other hand, `p*.pdb` only matches\n" +"> `pentane.pdb` and `propane.pdb`, because the 'p' at the front only\n" +"> matches filenames that begin with the letter 'p'.\n" +">\n" +"> `?` is also a wildcard, but it only matches a single character. This\n" +"> means that `p?.pdb` would match `pi.pdb` or `p5.pdb` (if we had these two\n" +"> files in the `molecules` directory), but not `propane.pdb`.\n" +"> We can use any number of wildcards at a time: for example, `p*.p?*`\n" +"> matches anything that starts with a 'p' and ends with '.', 'p', and at\n" +"> least one more character (since the `?` has to match one character, and\n" +"> the final `*` can match any number of characters). Thus, `p*.p?*` would\n" +"> match `preferred.practice`, and even `p.pi` (since the first `*` can\n" +"> match no characters at all), but not `quality.practice` (doesn't start\n" +"> with 'p') or `preferred.p` (there isn't at least one character after the\n" +"> '.p').\n" +">\n" +"> When the shell sees a wildcard, it expands the wildcard to create a\n" +"> list of matching filenames *before* running the command that was\n" +"> asked for. As an exception, if a wildcard expression does not match\n" +"> any file, Bash will pass the expression as an argument to the command\n" +"> as it is. For example typing `ls *.pdf` in the `molecules` directory\n" +"> (which contains only files with names ending with `.pdb`) results in\n" +"> an error message that there is no file called `*.pdf`.\n" +"> However, generally commands like `wc` and `ls` see the lists of\n" +"> file names matching these expressions, but not the wildcards\n" +"> themselves. It is the shell, not the other programs, that deals with\n" +"> expanding wildcards, and this is another example of orthogonal design." +msgstr "" + +#: shell-novice/_episodes/04-pipefilter.md:101 +# blockquote, which can be cascaded +msgid "> ## Using Wildcards" +msgstr "" + +#: shell-novice/_episodes/04-pipefilter.md:102 +msgid ">\n" +"> When run in the `molecules` directory, which `ls` command(s) will\n" +"> produce this output?\n" +">\n" +"> `ethane.pdb methane.pdb`\n" +">\n" +"> 1. `ls *t*ane.pdb`\n" +"> 2. `ls *t?ne.*`\n" +"> 3. `ls *t??ne.pdb`\n" +"> 4. `ls ethane.*`\n" +">\n" +"> > ## Solution\n" +">> The solution is `3.`\n" +">>\n" +">> `1.` shows all files that contain any number and combination of characters, followed by the letter `t`, another single character, and end with `ane.pdb`. This includes `octane.pdb` and `pentane.pdb`. \n" +">>\n" +">> `2.` shows all files containing any number and combination of characters, `t`, another single character, `ne.` followed by any number and combination of characters. This will give us `octane.pdb` and `pentane.pdb` but doesn't match anything which ends in `thane.pdb`.\n" +">>\n" +">> `3.` fixes the problems of option 2 by matching two characters between `t` and `ne`. This is the solution.\n" +">>\n" +">> `4.` only shows files starting with `ethane.`." +msgstr "" + +#: shell-novice/_episodes/04-pipefilter.md:126 +# blockquote, which can be cascaded +msgid "> ## More on Wildcards" +msgstr "" + +#: shell-novice/_episodes/04-pipefilter.md:127 +msgid ">\n" +"> Sam has a directory containing calibration data, datasets, and descriptions of\n" +"> the datasets:\n" +">\n" +"> ~~~\n" +"> 2015-10-23-calibration.txt\n" +"> 2015-10-23-dataset1.txt\n" +"> 2015-10-23-dataset2.txt\n" +"> 2015-10-23-dataset_overview.txt\n" +"> 2015-10-26-calibration.txt\n" +"> 2015-10-26-dataset1.txt\n" +"> 2015-10-26-dataset2.txt\n" +"> 2015-10-26-dataset_overview.txt\n" +"> 2015-11-23-calibration.txt\n" +"> 2015-11-23-dataset1.txt\n" +"> 2015-11-23-dataset2.txt\n" +"> 2015-11-23-dataset_overview.txt\n" +"> ~~~\n" +"> {: .language-bash}\n" +">\n" +"> Before heading off to another field trip, she wants to back up her data and\n" +"> send some datasets to her colleague Bob. Sam uses the following commands\n" +"> to get the job done:\n" +">\n" +"> ~~~\n" +"> $ cp *dataset* /backup/datasets\n" +"> $ cp ____calibration____ /backup/calibration\n" +"> $ cp 2015-____-____ ~/send_to_bob/all_november_files/\n" +"> $ cp ____ ~/send_to_bob/all_datasets_created_on_a_23rd/\n" +"> ~~~\n" +"> {: .language-bash}\n" +">\n" +"> Help Sam by filling in the blanks.\n" +">\n" +"> > ## Solution\n" +"> > ```\n" +"> > $ cp *calibration.txt /backup/calibration\n" +"> > $ cp 2015-11-* ~/send_to_bob/all_november_files/\n" +"> > $ cp *-23-dataset* ~send_to_bob/all_datasets_created_on_a_23rd/\n" +"> > ```\n" +"> > {: .language-bash}" +msgstr "" + +#: shell-novice/_episodes/04-pipefilter.md:171 +msgid "If we run `wc -l` instead of just `wc`,\n" +"the output shows only the number of lines per file:" +msgstr "" + +#: shell-novice/_episodes/04-pipefilter.md:174 +# code block +msgid "~~~\n" +"$ wc -l *.pdb\n" +"~~~" +msgstr "" + +#: shell-novice/_episodes/04-pipefilter.md:179 +#: shell-novice/_episodes/04-pipefilter.md:277 +# code block +msgid "~~~\n" +" 20 cubane.pdb\n" +" 12 ethane.pdb\n" +" 9 methane.pdb\n" +" 30 octane.pdb\n" +" 21 pentane.pdb\n" +" 15 propane.pdb\n" +" 107 total\n" +"~~~" +msgstr "" + +#: shell-novice/_episodes/04-pipefilter.md:190 +msgid "We can also use `-w` to get only the number of words,\n" +"or `-c` to get only the number of characters." +msgstr "" + +#: shell-novice/_episodes/04-pipefilter.md:193 +msgid "Which of these files is shortest?\n" +"It's an easy question to answer when there are only six files,\n" +"but what if there were 6000?\n" +"Our first step toward a solution is to run the command:" +msgstr "" + +#: shell-novice/_episodes/04-pipefilter.md:198 +# code block +msgid "~~~\n" +"$ wc -l *.pdb > lengths.txt\n" +"~~~" +msgstr "" + +#: shell-novice/_episodes/04-pipefilter.md:203 +msgid "The greater than symbol, `>`, tells the shell to **redirect** the command's output\n" +"to a file instead of printing it to the screen. (This is why there is no screen output:\n" +"everything that `wc` would have printed has gone into the\n" +"file `lengths.txt` instead.) The shell will create\n" +"the file if it doesn't exist. If the file exists, it will be\n" +"silently overwritten, which may lead to data loss and thus requires\n" +"some caution.\n" +"`ls lengths.txt` confirms that the file exists:" +msgstr "" + +#: shell-novice/_episodes/04-pipefilter.md:212 +# code block +msgid "~~~\n" +"$ ls lengths.txt\n" +"~~~" +msgstr "" + +#: shell-novice/_episodes/04-pipefilter.md:217 +# code block +msgid "~~~\n" +"lengths.txt\n" +"~~~" +msgstr "" + +#: shell-novice/_episodes/04-pipefilter.md:222 +# blockquote, which can be cascaded +msgid "> ## What Does `>>` Mean?" +msgstr "" + +#: shell-novice/_episodes/04-pipefilter.md:223 +msgid ">\n" +"> What is the difference between:\n" +">\n" +"> ~~~\n" +"> $ echo hello > testfile01.txt\n" +"> ~~~\n" +"> {: .language-bash}\n" +">\n" +"> and:\n" +">\n" +"> ~~~\n" +"> $ echo hello >> testfile02.txt\n" +"> ~~~\n" +"> {: .language-bash}\n" +">\n" +"> Hint: Try executing each command twice in a row and then examining the output files." +msgstr "" + +#: shell-novice/_episodes/04-pipefilter.md:241 +# blockquote, which can be cascaded +msgid "> ## Appending Data" +msgstr "" + +#: shell-novice/_episodes/04-pipefilter.md:242 +msgid ">\n" +"> Consider the file `data-shell/data/animals.txt`.\n" +"> After these commands, select the answer that\n" +"> corresponds to the file `animalsUpd.txt`:\n" +">\n" +"> ~~~\n" +"> $ head -3 animals.txt > animalsUpd.txt\n" +"> $ tail -2 animals.txt >> animalsUpd.txt\n" +"> ~~~\n" +"> {: .language-bash}\n" +">\n" +"> 1. The first three lines of `animals.txt`\n" +"> 2. The last two lines of `animals.txt`\n" +"> 3. The first three lines and the last two lines of `animals.txt`\n" +"> 4. The second and third lines of `animals.txt`\n" +">\n" +"> > ## Solution\n" +"> > Option 3 is correct. \n" +"> > For option 1 to be correct we would only run the `head` command.\n" +"> > For option 2 to be correct we would only run the `tail` command.\n" +"> > For option 4 to be correct we would have to pipe the output of `head` into `tail -2` by doing `head -3 animals.txt | tail -2 >> animalsUpd.txt`" +msgstr "" + +#: shell-novice/_episodes/04-pipefilter.md:266 +msgid "We can now send the content of `lengths.txt` to the screen using `cat lengths.txt`.\n" +"`cat` stands for \"concatenate\":\n" +"it prints the contents of files one after another.\n" +"There's only one file in this case,\n" +"so `cat` just shows us what it contains:" +msgstr "" + +#: shell-novice/_episodes/04-pipefilter.md:272 +# code block +msgid "~~~\n" +"$ cat lengths.txt\n" +"~~~" +msgstr "" + +#: shell-novice/_episodes/04-pipefilter.md:288 +# blockquote, which can be cascaded +msgid "> ## Output Page by Page" +msgstr "" + +#: shell-novice/_episodes/04-pipefilter.md:289 +msgid ">\n" +"> We'll continue to use `cat` in this lesson, for convenience and consistency,\n" +"> but it has the disadvantage that it always dumps the whole file onto your screen.\n" +"> More useful in practice is the command `less`,\n" +"> which you use with `$ less lengths.txt`.\n" +"> This displays a screenful of the file, and then stops.\n" +"> You can go forward one screenful by pressing the spacebar,\n" +"> or back one by pressing `b`. Press `q` to quit." +msgstr "" + +#: shell-novice/_episodes/04-pipefilter.md:299 +msgid "Now let's use the `sort` command to sort its contents." +msgstr "" + +#: shell-novice/_episodes/04-pipefilter.md:301 +# blockquote, which can be cascaded +msgid "> ## What Does `sort -n` Do?" +msgstr "" + +#: shell-novice/_episodes/04-pipefilter.md:302 +msgid ">\n" +"> If we run `sort` on a file containing the following lines:\n" +">\n" +"> ~~~\n" +"> 10\n" +"> 2\n" +"> 19\n" +"> 22\n" +"> 6\n" +"> ~~~" +msgstr "" + +#: shell-novice/_episodes/04-pipefilter.md:312 +#: shell-novice/_episodes/04-pipefilter.md:620 +#: shell-novice/_episodes/04-pipefilter.md:658 +#: shell-novice/_episodes/05-loop.md:348 +#: shell-novice/_episodes/06-script.md:288 +#: shell-novice/_episodes/07-find.md:294 +#: shell-novice/_episodes/07-find.md:305 +# SC/DC Template label +msgid "> {: .source}" +msgstr "" + +#: shell-novice/_episodes/04-pipefilter.md:313 +msgid ">\n" +"> the output is:\n" +">\n" +"> ~~~\n" +"> 10\n" +"> 19\n" +"> 2\n" +"> 22\n" +"> 6\n" +"> ~~~" +msgstr "" + +#: shell-novice/_episodes/04-pipefilter.md:324 +msgid ">\n" +"> If we run `sort -n` on the same input, we get this instead:\n" +">\n" +"> ~~~\n" +"> 2\n" +"> 6\n" +"> 10\n" +"> 19\n" +"> 22\n" +"> ~~~" +msgstr "" + +#: shell-novice/_episodes/04-pipefilter.md:335 +msgid ">\n" +"> Explain why `-n` has this effect.\n" +">\n" +"> > ## Solution\n" +"> > The `-n` flag specifies a numeric sort, rather than alphabetical." +msgstr "" + +#: shell-novice/_episodes/04-pipefilter.md:343 +msgid "We will also use the `-n` flag to specify that the sort is\n" +"numerical instead of alphabetical.\n" +"This does *not* change the file;\n" +"instead, it sends the sorted result to the screen:" +msgstr "" + +#: shell-novice/_episodes/04-pipefilter.md:348 +# code block +msgid "~~~\n" +"$ sort -n lengths.txt\n" +"~~~" +msgstr "" + +#: shell-novice/_episodes/04-pipefilter.md:353 +# code block +msgid "~~~\n" +" 9 methane.pdb\n" +" 12 ethane.pdb\n" +" 15 propane.pdb\n" +" 20 cubane.pdb\n" +" 21 pentane.pdb\n" +" 30 octane.pdb\n" +"107 total\n" +"~~~" +msgstr "" + +#: shell-novice/_episodes/04-pipefilter.md:364 +msgid "We can put the sorted list of lines in another temporary file called `sorted-lengths.txt`\n" +"by putting `> sorted-lengths.txt` after the command,\n" +"just as we used `> lengths.txt` to put the output of `wc` into `lengths.txt`.\n" +"Once we've done that,\n" +"we can run another command called `head` to get the first few lines in `sorted-lengths.txt`:" +msgstr "" + +#: shell-novice/_episodes/04-pipefilter.md:370 +# code block +msgid "~~~\n" +"$ sort -n lengths.txt > sorted-lengths.txt\n" +"$ head -n 1 sorted-lengths.txt\n" +"~~~" +msgstr "" + +#: shell-novice/_episodes/04-pipefilter.md:376 +#: shell-novice/_episodes/04-pipefilter.md:415 +# code block +msgid "~~~\n" +" 9 methane.pdb\n" +"~~~" +msgstr "" + +#: shell-novice/_episodes/04-pipefilter.md:381 +msgid "Using `-n 1` with `head` tells it that\n" +"we only want the first line of the file;\n" +"`-n 20` would get the first 20,\n" +"and so on.\n" +"Since `sorted-lengths.txt` contains the lengths of our files ordered from least to greatest,\n" +"the output of `head` must be the file with the fewest lines." +msgstr "" + +#: shell-novice/_episodes/04-pipefilter.md:388 +# blockquote, which can be cascaded +msgid "> ## Redirecting to the same file" +msgstr "" + +#: shell-novice/_episodes/04-pipefilter.md:389 +msgid ">\n" +"> It's a very bad idea to try redirecting\n" +"> the output of a command that operates on a file\n" +"> to the same file. For example:\n" +">\n" +"> ~~~\n" +"> $ sort -n lengths.txt > lengths.txt\n" +"> ~~~\n" +"> {: .language-bash}\n" +">\n" +"> Doing something like this may give you\n" +"> incorrect results and/or delete\n" +"> the contents of `lengths.txt`." +msgstr "" + +#: shell-novice/_episodes/04-pipefilter.md:404 +msgid "If you think this is confusing,\n" +"you're in good company:\n" +"even once you understand what `wc`, `sort`, and `head` do,\n" +"all those intermediate files make it hard to follow what's going on.\n" +"We can make it easier to understand by running `sort` and `head` together:" +msgstr "" + +#: shell-novice/_episodes/04-pipefilter.md:410 +# code block +msgid "~~~\n" +"$ sort -n lengths.txt | head -n 1\n" +"~~~" +msgstr "" + +#: shell-novice/_episodes/04-pipefilter.md:420 +msgid "The vertical bar, `|`, between the two commands is called a **pipe**.\n" +"It tells the shell that we want to use\n" +"the output of the command on the left\n" +"as the input to the command on the right.\n" +"The computer might create a temporary file if it needs to,\n" +"or copy data from one program to the other in memory,\n" +"or something else entirely;\n" +"we don't have to know or care." +msgstr "" + +#: shell-novice/_episodes/04-pipefilter.md:429 +msgid "Nothing prevents us from chaining pipes consecutively.\n" +"That is, we can for example send the output of `wc` directly to `sort`,\n" +"and then the resulting output to `head`.\n" +"Thus we first use a pipe to send the output of `wc` to `sort`:" +msgstr "" + +#: shell-novice/_episodes/04-pipefilter.md:434 +#: shell-novice/_episodes/06-script.md:223 +# code block +msgid "~~~\n" +"$ wc -l *.pdb | sort -n\n" +"~~~" +msgstr "" + +#: shell-novice/_episodes/04-pipefilter.md:439 +# code block +msgid "~~~\n" +" 9 methane.pdb\n" +" 12 ethane.pdb\n" +" 15 propane.pdb\n" +" 20 cubane.pdb\n" +" 21 pentane.pdb\n" +" 30 octane.pdb\n" +" 107 total\n" +"~~~" +msgstr "" + +#: shell-novice/_episodes/04-pipefilter.md:450 +msgid "And now we send the output of this pipe, through another pipe, to `head`, so that the full pipeline becomes:" +msgstr "" + +#: shell-novice/_episodes/04-pipefilter.md:452 +# code block +msgid "~~~\n" +"$ wc -l *.pdb | sort -n | head -n 1\n" +"~~~" +msgstr "" + +#: shell-novice/_episodes/04-pipefilter.md:457 +# code block +msgid "~~~\n" +" 9 methane.pdb\n" +"~~~" +msgstr "" + +#: shell-novice/_episodes/04-pipefilter.md:462 +msgid "This is exactly like a mathematician nesting functions like *log(3x)*\n" +"and saying \"the log of three times *x*\".\n" +"In our case,\n" +"the calculation is \"head of sort of line count of `*.pdb`\"." +msgstr "" + +#: shell-novice/_episodes/04-pipefilter.md:467 +# blockquote, which can be cascaded +msgid "> ## Piping Commands Together" +msgstr "" + +#: shell-novice/_episodes/04-pipefilter.md:468 +msgid ">\n" +"> In our current directory, we want to find the 3 files which have the least number of\n" +"> lines. Which command listed below would work?\n" +">\n" +"> 1. `wc -l * > sort -n > head -n 3`\n" +"> 2. `wc -l * | sort -n | head -n 1-3`\n" +"> 3. `wc -l * | head -n 3 | sort -n`\n" +"> 4. `wc -l * | sort -n | head -n 3`\n" +">\n" +"> > ## Solution\n" +"> > Option 4 is the solution.\n" +"> > The pipe character `|` is used to feed the standard output from one process to\n" +"> > the standard input of another.\n" +"> > `>` is used to redirect standard output to a file.\n" +"> > Try it in the `data-shell/molecules` directory!" +msgstr "" + +#: shell-novice/_episodes/04-pipefilter.md:486 +msgid "Here's what actually happens behind the scenes when we create a pipe.\n" +"When a computer runs a program --- any program --- it creates a **process**\n" +"in memory to hold the program's software and its current state.\n" +"Every process has an input channel called **standard input**.\n" +"(By this point, you may be surprised that the name is so memorable, but don't worry:\n" +"most Unix programmers call it \"stdin\").\n" +"Every process also has a default output channel called **standard output**\n" +"(or \"stdout\"). A second output channel called **standard error** (stderr) also\n" +"exists. This channel is typically used for error or diagnostic messages, and it\n" +"allows a user to pipe the output of one program into another while still receiving \n" +"error messages in the terminal. " +msgstr "" + +#: shell-novice/_episodes/04-pipefilter.md:498 +msgid "The shell is actually just another program.\n" +"Under normal circumstances,\n" +"whatever we type on the keyboard is sent to the shell on its standard input,\n" +"and whatever it produces on standard output is displayed on our screen.\n" +"When we tell the shell to run a program,\n" +"it creates a new process\n" +"and temporarily sends whatever we type on our keyboard to that process's standard input,\n" +"and whatever the process sends to standard output to the screen." +msgstr "" + +#: shell-novice/_episodes/04-pipefilter.md:507 +msgid "Here's what happens when we run `wc -l *.pdb > lengths.txt`.\n" +"The shell starts by telling the computer to create a new process to run the `wc` program.\n" +"Since we've provided some filenames as arguments,\n" +"`wc` reads from them instead of from standard input.\n" +"And since we've used `>` to redirect output to a file,\n" +"the shell connects the process's standard output to that file." +msgstr "" + +#: shell-novice/_episodes/04-pipefilter.md:514 +msgid "If we run `wc -l *.pdb | sort -n` instead,\n" +"the shell creates two processes\n" +"(one for each process in the pipe)\n" +"so that `wc` and `sort` run simultaneously.\n" +"The standard output of `wc` is fed directly to the standard input of `sort`;\n" +"since there's no redirection with `>`,\n" +"`sort`'s output goes to the screen.\n" +"And if we run `wc -l *.pdb | sort -n | head -n 1`,\n" +"we get three processes with data flowing from the files,\n" +"through `wc` to `sort`,\n" +"and from `sort` through `head` to the screen." +msgstr "" + +#: shell-novice/_episodes/04-pipefilter.md:526 +msgid "![Redirects and Pipes](../fig/redirects-and-pipes.png)" +msgstr "" + +#: shell-novice/_episodes/04-pipefilter.md:528 +msgid "This simple idea is why Unix has been so successful.\n" +"Instead of creating enormous programs that try to do many different things,\n" +"Unix programmers focus on creating lots of simple tools that each do one job well,\n" +"and that work well with each other.\n" +"This programming model is called \"pipes and filters\".\n" +"We've already seen pipes;\n" +"a **filter** is a program like `wc` or `sort`\n" +"that transforms a stream of input into a stream of output.\n" +"Almost all of the standard Unix tools can work this way:\n" +"unless told to do otherwise,\n" +"they read from standard input,\n" +"do something with what they've read,\n" +"and write to standard output." +msgstr "" + +#: shell-novice/_episodes/04-pipefilter.md:542 +msgid "The key is that any program that reads lines of text from standard input\n" +"and writes lines of text to standard output\n" +"can be combined with every other program that behaves this way as well.\n" +"You can *and should* write your programs this way\n" +"so that you and other people can put those programs into pipes to multiply their power." +msgstr "" + +#: shell-novice/_episodes/04-pipefilter.md:548 +# blockquote, which can be cascaded +msgid "> ## Redirecting Input" +msgstr "" + +#: shell-novice/_episodes/04-pipefilter.md:549 +msgid ">\n" +"> As well as using `>` to redirect a program's output, we can use `<` to\n" +"> redirect its input, i.e., to read from a file instead of from standard\n" +"> input. For example, instead of writing `wc ammonia.pdb`, we could write\n" +"> `wc < ammonia.pdb`. In the first case, `wc` gets a command line\n" +"> argument telling it what file to open. In the second, `wc` doesn't have\n" +"> any command line arguments, so it reads from standard input, but we\n" +"> have told the shell to send the contents of `ammonia.pdb` to `wc`'s\n" +"> standard input." +msgstr "" + +#: shell-novice/_episodes/04-pipefilter.md:560 +# blockquote, which can be cascaded +msgid "> ## What Does `<` Mean?" +msgstr "" + +#: shell-novice/_episodes/04-pipefilter.md:561 +msgid ">\n" +"> Change directory to `data-shell` (the top level of our downloaded example data).\n" +">\n" +"> What is the difference between:\n" +">\n" +"> ~~~\n" +"> $ wc -l notes.txt\n" +"> ~~~\n" +"> {: .language-bash}\n" +">\n" +"> and:\n" +">\n" +"> ~~~\n" +"> $ wc -l < notes.txt\n" +"> ~~~\n" +"> {: .language-bash}\n" +">\n" +"> > ## Solution\n" +"> > `<` is used to redirect input to a command. \n" +"> >\n" +"> > In both examples, the shell returns the number of lines from the input to\n" +"> > the `wc` command.\n" +"> > In the first example, the input is the file `notes.txt` and the file name is\n" +"> > given in the output from the `wc` command.\n" +"> > In the second example, the contents of the file `notes.txt` are redirected to\n" +"> > standard input.\n" +"> > It is as if we have entered the contents of the file by typing at the prompt.\n" +"> > Hence the file name is not given in the output - just the number of lines.\n" +"> > Try this for yourself:\n" +"> >\n" +"> > ```\n" +"> > $ wc -l\n" +"> > this\n" +"> > is\n" +"> > a test\n" +"> > Ctrl-D # This lets the shell know you have finished typing the input\n" +"> > ```\n" +"> > {: .language-bash}\n" +"> >\n" +"> > ```\n" +"> > 3\n" +"> > ```\n" +"> > {: .output}" +msgstr "" + +#: shell-novice/_episodes/04-pipefilter.md:607 +# blockquote, which can be cascaded +msgid "> ## Why Does `uniq` Only Remove Adjacent Duplicates?" +msgstr "" + +#: shell-novice/_episodes/04-pipefilter.md:608 +msgid ">\n" +"> The command `uniq` removes adjacent duplicated lines from its input.\n" +"> For example, the file `data-shell/data/salmon.txt` contains:\n" +">\n" +"> ~~~\n" +"> coho\n" +"> coho\n" +"> steelhead\n" +"> coho\n" +"> steelhead\n" +"> steelhead\n" +"> ~~~" +msgstr "" + +#: shell-novice/_episodes/04-pipefilter.md:621 +msgid ">\n" +"> Running the command `uniq salmon.txt` from the `data-shell/data` directory produces:\n" +">\n" +"> ~~~\n" +"> coho\n" +"> steelhead\n" +"> coho\n" +"> steelhead\n" +"> ~~~" +msgstr "" + +#: shell-novice/_episodes/04-pipefilter.md:631 +msgid ">\n" +"> Why do you think `uniq` only removes *adjacent* duplicated lines?\n" +"> (Hint: think about very large data sets.) What other command could\n" +"> you combine with it in a pipe to remove all duplicated lines?\n" +">\n" +"> > ## Solution\n" +"> > ```\n" +"> > $ sort salmon.txt | uniq\n" +"> > ```\n" +"> > {: .language-bash}" +msgstr "" + +#: shell-novice/_episodes/04-pipefilter.md:644 +# blockquote, which can be cascaded +msgid "> ## Pipe Reading Comprehension" +msgstr "" + +#: shell-novice/_episodes/04-pipefilter.md:645 +msgid ">\n" +"> A file called `animals.txt` (in the `data-shell/data` folder) contains the following data:\n" +">\n" +"> ~~~\n" +"> 2012-11-05,deer\n" +"> 2012-11-05,rabbit\n" +"> 2012-11-05,raccoon\n" +"> 2012-11-06,rabbit\n" +"> 2012-11-06,deer\n" +"> 2012-11-06,fox\n" +"> 2012-11-07,rabbit\n" +"> 2012-11-07,bear\n" +"> ~~~" +msgstr "" + +#: shell-novice/_episodes/04-pipefilter.md:659 +msgid ">\n" +"> What text passes through each of the pipes and the final redirect in the pipeline below?\n" +">\n" +"> ~~~\n" +"> $ cat animals.txt | head -n 5 | tail -n 3 | sort -r > final.txt\n" +"> ~~~\n" +"> {: .language-bash}\n" +"> Hint: build the pipeline up one command at a time to test your understanding" +msgstr "" + +#: shell-novice/_episodes/04-pipefilter.md:669 +# blockquote, which can be cascaded +msgid "> ## Pipe Construction" +msgstr "" + +#: shell-novice/_episodes/04-pipefilter.md:670 +msgid ">\n" +"> For the file `animals.txt` from the previous exercise, the command:\n" +">\n" +"> ~~~\n" +"> $ cut -d , -f 2 animals.txt\n" +"> ~~~\n" +"> {: .language-bash}\n" +"> \n" +"> uses the -d flag to separate each line by comma, and the -f flag\n" +"> to print the second field in each line, to give the following output:\n" +">\n" +"> ~~~\n" +"> deer\n" +"> rabbit\n" +"> raccoon\n" +"> rabbit\n" +"> deer\n" +"> fox\n" +"> rabbit\n" +"> bear\n" +"> ~~~" +msgstr "" + +#: shell-novice/_episodes/04-pipefilter.md:692 +msgid ">\n" +"> What other command(s) could be added to this in a pipeline to find\n" +"> out what animals the file contains (without any duplicates in their\n" +"> names)?\n" +">\n" +"> > ## Solution\n" +"> > ```\n" +"> > $ cut -d , -f 2 animals.txt | sort | uniq\n" +"> > ```\n" +"> > {: .language-bash}" +msgstr "" + +#: shell-novice/_episodes/04-pipefilter.md:705 +# blockquote, which can be cascaded +msgid "> ## Which Pipe?" +msgstr "" + +#: shell-novice/_episodes/04-pipefilter.md:706 +msgid ">\n" +"> The file `animals.txt` contains 586 lines of data formatted as follows:\n" +">\n" +"> ~~~\n" +"> 2012-11-05,deer\n" +"> 2012-11-05,rabbit\n" +"> 2012-11-05,raccoon\n" +"> 2012-11-06,rabbit\n" +"> ...\n" +"> ~~~" +msgstr "" + +#: shell-novice/_episodes/04-pipefilter.md:717 +msgid ">\n" +"> Assuming your current directory is `data-shell/data/`,\n" +"> what command would you use to produce a table that shows\n" +"> the total count of each type of animal in the file?\n" +">\n" +"> 1. `grep {deer, rabbit, raccoon, deer, fox, bear} animals.txt | wc -l`\n" +"> 2. `sort animals.txt | uniq -c`\n" +"> 3. `sort -t, -k2,2 animals.txt | uniq -c`\n" +"> 4. `cut -d, -f 2 animals.txt | uniq -c`\n" +"> 5. `cut -d, -f 2 animals.txt | sort | uniq -c`\n" +"> 6. `cut -d, -f 2 animals.txt | sort | uniq -c | wc -l`\n" +">\n" +"> > ## Solution\n" +"> > Option 5. is the correct answer.\n" +"> > If you have difficulty understanding why, try running the commands, or sub-sections of\n" +"> > the pipelines (make sure you are in the `data-shell/data` directory)." +msgstr "" + +#: shell-novice/_episodes/04-pipefilter.md:736 +# header +msgid "## Nelle's Pipeline: Checking Files" +msgstr "" + +#: shell-novice/_episodes/04-pipefilter.md:738 +msgid "Nelle has run her samples through the assay machines\n" +"and created 17 files in the `north-pacific-gyre/2012-07-03` directory described earlier.\n" +"As a quick sanity check, starting from her home directory, Nelle types:" +msgstr "" + +#: shell-novice/_episodes/04-pipefilter.md:742 +# code block +msgid "~~~\n" +"$ cd north-pacific-gyre/2012-07-03\n" +"$ wc -l *.txt\n" +"~~~" +msgstr "" + +#: shell-novice/_episodes/04-pipefilter.md:748 +msgid "The output is 18 lines that look like this:" +msgstr "" + +#: shell-novice/_episodes/04-pipefilter.md:750 +# code block +msgid "~~~\n" +"300 NENE01729A.txt\n" +"300 NENE01729B.txt\n" +"300 NENE01736A.txt\n" +"300 NENE01751A.txt\n" +"300 NENE01751B.txt\n" +"300 NENE01812A.txt\n" +"... ...\n" +"~~~" +msgstr "" + +#: shell-novice/_episodes/04-pipefilter.md:761 +msgid "Now she types this:" +msgstr "" + +#: shell-novice/_episodes/04-pipefilter.md:763 +# code block +msgid "~~~\n" +"$ wc -l *.txt | sort -n | head -n 5\n" +"~~~" +msgstr "" + +#: shell-novice/_episodes/04-pipefilter.md:768 +# code block +msgid "~~~\n" +" 240 NENE02018B.txt\n" +" 300 NENE01729A.txt\n" +" 300 NENE01729B.txt\n" +" 300 NENE01736A.txt\n" +" 300 NENE01751A.txt\n" +"~~~" +msgstr "" + +#: shell-novice/_episodes/04-pipefilter.md:777 +msgid "Whoops: one of the files is 60 lines shorter than the others.\n" +"When she goes back and checks it,\n" +"she sees that she did that assay at 8:00 on a Monday morning --- someone\n" +"was probably in using the machine on the weekend,\n" +"and she forgot to reset it.\n" +"Before re-running that sample,\n" +"she checks to see if any files have too much data:" +msgstr "" + +#: shell-novice/_episodes/04-pipefilter.md:785 +# code block +msgid "~~~\n" +"$ wc -l *.txt | sort -n | tail -n 5\n" +"~~~" +msgstr "" + +#: shell-novice/_episodes/04-pipefilter.md:790 +# code block +msgid "~~~\n" +" 300 NENE02040B.txt\n" +" 300 NENE02040Z.txt\n" +" 300 NENE02043A.txt\n" +" 300 NENE02043B.txt\n" +"5040 total\n" +"~~~" +msgstr "" + +#: shell-novice/_episodes/04-pipefilter.md:799 +msgid "Those numbers look good --- but what's that 'Z' doing there in the third-to-last line?\n" +"All of her samples should be marked 'A' or 'B';\n" +"by convention,\n" +"her lab uses 'Z' to indicate samples with missing information.\n" +"To find others like it, she does this:" +msgstr "" + +#: shell-novice/_episodes/04-pipefilter.md:805 +# code block +msgid "~~~\n" +"$ ls *Z.txt\n" +"~~~" +msgstr "" + +#: shell-novice/_episodes/04-pipefilter.md:810 +# code block +msgid "~~~\n" +"NENE01971Z.txt NENE02040Z.txt\n" +"~~~" +msgstr "" + +#: shell-novice/_episodes/04-pipefilter.md:815 +msgid "Sure enough,\n" +"when she checks the log on her laptop,\n" +"there's no depth recorded for either of those samples.\n" +"Since it's too late to get the information any other way,\n" +"she must exclude those two files from her analysis.\n" +"She could just delete them using `rm`,\n" +"but there are actually some analyses she might do later where depth doesn't matter,\n" +"so instead, she'll just be careful later on to select files using the wildcard expression `*[AB].txt`.\n" +"As always,\n" +"the `*` matches any number of characters;\n" +"the expression `[AB]` matches either an 'A' or a 'B',\n" +"so this matches all the valid data files she has." +msgstr "" + +#: shell-novice/_episodes/04-pipefilter.md:828 +# blockquote, which can be cascaded +msgid "> ## Wildcard Expressions" +msgstr "" + +#: shell-novice/_episodes/04-pipefilter.md:829 +msgid ">\n" +"> Wildcard expressions can be very complex, but you can sometimes write\n" +"> them in ways that only use simple syntax, at the expense of being a bit\n" +"> more verbose. \n" +"> Consider the directory `data-shell/north-pacific-gyre/2012-07-03` :\n" +"> the wildcard expression `*[AB].txt`\n" +"> matches all files ending in `A.txt` or `B.txt`. Imagine you forgot about\n" +"> this.\n" +">\n" +"> 1. Can you match the same set of files with basic wildcard expressions\n" +"> that do not use the `[]` syntax? *Hint*: You may need more than one\n" +"> expression.\n" +">\n" +"> 2. The expression that you found and the expression from the lesson match the\n" +"> same set of files in this example. What is the small difference between the\n" +"> outputs?\n" +">\n" +"> 3. Under what circumstances would your new expression produce an error message\n" +"> where the original one would not?\n" +">\n" +"> > ## Solution\n" +"> > 1. \n" +"> >\n" +"> > ```\n" +"> > $ ls *A.txt\n" +"> > $ ls *B.txt\n" +"> > ```\n" +"> > {: .language-bash}\n" +"> > 2. The output from the new commands is separated because there are two commands.\n" +"> > 3. When there are no files ending in `A.txt`, or there are no files ending in\n" +"> > `B.txt`." +msgstr "" + +#: shell-novice/_episodes/04-pipefilter.md:863 +# blockquote, which can be cascaded +msgid "> ## Removing Unneeded Files" +msgstr "" + +#: shell-novice/_episodes/04-pipefilter.md:864 +msgid ">\n" +"> Suppose you want to delete your processed data files, and only keep\n" +"> your raw files and processing script to save storage.\n" +"> The raw files end in `.dat` and the processed files end in `.txt`.\n" +"> Which of the following would remove all the processed data files,\n" +"> and *only* the processed data files?\n" +">\n" +"> 1. `rm ?.txt`\n" +"> 2. `rm *.txt`\n" +"> 3. `rm * .txt`\n" +"> 4. `rm *.*`\n" +">\n" +"> > ## Solution\n" +"> > 1. This would remove `.txt` files with one-character names\n" +"> > 2. This is correct answer\n" +"> > 3. The shell would expand `*` to match everything in the current directory,\n" +"> > so the command would try to remove all matched files and an additional\n" +"> > file called `.txt`\n" +"> > 4. The shell would expand `*.*` to match all files with any extension,\n" +"> > so this command would delete all files" +msgstr "" + +#: shell-novice/_episodes/05-loop.md:1 +# Front Matter +msgid "---\n" +"title: \"Loops\"\n" +"teaching: 40\n" +"exercises: 10\n" +"questions:\n" +"- \"How can I perform the same actions on many different files?\"\n" +"objectives:\n" +"- \"Write a loop that applies one or more commands separately to each file in a set of files.\"\n" +"- \"Trace the values taken on by a loop variable during execution of the loop.\"\n" +"- \"Explain the difference between a variable's name and its value.\"\n" +"- \"Explain why spaces and some punctuation characters shouldn't be used in file names.\"\n" +"- \"Demonstrate how to see what commands have recently been executed.\"\n" +"- \"Re-run recently executed commands without retyping them.\"\n" +"keypoints:\n" +"- \"A `for` loop repeats commands once for every thing in a list.\"\n" +"- \"Every `for` loop needs a variable to refer to the thing it is currently operating on.\"\n" +"- \"Use `$name` to expand a variable (i.e., get its value). `${name}` can also be used.\"\n" +"- \"Do not use spaces, quotes, or wildcard characters such as '*' or '?' in filenames, as it complicates variable expansion.\"\n" +"- \"Give files consistent names that are easy to match with wildcard patterns to make it easy to select them for looping.\"\n" +"- \"Use the up-arrow key to scroll up through previous commands to edit and repeat them.\"\n" +"- \"Use `Ctrl-R` to search through the previously entered commands.\"\n" +"- \"Use `history` to display recent commands, and `!number` to repeat a command by number.\"\n" +"---" +msgstr "" + +#: shell-novice/_episodes/05-loop.md:25 +msgid "**Loops** are key to productivity improvements through automation as they allow us to execute\n" +"commands repetitively. Similar to wildcards and tab completion, using loops also reduces the\n" +"amount of typing (and typing mistakes).\n" +"Suppose we have several hundred genome data files named `basilisk.dat`, `unicorn.dat`, and so on.\n" +"In this example,\n" +"we'll use the `creatures` directory which only has two example files,\n" +"but the principles can be applied to many many more files at once.\n" +"We would like to modify these files, but also save a version of the original files, naming the copies\n" +"`original-basilisk.dat` and `original-unicorn.dat`.\n" +"We can't use:" +msgstr "" + +#: shell-novice/_episodes/05-loop.md:36 +# code block +msgid "~~~\n" +"$ cp *.dat original-*.dat\n" +"~~~" +msgstr "" + +#: shell-novice/_episodes/05-loop.md:41 +msgid "because that would expand to:" +msgstr "" + +#: shell-novice/_episodes/05-loop.md:43 +# code block +msgid "~~~\n" +"$ cp basilisk.dat unicorn.dat original-*.dat\n" +"~~~" +msgstr "" + +#: shell-novice/_episodes/05-loop.md:48 +msgid "This wouldn't back up our files, instead we get an error:" +msgstr "" + +#: shell-novice/_episodes/05-loop.md:50 +# code block +msgid "~~~\n" +"cp: target `original-*.dat' is not a directory\n" +"~~~" +msgstr "" + +#: shell-novice/_episodes/05-loop.md:55 +msgid "This problem arises when `cp` receives more than two inputs. When this happens, it\n" +"expects the last input to be a directory where it can copy all the files it was passed.\n" +"Since there is no directory named `original-*.dat` in the `creatures` directory we get an\n" +"error." +msgstr "" + +#: shell-novice/_episodes/05-loop.md:60 +msgid "Instead, we can use a **loop**\n" +"to do some operation once for each thing in a list.\n" +"Here's a simple example that displays the first three lines of each file in turn:" +msgstr "" + +#: shell-novice/_episodes/05-loop.md:64 +# code block +msgid "~~~\n" +"$ for filename in basilisk.dat unicorn.dat\n" +"> do\n" +"> head -n 3 $filename # Indentation within the loop aids legibility\n" +"> done\n" +"~~~" +msgstr "" + +#: shell-novice/_episodes/05-loop.md:72 +# code block +msgid "~~~\n" +"COMMON NAME: basilisk\n" +"CLASSIFICATION: basiliscus vulgaris\n" +"UPDATED: 1745-05-02\n" +"COMMON NAME: unicorn\n" +"CLASSIFICATION: equus monoceros\n" +"UPDATED: 1738-11-24\n" +"~~~" +msgstr "" + +#: shell-novice/_episodes/05-loop.md:82 +# blockquote, which can be cascaded +msgid "> ## Indentation of code within a for loop" +msgstr "" + +#: shell-novice/_episodes/05-loop.md:83 +# blockquote, which can be cascaded +msgid "> Note that it is common practice to indent the line(s) of code within a for loop." +msgstr "" + +#: shell-novice/_episodes/05-loop.md:84 +# blockquote, which can be cascaded +msgid "> The only purpose is to make the code easier to read -- it is not required for the loop to run." +msgstr "" + +#: shell-novice/_episodes/05-loop.md:87 +msgid "When the shell sees the keyword `for`,\n" +"it knows to repeat a command (or group of commands) once for each item in a list.\n" +"Each time the loop runs (called an iteration), an item in the list is assigned in sequence to\n" +"the **variable**, and the commands inside the loop are executed, before moving on to \n" +"the next item in the list.\n" +"Inside the loop,\n" +"we call for the variable's value by putting `$` in front of it.\n" +"The `$` tells the shell interpreter to treat\n" +"the **variable** as a variable name and substitute its value in its place,\n" +"rather than treat it as text or an external command. " +msgstr "" + +#: shell-novice/_episodes/05-loop.md:98 +msgid "In this example, the list is two filenames: `basilisk.dat` and `unicorn.dat`.\n" +"Each time the loop iterates, it will assign a file name to the variable `filename`\n" +"and run the `head` command.\n" +"The first time through the loop,\n" +"`$filename` is `basilisk.dat`. \n" +"The interpreter runs the command `head` on `basilisk.dat`, \n" +"and the prints the \n" +"first three lines of `basilisk.dat`.\n" +"For the second iteration, `$filename` becomes \n" +"`unicorn.dat`. This time, the shell runs `head` on `unicorn.dat`\n" +"and prints the first three lines of `unicorn.dat`. \n" +"Since the list was only two items, the shell exits the `for` loop." +msgstr "" + +#: shell-novice/_episodes/05-loop.md:111 +msgid "When using variables it is also\n" +"possible to put the names into curly braces to clearly delimit the variable\n" +"name: `$filename` is equivalent to `${filename}`, but is different from\n" +"`${file}name`. You may find this notation in other people's programs." +msgstr "" + +#: shell-novice/_episodes/05-loop.md:116 +# blockquote, which can be cascaded +msgid "> ## Variables in Loops" +msgstr "" + +#: shell-novice/_episodes/05-loop.md:117 +msgid ">\n" +"> This exercise refers to the `data-shell/molecules` directory.\n" +"> `ls` gives the following output:\n" +">\n" +"> ~~~\n" +"> cubane.pdb ethane.pdb methane.pdb octane.pdb pentane.pdb propane.pdb\n" +"> ~~~" +msgstr "" + +#: shell-novice/_episodes/05-loop.md:125 +msgid ">\n" +"> What is the output of the following code?\n" +">\n" +"> ~~~\n" +"> for datafile in *.pdb\n" +"> do\n" +"> ls *.pdb\n" +"> done\n" +"> ~~~\n" +"> {: .language-bash}\n" +">\n" +"> Now, what is the output of the following code?\n" +">\n" +"> ~~~\n" +"> for datafile in *.pdb\n" +"> do\n" +"> ls $datafile\n" +"> done\n" +"> ~~~\n" +"> {: .language-bash}\n" +">\n" +"> Why do these two loops give different outputs?\n" +">\n" +"> > ## Solution\n" +"> > The first code block gives the same output on each iteration through\n" +"> > the loop.\n" +"> > Bash expands the wildcard `*.pdb` within the loop body (as well as\n" +"> > before the loop starts) to match all files ending in `.pdb`\n" +"> > and then lists them using `ls`.\n" +"> > The expanded loop would look like this:\n" +"> > ```\n" +"> > for datafile in cubane.pdb ethane.pdb methane.pdb octane.pdb pentane.pdb propane.pdb\n" +"> > do\n" +"> > ls cubane.pdb ethane.pdb methane.pdb octane.pdb pentane.pdb propane.pdb\n" +"> > done\n" +"> > ```\n" +"> > {: .language-bash}\n" +"> >\n" +"> > ```\n" +"> > cubane.pdb ethane.pdb methane.pdb octane.pdb pentane.pdb propane.pdb\n" +"> > cubane.pdb ethane.pdb methane.pdb octane.pdb pentane.pdb propane.pdb\n" +"> > cubane.pdb ethane.pdb methane.pdb octane.pdb pentane.pdb propane.pdb\n" +"> > cubane.pdb ethane.pdb methane.pdb octane.pdb pentane.pdb propane.pdb\n" +"> > cubane.pdb ethane.pdb methane.pdb octane.pdb pentane.pdb propane.pdb\n" +"> > cubane.pdb ethane.pdb methane.pdb octane.pdb pentane.pdb propane.pdb\n" +"> > ```\n" +"> > {: .output}\n" +"> >\n" +"> > The second code block lists a different file on each loop iteration.\n" +"> > The value of the `datafile` variable is evaluated using `$datafile`,\n" +"> > and then listed using `ls`.\n" +"> >\n" +"> > ```\n" +"> > cubane.pdb\n" +"> > ethane.pdb\n" +"> > methane.pdb\n" +"> > octane.pdb\n" +"> > pentane.pdb\n" +"> > propane.pdb\n" +"> > ```\n" +"> > {: .output}" +msgstr "" + +#: shell-novice/_episodes/05-loop.md:189 +# blockquote, which can be cascaded +msgid "> ## Follow the Prompt" +msgstr "" + +#: shell-novice/_episodes/05-loop.md:190 +msgid ">\n" +"> The shell prompt changes from `$` to `>` and back again as we were\n" +"> typing in our loop. The second prompt, `>`, is different to remind\n" +"> us that we haven't finished typing a complete command yet. A semicolon, `;`,\n" +"> can be used to separate two commands written on a single line." +msgstr "" + +#: shell-novice/_episodes/05-loop.md:197 +# blockquote, which can be cascaded +msgid "> ## Same Symbols, Different Meanings" +msgstr "" + +#: shell-novice/_episodes/05-loop.md:198 +msgid ">\n" +"> Here we see `>` being used a shell prompt, whereas `>` is also\n" +"> used to redirect output.\n" +"> Similarly, `$` is used as a shell prompt, but, as we saw earlier,\n" +"> it is also used to ask the shell to get the value of a variable.\n" +">\n" +"> If the *shell* prints `>` or `$` then it expects you to type something,\n" +"> and the symbol is a prompt.\n" +">\n" +"> If *you* type `>` or `$` yourself, it is an instruction from you that\n" +"> the shell to redirect output or get the value of a variable." +msgstr "" + +#: shell-novice/_episodes/05-loop.md:211 +msgid "Returning to our example in the `data-shell/creatures` directory,\n" +"we have called the variable in this loop `filename`\n" +"in order to make its purpose clearer to human readers.\n" +"The shell itself doesn't care what the variable is called;\n" +"if we wrote this loop as:" +msgstr "" + +#: shell-novice/_episodes/05-loop.md:217 +# code block +msgid "~~~\n" +"for x in basilisk.dat unicorn.dat\n" +"do\n" +" head -n 3 $x\n" +"done\n" +"~~~" +msgstr "" + +#: shell-novice/_episodes/05-loop.md:225 +msgid "or:" +msgstr "" + +#: shell-novice/_episodes/05-loop.md:227 +# code block +msgid "~~~\n" +"for temperature in basilisk.dat unicorn.dat\n" +"do\n" +" head -n 3 $temperature\n" +"done\n" +"~~~" +msgstr "" + +#: shell-novice/_episodes/05-loop.md:235 +msgid "it would work exactly the same way.\n" +"*Don't do this.*\n" +"Programs are only useful if people can understand them,\n" +"so meaningless names (like `x`) or misleading names (like `temperature`)\n" +"increase the odds that the program won't do what its readers think it does." +msgstr "" + +#: shell-novice/_episodes/05-loop.md:241 +# blockquote, which can be cascaded +msgid "> ## Limiting Sets of Files" +msgstr "" + +#: shell-novice/_episodes/05-loop.md:242 +msgid ">\n" +"> What would be the output of running the following loop in the `data-shell/molecules` directory?\n" +">\n" +"> ~~~\n" +"> for filename in c*\n" +"> do\n" +"> ls $filename \n" +"> done\n" +"> ~~~\n" +"> {: .language-bash}\n" +">\n" +"> 1. No files are listed.\n" +"> 2. All files are listed.\n" +"> 3. Only `cubane.pdb`, `octane.pdb` and `pentane.pdb` are listed.\n" +"> 4. Only `cubane.pdb` is listed.\n" +">\n" +"> > ## Solution\n" +"> > 4 is the correct answer. `*` matches zero or more characters, so any file name starting with \n" +"> > the letter c, followed by zero or more other characters will be matched." +msgstr "" + +#: shell-novice/_episodes/05-loop.md:262 +msgid ">\n" +"> How would the output differ from using this command instead?\n" +">\n" +"> ~~~\n" +"> for filename in *c*\n" +"> do\n" +"> ls $filename \n" +"> done\n" +"> ~~~\n" +"> {: .language-bash}\n" +">\n" +"> 1. The same files would be listed.\n" +"> 2. All the files are listed this time.\n" +"> 3. No files are listed this time.\n" +"> 4. The files `cubane.pdb` and `octane.pdb` will be listed.\n" +"> 5. Only the file `octane.pdb` will be listed.\n" +">\n" +"> > ## Solution\n" +"> > 4 is the correct answer. `*` matches zero or more characters, so a file name with zero or more\n" +"> > characters before a letter c and zero or more characters after the letter c will be matched." +msgstr "" + +#: shell-novice/_episodes/05-loop.md:285 +msgid "Let's continue with our example in the `data-shell/creatures` directory.\n" +"Here's a slightly more complicated loop:" +msgstr "" + +#: shell-novice/_episodes/05-loop.md:288 +# code block +msgid "~~~\n" +"for filename in *.dat\n" +"do\n" +" echo $filename\n" +" head -n 100 $filename | tail -n 20\n" +"done\n" +"~~~" +msgstr "" + +#: shell-novice/_episodes/05-loop.md:297 +msgid "The shell starts by expanding `*.dat` to create the list of files it will process.\n" +"The **loop body**\n" +"then executes two commands for each of those files.\n" +"The first, `echo`, just prints its command-line arguments to standard output.\n" +"For example:" +msgstr "" + +#: shell-novice/_episodes/05-loop.md:303 +# code block +msgid "~~~\n" +"$ echo hello there\n" +"~~~" +msgstr "" + +#: shell-novice/_episodes/05-loop.md:308 +msgid "prints:" +msgstr "" + +#: shell-novice/_episodes/05-loop.md:310 +# code block +msgid "~~~\n" +"hello there\n" +"~~~" +msgstr "" + +#: shell-novice/_episodes/05-loop.md:315 +msgid "In this case,\n" +"since the shell expands `$filename` to be the name of a file,\n" +"`echo $filename` just prints the name of the file.\n" +"Note that we can't write this as:" +msgstr "" + +#: shell-novice/_episodes/05-loop.md:320 +# code block +msgid "~~~\n" +"for filename in *.dat\n" +"do\n" +" $filename\n" +" head -n 100 $filename | tail -n 20\n" +"done\n" +"~~~" +msgstr "" + +#: shell-novice/_episodes/05-loop.md:329 +msgid "because then the first time through the loop,\n" +"when `$filename` expanded to `basilisk.dat`, the shell would try to run `basilisk.dat` as a program.\n" +"Finally,\n" +"the `head` and `tail` combination selects lines 81-100\n" +"from whatever file is being processed\n" +"(assuming the file has at least 100 lines)." +msgstr "" + +#: shell-novice/_episodes/05-loop.md:336 +# blockquote, which can be cascaded +msgid "> ## Spaces in Names" +msgstr "" + +#: shell-novice/_episodes/05-loop.md:337 +msgid ">\n" +"> Whitespace is used to separate the elements on the list\n" +"> that we are going to loop over. If on the list we have elements\n" +"> with whitespace we need to quote those elements\n" +"> and our variable when using it.\n" +"> Suppose our data files are named:\n" +">\n" +"> ~~~\n" +"> red dragon.dat\n" +"> purple unicorn.dat\n" +"> ~~~" +msgstr "" + +#: shell-novice/_episodes/05-loop.md:350 +# blockquote, which can be cascaded +msgid "> We need to use" +msgstr "" + +#: shell-novice/_episodes/05-loop.md:353 +# blockquote, which can be cascaded +msgid "> for filename in \"red dragon.dat\" \"purple unicorn.dat\"" +msgstr "" + +#: shell-novice/_episodes/05-loop.md:354 +# blockquote, which can be cascaded +msgid "> do" +msgstr "" + +#: shell-novice/_episodes/05-loop.md:355 +# blockquote, which can be cascaded +msgid "> head -n 100 \"$filename\" | tail -n 3" +msgstr "" + +#: shell-novice/_episodes/05-loop.md:356 +# blockquote, which can be cascaded +msgid "> done" +msgstr "" + +#: shell-novice/_episodes/05-loop.md:359 +msgid ">\n" +"> It is simpler just to avoid using whitespaces (or other special characters) in filenames.\n" +">\n" +"> The files above don't exist, so if we run the above code, the `head` command will be unable\n" +"> to find them, however the error message returned will show the name of the files it is\n" +"> expecting:\n" +"> ```\n" +"> head: cannot open ‘red dragon.dat’ for reading: No such file or directory\n" +"> head: cannot open ‘purple unicorn.dat’ for reading: No such file or directory\n" +"> ```" +msgstr "" + +#: shell-novice/_episodes/05-loop.md:370 +# blockquote, which can be cascaded +msgid "> Try removing the quotes around `$filename` in the loop above to see the effect of the quote" +msgstr "" + +#: shell-novice/_episodes/05-loop.md:371 +# blockquote, which can be cascaded +msgid "> marks on whitespace. Note that we get a result from the loop command for unicorn.dat when we run this code in the `creatures` directory:" +msgstr "" + +#: shell-novice/_episodes/05-loop.md:372 +#: shell-novice/_episodes/05-loop.md:379 +# blockquote, which can be cascaded +msgid "> ```" +msgstr "" + +#: shell-novice/_episodes/05-loop.md:373 +# blockquote, which can be cascaded +msgid "> head: cannot open ‘red’ for reading: No such file or directory" +msgstr "" + +#: shell-novice/_episodes/05-loop.md:374 +# blockquote, which can be cascaded +msgid "> head: cannot open ‘dragon.dat’ for reading: No such file or directory" +msgstr "" + +#: shell-novice/_episodes/05-loop.md:375 +# blockquote, which can be cascaded +msgid "> head: cannot open ‘purple’ for reading: No such file or directory" +msgstr "" + +#: shell-novice/_episodes/05-loop.md:376 +# blockquote, which can be cascaded +msgid "> CGGTACCGAA" +msgstr "" + +#: shell-novice/_episodes/05-loop.md:377 +# blockquote, which can be cascaded +msgid "> AAGGGTCGCG" +msgstr "" + +#: shell-novice/_episodes/05-loop.md:378 +# blockquote, which can be cascaded +msgid "> CAAGTGTTCC" +msgstr "" + +#: shell-novice/_episodes/05-loop.md:380 +# blockquote, which can be cascaded +msgid "> {: . output}" +msgstr "" + +#: shell-novice/_episodes/05-loop.md:383 +msgid "Going back to our original file copying problem,\n" +"we can solve it using this loop:" +msgstr "" + +#: shell-novice/_episodes/05-loop.md:386 +# code block +msgid "~~~\n" +"for filename in *.dat\n" +"do\n" +" cp $filename original-$filename\n" +"done\n" +"~~~" +msgstr "" + +#: shell-novice/_episodes/05-loop.md:394 +msgid "This loop runs the `cp` command once for each filename.\n" +"The first time,\n" +"when `$filename` expands to `basilisk.dat`,\n" +"the shell executes:" +msgstr "" + +#: shell-novice/_episodes/05-loop.md:399 +# code block +msgid "~~~\n" +"cp basilisk.dat original-basilisk.dat\n" +"~~~" +msgstr "" + +#: shell-novice/_episodes/05-loop.md:404 +msgid "The second time, the command is:" +msgstr "" + +#: shell-novice/_episodes/05-loop.md:406 +# code block +msgid "~~~\n" +"cp unicorn.dat original-unicorn.dat\n" +"~~~" +msgstr "" + +#: shell-novice/_episodes/05-loop.md:411 +msgid "Since the `cp` command does not normally produce any output, it's hard to check \n" +"that the loop is doing the correct thing. By prefixing the command with `echo` \n" +"it is possible to see each command as it _would_ be executed. The following diagram \n" +"shows what happens when the modified script is executed, and demonstrates how the \n" +"judicious use of `echo` is a good debugging technique." +msgstr "" + +#: shell-novice/_episodes/05-loop.md:417 +msgid "![For Loop in Action](../fig/shell_script_for_loop_flow_chart.svg)" +msgstr "" + +#: shell-novice/_episodes/05-loop.md:419 +# header +msgid "## Nelle's Pipeline: Processing Files" +msgstr "" + +#: shell-novice/_episodes/05-loop.md:421 +msgid "Nelle is now ready to process her data files using `goostats` --- a shell script written by her supervisor.\n" +"This calculates some statistics from a protein sample file, and takes two arguments:" +msgstr "" + +#: shell-novice/_episodes/05-loop.md:424 +# ordered list +msgid "1. an input file (containing the raw data)" +msgstr "" + +#: shell-novice/_episodes/05-loop.md:425 +# ordered list +msgid "2. an output file (to store the calculated statistics)" +msgstr "" + +#: shell-novice/_episodes/05-loop.md:427 +msgid "Since she's still learning how to use the shell,\n" +"she decides to build up the required commands in stages.\n" +"Her first step is to make sure that she can select the right input files --- remember,\n" +"these are ones whose names end in 'A' or 'B', rather than 'Z'. Starting from her home directory, Nelle types:" +msgstr "" + +#: shell-novice/_episodes/05-loop.md:432 +# code block +msgid "~~~\n" +"$ cd north-pacific-gyre/2012-07-03\n" +"$ for datafile in NENE*[AB].txt\n" +"> do\n" +"> echo $datafile\n" +"> done\n" +"~~~" +msgstr "" + +#: shell-novice/_episodes/05-loop.md:441 +# code block +msgid "~~~\n" +"NENE01729A.txt\n" +"NENE01729B.txt\n" +"NENE01736A.txt\n" +"...\n" +"NENE02043A.txt\n" +"NENE02043B.txt\n" +"~~~" +msgstr "" + +#: shell-novice/_episodes/05-loop.md:451 +msgid "Her next step is to decide\n" +"what to call the files that the `goostats` analysis program will create.\n" +"Prefixing each input file's name with \"stats\" seems simple,\n" +"so she modifies her loop to do that:" +msgstr "" + +#: shell-novice/_episodes/05-loop.md:456 +# code block +msgid "~~~\n" +"$ for datafile in NENE*[AB].txt\n" +"> do\n" +"> echo $datafile stats-$datafile\n" +"> done\n" +"~~~" +msgstr "" + +#: shell-novice/_episodes/05-loop.md:464 +# code block +msgid "~~~\n" +"NENE01729A.txt stats-NENE01729A.txt\n" +"NENE01729B.txt stats-NENE01729B.txt\n" +"NENE01736A.txt stats-NENE01736A.txt\n" +"...\n" +"NENE02043A.txt stats-NENE02043A.txt\n" +"NENE02043B.txt stats-NENE02043B.txt\n" +"~~~" +msgstr "" + +#: shell-novice/_episodes/05-loop.md:474 +msgid "She hasn't actually run `goostats` yet,\n" +"but now she's sure she can select the right files and generate the right output filenames." +msgstr "" + +#: shell-novice/_episodes/05-loop.md:477 +msgid "Typing in commands over and over again is becoming tedious,\n" +"though,\n" +"and Nelle is worried about making mistakes,\n" +"so instead of re-entering her loop,\n" +"she presses the up arrow.\n" +"In response,\n" +"the shell redisplays the whole loop on one line\n" +"(using semi-colons to separate the pieces):" +msgstr "" + +#: shell-novice/_episodes/05-loop.md:486 +# code block +msgid "~~~\n" +"$ for datafile in NENE*[AB].txt; do echo $datafile stats-$datafile; done\n" +"~~~" +msgstr "" + +#: shell-novice/_episodes/05-loop.md:491 +msgid "Using the left arrow key,\n" +"Nelle backs up and changes the command `echo` to `bash goostats`:" +msgstr "" + +#: shell-novice/_episodes/05-loop.md:494 +# code block +msgid "~~~\n" +"$ for datafile in NENE*[AB].txt; do bash goostats $datafile stats-$datafile; done\n" +"~~~" +msgstr "" + +#: shell-novice/_episodes/05-loop.md:499 +msgid "When she presses Enter,\n" +"the shell runs the modified command.\n" +"However, nothing appears to happen --- there is no output.\n" +"After a moment, Nelle realizes that since her script doesn't print anything to the screen any longer,\n" +"she has no idea whether it is running, much less how quickly.\n" +"She kills the running command by typing `Ctrl-C`,\n" +"uses up-arrow to repeat the command,\n" +"and edits it to read:" +msgstr "" + +#: shell-novice/_episodes/05-loop.md:508 +# code block +msgid "~~~\n" +"$ for datafile in NENE*[AB].txt; do echo $datafile; bash goostats $datafile stats-$datafile; done\n" +"~~~" +msgstr "" + +#: shell-novice/_episodes/05-loop.md:513 +# blockquote, which can be cascaded +msgid "> ## Beginning and End" +msgstr "" + +#: shell-novice/_episodes/05-loop.md:514 +msgid ">\n" +"> We can move to the beginning of a line in the shell by typing `Ctrl-a`\n" +"> and to the end using `Ctrl-e`." +msgstr "" + +#: shell-novice/_episodes/05-loop.md:519 +msgid "When she runs her program now,\n" +"it produces one line of output every five seconds or so:" +msgstr "" + +#: shell-novice/_episodes/05-loop.md:522 +# code block +msgid "~~~\n" +"NENE01729A.txt\n" +"NENE01729B.txt\n" +"NENE01736A.txt\n" +"...\n" +"~~~" +msgstr "" + +#: shell-novice/_episodes/05-loop.md:530 +msgid "1518 times 5 seconds,\n" +"divided by 60,\n" +"tells her that her script will take about two hours to run.\n" +"As a final check,\n" +"she opens another terminal window,\n" +"goes into `north-pacific-gyre/2012-07-03`,\n" +"and uses `cat stats-NENE01729B.txt`\n" +"to examine one of the output files.\n" +"It looks good,\n" +"so she decides to get some coffee and catch up on her reading." +msgstr "" + +#: shell-novice/_episodes/05-loop.md:541 +# blockquote, which can be cascaded +msgid "> ## Those Who Know History Can Choose to Repeat It" +msgstr "" + +#: shell-novice/_episodes/05-loop.md:542 +msgid ">\n" +"> Another way to repeat previous work is to use the `history` command to\n" +"> get a list of the last few hundred commands that have been executed, and\n" +"> then to use `!123` (where \"123\" is replaced by the command number) to\n" +"> repeat one of those commands. For example, if Nelle types this:\n" +">\n" +"> ~~~\n" +"> $ history | tail -n 5\n" +"> ~~~\n" +"> {: .language-bash}\n" +"> ~~~\n" +"> 456 ls -l NENE0*.txt\n" +"> 457 rm stats-NENE01729B.txt.txt\n" +"> 458 bash goostats NENE01729B.txt stats-NENE01729B.txt\n" +"> 459 ls -l NENE0*.txt\n" +"> 460 history\n" +"> ~~~" +msgstr "" + +#: shell-novice/_episodes/05-loop.md:560 +msgid ">\n" +"> then she can re-run `goostats` on `NENE01729B.txt` simply by typing\n" +"> `!458`." +msgstr "" + +#: shell-novice/_episodes/05-loop.md:565 +# blockquote, which can be cascaded +msgid "> ## Other History Commands" +msgstr "" + +#: shell-novice/_episodes/05-loop.md:566 +msgid ">\n" +"> There are a number of other shortcut commands for getting at the history.\n" +">\n" +"> - `Ctrl-R` enters a history search mode \"reverse-i-search\" and finds the \n" +"> most recent command in your history that matches the text you enter next.\n" +"> Press `Ctrl-R` one or more additional times to search for earlier matches.\n" +"> - `!!` retrieves the immediately preceding command \n" +"> (you may or may not find this more convenient than using the up-arrow)\n" +"> - `!$` retrieves the last word of the last command.\n" +"> That's useful more often than you might expect: after\n" +"> `bash goostats NENE01729B.txt stats-NENE01729B.txt`, you can type\n" +"> `less !$` to look at the file `stats-NENE01729B.txt`, which is\n" +"> quicker than doing up-arrow and editing the command-line." +msgstr "" + +#: shell-novice/_episodes/05-loop.md:581 +# blockquote, which can be cascaded +msgid "> ## Saving to a File in a Loop - Part One" +msgstr "" + +#: shell-novice/_episodes/05-loop.md:582 +msgid ">\n" +"> In the `data-shell/molecules` directory, what is the effect of this loop?\n" +">\n" +"> ~~~\n" +"> for alkanes in *.pdb\n" +"> do\n" +"> echo $alkanes\n" +"> cat $alkanes > alkanes.pdb\n" +"> done\n" +"> ~~~\n" +"> {: .language-bash}\n" +">\n" +"> 1. Prints `cubane.pdb`, `ethane.pdb`, `methane.pdb`, `octane.pdb`, `pentane.pdb` and `propane.pdb`,\n" +"> and the text from `propane.pdb` will be saved to a file called `alkanes.pdb`.\n" +"> 2. Prints `cubane.pdb`, `ethane.pdb`, and `methane.pdb`, and the text from all three files would be\n" +"> concatenated and saved to a file called `alkanes.pdb`.\n" +"> 3. Prints `cubane.pdb`, `ethane.pdb`, `methane.pdb`, `octane.pdb`, and `pentane.pdb`, and the text\n" +"> from `propane.pdb` will be saved to a file called `alkanes.pdb`.\n" +"> 4. None of the above.\n" +">\n" +"> > ## Solution\n" +"> > 1. The text from each file in turn gets written to the `alkanes.pdb` file.\n" +"> > However, the file gets overwritten on each loop interation, so the final content of `alkanes.pdb`\n" +"> > is the text from the `propane.pdb` file." +msgstr "" + +#: shell-novice/_episodes/05-loop.md:609 +# blockquote, which can be cascaded +msgid "> ## Saving to a File in a Loop - Part Two" +msgstr "" + +#: shell-novice/_episodes/05-loop.md:610 +msgid ">\n" +"> Also in the `data-shell/molecules` directory, what would be the output of the following loop?\n" +">\n" +"> ~~~\n" +"> for datafile in *.pdb\n" +"> do\n" +"> cat $datafile >> all.pdb\n" +"> done\n" +"> ~~~\n" +"> {: .language-bash}\n" +">\n" +"> 1. All of the text from `cubane.pdb`, `ethane.pdb`, `methane.pdb`, `octane.pdb`, and\n" +"> `pentane.pdb` would be concatenated and saved to a file called `all.pdb`.\n" +"> 2. The text from `ethane.pdb` will be saved to a file called `all.pdb`.\n" +"> 3. All of the text from `cubane.pdb`, `ethane.pdb`, `methane.pdb`, `octane.pdb`, `pentane.pdb`\n" +"> and `propane.pdb` would be concatenated and saved to a file called `all.pdb`.\n" +"> 4. All of the text from `cubane.pdb`, `ethane.pdb`, `methane.pdb`, `octane.pdb`, `pentane.pdb`\n" +"> and `propane.pdb` would be printed to the screen and saved to a file called `all.pdb`.\n" +">\n" +"> > ## Solution\n" +"> > 3 is the correct answer. `>>` appends to a file, rather than overwriting it with the redirected\n" +"> > output from a command.\n" +"> > Given the output from the `cat` command has been redirected, nothing is printed to the screen." +msgstr "" + +#: shell-novice/_episodes/05-loop.md:636 +# blockquote, which can be cascaded +msgid "> ## Doing a Dry Run" +msgstr "" + +#: shell-novice/_episodes/05-loop.md:637 +msgid ">\n" +"> A loop is a way to do many things at once --- or to make many mistakes at\n" +"> once if it does the wrong thing. One way to check what a loop *would* do\n" +"> is to `echo` the commands it would run instead of actually running them.\n" +"> \n" +"> Suppose we want to preview the commands the following loop will execute\n" +"> without actually running those commands:\n" +">\n" +"> ~~~\n" +"> for file in *.pdb\n" +"> do\n" +"> analyze $file > analyzed-$file\n" +"> done\n" +"> ~~~\n" +"> {: .language-bash}\n" +">\n" +"> What is the difference between the two loops below, and which one would we\n" +"> want to run?\n" +">\n" +"> ~~~\n" +"> # Version 1\n" +"> for file in *.pdb\n" +"> do\n" +"> echo analyze $file > analyzed-$file\n" +"> done\n" +"> ~~~\n" +"> {: .language-bash}\n" +">\n" +"> ~~~\n" +"> # Version 2\n" +"> for file in *.pdb\n" +"> do\n" +"> echo \"analyze $file > analyzed-$file\"\n" +"> done\n" +"> ~~~\n" +"> {: .language-bash}\n" +">\n" +"> > ## Solution\n" +"> > The second version is the one we want to run.\n" +"> > This prints to screen everything enclosed in the quote marks, expanding the\n" +"> > loop variable name because we have prefixed it with a dollar sign.\n" +"> >\n" +"> > The first version redirects the output from the command `echo analyze $file` to\n" +"> > a file, `analyzed-$file`. A series of files is generated: `analyzed-cubane.pdb`,\n" +"> > `analyzed-ethane.pdb` etc.\n" +"> > \n" +"> > Try both versions for yourself to see the output! Be sure to open the \n" +"> > `analyzed-*.pdb` files to view their contents." +msgstr "" + +#: shell-novice/_episodes/05-loop.md:688 +# blockquote, which can be cascaded +msgid "> ## Nested Loops" +msgstr "" + +#: shell-novice/_episodes/05-loop.md:689 +msgid ">\n" +"> Suppose we want to set up up a directory structure to organize\n" +"> some experiments measuring reaction rate constants with different compounds\n" +"> *and* different temperatures. What would be the\n" +"> result of the following code:\n" +">\n" +"> ~~~\n" +"> for species in cubane ethane methane\n" +"> do\n" +"> for temperature in 25 30 37 40\n" +"> do\n" +"> mkdir $species-$temperature\n" +"> done\n" +"> done\n" +"> ~~~\n" +"> {: .language-bash}\n" +">\n" +"> > ## Solution\n" +"> > We have a nested loop, i.e. contained within another loop, so for each species\n" +"> > in the outer loop, the inner loop (the nested loop) iterates over the list of\n" +"> > temperatures, and creates a new directory for each combination.\n" +"> >\n" +"> > Try running the code for yourself to see which directories are created!" +msgstr "" + +#: shell-novice/_episodes/06-script.md:1 +# Front Matter +msgid "---\n" +"title: \"Shell Scripts\"\n" +"teaching: 30\n" +"exercises: 15\n" +"questions:\n" +"- \"How can I save and re-use commands?\"\n" +"objectives:\n" +"- \"Write a shell script that runs a command or series of commands for a fixed set of files.\"\n" +"- \"Run a shell script from the command line.\"\n" +"- \"Write a shell script that operates on a set of files defined by the user on the command line.\"\n" +"- \"Create pipelines that include shell scripts you, and others, have written.\"\n" +"keypoints:\n" +"- \"Save commands in files (usually called shell scripts) for re-use.\"\n" +"- \"`bash filename` runs the commands saved in a file.\"\n" +"- \"`$@` refers to all of a shell script's command-line arguments.\"\n" +"- \"`$1`, `$2`, etc., refer to the first command-line argument, the second command-line argument, etc.\"\n" +"- \"Place variables in quotes if the values might have spaces in them.\"\n" +"- \"Letting users decide what files to process is more flexible and more consistent with built-in Unix commands.\"\n" +"---" +msgstr "" + +#: shell-novice/_episodes/06-script.md:21 +msgid "We are finally ready to see what makes the shell such a powerful programming environment.\n" +"We are going to take the commands we repeat frequently and save them in files\n" +"so that we can re-run all those operations again later by typing a single command.\n" +"For historical reasons,\n" +"a bunch of commands saved in a file is usually called a **shell script**,\n" +"but make no mistake:\n" +"these are actually small programs." +msgstr "" + +#: shell-novice/_episodes/06-script.md:29 +msgid "Let's start by going back to `molecules/` and creating a new file, `middle.sh` which will\n" +"become our shell script:" +msgstr "" + +#: shell-novice/_episodes/06-script.md:32 +# code block +msgid "~~~\n" +"$ cd molecules\n" +"$ nano middle.sh\n" +"~~~" +msgstr "" + +#: shell-novice/_episodes/06-script.md:38 +msgid "The command `nano middle.sh` opens the file `middle.sh` within the text editor \"nano\"\n" +"(which runs within the shell).\n" +"If the file does not exist, it will be created.\n" +"We can use the text editor to directly edit the file -- we'll simply insert the following line:" +msgstr "" + +#: shell-novice/_episodes/06-script.md:43 +# code block +msgid "~~~\n" +"head -n 15 octane.pdb | tail -n 5\n" +"~~~" +msgstr "" + +#: shell-novice/_episodes/06-script.md:46 +#: shell-novice/_episodes/06-script.md:362 +# SC/DC Template label +msgid "{: .source}" +msgstr "" + +#: shell-novice/_episodes/06-script.md:48 +msgid "This is a variation on the pipe we constructed earlier:\n" +"it selects lines 11-15 of the file `octane.pdb`.\n" +"Remember, we are *not* running it as a command just yet:\n" +"we are putting the commands in a file." +msgstr "" + +#: shell-novice/_episodes/06-script.md:53 +msgid "Then we save the file (`Ctrl-O` in nano),\n" +" and exit the text editor (`Ctrl-X` in nano).\n" +"Check that the directory `molecules` now contains a file called `middle.sh`." +msgstr "" + +#: shell-novice/_episodes/06-script.md:57 +msgid "Once we have saved the file,\n" +"we can ask the shell to execute the commands it contains.\n" +"Our shell is called `bash`, so we run the following command:" +msgstr "" + +#: shell-novice/_episodes/06-script.md:61 +# code block +msgid "~~~\n" +"$ bash middle.sh\n" +"~~~" +msgstr "" + +#: shell-novice/_episodes/06-script.md:66 +#: shell-novice/_episodes/06-script.md:117 +# code block +msgid "~~~\n" +"ATOM 9 H 1 -4.502 0.681 0.785 1.00 0.00\n" +"ATOM 10 H 1 -5.254 -0.243 -0.537 1.00 0.00\n" +"ATOM 11 H 1 -4.357 1.252 -0.895 1.00 0.00\n" +"ATOM 12 H 1 -3.009 -0.741 -1.467 1.00 0.00\n" +"ATOM 13 H 1 -3.172 -1.337 0.206 1.00 0.00\n" +"~~~" +msgstr "" + +#: shell-novice/_episodes/06-script.md:75 +msgid "Sure enough,\n" +"our script's output is exactly what we would get if we ran that pipeline directly." +msgstr "" + +#: shell-novice/_episodes/06-script.md:78 +# blockquote, which can be cascaded +msgid "> ## Text vs. Whatever" +msgstr "" + +#: shell-novice/_episodes/06-script.md:79 +msgid ">\n" +"> We usually call programs like Microsoft Word or LibreOffice Writer \"text\n" +"> editors\", but we need to be a bit more careful when it comes to\n" +"> programming. By default, Microsoft Word uses `.docx` files to store not\n" +"> only text, but also formatting information about fonts, headings, and so\n" +"> on. This extra information isn't stored as characters, and doesn't mean\n" +"> anything to tools like `head`: they expect input files to contain\n" +"> nothing but the letters, digits, and punctuation on a standard computer\n" +"> keyboard. When editing programs, therefore, you must either use a plain\n" +"> text editor, or be careful to save files as plain text." +msgstr "" + +#: shell-novice/_episodes/06-script.md:91 +msgid "What if we want to select lines from an arbitrary file?\n" +"We could edit `middle.sh` each time to change the filename,\n" +"but that would probably take longer than just retyping the command.\n" +"Instead, let's edit `middle.sh` and make it more versatile:" +msgstr "" + +#: shell-novice/_episodes/06-script.md:96 +#: shell-novice/_episodes/06-script.md:154 +#: shell-novice/_episodes/06-script.md:201 +# code block +msgid "~~~\n" +"$ nano middle.sh\n" +"~~~" +msgstr "" + +#: shell-novice/_episodes/06-script.md:101 +msgid "Now, within \"nano\", replace the text `octane.pdb` with the special variable called `$1`:" +msgstr "" + +#: shell-novice/_episodes/06-script.md:103 +# code block +msgid "~~~\n" +"head -n 15 \"$1\" | tail -n 5\n" +"~~~" +msgstr "" + +#: shell-novice/_episodes/06-script.md:108 +msgid "Inside a shell script,\n" +"`$1` means \"the first filename (or other argument) on the command line\".\n" +"We can now run our script like this:" +msgstr "" + +#: shell-novice/_episodes/06-script.md:112 +# code block +msgid "~~~\n" +"$ bash middle.sh octane.pdb\n" +"~~~" +msgstr "" + +#: shell-novice/_episodes/06-script.md:126 +msgid "or on a different file like this:" +msgstr "" + +#: shell-novice/_episodes/06-script.md:128 +# code block +msgid "~~~\n" +"$ bash middle.sh pentane.pdb\n" +"~~~" +msgstr "" + +#: shell-novice/_episodes/06-script.md:133 +#: shell-novice/_episodes/06-script.md:171 +# code block +msgid "~~~\n" +"ATOM 9 H 1 1.324 0.350 -1.332 1.00 0.00\n" +"ATOM 10 H 1 1.271 1.378 0.122 1.00 0.00\n" +"ATOM 11 H 1 -0.074 -0.384 1.288 1.00 0.00\n" +"ATOM 12 H 1 -0.048 -1.362 -0.205 1.00 0.00\n" +"ATOM 13 H 1 -1.183 0.500 -1.412 1.00 0.00\n" +"~~~" +msgstr "" + +#: shell-novice/_episodes/06-script.md:142 +# blockquote, which can be cascaded +msgid "> ## Double-Quotes Around Arguments" +msgstr "" + +#: shell-novice/_episodes/06-script.md:143 +msgid ">\n" +"> For the same reason that we put the loop variable inside double-quotes,\n" +"> in case the filename happens to contain any spaces,\n" +"> we surround `$1` with double-quotes." +msgstr "" + +#: shell-novice/_episodes/06-script.md:149 +msgid "We still need to edit `middle.sh` each time we want to adjust the range of lines,\n" +"though.\n" +"Let's fix that by using the special variables `$2` and `$3` for the\n" +"number of lines to be passed to `head` and `tail` respectively:" +msgstr "" + +#: shell-novice/_episodes/06-script.md:159 +# code block +msgid "~~~\n" +"head -n \"$2\" \"$1\" | tail -n \"$3\"\n" +"~~~" +msgstr "" + +#: shell-novice/_episodes/06-script.md:164 +msgid "We can now run:" +msgstr "" + +#: shell-novice/_episodes/06-script.md:166 +# code block +msgid "~~~\n" +"$ bash middle.sh pentane.pdb 15 5\n" +"~~~" +msgstr "" + +#: shell-novice/_episodes/06-script.md:180 +msgid "By changing the arguments to our command we can change our script's\n" +"behaviour:" +msgstr "" + +#: shell-novice/_episodes/06-script.md:183 +# code block +msgid "~~~\n" +"$ bash middle.sh pentane.pdb 20 5\n" +"~~~" +msgstr "" + +#: shell-novice/_episodes/06-script.md:188 +# code block +msgid "~~~\n" +"ATOM 14 H 1 -1.259 1.420 0.112 1.00 0.00\n" +"ATOM 15 H 1 -2.608 -0.407 1.130 1.00 0.00\n" +"ATOM 16 H 1 -2.540 -1.303 -0.404 1.00 0.00\n" +"ATOM 17 H 1 -3.393 0.254 -0.321 1.00 0.00\n" +"TER 18 1\n" +"~~~" +msgstr "" + +#: shell-novice/_episodes/06-script.md:197 +msgid "This works,\n" +"but it may take the next person who reads `middle.sh` a moment to figure out what it does.\n" +"We can improve our script by adding some **comments** at the top:" +msgstr "" + +#: shell-novice/_episodes/06-script.md:206 +# code block +msgid "~~~\n" +"# Select lines from the middle of a file.\n" +"# Usage: bash middle.sh filename end_line num_lines\n" +"head -n \"$2\" \"$1\" | tail -n \"$3\"\n" +"~~~" +msgstr "" + +#: shell-novice/_episodes/06-script.md:213 +msgid "A comment starts with a `#` character and runs to the end of the line.\n" +"The computer ignores comments,\n" +"but they're invaluable for helping people (including your future self) understand and use scripts.\n" +"The only caveat is that each time you modify the script,\n" +"you should check that the comment is still accurate:\n" +"an explanation that sends the reader in the wrong direction is worse than none at all." +msgstr "" + +#: shell-novice/_episodes/06-script.md:220 +msgid "What if we want to process many files in a single pipeline?\n" +"For example, if we want to sort our `.pdb` files by length, we would type:" +msgstr "" + +#: shell-novice/_episodes/06-script.md:228 +msgid "because `wc -l` lists the number of lines in the files\n" +"(recall that `wc` stands for 'word count', adding the `-l` flag means 'count lines' instead)\n" +"and `sort -n` sorts things numerically.\n" +"We could put this in a file,\n" +"but then it would only ever sort a list of `.pdb` files in the current directory.\n" +"If we want to be able to get a sorted list of other kinds of files,\n" +"we need a way to get all those names into the script.\n" +"We can't use `$1`, `$2`, and so on\n" +"because we don't know how many files there are.\n" +"Instead, we use the special variable `$@`,\n" +"which means,\n" +"\"All of the command-line arguments to the shell script.\"\n" +"We also should put `$@` inside double-quotes\n" +"to handle the case of arguments containing spaces\n" +"(`\"$@\"` is equivalent to `\"$1\"` `\"$2\"` ...)\n" +"Here's an example:" +msgstr "" + +#: shell-novice/_episodes/06-script.md:245 +# code block +msgid "~~~\n" +"$ nano sorted.sh\n" +"~~~" +msgstr "" + +#: shell-novice/_episodes/06-script.md:250 +# code block +msgid "~~~\n" +"# Sort filenames by their length.\n" +"# Usage: bash sorted.sh one_or_more_filenames\n" +"wc -l \"$@\" | sort -n\n" +"~~~" +msgstr "" + +#: shell-novice/_episodes/06-script.md:257 +# code block +msgid "~~~\n" +"$ bash sorted.sh *.pdb ../creatures/*.dat\n" +"~~~" +msgstr "" + +#: shell-novice/_episodes/06-script.md:262 +# code block +msgid "~~~\n" +"9 methane.pdb\n" +"12 ethane.pdb\n" +"15 propane.pdb\n" +"20 cubane.pdb\n" +"21 pentane.pdb\n" +"30 octane.pdb\n" +"163 ../creatures/basilisk.dat\n" +"163 ../creatures/unicorn.dat\n" +"~~~" +msgstr "" + +#: shell-novice/_episodes/06-script.md:274 +# blockquote, which can be cascaded +msgid "> ## List Unique Species" +msgstr "" + +#: shell-novice/_episodes/06-script.md:275 +msgid ">\n" +"> Leah has several hundred data files, each of which is formatted like this:\n" +">\n" +"> ~~~\n" +"> 2013-11-05,deer,5\n" +"> 2013-11-05,rabbit,22\n" +"> 2013-11-05,raccoon,7\n" +"> 2013-11-06,rabbit,19\n" +"> 2013-11-06,deer,2\n" +"> 2013-11-06,fox,1\n" +"> 2013-11-07,rabbit,18\n" +"> 2013-11-07,bear,1\n" +"> ~~~" +msgstr "" + +#: shell-novice/_episodes/06-script.md:289 +msgid ">\n" +"> An example of this type of file is given in `data-shell/data/animal-counts/animals.txt`.\n" +"> \n" +"> Write a shell script called `species.sh` that takes any number of\n" +"> filenames as command-line arguments, and uses `cut`, `sort`, and\n" +"> `uniq` to print a list of the unique species appearing in each of\n" +"> those files separately.\n" +">\n" +"> > ## Solution\n" +"> >\n" +"> > ```\n" +"> > # Script to find unique species in csv files where species is the second data field\n" +"> > # This script accepts any number of file names as command line arguments\n" +"> >\n" +"> > # Loop over all files\n" +"> > for file in $@ \n" +"> > do\n" +"> > echo \"Unique species in $file:\"\n" +"> > # Extract species names\n" +"> > cut -d , -f 2 $file | sort | uniq\n" +"> > done\n" +"> > ```\n" +"> > {: .source}" +msgstr "" + +#: shell-novice/_episodes/06-script.md:315 +# blockquote, which can be cascaded +msgid "> ## Why Isn't It Doing Anything?" +msgstr "" + +#: shell-novice/_episodes/06-script.md:316 +msgid ">\n" +"> What happens if a script is supposed to process a bunch of files, but we\n" +"> don't give it any filenames? For example, what if we type:\n" +">\n" +"> ~~~\n" +"> $ bash sorted.sh\n" +"> ~~~\n" +"> {: .language-bash}\n" +">\n" +"> but don't say `*.dat` (or anything else)? In this case, `$@` expands to\n" +"> nothing at all, so the pipeline inside the script is effectively:\n" +">\n" +"> ~~~\n" +"> $ wc -l | sort -n\n" +"> ~~~\n" +"> {: .language-bash}\n" +">\n" +"> Since it doesn't have any filenames, `wc` assumes it is supposed to\n" +"> process standard input, so it just sits there and waits for us to give\n" +"> it some data interactively. From the outside, though, all we see is it\n" +"> sitting there: the script doesn't appear to do anything." +msgstr "" + +#: shell-novice/_episodes/06-script.md:340 +msgid "Suppose we have just run a series of commands that did something useful --- for example,\n" +"that created a graph we'd like to use in a paper.\n" +"We'd like to be able to re-create the graph later if we need to,\n" +"so we want to save the commands in a file.\n" +"Instead of typing them in again\n" +"(and potentially getting them wrong)\n" +"we can do this:" +msgstr "" + +#: shell-novice/_episodes/06-script.md:348 +# code block +msgid "~~~\n" +"$ history | tail -n 5 > redo-figure-3.sh\n" +"~~~" +msgstr "" + +#: shell-novice/_episodes/06-script.md:353 +msgid "The file `redo-figure-3.sh` now contains:" +msgstr "" + +#: shell-novice/_episodes/06-script.md:355 +# code block +msgid "~~~\n" +"297 bash goostats NENE01729B.txt stats-NENE01729B.txt\n" +"298 bash goodiff stats-NENE01729B.txt /data/validated/01729.txt > 01729-differences.txt\n" +"299 cut -d ',' -f 2-3 01729-differences.txt > 01729-time-series.txt\n" +"300 ygraph --format scatter --color bw --borders none 01729-time-series.txt figure-3.png\n" +"301 history | tail -n 5 > redo-figure-3.sh\n" +"~~~" +msgstr "" + +#: shell-novice/_episodes/06-script.md:364 +msgid "After a moment's work in an editor to remove the serial numbers on the commands,\n" +"and to remove the final line where we called the `history` command,\n" +"we have a completely accurate record of how we created that figure." +msgstr "" + +#: shell-novice/_episodes/06-script.md:368 +# blockquote, which can be cascaded +msgid "> ## Why Record Commands in the History Before Running Them?" +msgstr "" + +#: shell-novice/_episodes/06-script.md:369 +msgid ">\n" +"> If you run the command:\n" +">\n" +"> ~~~\n" +"> $ history | tail -n 5 > recent.sh\n" +"> ~~~\n" +"> {: .language-bash}\n" +">\n" +"> the last command in the file is the `history` command itself, i.e.,\n" +"> the shell has added `history` to the command log before actually\n" +"> running it. In fact, the shell *always* adds commands to the log\n" +"> before running them. Why do you think it does this?\n" +">\n" +"> > ## Solution\n" +"> > If a command causes something to crash or hang, it might be useful\n" +"> > to know what that command was, in order to investigate the problem.\n" +"> > Were the command only be recorded after running it, we would not\n" +"> > have a record of the last command run in the event of a crash." +msgstr "" + +#: shell-novice/_episodes/06-script.md:390 +msgid "In practice, most people develop shell scripts by running commands at the shell prompt a few times\n" +"to make sure they're doing the right thing,\n" +"then saving them in a file for re-use.\n" +"This style of work allows people to recycle\n" +"what they discover about their data and their workflow with one call to `history`\n" +"and a bit of editing to clean up the output\n" +"and save it as a shell script." +msgstr "" + +#: shell-novice/_episodes/06-script.md:398 +# header +msgid "## Nelle's Pipeline: Creating a Script" +msgstr "" + +#: shell-novice/_episodes/06-script.md:400 +msgid "Nelle's supervisor insisted that all her analytics must be reproducible. The easiest way to capture all the steps is in a script.\n" +"She runs the editor and writes the following:" +msgstr "" + +#: shell-novice/_episodes/06-script.md:403 +# code block +msgid "~~~\n" +"# Calculate stats for data files.\n" +"for datafile in \"$@\"\n" +"do\n" +" echo $datafile\n" +" bash goostats $datafile stats-$datafile\n" +"done\n" +"~~~" +msgstr "" + +#: shell-novice/_episodes/06-script.md:413 +msgid "She saves this in a file called `do-stats.sh`\n" +"so that she can now re-do the first stage of her analysis by typing:" +msgstr "" + +#: shell-novice/_episodes/06-script.md:416 +# code block +msgid "~~~\n" +"$ bash do-stats.sh NENE*[AB].txt\n" +"~~~" +msgstr "" + +#: shell-novice/_episodes/06-script.md:421 +msgid "She can also do this:" +msgstr "" + +#: shell-novice/_episodes/06-script.md:423 +# code block +msgid "~~~\n" +"$ bash do-stats.sh NENE*[AB].txt | wc -l\n" +"~~~" +msgstr "" + +#: shell-novice/_episodes/06-script.md:428 +msgid "so that the output is just the number of files processed\n" +"rather than the names of the files that were processed." +msgstr "" + +#: shell-novice/_episodes/06-script.md:431 +msgid "One thing to note about Nelle's script is that\n" +"it lets the person running it decide what files to process.\n" +"She could have written it as:" +msgstr "" + +#: shell-novice/_episodes/06-script.md:435 +# code block +msgid "~~~\n" +"# Calculate stats for Site A and Site B data files.\n" +"for datafile in NENE*[AB].txt\n" +"do\n" +" echo $datafile\n" +" bash goostats $datafile stats-$datafile\n" +"done\n" +"~~~" +msgstr "" + +#: shell-novice/_episodes/06-script.md:445 +msgid "The advantage is that this always selects the right files:\n" +"she doesn't have to remember to exclude the 'Z' files.\n" +"The disadvantage is that it *always* selects just those files --- she can't run it on all files\n" +"(including the 'Z' files),\n" +"or on the 'G' or 'H' files her colleagues in Antarctica are producing,\n" +"without editing the script.\n" +"If she wanted to be more adventurous,\n" +"she could modify her script to check for command-line arguments,\n" +"and use `NENE*[AB].txt` if none were provided.\n" +"Of course, this introduces another tradeoff between flexibility and complexity." +msgstr "" + +#: shell-novice/_episodes/06-script.md:456 +# blockquote, which can be cascaded +msgid "> ## Variables in Shell Scripts" +msgstr "" + +#: shell-novice/_episodes/06-script.md:457 +msgid ">\n" +"> In the `molecules` directory, imagine you have a shell script called `script.sh` containing the\n" +"> following commands:\n" +">\n" +"> ~~~\n" +"> head -n $2 $1\n" +"> tail -n $3 $1\n" +"> ~~~\n" +"> {: .language-bash}\n" +">\n" +"> While you are in the `molecules` directory, you type the following command:\n" +">\n" +"> ~~~\n" +"> bash script.sh '*.pdb' 1 1\n" +"> ~~~\n" +"> {: .language-bash}\n" +">\n" +"> Which of the following outputs would you expect to see?\n" +">\n" +"> 1. All of the lines between the first and the last lines of each file ending in `.pdb`\n" +"> in the `molecules` directory\n" +"> 2. The first and the last line of each file ending in `.pdb` in the `molecules` directory\n" +"> 3. The first and the last line of each file in the `molecules` directory\n" +"> 4. An error because of the quotes around `*.pdb`\n" +">\n" +"> > ## Solution\n" +"> > The correct answer is 2. \n" +"> >\n" +"> > The special variables $1, $2 and $3 represent the command line arguments given to the\n" +"> > script, such that the commands run are:\n" +"> >\n" +"> > ```\n" +"> > $ head -n 1 cubane.pdb ethane.pdb octane.pdb pentane.pdb propane.pdb\n" +"> > $ tail -n 1 cubane.pdb ethane.pdb octane.pdb pentane.pdb propane.pdb\n" +"> > ```\n" +"> > {: .language-bash}\n" +"> > The shell does not expand `'*.pdb'` because it is enclosed by quote marks.\n" +"> > As such, the first argument to the script is `'*.pdb'` which gets expanded within the\n" +"> > script by `head` and `tail`." +msgstr "" + +#: shell-novice/_episodes/06-script.md:499 +# blockquote, which can be cascaded +msgid "> ## Find the Longest File With a Given Extension" +msgstr "" + +#: shell-novice/_episodes/06-script.md:500 +msgid ">\n" +"> Write a shell script called `longest.sh` that takes the name of a\n" +"> directory and a filename extension as its arguments, and prints\n" +"> out the name of the file with the most lines in that directory\n" +"> with that extension. For example:\n" +">\n" +"> ~~~\n" +"> $ bash longest.sh /tmp/data pdb\n" +"> ~~~\n" +"> {: .language-bash}\n" +">\n" +"> would print the name of the `.pdb` file in `/tmp/data` that has\n" +"> the most lines.\n" +">\n" +"> > ## Solution\n" +"> >\n" +"> > ```\n" +"> > # Shell script which takes two arguments: \n" +"> > # 1. a directory name\n" +"> > # 2. a file extension\n" +"> > # and prints the name of the file in that directory\n" +"> > # with the most lines which matches the file extension.\n" +"> > \n" +"> > wc -l $1/*.$2 | sort -n | tail -n 2 | head -n 1\n" +"> > ```\n" +"> > {: .source}" +msgstr "" + +#: shell-novice/_episodes/06-script.md:529 +# blockquote, which can be cascaded +msgid "> ## Script Reading Comprehension" +msgstr "" + +#: shell-novice/_episodes/06-script.md:530 +msgid ">\n" +"> For this question, consider the `data-shell/molecules` directory once again.\n" +"> This contains a number of `.pdb` files in addition to any other files you\n" +"> may have created.\n" +"> Explain what a script called `example.sh` would do when run as\n" +"> `bash example.sh *.pdb` if it contained the following lines:\n" +">\n" +"> ~~~\n" +"> # Script 1\n" +"> echo *.*\n" +"> ~~~\n" +"> {: .language-bash}\n" +">\n" +"> ~~~\n" +"> # Script 2\n" +"> for filename in $1 $2 $3\n" +"> do\n" +"> cat $filename\n" +"> done\n" +"> ~~~\n" +"> {: .language-bash}\n" +">\n" +"> ~~~\n" +"> # Script 3\n" +"> echo $@.pdb\n" +"> ~~~\n" +"> {: .language-bash}\n" +">\n" +"> > ## Solutions\n" +"> > Script 1 would print out a list of all files containing a dot in their name.\n" +"> >\n" +"> > Script 2 would print the contents of the first 3 files matching the file extension.\n" +"> > The shell expands the wildcard before passing the arguments to the `example.sh` script.\n" +"> > \n" +"> > Script 3 would print all the arguments to the script (i.e. all the `.pdb` files),\n" +"> > followed by `.pdb`.\n" +"> > ```\n" +"> > cubane.pdb ethane.pdb methane.pdb octane.pdb pentane.pdb propane.pdb.pdb\n" +"> > ```\n" +"> > {: .output}" +msgstr "" + +#: shell-novice/_episodes/06-script.md:573 +# blockquote, which can be cascaded +msgid "> ## Debugging Scripts" +msgstr "" + +#: shell-novice/_episodes/06-script.md:574 +msgid ">\n" +"> Suppose you have saved the following script in a file called `do-errors.sh`\n" +"> in Nelle's `north-pacific-gyre/2012-07-03` directory:\n" +">\n" +"> ~~~\n" +"> # Calculate stats for data files.\n" +"> for datafile in \"$@\"\n" +"> do\n" +"> echo $datfile\n" +"> bash goostats $datafile stats-$datafile\n" +"> done\n" +"> ~~~\n" +"> {: .language-bash}\n" +">\n" +"> When you run it:\n" +">\n" +"> ~~~\n" +"> $ bash do-errors.sh NENE*[AB].txt\n" +"> ~~~\n" +"> {: .language-bash}\n" +">\n" +"> the output is blank.\n" +"> To figure out why, re-run the script using the `-x` option:\n" +">\n" +"> ~~~\n" +"> bash -x do-errors.sh NENE*[AB].txt\n" +"> ~~~\n" +"> {: .language-bash}\n" +">\n" +"> What is the output showing you?\n" +"> Which line is responsible for the error?\n" +">\n" +"> > ## Solution\n" +"> > The `-x` flag causes `bash` to run in debug mode.\n" +"> > This prints out each command as it is run, which will help you to locate errors.\n" +"> > In this example, we can see that `echo` isn't printing anything. We have made a typo\n" +"> > in the loop variable name, and the variable `datfile` doesn't exist, hence returning\n" +"> > an empty string." +msgstr "" + +#: shell-novice/_episodes/07-find.md:1 +# Front Matter +msgid "---\n" +"title: \"Finding Things\"\n" +"teaching: 25\n" +"exercises: 20\n" +"questions:\n" +"- \"How can I find files?\"\n" +"- \"How can I find things in files?\"\n" +"objectives:\n" +"- \"Use `grep` to select lines from text files that match simple patterns.\"\n" +"- \"Use `find` to find files whose names match simple patterns.\"\n" +"- \"Use the output of one command as the command-line argument(s) to another command.\"\n" +"- \"Explain what is meant by 'text' and 'binary' files, and why many common tools don't handle the latter well.\"\n" +"keypoints:\n" +"- \"`find` finds files with specific properties that match patterns.\"\n" +"- \"`grep` selects lines in files that match patterns.\"\n" +"- \"`--help` is a flag supported by many bash commands, and programs that can be run from within Bash, to display more information on how to use these commands or programs.\"\n" +"- \"`man command` displays the manual page for a given command.\"\n" +"- \"`$(command)` inserts a command's output in place.\"\n" +"---" +msgstr "" + +#: shell-novice/_episodes/07-find.md:21 +msgid "In the same way that many of us now use \"Google\" as a \n" +"verb meaning \"to find\", Unix programmers often use the \n" +"word \"grep\".\n" +"\"grep\" is a contraction of \"global/regular expression/print\",\n" +"a common sequence of operations in early Unix text editors.\n" +"It is also the name of a very useful command-line program." +msgstr "" + +#: shell-novice/_episodes/07-find.md:28 +msgid "`grep` finds and prints lines in files that match a pattern.\n" +"For our examples,\n" +"we will use a file that contains three haikus taken from a\n" +"1998 competition in *Salon* magazine. For this set of examples,\n" +"we're going to be working in the writing subdirectory:" +msgstr "" + +#: shell-novice/_episodes/07-find.md:34 +# code block +msgid "~~~\n" +"$ cd\n" +"$ cd Desktop/data-shell/writing\n" +"$ cat haiku.txt\n" +"~~~" +msgstr "" + +#: shell-novice/_episodes/07-find.md:41 +# code block +msgid "~~~\n" +"The Tao that is seen\n" +"Is not the true Tao, until\n" +"You bring fresh toner.\n" +"\n" +"With searching comes loss\n" +"and the presence of absence:\n" +"\"My Thesis\" not found.\n" +"\n" +"Yesterday it worked\n" +"Today it is not working\n" +"Software is like that.\n" +"~~~" +msgstr "" + +#: shell-novice/_episodes/07-find.md:56 +# blockquote, which can be cascaded +msgid "> ## Forever, or Five Years" +msgstr "" + +#: shell-novice/_episodes/07-find.md:57 +msgid ">\n" +"> We haven't linked to the original haikus because they don't appear to be on *Salon*'s site any longer.\n" +"> As [Jeff Rothenberg said](http://www.clir.org/pubs/archives/ensuring.pdf),\n" +"> \"Digital information lasts forever --- or five years, whichever comes first.\"\n" +"> Luckily, popular content often [has backups](http://wiki.c2.com/?ComputerErrorHaiku)." +msgstr "" + +#: shell-novice/_episodes/07-find.md:64 +msgid "Let's find lines that contain the word \"not\":" +msgstr "" + +#: shell-novice/_episodes/07-find.md:66 +# code block +msgid "~~~\n" +"$ grep not haiku.txt\n" +"~~~" +msgstr "" + +#: shell-novice/_episodes/07-find.md:71 +# code block +msgid "~~~\n" +"Is not the true Tao, until\n" +"\"My Thesis\" not found\n" +"Today it is not working\n" +"~~~" +msgstr "" + +#: shell-novice/_episodes/07-find.md:78 +msgid "Here, `not` is the pattern we're searching for. The grep command searches through the file, looking for matches to the pattern specified. To use it type `grep`, then the pattern we're searching for and finally the name of the file (or files) we're searching in." +msgstr "" + +#: shell-novice/_episodes/07-find.md:80 +msgid "The output is the three lines in the file that contain the letters \"not\"." +msgstr "" + +#: shell-novice/_episodes/07-find.md:82 +msgid "Let's try a different pattern: \"The\"." +msgstr "" + +#: shell-novice/_episodes/07-find.md:84 +# code block +msgid "~~~\n" +"$ grep The haiku.txt\n" +"~~~" +msgstr "" + +#: shell-novice/_episodes/07-find.md:89 +# code block +msgid "~~~\n" +"The Tao that is seen\n" +"\"My Thesis\" not found.\n" +"~~~" +msgstr "" + +#: shell-novice/_episodes/07-find.md:95 +msgid "This time,\n" +"two lines that include the letters \"The\" are outputted.\n" +"However, one instance of those letters is contained within a larger word,\n" +"\"Thesis\"." +msgstr "" + +#: shell-novice/_episodes/07-find.md:100 +msgid "To restrict matches to lines containing the word \"The\" on its own,\n" +"we can give `grep` with the `-w` flag.\n" +"This will limit matches to word boundaries." +msgstr "" + +#: shell-novice/_episodes/07-find.md:104 +# code block +msgid "~~~\n" +"$ grep -w The haiku.txt\n" +"~~~" +msgstr "" + +#: shell-novice/_episodes/07-find.md:109 +# code block +msgid "~~~\n" +"The Tao that is seen\n" +"~~~" +msgstr "" + +#: shell-novice/_episodes/07-find.md:114 +msgid "Note that a \"word boundary\" includes the start and end of a line, so not\n" +"just letters surrounded by spaces. \n" +"Sometimes we don't\n" +"want to search for a single word, but a phrase. This is also easy to do with\n" +"`grep` by putting the phrase in quotes." +msgstr "" + +#: shell-novice/_episodes/07-find.md:120 +# code block +msgid "~~~\n" +"$ grep -w \"is not\" haiku.txt\n" +"~~~" +msgstr "" + +#: shell-novice/_episodes/07-find.md:125 +# code block +msgid "~~~\n" +"Today it is not working\n" +"~~~" +msgstr "" + +#: shell-novice/_episodes/07-find.md:130 +msgid "We've now seen that you don't have to have quotes around single words,\n" +"but it is useful to use quotes when searching for multiple words.\n" +"It also helps to make it easier to distinguish between the search term or phrase\n" +"and the file being searched.\n" +"We will use quotes in the remaining examples." +msgstr "" + +#: shell-novice/_episodes/07-find.md:136 +msgid "Another useful option is `-n`, which numbers the lines that match:" +msgstr "" + +#: shell-novice/_episodes/07-find.md:138 +# code block +msgid "~~~\n" +"$ grep -n \"it\" haiku.txt\n" +"~~~" +msgstr "" + +#: shell-novice/_episodes/07-find.md:143 +# code block +msgid "~~~\n" +"5:With searching comes loss\n" +"9:Yesterday it worked\n" +"10:Today it is not working\n" +"~~~" +msgstr "" + +#: shell-novice/_episodes/07-find.md:150 +msgid "Here, we can see that lines 5, 9, and 10 contain the letters \"it\"." +msgstr "" + +#: shell-novice/_episodes/07-find.md:152 +msgid "We can combine options (i.e. flags) as we do with other Unix commands.\n" +"For example, let's find the lines that contain the word \"the\". We can combine\n" +"the option `-w` to find the lines that contain the word \"the\" and `-n` to number the lines that match:" +msgstr "" + +#: shell-novice/_episodes/07-find.md:156 +# code block +msgid "~~~\n" +"$ grep -n -w \"the\" haiku.txt\n" +"~~~" +msgstr "" + +#: shell-novice/_episodes/07-find.md:161 +# code block +msgid "~~~\n" +"2:Is not the true Tao, until\n" +"6:and the presence of absence:\n" +"~~~" +msgstr "" + +#: shell-novice/_episodes/07-find.md:167 +msgid "Now we want to use the option `-i` to make our search case-insensitive:" +msgstr "" + +#: shell-novice/_episodes/07-find.md:169 +# code block +msgid "~~~\n" +"$ grep -n -w -i \"the\" haiku.txt\n" +"~~~" +msgstr "" + +#: shell-novice/_episodes/07-find.md:174 +# code block +msgid "~~~\n" +"1:The Tao that is seen\n" +"2:Is not the true Tao, until\n" +"6:and the presence of absence:\n" +"~~~" +msgstr "" + +#: shell-novice/_episodes/07-find.md:181 +msgid "Now, we want to use the option `-v` to invert our search, i.e., we want to output\n" +"the lines that do not contain the word \"the\"." +msgstr "" + +#: shell-novice/_episodes/07-find.md:184 +# code block +msgid "~~~\n" +"$ grep -n -w -v \"the\" haiku.txt\n" +"~~~" +msgstr "" + +#: shell-novice/_episodes/07-find.md:189 +# code block +msgid "~~~\n" +"1:The Tao that is seen\n" +"3:You bring fresh toner.\n" +"4:\n" +"5:With searching comes loss\n" +"7:\"My Thesis\" not found.\n" +"8:\n" +"9:Yesterday it worked\n" +"10:Today it is not working\n" +"11:Software is like that.\n" +"~~~" +msgstr "" + +#: shell-novice/_episodes/07-find.md:202 +msgid "`grep` has lots of other options. To find out what they are, we can type:" +msgstr "" + +#: shell-novice/_episodes/07-find.md:204 +# code block +msgid "~~~\n" +"$ grep --help\n" +"~~~" +msgstr "" + +#: shell-novice/_episodes/07-find.md:209 +# code block +msgid "~~~\n" +"Usage: grep [OPTION]... PATTERN [FILE]...\n" +"Search for PATTERN in each FILE or standard input.\n" +"PATTERN is, by default, a basic regular expression (BRE).\n" +"Example: grep -i 'hello world' menu.h main.c\n" +"\n" +"Regexp selection and interpretation:\n" +" -E, --extended-regexp PATTERN is an extended regular expression (ERE)\n" +" -F, --fixed-strings PATTERN is a set of newline-separated fixed strings\n" +" -G, --basic-regexp PATTERN is a basic regular expression (BRE)\n" +" -P, --perl-regexp PATTERN is a Perl regular expression\n" +" -e, --regexp=PATTERN use PATTERN for matching\n" +" -f, --file=FILE obtain PATTERN from FILE\n" +" -i, --ignore-case ignore case distinctions\n" +" -w, --word-regexp force PATTERN to match only whole words\n" +" -x, --line-regexp force PATTERN to match only whole lines\n" +" -z, --null-data a data line ends in 0 byte, not newline\n" +"\n" +"Miscellaneous:\n" +"... ... ...\n" +"~~~" +msgstr "" + +#: shell-novice/_episodes/07-find.md:232 +# blockquote, which can be cascaded +msgid "> ## Using `grep`" +msgstr "" + +#: shell-novice/_episodes/07-find.md:233 +msgid ">\n" +"> Which command would result in the following output:\n" +">\n" +"> ~~~\n" +"> and the presence of absence:\n" +"> ~~~" +msgstr "" + +#: shell-novice/_episodes/07-find.md:240 +msgid ">\n" +"> 1. `grep \"of\" haiku.txt`\n" +"> 2. `grep -E \"of\" haiku.txt`\n" +"> 3. `grep -w \"of\" haiku.txt`\n" +"> 4. `grep -i \"of\" haiku.txt`\n" +">\n" +"> > ## Solution\n" +"> > The correct answer is 3, because the `-w` flag looks only for whole-word matches.\n" +"> > The other options will all match \"of\" when part of another word." +msgstr "" + +#: shell-novice/_episodes/07-find.md:253 +msgid ">\n" +"> `grep`'s real power doesn't come from its options, though; it comes from\n" +"> the fact that patterns can include wildcards. (The technical name for\n" +"> these is **regular expressions**, which\n" +"> is what the \"re\" in \"grep\" stands for.) Regular expressions are both complex\n" +"> and powerful; if you want to do complex searches, please look at the lesson\n" +"> on [our website](http://v4.software-carpentry.org/regexp/index.html). As a taster, we can\n" +"> find lines that have an 'o' in the second position like this:\n" +">\n" +"> ~~~\n" +"> $ grep -E '^.o' haiku.txt\n" +"> ~~~\n" +"> {: .language-bash}\n" +">\n" +"> ~~~\n" +"> You bring fresh toner.\n" +"> Today it is not working\n" +"> Software is like that.\n" +"> ~~~" +msgstr "" + +#: shell-novice/_episodes/07-find.md:273 +msgid ">\n" +"> We use the `-E` flag and put the pattern in quotes to prevent the shell\n" +"> from trying to interpret it. (If the pattern contained a `*`, for\n" +"> example, the shell would try to expand it before running `grep`.) The\n" +"> `^` in the pattern anchors the match to the start of the line. The `.`\n" +"> matches a single character (just like `?` in the shell), while the `o`\n" +"> matches an actual 'o'." +msgstr "" + +#: shell-novice/_episodes/07-find.md:282 +# blockquote, which can be cascaded +msgid "> ## Tracking a Species" +msgstr "" + +#: shell-novice/_episodes/07-find.md:284 +# blockquote, which can be cascaded +msgid "> Leah has several hundred " +msgstr "" + +#: shell-novice/_episodes/07-find.md:285 +# blockquote, which can be cascaded +msgid "> data files saved in one directory, each of which is formatted like this:" +msgstr "" + +#: shell-novice/_episodes/07-find.md:288 +# blockquote, which can be cascaded +msgid "> 2013-11-05,deer,5" +msgstr "" + +#: shell-novice/_episodes/07-find.md:289 +# blockquote, which can be cascaded +msgid "> 2013-11-05,rabbit,22" +msgstr "" + +#: shell-novice/_episodes/07-find.md:290 +# blockquote, which can be cascaded +msgid "> 2013-11-05,raccoon,7" +msgstr "" + +#: shell-novice/_episodes/07-find.md:291 +# blockquote, which can be cascaded +msgid "> 2013-11-06,rabbit,19" +msgstr "" + +#: shell-novice/_episodes/07-find.md:292 +# blockquote, which can be cascaded +msgid "> 2013-11-06,deer,2" +msgstr "" + +#: shell-novice/_episodes/07-find.md:295 +msgid ">\n" +"> She wants to write a shell script that takes a species as the first command-line argument \n" +"> and a directory as the second argument. The script should return one file called `species.txt` \n" +"> containing a list of dates and the number of that species seen on each date.\n" +"> For example using the data shown above, `rabbits.txt` would contain:\n" +"> \n" +"> ~~~\n" +"> 2013-11-05,22\n" +"> 2013-11-06,19\n" +"> ~~~" +msgstr "" + +#: shell-novice/_episodes/07-find.md:306 +msgid ">\n" +"> Put these commands and pipes in the right order to achieve this:\n" +"> \n" +"> ~~~\n" +"> cut -d : -f 2 \n" +"> > \n" +"> | \n" +"> grep -w $1 -r $2 \n" +"> | \n" +"> $1.txt \n" +"> cut -d , -f 1,3 \n" +"> ~~~\n" +"> {: .language-bash}\n" +">\n" +"> Hint: use `man grep` to look for how to grep text recursively in a directory\n" +"> and `man cut` to select more than one field in a line.\n" +">\n" +"> An example of such a file is provided in `data-shell/data/animal-counts/animals.txt`\n" +">\n" +"> > ## Solution\n" +"> >\n" +"> > ```\n" +"> > grep -w $1 -r $2 | cut -d : -f 2 | cut -d , -f 1,3 > $1.txt\n" +"> > ```\n" +"> > {: .source}\n" +"> >\n" +"> > You would call the script above like this:\n" +"> >\n" +"> > ```\n" +"> > $ bash count-species.sh bear .\n" +"> > ```\n" +"> > {: .language-bash}" +msgstr "" + +#: shell-novice/_episodes/07-find.md:341 +# blockquote, which can be cascaded +msgid "> ## Little Women" +msgstr "" + +#: shell-novice/_episodes/07-find.md:342 +msgid ">\n" +"> You and your friend, having just finished reading *Little Women* by\n" +"> Louisa May Alcott, are in an argument. Of the four sisters in the\n" +"> book, Jo, Meg, Beth, and Amy, your friend thinks that Jo was the\n" +"> most mentioned. You, however, are certain it was Amy. Luckily, you\n" +"> have a file `LittleWomen.txt` containing the full text of the novel\n" +"> (`data-shell/writing/data/LittleWomen.txt`).\n" +"> Using a `for` loop, how would you tabulate the number of times each\n" +"> of the four sisters is mentioned?\n" +">\n" +"> Hint: one solution might employ\n" +"> the commands `grep` and `wc` and a `|`, while another might utilize\n" +"> `grep` options.\n" +"> There is often more than one way to solve a programming task, so a\n" +"> particular solution is usually chosen based on a combination of\n" +"> yielding the correct result, elegance, readability, and speed.\n" +">\n" +"> > ## Solutions\n" +"> > ```\n" +"> > for sis in Jo Meg Beth Amy\n" +"> > do\n" +"> > echo $sis:\n" +"> > grep -ow $sis LittleWomen.txt | wc -l\n" +"> > done\n" +"> > ```\n" +"> > {: .source}\n" +"> >\n" +"> > Alternative, slightly inferior solution:\n" +"> > ```\n" +"> > for sis in Jo Meg Beth Amy\n" +"> > do\n" +"> > echo $sis:\n" +"> > grep -ocw $sis LittleWomen.txt\n" +"> > done\n" +"> > ```\n" +"> > {: .source}\n" +"> >\n" +"> > This solution is inferior because `grep -c` only reports the number of lines matched.\n" +"> > The total number of matches reported by this method will be lower if there is more\n" +"> > than one match per line." +msgstr "" + +#: shell-novice/_episodes/07-find.md:385 +msgid "While `grep` finds lines in files,\n" +"the `find` command finds files themselves.\n" +"Again,\n" +"it has a lot of options;\n" +"to show how the simplest ones work, we'll use the directory tree shown below." +msgstr "" + +#: shell-novice/_episodes/07-find.md:391 +msgid "![File Tree for Find Example](../fig/find-file-tree.svg)" +msgstr "" + +#: shell-novice/_episodes/07-find.md:393 +msgid "Nelle's `writing` directory contains one file called `haiku.txt` and three subdirectories:\n" +"`thesis` (which contains a sadly empty file, `empty-draft.md`);\n" +"`data` (which contains three files `LittleWomen.txt`, `one.txt` and `two.txt`);\n" +"and a `tools` directory that contains the programs `format` and `stats`,\n" +"and a subdirectory called `old`, with a file `oldtool`." +msgstr "" + +#: shell-novice/_episodes/07-find.md:399 +msgid "For our first command,\n" +"let's run `find .`." +msgstr "" + +#: shell-novice/_episodes/07-find.md:402 +# code block +msgid "~~~\n" +"$ find .\n" +"~~~" +msgstr "" + +#: shell-novice/_episodes/07-find.md:407 +# code block +msgid "~~~\n" +".\n" +"./data\n" +"./data/one.txt\n" +"./data/LittleWomen.txt\n" +"./data/two.txt\n" +"./tools\n" +"./tools/format\n" +"./tools/old\n" +"./tools/old/oldtool\n" +"./tools/stats\n" +"./haiku.txt\n" +"./thesis\n" +"./thesis/empty-draft.md\n" +"~~~" +msgstr "" + +#: shell-novice/_episodes/07-find.md:424 +msgid "As always,\n" +"the `.` on its own means the current working directory,\n" +"which is where we want our search to start.\n" +"`find`'s output is the names of every file **and** directory\n" +"under the current working directory.\n" +"This can seem useless at first but `find` has many options\n" +"to filter the output and in this lesson we will discover some \n" +"of them." +msgstr "" + +#: shell-novice/_episodes/07-find.md:433 +msgid "The first option in our list is\n" +"`-type d` that means \"things that are directories\".\n" +"Sure enough,\n" +"`find`'s output is the names of the six directories in our little tree\n" +"(including `.`):" +msgstr "" + +#: shell-novice/_episodes/07-find.md:439 +# code block +msgid "~~~\n" +"$ find . -type d\n" +"~~~" +msgstr "" + +#: shell-novice/_episodes/07-find.md:444 +# code block +msgid "~~~\n" +"./\n" +"./data\n" +"./thesis\n" +"./tools\n" +"./tools/old\n" +"~~~" +msgstr "" + +#: shell-novice/_episodes/07-find.md:453 +msgid "Notice that the objects `find` finds are not listed in any particular order.\n" +"If we change `-type d` to `-type f`,\n" +"we get a listing of all the files instead:" +msgstr "" + +#: shell-novice/_episodes/07-find.md:457 +# code block +msgid "~~~\n" +"$ find . -type f\n" +"~~~" +msgstr "" + +#: shell-novice/_episodes/07-find.md:462 +# code block +msgid "~~~\n" +"./haiku.txt\n" +"./tools/stats\n" +"./tools/old/oldtool\n" +"./tools/format\n" +"./thesis/empty-draft.md\n" +"./data/one.txt\n" +"./data/LittleWomen.txt\n" +"./data/two.txt\n" +"~~~" +msgstr "" + +#: shell-novice/_episodes/07-find.md:474 +msgid "Now let's try matching by name:" +msgstr "" + +#: shell-novice/_episodes/07-find.md:476 +# code block +msgid "~~~\n" +"$ find . -name *.txt\n" +"~~~" +msgstr "" + +#: shell-novice/_episodes/07-find.md:481 +# code block +msgid "~~~\n" +"./haiku.txt\n" +"~~~" +msgstr "" + +#: shell-novice/_episodes/07-find.md:486 +msgid "We expected it to find all the text files,\n" +"but it only prints out `./haiku.txt`.\n" +"The problem is that the shell expands wildcard characters like `*` *before* commands run.\n" +"Since `*.txt` in the current directory expands to `haiku.txt`,\n" +"the command we actually ran was:" +msgstr "" + +#: shell-novice/_episodes/07-find.md:492 +# code block +msgid "~~~\n" +"$ find . -name haiku.txt\n" +"~~~" +msgstr "" + +#: shell-novice/_episodes/07-find.md:497 +msgid "`find` did what we asked; we just asked for the wrong thing." +msgstr "" + +#: shell-novice/_episodes/07-find.md:499 +msgid "To get what we want,\n" +"let's do what we did with `grep`:\n" +"put `*.txt` in single quotes to prevent the shell from expanding the `*` wildcard.\n" +"This way,\n" +"`find` actually gets the pattern `*.txt`, not the expanded filename `haiku.txt`:" +msgstr "" + +#: shell-novice/_episodes/07-find.md:505 +# code block +msgid "~~~\n" +"$ find . -name '*.txt'\n" +"~~~" +msgstr "" + +#: shell-novice/_episodes/07-find.md:510 +# code block +msgid "~~~\n" +"./data/one.txt\n" +"./data/LittleWomen.txt\n" +"./data/two.txt\n" +"./haiku.txt\n" +"~~~" +msgstr "" + +#: shell-novice/_episodes/07-find.md:518 +# blockquote, which can be cascaded +msgid "> ## Listing vs. Finding" +msgstr "" + +#: shell-novice/_episodes/07-find.md:519 +msgid ">\n" +"> `ls` and `find` can be made to do similar things given the right options,\n" +"> but under normal circumstances,\n" +"> `ls` lists everything it can,\n" +"> while `find` searches for things with certain properties and shows them." +msgstr "" + +#: shell-novice/_episodes/07-find.md:526 +msgid "As we said earlier,\n" +"the command line's power lies in combining tools.\n" +"We've seen how to do that with pipes;\n" +"let's look at another technique.\n" +"As we just saw,\n" +"`find . -name '*.txt'` gives us a list of all text files in or below the current directory.\n" +"How can we combine that with `wc -l` to count the lines in all those files?" +msgstr "" + +#: shell-novice/_episodes/07-find.md:534 +msgid "The simplest way is to put the `find` command inside `$()`:" +msgstr "" + +#: shell-novice/_episodes/07-find.md:536 +# code block +msgid "~~~\n" +"$ wc -l $(find . -name '*.txt')\n" +"~~~" +msgstr "" + +#: shell-novice/_episodes/07-find.md:541 +# code block +msgid "~~~\n" +"11 ./haiku.txt\n" +"300 ./data/two.txt\n" +"21022 ./data/LittleWomen.txt\n" +"70 ./data/one.txt\n" +"21403 total\n" +"~~~" +msgstr "" + +#: shell-novice/_episodes/07-find.md:550 +msgid "When the shell executes this command,\n" +"the first thing it does is run whatever is inside the `$()`.\n" +"It then replaces the `$()` expression with that command's output.\n" +"Since the output of `find` is the four filenames `./data/one.txt`, `./data/LittleWomen.txt`, `./data/two.txt`, and `./haiku.txt`,\n" +"the shell constructs the command:" +msgstr "" + +#: shell-novice/_episodes/07-find.md:556 +# code block +msgid "~~~\n" +"$ wc -l ./data/one.txt ./data/LittleWomen.txt ./data/two.txt ./haiku.txt\n" +"~~~" +msgstr "" + +#: shell-novice/_episodes/07-find.md:561 +msgid "which is what we wanted.\n" +"This expansion is exactly what the shell does when it expands wildcards like `*` and `?`,\n" +"but lets us use any command we want as our own \"wildcard\"." +msgstr "" + +#: shell-novice/_episodes/07-find.md:565 +msgid "It's very common to use `find` and `grep` together.\n" +"The first finds files that match a pattern;\n" +"the second looks for lines inside those files that match another pattern.\n" +"Here, for example, we can find PDB files that contain iron atoms\n" +"by looking for the string \"FE\" in all the `.pdb` files above the current directory:" +msgstr "" + +#: shell-novice/_episodes/07-find.md:571 +# code block +msgid "~~~\n" +"$ grep \"FE\" $(find .. -name '*.pdb')\n" +"~~~" +msgstr "" + +#: shell-novice/_episodes/07-find.md:576 +# code block +msgid "~~~\n" +"../data/pdb/heme.pdb:ATOM 25 FE 1 -0.924 0.535 -0.518\n" +"~~~" +msgstr "" + +#: shell-novice/_episodes/07-find.md:581 +# blockquote, which can be cascaded +msgid "> ## Matching and Subtracting" +msgstr "" + +#: shell-novice/_episodes/07-find.md:582 +msgid ">\n" +"> The `-v` flag to `grep` inverts pattern matching, so that only lines\n" +"> which do *not* match the pattern are printed. Given that, which of\n" +"> the following commands will find all files in `/data` whose names\n" +"> end in `s.txt` (e.g., `animals.txt` or `planets.txt`), but do\n" +"> *not* contain the word `net`?\n" +"> Once you have thought about your answer, you can test the commands in the `data-shell`\n" +"> directory.\n" +">\n" +"> 1. `find data -name '*s.txt' | grep -v net`\n" +"> 2. `find data -name *s.txt | grep -v net`\n" +"> 3. `grep -v \"temp\" $(find data -name '*s.txt')`\n" +"> 4. None of the above.\n" +">\n" +"> > ## Solution\n" +"> > The correct answer is 1. Putting the match expression in quotes prevents the shell\n" +"> > expanding it, so it gets passed to the `find` command.\n" +"> >\n" +"> > Option 2 is incorrect because the shell expands `*s.txt` instead of passing the wildcard\n" +"> > expression to `find`.\n" +"> >\n" +"> > Option 3 is incorrect because it searches the contents of the files for lines which\n" +"> > do not match \"temp\", rather than searching the file names." +msgstr "" + +#: shell-novice/_episodes/07-find.md:608 +# blockquote, which can be cascaded +msgid "> ## Binary Files" +msgstr "" + +#: shell-novice/_episodes/07-find.md:609 +msgid ">\n" +"> We have focused exclusively on finding things in text files. What if\n" +"> your data is stored as images, in databases, or in some other format?\n" +"> One option would be to extend tools like `grep` to handle those formats.\n" +"> This hasn't happened, and probably won't, because there are too many\n" +"> formats to support.\n" +">\n" +"> The second option is to convert the data to text, or extract the\n" +"> text-ish bits from the data. This is probably the most common approach,\n" +"> since it only requires people to build one tool per data format (to\n" +"> extract information). On the one hand, it makes simple things easy to\n" +"> do. On the negative side, complex things are usually impossible. For\n" +"> example, it's easy enough to write a program that will extract X and Y\n" +"> dimensions from image files for `grep` to play with, but how would you\n" +"> write something to find values in a spreadsheet whose cells contained\n" +"> formulas?\n" +">\n" +"> The third choice is to recognize that the shell and text processing have\n" +"> their limits, and to use another programming language.\n" +"> When the time comes to do this, don't be too hard on the shell: many\n" +"> modern programming languages have borrowed a lot of\n" +"> ideas from it, and imitation is also the sincerest form of praise." +msgstr "" + +#: shell-novice/_episodes/07-find.md:633 +msgid "The Unix shell is older than most of the people who use it. It has\n" +"survived so long because it is one of the most productive programming\n" +"environments ever created --- maybe even *the* most productive. Its syntax\n" +"may be cryptic, but people who have mastered it can experiment with\n" +"different commands interactively, then use what they have learned to\n" +"automate their work. Graphical user interfaces may be better at the\n" +"first, but the shell is still unbeaten at the second. And as Alfred\n" +"North Whitehead wrote in 1911, \"Civilization advances by extending the\n" +"number of important operations which we can perform without thinking\n" +"about them.\"" +msgstr "" + +#: shell-novice/_episodes/07-find.md:644 +# blockquote, which can be cascaded +msgid "> ## `find` Pipeline Reading Comprehension" +msgstr "" + +#: shell-novice/_episodes/07-find.md:645 +msgid ">\n" +"> Write a short explanatory comment for the following shell script:\n" +">\n" +"> ~~~\n" +"> wc -l $(find . -name '*.dat') | sort -n\n" +"> ~~~\n" +"> {: .language-bash}\n" +">\n" +"> > ## Solution\n" +"> > 1. Find all files with a `.dat` extension in the current directory\n" +"> > 2. Count the number of lines each of these files contains\n" +"> > 3. Sort the output from step 2. numerically" +msgstr "" + +#: shell-novice/_episodes/07-find.md:660 +# blockquote, which can be cascaded +msgid "> ## Finding Files With Different Properties" +msgstr "" + +#: shell-novice/_episodes/07-find.md:662 +# blockquote, which can be cascaded +msgid "> The `find` command can be given several other criteria known as \"tests\"" +msgstr "" + +#: shell-novice/_episodes/07-find.md:663 +# blockquote, which can be cascaded +msgid "> to locate files with specific attributes, such as creation time, size," +msgstr "" + +#: shell-novice/_episodes/07-find.md:664 +# blockquote, which can be cascaded +msgid "> permissions, or ownership. Use `man find` to explore these, and then" +msgstr "" + +#: shell-novice/_episodes/07-find.md:665 +# blockquote, which can be cascaded +msgid "> write a single command to find all files in or below the current directory" +msgstr "" + +#: shell-novice/_episodes/07-find.md:666 +# blockquote, which can be cascaded +msgid "> that were modified by the user `ahmed` in the last 24 hours." +msgstr "" + +#: shell-novice/_episodes/07-find.md:667 +msgid ">\n" +"> Hint 1: you will need to use three tests: `-type`, `-mtime`, and `-user`.\n" +">\n" +"> Hint 2: The value for `-mtime` will need to be negative---why?\n" +">\n" +"> > ## Solution\n" +"> > Assuming that Nelle’s home is our working directory we type:\n" +"> >\n" +"> > ~~~\n" +"> > $ find ./ -type f -mtime -1 -user ahmed\n" +"> > ~~~\n" +"> > {: .language-bash}" +msgstr "" + +#: shell-novice/_extras/about.md:1 +# Front Matter +msgid "---\n" +"layout: page\n" +"title: About\n" +"permalink: /about/\n" +"---" +msgstr "" + +#: shell-novice/_extras/about.md:6 +msgid "{% include carpentries.html %}" +msgstr "" + +#: shell-novice/_extras/discuss.md:1 +# Front Matter +msgid "---\n" +"layout: page\n" +"title: \"Discussion\"\n" +"permalink: /discuss/\n" +"---" +msgstr "" + +#: shell-novice/_extras/discuss.md:6 +# header +msgid "## Alphabet Soup" +msgstr "" + +#: shell-novice/_extras/discuss.md:8 +msgid "If the command to find out who we are is `whoami`, the command to find\n" +"out where we are ought to be called `whereami`, so why is it `pwd`\n" +"instead? The usual answer is that in the early 1970s, when Unix was\n" +"first being developed, every keystroke counted: the devices of the day\n" +"were slow, and backspacing on a teletype was so painful that cutting the\n" +"number of keystrokes in order to cut the number of typing mistakes was\n" +"actually a win for usability. The reality is that commands were added to\n" +"Unix one by one, without any master plan, by people who were immersed in\n" +"its jargon. The result is as inconsistent as the roolz uv Inglish\n" +"speling, but we're stuck with it now." +msgstr "" + +#: shell-novice/_extras/discuss.md:19 +# header +msgid "## Job Control Codes" +msgstr "" + +#: shell-novice/_extras/discuss.md:21 +msgid "The shell accepts a few special commands that allow users to interact\n" +"with running processes or programs. You can enter each of these\n" +"\"control codes\" by holding down the `Ctrl` key and then pressing one\n" +"of the control characters. In other tutorials, you may see the term\n" +"`Control` or the `^` used to represent the `Ctrl` key (e.g. the\n" +"following are all equivalent `Ctrl-C`, `Ctrl+C`, `Control-C`, `Control+C`, `^C`)." +msgstr "" + +#: shell-novice/_extras/discuss.md:28 +# unordered list +msgid "* `Ctrl-C`:" +msgstr "" + +#: shell-novice/_extras/discuss.md:29 +msgid " interrupts and cancels a running program.\n" +" This is useful if you want to cancel a command that is taking too long to execute." +msgstr "" + +#: shell-novice/_extras/discuss.md:32 +# unordered list +msgid "* `Ctrl-D`:" +msgstr "" + +#: shell-novice/_extras/discuss.md:33 +msgid " indicates the end of a file or stream of characters that you are entering on the command line.\n" +" For example, we saw earlier that the `wc` command counts lines, words, and characters in a file.\n" +" If we just type `wc` and hit the Enter key without providing a file name,\n" +" then `wc` will assume we want it to analyze all the stuff we type next.\n" +" After typing our magnum opus directly into the shell prompt,\n" +" we can then type Ctrl-D to tell `wc` that we're done and we'd like to see the results of the word count." +msgstr "" + +#: shell-novice/_extras/discuss.md:40 +# unordered list +msgid "* `Ctrl-Z`:" +msgstr "" + +#: shell-novice/_extras/discuss.md:41 +msgid " Suspends a process but does not terminate it.\n" +" You can then use the command `fg` to restart the job in the foreground." +msgstr "" + +#: shell-novice/_extras/discuss.md:44 +msgid "For new shell users, these control codes can all appear to have\n" +"the same effect: they make things \"go away.\" But it is helpful to\n" +"understand the differences. In general, if something went wrong and\n" +"you just want to get your shell prompt back, it is better to use\n" +"`Ctrl-C`." +msgstr "" + +#: shell-novice/_extras/discuss.md:50 +# header +msgid "## Other Shells" +msgstr "" + +#: shell-novice/_extras/discuss.md:52 +msgid "Before Bash became popular in the end of nineties, scientists widely\n" +"used (and some still use) another shell, C-shell, or Csh. Bash and Csh\n" +"have similar feature sets, but their syntax rules are different and\n" +"this makes them incompatible with each other. A few other shells have\n" +"appeared since, including ksh, zsh, and a number of others; they are\n" +"mostly compatible with Bash, and Bash is the default shell on most\n" +"modern implementations of Unix (including most packages that provide\n" +"Unix-like tools for Windows) but if you get strange errors in shell\n" +"scripts written by colleagues, check to see which shell they were\n" +"written for." +msgstr "" + +#: shell-novice/_extras/discuss.md:63 +# header +msgid "## Bash Configurations" +msgstr "" + +#: shell-novice/_extras/discuss.md:65 +msgid "Want to customize paths, environment variables, aliases,\n" +"and other behaviors of your shell?\n" +"This excellent blog post \"[Bash Configurations Demystified][bash-demystified]\"\n" +"from Dalton Hubble\n" +"covers tips, tricks, and how to avoid dangers." +msgstr "" + +#: shell-novice/_extras/discuss.md:71 +msgid "[bash-demystified]: https://blog.dghubble.io/post/.bashprofile-.profile-and-.bashrc-conventions/" +msgstr "" + +#: shell-novice/_extras/figures.md:1 +# Front Matter +msgid "---\n" +"layout: page\n" +"title: Figures\n" +"---" +msgstr "" + +#: shell-novice/_extras/figures.md:5 +# inline html +msgid "" +msgstr "" + +#: shell-novice/_extras/figures.md:34 +#: shell-novice/aio.md:31 +msgid "{% comment %}\n" +"Create anchor for each one of the episodes.\n" +"{% endcomment %}\n" +"{% for episode in site.episodes %}\n" +"
\n" +"{% endfor %}" +msgstr "" + +#: shell-novice/_extras/guide.md:1 +# Front Matter +msgid "---\n" +"layout: page\n" +"title: \"Instructor Notes\"\n" +"permalink: /guide/\n" +"---" +msgstr "" + +#: shell-novice/_extras/guide.md:6 +# unordered list +msgid "* Why do we learn to use the shell?" +msgstr "" + +#: shell-novice/_extras/guide.md:7 +# unordered list +msgid " * Allows users to automate repetitive tasks" +msgstr "" + +#: shell-novice/_extras/guide.md:8 +# unordered list +msgid " * And capture small data manipulation steps that are normally not recorded" +msgstr "" + +#: shell-novice/_extras/guide.md:9 +msgid " to make research reproducible\n" +"* The Problem\n" +" * Running the same workflow on several samples can be unnecessarily labour intensive\n" +" * Manual manipulation of data files:\n" +" * is often not captured in documentation\n" +" * is hard to reproduce\n" +" * is hard to troubleshoot, review, or improve\n" +"* The Shell\n" +" * Workflows can be automated through the use of shell scripts\n" +" * Built-in commands allow for easy data manipulation (e.g. sort, grep, etc.)\n" +" * Every step can be captured in the shell script and allow reproducibility and easy troubleshooting" +msgstr "" + +#: shell-novice/_extras/guide.md:21 +# header +msgid "## Overall" +msgstr "" + +#: shell-novice/_extras/guide.md:23 +msgid "Many people have questioned whether we should still teach the shell.\n" +"After all,\n" +"anyone who wants to rename several thousand data files\n" +"can easily do so interactively in the Python interpreter,\n" +"and anyone who's doing serious data analysis\n" +"is probably going to do most of their work inside the IPython Notebook or R Studio.\n" +"So why teach the shell?" +msgstr "" + +#: shell-novice/_extras/guide.md:31 +msgid "The first answer is,\n" +"\"Because so much else depends on it.\"\n" +"Installing software,\n" +"configuring your default editor,\n" +"and controlling remote machines frequently assume a basic familiarity with the shell,\n" +"and with related ideas like standard input and output.\n" +"Many tools also use its terminology\n" +"(for example, the `%ls` and `%cd` magic commands in IPython)." +msgstr "" + +#: shell-novice/_extras/guide.md:40 +msgid "The second answer is,\n" +"\"Because it's an easy way to introduce some fundamental ideas about how to use computers.\"\n" +"As we teach people how to use the Unix shell,\n" +"we teach them that they should get the computer to repeat things\n" +"(via tab completion,\n" +"`!` followed by a command number,\n" +"and `for` loops)\n" +"rather than repeating things themselves.\n" +"We also teach them to take things they've discovered they do frequently\n" +"and save them for later re-use\n" +"(via shell scripts),\n" +"to give things sensible names,\n" +"and to write a little bit of documentation\n" +"(like comment at the top of shell scripts)\n" +"to make their future selves' lives better." +msgstr "" + +#: shell-novice/_extras/guide.md:56 +msgid "The third answer is,\n" +"\"Because it enables use of many domain-specific tools and compute resources researchers cannot access otherwise.\"\n" +"Familiarity with the shell is very useful for remote accessing machines,\n" +"using high-performance computing infrastructure,\n" +"and running new specialist tools in many disciplines.\n" +"We do not teach HPC or domain-specific skills here\n" +"but lay the groundwork for further development of these skills.\n" +"In particular,\n" +"understanding the syntax of commands, flags, and help systems is useful for domain specific tools\n" +"and understanding the file system (and how to navigate it) is useful for remote access." +msgstr "" + +#: shell-novice/_extras/guide.md:67 +msgid "Finally,\n" +"and perhaps most importantly,\n" +"teaching people the shell lets us teach them\n" +"to think about programming in terms of function composition.\n" +"In the case of the shell,\n" +"this takes the form of pipelines rather than nested function calls,\n" +"but the core idea of \"small pieces, loosely joined\" is the same." +msgstr "" + +#: shell-novice/_extras/guide.md:75 +msgid "All of this material can be covered in three hours\n" +"as long as learners using Windows do not run into roadblocks such as:" +msgstr "" + +#: shell-novice/_extras/guide.md:78 +# unordered list +msgid "* not being able to figure out where their home directory is" +msgstr "" + +#: shell-novice/_extras/guide.md:79 +msgid " (particularly if they're using Cygwin);\n" +"* not being able to run a plain text editor;\n" +" and\n" +"* the shell refusing to run scripts that include DOS line endings." +msgstr "" + +#: shell-novice/_extras/guide.md:84 +# header +msgid "## Preparing to Teach" +msgstr "" + +#: shell-novice/_extras/guide.md:86 +# unordered list +msgid "* Use the `data` directory for in-workshop exercises and live coding examples." +msgstr "" + +#: shell-novice/_extras/guide.md:87 +msgid " You can clone the shell-novice directory or use the `Download ZIP`\n" +" button on the right to get the entire [repository](https://github.com/swcarpentry/shell-novice). We also now provide\n" +" a zip file of the `data` directory that can be downloaded on its own\n" +" from the repository by right-click + save or see the [\"setup\"]({{ page.root }}/setup/) page on the lesson website for more details. " +msgstr "" + +#: shell-novice/_extras/guide.md:92 +# unordered list +msgid "* Website: various practices have been used." +msgstr "" + +#: shell-novice/_extras/guide.md:93 +# unordered list +msgid " * Option 1: Can give links to learners before the lesson so they can follow along," +msgstr "" + +#: shell-novice/_extras/guide.md:94 +msgid " catch up,\n" +" and see exercises (particularly if you're following the lesson content without many changes).\n" +" * Option 2: Don't show the website to the learners during the lesson, as it can be distracting:\n" +" students may read instead of listen, and having another window open is an additional cognitive load.\n" +" * In any case, make sure to point to website as a post-workshop reference." +msgstr "" + +#: shell-novice/_extras/guide.md:100 +# unordered list +msgid "* Content:" +msgstr "" + +#: shell-novice/_extras/guide.md:101 +msgid " Unless you have a truly generous amount of time (4+ hours),\n" +" it is likely that you will not cover ALL the material in this lesson in a single half-day session.\n" +" Plan ahead on what you might skip, what you really want to emphasize, etc." +msgstr "" + +#: shell-novice/_extras/guide.md:105 +# unordered list +msgid "* Exercises:" +msgstr "" + +#: shell-novice/_extras/guide.md:106 +msgid " Think in advance about how you might want to handle exercises during the lesson.\n" +" How are you assigning them (website, slide, handout)?\n" +" Do you want everyone to try it and then you show the solution?\n" +" Have a learner show the solution?\n" +" Have groups each do a different exercise and present their solutions?" +msgstr "" + +#: shell-novice/_extras/guide.md:112 +# unordered list +msgid "* `reference.md` can be printed out and given to students as a reference, your choice." +msgstr "" + +#: shell-novice/_extras/guide.md:114 +# unordered list +msgid "* Other preparation:" +msgstr "" + +#: shell-novice/_extras/guide.md:115 +msgid " Feel free to add your own examples or side comments,\n" +" but know that it shouldn't be necessary:\n" +" the topics and commands can be taught as given on the lesson pages.\n" +" If you think there is a place where the lesson is lacking,\n" +" feel free to file an issue or submit a pull request." +msgstr "" + +#: shell-novice/_extras/guide.md:121 +# header +msgid "## Teaching Notes" +msgstr "" + +#: shell-novice/_extras/guide.md:123 +# unordered list +msgid "* Super cool online resource!" +msgstr "" + +#: shell-novice/_extras/guide.md:124 +msgid " will dissect any shell command you type in\n" +" and display help text for each piece. Additional nice manual tool could be with short very descriptive manuals for shell commands, useful especially on Windows while using Git BASH where `man` could not work." +msgstr "" + +#: shell-novice/_extras/guide.md:127 +# unordered list +msgid "* Another super cool online resource is ," +msgstr "" + +#: shell-novice/_extras/guide.md:128 +msgid " which will check shell scripts (both uploaded and typed in) for common errors." +msgstr "" + +#: shell-novice/_extras/guide.md:130 +# unordered list +msgid "* Resources for \"splitting\" your shell so that recent commands" +msgstr "" + +#: shell-novice/_extras/guide.md:131 +msgid " remain in view: ." +msgstr "" + +#: shell-novice/_extras/guide.md:133 +# unordered list +msgid "* Running a text editor from the command line can be" +msgstr "" + +#: shell-novice/_extras/guide.md:134 +msgid " the biggest stumbling block during the entire lesson:\n" +" many will try to run the same editor as the instructor\n" +" (which may leave them trapped in the awful nether hell that is Vim),\n" +" or will not know how to navigate to the right directory\n" +" to save their file,\n" +" or will run a word processor rather than a plain text editor.\n" +" The quickest way past these problems is to have more knowledgeable learners\n" +" help those who need it." +msgstr "" + +#: shell-novice/_extras/guide.md:143 +# unordered list +msgid "* Introducing and navigating the filesystem in the shell (covered in" +msgstr "" + +#: shell-novice/_extras/guide.md:144 +msgid " [Navigating Files and Directories]({{ page.root }}/02-filedir/) section) can be confusing. You may have both terminal and GUI file explorer open side by side so learners can see the content and file structure while they're using terminal to navigate the system." +msgstr "" + +#: shell-novice/_extras/guide.md:146 +# unordered list +msgid "* Tab completion sounds like a small thing: it isn't." +msgstr "" + +#: shell-novice/_extras/guide.md:147 +msgid " Re-running old commands using `!123` or `!wc`\n" +" isn't a small thing either,\n" +" and neither are wildcard expansion and `for` loops.\n" +" Each one is an opportunity to repeat one of the big ideas of Software Carpentry:\n" +" if the computer *can* repeat it,\n" +" some programmer somewhere will almost certainly have built\n" +" some way for the computer *to* repeat it." +msgstr "" + +#: shell-novice/_extras/guide.md:155 +# unordered list +msgid "* Building up a pipeline with four or five stages," +msgstr "" + +#: shell-novice/_extras/guide.md:156 +msgid " then putting it in a shell script for re-use\n" +" and calling that script inside a `for` loop,\n" +" is a great opportunity to show how\n" +" \"seven plus or minus two\"\n" +" connects to programming.\n" +" Once we have figured out how to do something moderately complicated,\n" +" we make it re-usable and give it a name\n" +" so that it only takes up one slot in working memory\n" +" rather than several.\n" +" It is also a good opportunity to talk about exploratory programming:\n" +" rather than designing a program up front,\n" +" we can do a few useful things\n" +" and then retroactively decide which are worth encapsulating\n" +" for future re-use." +msgstr "" + +#: shell-novice/_extras/guide.md:171 +# unordered list +msgid "* If everything is going well, you can drive home the point that file" +msgstr "" + +#: shell-novice/_extras/guide.md:172 +msgid " extensions are essentially there to help computers (and human\n" +" readers) understand file content and are not a requirement of files\n" +" (covered briefly in [Navigating Files and Directories]({{ page.root }}/02-filedir/)).\n" +" This can be done in the [Pipes and Filters]({{ page.root }}/04-pipefilter/) section by showing that you\n" +" can redirect standard output to a file without the .txt extension\n" +" (e.g., lengths), and that the resulting file is still a perfectly usable text file.\n" +" Make the point that if double-clicked in the GUI, the computer will\n" +" probably ask you what you want to do." +msgstr "" + +#: shell-novice/_extras/guide.md:181 +# unordered list +msgid "* We have to leave out many important things because of time constraints," +msgstr "" + +#: shell-novice/_extras/guide.md:182 +msgid " including file permissions, job control, and SSH.\n" +" If learners already understand the basic material,\n" +" this can be covered instead using the online lessons as guidelines.\n" +" These limitations also have follow-on consequences:" +msgstr "" + +#: shell-novice/_extras/guide.md:187 +# unordered list +msgid "* It's hard to discuss `#!` (shebang) without first discussing" +msgstr "" + +#: shell-novice/_extras/guide.md:188 +msgid " permissions, which we don't do. `#!` is also [pretty\n" +" complicated][shebang], so even if we did discuss permissions, we\n" +" probably still wouldn't want to discuss `#!`." +msgstr "" + +#: shell-novice/_extras/guide.md:192 +# unordered list +msgid "* Installing Bash and a reasonable set of Unix commands on Windows" +msgstr "" + +#: shell-novice/_extras/guide.md:193 +msgid " always involves some fiddling and frustration.\n" +" Please see the latest set of installation guidelines for advice,\n" +" and try it out yourself *before* teaching a class." +msgstr "" + +#: shell-novice/_extras/guide.md:197 +# unordered list +msgid "* On Windows machines" +msgstr "" + +#: shell-novice/_extras/guide.md:198 +msgid " if `nano` hasn't been properly installed with the\n" +" [Software Carpentry Windows Installer][windows-installer]\n" +" it is possible to use `notepad` as an alternative. There will be a GUI\n" +" interface and line endings are treated differently, but otherwise, for\n" +" the purposes of this lesson, `notepad` and `nano` can be used almost interchangeably." +msgstr "" + +#: shell-novice/_extras/guide.md:204 +# unordered list +msgid "* On Windows, it appears that:" +msgstr "" + +#: shell-novice/_extras/guide.md:206 +msgid " ~~~\n" +" $ cd\n" +" $ cd Desktop\n" +" ~~~" +msgstr "" + +#: shell-novice/_extras/guide.md:212 +msgid " will always put someone on their desktop.\n" +" Have them create the example directory for the shell exercises there\n" +" so that they can find it easily\n" +" and watch it evolve." +msgstr "" + +#: shell-novice/_extras/guide.md:217 +# unordered list +msgid "* Stay within POSIX-compliant commands, as all the teaching materials do." +msgstr "" + +#: shell-novice/_extras/guide.md:218 +msgid " Your particular shell may have extensions beyond POSIX that are not available\n" +" on other machines, especially the default OSX bash and Windows bash emulators.\n" +" For example, POSIX `ls` does not have an `--ignore=` or `-I` option, and POSIX\n" +" `head` takes `-n 10` or `-10`, but not the long form of `--lines=10`." +msgstr "" + +#: shell-novice/_extras/guide.md:223 +# header +msgid "## Windows" +msgstr "" + +#: shell-novice/_extras/guide.md:225 +msgid "Installing Bash and a reasonable set of Unix commands on Windows\n" +"always involves some fiddling and frustration.\n" +"Please see the latest set of installation guidelines for advice,\n" +"and try it out yourself *before* teaching a class.\n" +"Options we have explored include:" +msgstr "" + +#: shell-novice/_extras/guide.md:231 +# ordered list +msgid "1. [msysGit](http://msysgit.github.io/) (also called \"Git Bash\")," +msgstr "" + +#: shell-novice/_extras/guide.md:232 +# ordered list +msgid "2. [Cygwin](http://www.cygwin.com/)," +msgstr "" + +#: shell-novice/_extras/guide.md:233 +# ordered list +msgid "3. using a desktop virtual machine, and" +msgstr "" + +#: shell-novice/_extras/guide.md:234 +# ordered list +msgid "4. having learners connect to a remote Unix machine (typically a VM in the cloud)." +msgstr "" + +#: shell-novice/_extras/guide.md:236 +msgid "Cygwin was the preferred option until mid-2013,\n" +"but once we started teaching Git,\n" +"msysGit proved to work better.\n" +"Desktop virtual machines and cloud-based VMs work well for technically sophisticated learners,\n" +"and can reduce installation and configuration at the start of the workshop,\n" +"but:" +msgstr "" + +#: shell-novice/_extras/guide.md:243 +# ordered list +msgid "1. they don't work well on underpowered machines," +msgstr "" + +#: shell-novice/_extras/guide.md:244 +# ordered list +msgid "2. they're confusing for novices (because simple things like copy and paste work differently)," +msgstr "" + +#: shell-novice/_extras/guide.md:245 +# ordered list +msgid "3. learners leave the workshop without a working environment on their operating system of choice, and" +msgstr "" + +#: shell-novice/_extras/guide.md:246 +# ordered list +msgid "4. learners may show up without having downloaded the VM or the wireless will go down (or become congested) during the lesson." +msgstr "" + +#: shell-novice/_extras/guide.md:248 +msgid "Whatever you use,\n" +"please *test it yourself* on a Windows machine *before* your workshop:\n" +"things may always have changed behind your back since your last workshop.\n" +"And please also make use of our\n" +"[Software Carpentry Windows Installer][windows-installer]." +msgstr "" + +#: shell-novice/_extras/guide.md:254 +msgid "[shebang]: http://www.in-ulm.de/~mascheck/various/shebang/\n" +"[windows-installer]: {{ site.swc_github }}/windows-installer" +msgstr "" + +#: shell-novice/_includes/links.md:1 +msgid "[cc-by-human]: https://creativecommons.org/licenses/by/4.0/\n" +"[cc-by-legal]: https://creativecommons.org/licenses/by/4.0/legalcode\n" +"[concept-maps]: http://carpentries.github.io/instructor-training/05-memory/\n" +"[email]: mailto:lessons@software-carpentry.org\n" +"[contrib-covenant]: http://contributor-covenant.org/\n" +"[contributing]: {{ site.github.repository_url }}/blob/gh-pages/CONTRIBUTING.md\n" +"[cran-checkpoint]: https://cran.r-project.org/web/packages/checkpoint/index.html\n" +"[cran-knitr]: https://cran.r-project.org/web/packages/knitr/index.html\n" +"[cran-stringr]: https://cran.r-project.org/web/packages/stringr/index.html\n" +"[github-importer]: https://import.github.com/\n" +"[importer]: https://github.com/new/import\n" +"[jekyll-collection]: https://jekyllrb.com/docs/collections/\n" +"[jekyll-install]: https://jekyllrb.com/docs/installation/\n" +"[jekyll-windows]: http://jekyll-windows.juthilo.com/\n" +"[jekyll]: https://jekyllrb.com/\n" +"[jupyter]: https://jupyter.org/\n" +"[mit-license]: http://opensource.org/licenses/mit-license.html\n" +"[morea]: https://morea-framework.github.io/\n" +"[numfocus]: http://numfocus.org/\n" +"[osi]: http://opensource.org\n" +"[pandoc]: https://pandoc.org/\n" +"[paper-now]: https://github.com/PeerJ/paper-now\n" +"[python-gapminder]: https://swcarpentry.github.io/python-novice-gapminder/\n" +"[pyyaml]: https://pypi.python.org/pypi/PyYAML\n" +"[r-markdown]: http://rmarkdown.rstudio.com/\n" +"[rstudio]: https://www.rstudio.com/\n" +"[ruby-install-guide]: https://www.ruby-lang.org/en/downloads/\n" +"[ruby-installer]: http://rubyinstaller.org/\n" +"[rubygems]: https://rubygems.org/pages/download/\n" +"[styles]: https://github.com/swcarpentry/styles/\n" +"[training]: http://swcarpentry.github.io/instructor-training/\n" +"[workshop-repo]: {{ site.workshop_repo }}\n" +"[yaml]: http://yaml.org/\n" +"[coc]: https://software-carpentry.org/conduct/\n" +"[coc-reporting]: https://software-carpentry.org/CoC-reporting/" +msgstr "" + +#: shell-novice/aio.md:1 +# Front Matter +msgid "---\n" +"layout: page \n" +"root: .\n" +"---" +msgstr "" + +#: shell-novice/aio.md:5 +# inline html +msgid "" +msgstr "" + +#: shell-novice/index.md:1 +# Front Matter +msgid "---\n" +"layout: lesson\n" +"root: .\n" +"---" +msgstr "" + +#: shell-novice/index.md:6 +msgid "The Unix shell has been around longer than most of its users have been alive.\n" +"It has survived so long because it's a power tool\n" +"that allows people to do complex things with just a few keystrokes.\n" +"More importantly,\n" +"it helps them combine existing programs in new ways\n" +"and automate repetitive tasks\n" +"so they aren't typing the same things over and over again.\n" +"Use of the shell is fundamental to using a wide range of other powerful tools \n" +"and computing resources (including \"high-performance computing\" supercomputers).\n" +"These lessons will start you on a path towards using these resources effectively." +msgstr "" + +#: shell-novice/index.md:17 +# blockquote, which can be cascaded +msgid "> ## Prerequisites" +msgstr "" + +#: shell-novice/index.md:18 +msgid ">\n" +"> This lesson guides you through the basics of file systems and the\n" +"> shell. If you have stored files on a computer at all and recognize\n" +"> the word “file” and either “directory” or “folder” (two common words\n" +"> for the same thing), you're ready for this lesson.\n" +">\n" +"> If you're already comfortable manipulating files and directories,\n" +"> searching for files with `grep` and `find`, and writing simple loops\n" +"> and scripts, you probably want to explore the next lesson: [shell-extras](swcarpentry.github.io/shell-extras)." +msgstr "" + +#: shell-novice/index.md:27 +# SC/DC Template label +msgid "{: .prereq}" +msgstr "" + +#: shell-novice/reference.md:1 +# Front Matter +msgid "---\n" +"layout: reference\n" +"permalink: /reference/\n" +"---" +msgstr "" + +#: shell-novice/reference.md:6 +# header +msgid "## Summary of Basic Commands" +msgstr "" + +#: shell-novice/reference.md:8 +msgid "| Action | Files | Folders |\n" +"|-------------|-------|--------------|\n" +"| Inspect | ls | ls |\n" +"| View content| cat | ls |\n" +"| Navigate to | | cd |\n" +"| Move | mv | mv |\n" +"| Copy | cp | cp -r |\n" +"| Create | nano | mkdir |\n" +"| Delete | rm | rmdir, rm -r |" +msgstr "" + +#: shell-novice/reference.md:18 +# header +msgid "## Filesystem hierarchy" +msgstr "" + +#: shell-novice/reference.md:20 +msgid "The following is an overview of a standard Unix filesystem.\n" +"The exact hierarchy depends on the platform,\n" +"so you may not see exactly the same files/directories on your computer:" +msgstr "" + +#: shell-novice/reference.md:24 +msgid "![Linux filesystem hierarchy](../fig/standard-filesystem-hierarchy.svg)" +msgstr "" + +#: shell-novice/reference.md:26 +# header +msgid "## Glossary" +msgstr "" + +#: shell-novice/reference.md:28 +msgid "{:auto_ids}\n" +"absolute path\n" +": A [path](#path) that refers to a particular location in a file system.\n" +" Absolute paths are usually written with respect to the file system's\n" +" [root directory](#root-directory),\n" +" and begin with either \"/\" (on Unix) or \"\\\\\" (on Microsoft Windows).\n" +" See also: [relative path](#relative-path)." +msgstr "" + +#: shell-novice/reference.md:36 +msgid "argument\n" +": A value given to a function or program when it runs.\n" +" The term is often used interchangeably (and inconsistently) with [parameter](#parameter)." +msgstr "" + +#: shell-novice/reference.md:40 +msgid "command shell\n" +": See [shell](#shell)" +msgstr "" + +#: shell-novice/reference.md:43 +msgid "command-line interface\n" +": A user interface based on typing commands,\n" +" usually at a [REPL](#read-evaluate-print-loop).\n" +" See also: [graphical user interface](#graphical-user-interface)." +msgstr "" + +#: shell-novice/reference.md:48 +msgid "comment\n" +": A remark in a program that is intended to help human readers understand what is going on,\n" +" but is ignored by the computer.\n" +" Comments in Python, R, and the Unix shell start with a `#` character and run to the end of the line;\n" +" comments in SQL start with `--`,\n" +" and other languages have other conventions." +msgstr "" + +#: shell-novice/reference.md:56 +msgid "current working directory\n" +": The directory that [relative paths](#relative-path) are calculated from;\n" +" equivalently,\n" +" the place where files referenced by name only are searched for.\n" +" Every [process](#process) has a current working directory.\n" +" The current working directory is usually referred to using the shorthand notation `.` (pronounced \"dot\")." +msgstr "" + +#: shell-novice/reference.md:63 +msgid "file system\n" +": A set of files, directories, and I/O devices (such as keyboards and screens).\n" +" A file system may be spread across many physical devices,\n" +" or many file systems may be stored on a single physical device;\n" +" the [operating system](#operating-system) manages access." +msgstr "" + +#: shell-novice/reference.md:69 +msgid "filename extension\n" +": The portion of a file's name that comes after the final \".\" character.\n" +" By convention this identifies the file's type:\n" +" `.txt` means \"text file\", `.png` means \"Portable Network Graphics file\",\n" +" and so on. These conventions are not enforced by most operating systems:\n" +" it is perfectly possible (but confusing!) to name an MP3 sound file `homepage.html`.\n" +" Since many applications use filename extensions to identify the [MIME type](#mime-type) of the file,\n" +" misnaming files may cause those applications to fail." +msgstr "" + +#: shell-novice/reference.md:78 +msgid "filter\n" +": A program that transforms a stream of data.\n" +" Many Unix command-line tools are written as filters:\n" +" they read data from [standard input](#standard-input),\n" +" process it, and write the result to [standard output](#standard-output)." +msgstr "" + +#: shell-novice/reference.md:84 +msgid "flag\n" +": A terse way to specify an option or setting to a command-line program.\n" +" By convention Unix applications use a dash followed by a single letter,\n" +" such as `-v`, or two dashes followed by a word, such as `--verbose`,\n" +" while DOS applications use a slash, such as `/V`.\n" +" Depending on the application, a flag may be followed by a single argument, as in `-o /tmp/output.txt`." +msgstr "" + +#: shell-novice/reference.md:91 +msgid "for loop\n" +": A loop that is executed once for each value in some kind of set, list, or range.\n" +" See also: [while loop](#while-loop)." +msgstr "" + +#: shell-novice/reference.md:95 +msgid "graphical user interface\n" +": A user interface based on selecting items and actions from a graphical display,\n" +" usually controlled by using a mouse.\n" +" See also: [command-line interface](#command-line-interface)." +msgstr "" + +#: shell-novice/reference.md:100 +msgid "home directory\n" +": The default directory associated with an account on a computer system.\n" +" By convention, all of a user's files are stored in or below her home directory." +msgstr "" + +#: shell-novice/reference.md:104 +msgid "loop\n" +": A set of instructions to be executed multiple times. Consists of a [loop body](#loop-body) and (usually) a\n" +" condition for exiting the loop. See also [for loop](#for-loop) and [while loop](#while-loop)." +msgstr "" + +#: shell-novice/reference.md:108 +msgid "loop body\n" +": The set of statements or commands that are repeated inside a [for loop](#for-loop)\n" +" or [while loop](#while-loop)." +msgstr "" + +#: shell-novice/reference.md:112 +msgid "MIME type\n" +": MIME (Multi-Purpose Internet Mail Extensions) types describe different file types for exchange on the Internet,\n" +" for example images, audio, and documents." +msgstr "" + +#: shell-novice/reference.md:116 +msgid "operating system\n" +": Software that manages interactions between users, hardware, and software [processes](#process). Common\n" +" examples are Linux, OS X, and Windows." +msgstr "" + +#: shell-novice/reference.md:120 +msgid "orthogonal\n" +": To have meanings or behaviors that are independent of each other.\n" +" If a set of concepts or tools are orthogonal,\n" +" they can be combined in any way." +msgstr "" + +#: shell-novice/reference.md:125 +msgid "parameter\n" +": A variable named in a function's declaration that is used to hold a value passed into the call.\n" +" The term is often used interchangeably (and inconsistently) with [argument](#argument)." +msgstr "" + +#: shell-novice/reference.md:129 +msgid "parent directory\n" +": The directory that \"contains\" the one in question.\n" +" Every directory in a file system except the [root directory](#root-directory) has a parent.\n" +" A directory's parent is usually referred to using the shorthand notation `..` (pronounced \"dot dot\")." +msgstr "" + +#: shell-novice/reference.md:134 +msgid "path\n" +": A description that specifies the location of a file or directory within a [file system](#file-system).\n" +" See also: [absolute path](#absolute-path), [relative path](#relative-path)." +msgstr "" + +#: shell-novice/reference.md:139 +msgid "pipe\n" +": A connection from the output of one program to the input of another.\n" +" When two or more programs are connected in this way, they are called a \"pipeline\"." +msgstr "" + +#: shell-novice/reference.md:143 +msgid "process\n" +": A running instance of a program, containing code, variable values,\n" +" open files and network connections, and so on.\n" +" Processes are the \"actors\" that the [operating system](#operating-system) manages;\n" +" it typically runs each process for a few milliseconds at a time\n" +" to give the impression that they are executing simultaneously." +msgstr "" + +#: shell-novice/reference.md:151 +msgid "prompt\n" +": A character or characters display by a [REPL](#read-evaluate-print-loop) to show that\n" +" it is waiting for its next command." +msgstr "" + +#: shell-novice/reference.md:155 +msgid "quoting\n" +": (in the shell):\n" +" Using quotation marks of various kinds to prevent the shell from interpreting special characters.\n" +" For example, to pass the string `*.txt` to a program,\n" +" it is usually necessary to write it as `'*.txt'` (with single quotes)\n" +" so that the shell will not try to expand the `*` wildcard." +msgstr "" + +#: shell-novice/reference.md:162 +msgid "read-evaluate-print loop\n" +": (REPL): A [command-line interface](#command-line-interface) that reads a command from the user,\n" +" executes it, prints the result, and waits for another command." +msgstr "" + +#: shell-novice/reference.md:166 +msgid "redirect\n" +": To send a command's output to a file rather than to the screen or another command,\n" +" or equivalently to read a command's input from a file." +msgstr "" + +#: shell-novice/reference.md:170 +msgid "regular expression\n" +": A pattern that specifies a set of character strings.\n" +" REs are most often used to find sequences of characters in strings." +msgstr "" + +#: shell-novice/reference.md:174 +msgid "relative path\n" +": A [path](#path) that specifies the location of a file or directory\n" +" with respect to the [current working directory](#current-working-directory).\n" +" Any path that does not begin with a separator character (\"/\" or \"\\\\\") is a relative path.\n" +" See also: [absolute path](#absolute-path)." +msgstr "" + +#: shell-novice/reference.md:180 +msgid "root directory\n" +": The top-most directory in a [file system](#file-system).\n" +" Its name is \"/\" on Unix (including Linux and Mac OS X) and \"\\\\\" on Microsoft Windows." +msgstr "" + +#: shell-novice/reference.md:184 +msgid "shell\n" +": A [command-line interface](#cli) such as Bash (the Bourne-Again Shell)\n" +" or the Microsoft Windows DOS shell\n" +" that allows a user to interact with the [operating system](#operating-system)." +msgstr "" + +#: shell-novice/reference.md:189 +msgid "shell script\n" +": A set of [shell](#shell) commands stored in a file for re-use.\n" +" A shell script is a program executed by the shell;\n" +" the name \"script\" is used for historical reasons." +msgstr "" + +#: shell-novice/reference.md:195 +msgid "standard input\n" +": A process's default input stream.\n" +" In interactive command-line applications,\n" +" it is typically connected to the keyboard;\n" +" in a [pipe](#pipe),\n" +" it receives data from the [standard output](#standard-output) of the preceding process." +msgstr "" + +#: shell-novice/reference.md:203 +msgid "standard output\n" +": A process's default output stream.\n" +" In interactive command-line applications,\n" +" data sent to standard output is displayed on the screen;\n" +" in a [pipe](#pipe),\n" +" it is passed to the [standard input](#standard-input) of the next process." +msgstr "" + +#: shell-novice/reference.md:211 +msgid "sub-directory\n" +": A directory contained within another directory." +msgstr "" + +#: shell-novice/reference.md:214 +msgid "tab completion\n" +": A feature provided by many interactive systems in which\n" +" pressing the Tab key triggers automatic completion of the current word or command." +msgstr "" + +#: shell-novice/reference.md:218 +msgid "variable\n" +": A name in a program that is associated with a value or a collection of values." +msgstr "" + +#: shell-novice/reference.md:221 +msgid "while loop\n" +": A loop that keeps executing as long as some condition is true.\n" +" See also: [for loop](#for-loop)." +msgstr "" + +#: shell-novice/reference.md:225 +msgid "wildcard\n" +": A character used in pattern matching.\n" +" In the Unix shell,\n" +" the wildcard `*` matches zero or more characters,\n" +" so that `*.txt` matches all files whose names end in `.txt`." +msgstr "" + +#: shell-novice/reference.md:231 +# header +msgid "## External references" +msgstr "" + +#: shell-novice/reference.md:233 +# header +msgid "### Opening a terminal" +msgstr "" + +#: shell-novice/reference.md:234 +# unordered list +msgid "* [How to Use Terminal on a Mac](http://www.macworld.co.uk/feature/mac-software/how-use-terminal-on-mac-3608274/)" +msgstr "" + +#: shell-novice/reference.md:235 +# unordered list +msgid "* [Git for Windows](https://git-for-windows.github.io/)" +msgstr "" + +#: shell-novice/reference.md:236 +# unordered list +msgid "* [How to Install Bash shell command-line tool on Windows 10](https://www.windowscentral.com/how-install-bash-shell-command-line-windows-10)" +msgstr "" + +#: shell-novice/reference.md:237 +# unordered list +msgid "* [Install and Use the Linux Bash Shell on Windows 10](https://www.howtogeek.com/249966/how-to-install-and-use-the-linux-bash-shell-on-windows-10/)" +msgstr "" + +#: shell-novice/reference.md:238 +# unordered list +msgid "* [Using the Windows 10 Bash Shell](https://www.howtogeek.com/265900/everything-you-can-do-with-windows-10s-new-bash-shell/)" +msgstr "" + +#: shell-novice/reference.md:239 +# unordered list +msgid "* [Using a UNIX/Linux emulator (Cygwin) or Secure Shell (SSH) client (Putty)](http://faculty.smu.edu/reynolds/unixtut/windows.html)" +msgstr "" + +#: shell-novice/reference.md:241 +# header +msgid "### Manuals" +msgstr "" + +#: shell-novice/reference.md:242 +# unordered list +msgid "* [GNU manuals](http://www.gnu.org/manual/manual.html)" +msgstr "" + +#: shell-novice/reference.md:243 +# unordered list +msgid "* [Core GNU utilities](http://www.gnu.org/software/coreutils/manual/coreutils.html)" +msgstr "" + +#: shell-novice/reference.md:245 +# header +msgid "### Miscellaneous" +msgstr "" + +#: shell-novice/reference.md:246 +# unordered list +msgid "* [North Pacific Gyre](http://en.wikipedia.org/wiki/North_Pacific_Gyre)" +msgstr "" + +#: shell-novice/reference.md:247 +# unordered list +msgid "* [Great Pacific Garbage Patch](http://en.wikipedia.org/wiki/Great_Pacific_Garbage_Patch)" +msgstr "" + +#: shell-novice/reference.md:248 +# unordered list +msgid "* ['Ensuring the longevity of digital information' by Jeff Rothenberg](http://www.clir.org/pubs/archives/ensuring.pdf)" +msgstr "" + +#: shell-novice/reference.md:249 +# unordered list +msgid "* [Computer error haikus](http://wiki.c2.com/?ComputerErrorHaiku)" +msgstr "" + +#: shell-novice/setup.md:1 +# Front Matter +msgid "---\n" +"layout: page\n" +"title: Setup\n" +"root: .\n" +"---" +msgstr "" + +#: shell-novice/setup.md:7 +msgid "You need to download some files to follow this lesson:" +msgstr "" + +#: shell-novice/setup.md:9 +# ordered list +msgid "1. Download [data-shell.zip]({{ page.root }}/data/data-shell.zip) and move the file to your Desktop." +msgstr "" + +#: shell-novice/setup.md:10 +# ordered list +msgid "2. Unzip/extract the file (ask your instructor if you need help with this step). You should end up with a new folder called **data-shell** on your Desktop." +msgstr "" + +#: shell-novice/setup.md:11 +# ordered list +msgid "3. Open a terminal and type `cd`, then press the Enter key. That last step will make sure you start with your home folder as your working directory." +msgstr "" + +#: shell-novice/setup.md:13 +msgid "In the lesson, you will find out how to access the data in this folder. " +msgstr "" + +#: shell-novice/setup.md:15 +# blockquote, which can be cascaded +msgid "> ## Where to type commands: How to open a new shell" +msgstr "" + +#: shell-novice/setup.md:16 +# blockquote, which can be cascaded +msgid "> The `shell` is a program that enables us to send commands to the computer and receive output. It is also referred to as the `terminal` or `command line`." +msgstr "" + +#: shell-novice/setup.md:17 +msgid ">\n" +"> Some computers include a default Unix Shell program. \n" +"> The steps below describe some methods for identifying and opening a Unix Shell program if you already have one installed. \n" +"> There are also options for identifying and downloading a Unix Shell program, a Linux/UNIX emulator, or a program to access a UNIX server. \n" +">\n" +"> If none of the options below address your circumstances, try an online search for: UNIX shell [your computer model] [your operating system].\n" +">\n" +"> ### Linux\n" +"> The default shell for Linux operating systems is usually Bash.\n" +"> On most versions of Linux, it is accessible by running the Terminal program,\n" +"> which can be found via the applications menu or the search bar. \n" +"> If your machine is set up to use something other than bash, you can run it by opening a terminal and typing `bash`.\n" +">\n" +"> ### Mac OS\n" +"> For a Mac computer, the default Unix Shell is Bash,\n" +"> and it is available via the Terminal Utilities program within your Applications folder.\n" +">\n" +"> To open Terminal, try one or both of the following:\n" +"> * Go to your Applications. Within Applications, open the Utilities folder. Locate Terminal in the Utilities folder and open it.\n" +"> * Use the Mac ‘Spotlight’ computer search function. Search for: Terminal and press [Enter] - this will open Terminal.\n" +">\n" +"> #### Reference \n" +"> [How to Use Terminal on a Mac](http://www.macworld.co.uk/feature/mac-software/how-use-terminal-on-mac-3608274/)\n" +">\n" +"> ### Windows\n" +"> Computers with Windows operating systems do not automatically have a Unix Shell program installed.\n" +"> In this lesson, we encourage you to use an emulator included in Git for Windows, \n" +"> which gives you access to both Bash shell commands and Git. \n" +"> If you are attending a SWC session, it is likely you have already received instructions on how to install Git for Windows.\n" +">\n" +"> Once installed, you can open a terminal by running the program Git Bash from the Windows start menu.\n" +">\n" +"> Other solutions are available for running Bash commands on Windows systems. \n" +"> There is now a Bash shell command-line tool available for Windows 10. \n" +"> Additionally, you can run Bash commands on a remote UNIX computer or server from your Windows machine. \n" +"> This can be done through a Secure Shell (SSH) client. \n" +"> One such client available for free for Windows computers is PuTTY. \n" +"> See the reference below for information on installing and using PuTTY, \n" +"> using the Windows 10 command-line tool, or installing and using a UNIX/Linux emulator.\n" +">\n" +"> #### Reference\n" +"> * [Git for Windows](https://git-for-windows.github.io/)\n" +"> * [How to Install Bash shell command-line tool on Windows 10](https://www.windowscentral.com/how-install-bash-shell-command-line-windows-10)\n" +"> * [Install and Use the Linux Bash Shell on Windows 10](https://www.howtogeek.com/249966/how-to-install-and-use-the-linux-bash-shell-on-windows-10/)\n" +"> * [Using the Windows 10 Bash Shell](https://www.howtogeek.com/265900/everything-you-can-do-with-windows-10s-new-bash-shell/)\n" +"> * [Using a UNIX/Linux emulator (Cygwin) or Secure Shell (SSH) client (Putty)](http://faculty.smu.edu/reynolds/unixtut/windows.html)" +msgstr "" + diff --git a/po/.ancestors/.sql-novice-survey.ja.po.ancestor b/po/.ancestors/.sql-novice-survey.ja.po.ancestor new file mode 100644 index 00000000..8d58540a --- /dev/null +++ b/po/.ancestors/.sql-novice-survey.ja.po.ancestor @@ -0,0 +1,5574 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: i18n\n" +"Report-Msgid-Bugs-To: https://github.com/haiwen/seafile-docs/issues\n" +"POT-Creation-Date: 2018-09-16 01:25:37+0900\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: sql-novice-survey/CODE_OF_CONDUCT.md:1 +#: sql-novice-survey/bin/boilerplate/CODE_OF_CONDUCT.md:1 +# Front Matter +msgid "---\n" +"layout: page\n" +"title: \"Contributor Code of Conduct\"\n" +"---" +msgstr "" + +#: sql-novice-survey/CODE_OF_CONDUCT.md:5 +#: sql-novice-survey/bin/boilerplate/CODE_OF_CONDUCT.md:5 +msgid "As contributors and maintainers of this project,\n" +"we pledge to follow the [Carpentry Code of Conduct][coc]." +msgstr "" + +#: sql-novice-survey/CODE_OF_CONDUCT.md:8 +#: sql-novice-survey/bin/boilerplate/CODE_OF_CONDUCT.md:8 +msgid "Instances of abusive, harassing, or otherwise unacceptable behavior\n" +"may be reported by following our [reporting guidelines][coc-reporting]." +msgstr "" + +#: sql-novice-survey/CODE_OF_CONDUCT.md:11 +#: sql-novice-survey/bin/boilerplate/CODE_OF_CONDUCT.md:11 +#: sql-novice-survey/bin/boilerplate/_episodes/01-introduction.md:14 +#: sql-novice-survey/bin/boilerplate/_extras/discuss.md:6 +#: sql-novice-survey/bin/boilerplate/_extras/figures.md:40 +#: sql-novice-survey/bin/boilerplate/_extras/guide.md:6 +#: sql-novice-survey/bin/boilerplate/index.md:13 +#: sql-novice-survey/bin/boilerplate/reference.md:9 +#: sql-novice-survey/bin/boilerplate/setup.md:7 +msgid "{% include links.md %}" +msgstr "" + +#: sql-novice-survey/CONTRIBUTING.md:1 +#: sql-novice-survey/bin/boilerplate/CONTRIBUTING.md:1 +# header +msgid "# Contributing" +msgstr "" + +#: sql-novice-survey/CONTRIBUTING.md:3 +#: sql-novice-survey/bin/boilerplate/CONTRIBUTING.md:3 +msgid "[Software Carpentry][swc-site] and [Data Carpentry][dc-site] are open source projects,\n" +"and we welcome contributions of all kinds:\n" +"new lessons,\n" +"fixes to existing material,\n" +"bug reports,\n" +"and reviews of proposed changes are all welcome." +msgstr "" + +#: sql-novice-survey/CONTRIBUTING.md:10 +#: sql-novice-survey/bin/boilerplate/CONTRIBUTING.md:10 +# header +msgid "## Contributor Agreement" +msgstr "" + +#: sql-novice-survey/CONTRIBUTING.md:12 +msgid "By contributing,\n" +"you agree that we may redistribute your work under [our license](LICENSE.md).\n" +"In exchange,\n" +"we will address your issues and/or assess your change proposal as promptly as we can,\n" +"and help you become a member of our community.\n" +"Everyone involved in [Software Carpentry][swc-site] and [Data Carpentry][dc-site]\n" +"agrees to abide by our [code of conduct](CONDUCT.md)." +msgstr "" + +#: sql-novice-survey/CONTRIBUTING.md:20 +#: sql-novice-survey/bin/boilerplate/CONTRIBUTING.md:20 +# header +msgid "## How to Contribute" +msgstr "" + +#: sql-novice-survey/CONTRIBUTING.md:22 +#: sql-novice-survey/bin/boilerplate/CONTRIBUTING.md:22 +msgid "The easiest way to get started is to file an issue\n" +"to tell us about a spelling mistake,\n" +"some awkward wording,\n" +"or a factual error.\n" +"This is a good way to introduce yourself\n" +"and to meet some of our community members." +msgstr "" + +#: sql-novice-survey/CONTRIBUTING.md:29 +#: sql-novice-survey/bin/boilerplate/CONTRIBUTING.md:29 +# ordered list +msgid "1. If you do not have a [GitHub][github] account," +msgstr "" + +#: sql-novice-survey/CONTRIBUTING.md:30 +msgid " you can [send us comments by email][contact].\n" +" However,\n" +" we will be able to respond more quickly if you use one of the other methods described below." +msgstr "" + +#: sql-novice-survey/CONTRIBUTING.md:34 +#: sql-novice-survey/bin/boilerplate/CONTRIBUTING.md:34 +# ordered list +msgid "2. If you have a [GitHub][github] account," +msgstr "" + +#: sql-novice-survey/CONTRIBUTING.md:35 +#: sql-novice-survey/bin/boilerplate/CONTRIBUTING.md:35 +msgid " or are willing to [create one][github-join],\n" +" but do not know how to use Git,\n" +" you can report problems or suggest improvements by [creating an issue][issues].\n" +" This allows us to assign the item to someone\n" +" and to respond to it in a threaded discussion." +msgstr "" + +#: sql-novice-survey/CONTRIBUTING.md:41 +#: sql-novice-survey/bin/boilerplate/CONTRIBUTING.md:41 +# ordered list +msgid "3. If you are comfortable with Git," +msgstr "" + +#: sql-novice-survey/CONTRIBUTING.md:42 +#: sql-novice-survey/bin/boilerplate/CONTRIBUTING.md:42 +msgid " and would like to add or change material,\n" +" you can submit a pull request (PR).\n" +" Instructions for doing this are [included below](#using-github)." +msgstr "" + +#: sql-novice-survey/CONTRIBUTING.md:46 +#: sql-novice-survey/bin/boilerplate/CONTRIBUTING.md:46 +# header +msgid "## Where to Contribute" +msgstr "" + +#: sql-novice-survey/CONTRIBUTING.md:48 +#: sql-novice-survey/bin/boilerplate/CONTRIBUTING.md:48 +# ordered list +msgid "1. If you wish to change this lesson," +msgstr "" + +#: sql-novice-survey/CONTRIBUTING.md:49 +msgid " please work in ,\n" +" which can be viewed at ." +msgstr "" + +#: sql-novice-survey/CONTRIBUTING.md:52 +#: sql-novice-survey/bin/boilerplate/CONTRIBUTING.md:52 +# ordered list +msgid "2. If you wish to change the example lesson," +msgstr "" + +#: sql-novice-survey/CONTRIBUTING.md:53 +#: sql-novice-survey/bin/boilerplate/CONTRIBUTING.md:53 +msgid " please work in ,\n" +" which documents the format of our lessons\n" +" and can be viewed at ." +msgstr "" + +#: sql-novice-survey/CONTRIBUTING.md:57 +#: sql-novice-survey/bin/boilerplate/CONTRIBUTING.md:57 +# ordered list +msgid "3. If you wish to change the template used for workshop websites," +msgstr "" + +#: sql-novice-survey/CONTRIBUTING.md:58 +#: sql-novice-survey/bin/boilerplate/CONTRIBUTING.md:58 +msgid " please work in .\n" +" The home page of that repository explains how to set up workshop websites,\n" +" while the extra pages in \n" +" provide more background on our design choices." +msgstr "" + +#: sql-novice-survey/CONTRIBUTING.md:63 +#: sql-novice-survey/bin/boilerplate/CONTRIBUTING.md:63 +# ordered list +msgid "4. If you wish to change CSS style files, tools," +msgstr "" + +#: sql-novice-survey/CONTRIBUTING.md:64 +#: sql-novice-survey/bin/boilerplate/CONTRIBUTING.md:64 +msgid " or HTML boilerplate for lessons or workshops stored in `_includes` or `_layouts`,\n" +" please work in ." +msgstr "" + +#: sql-novice-survey/CONTRIBUTING.md:67 +#: sql-novice-survey/bin/boilerplate/CONTRIBUTING.md:67 +# header +msgid "## What to Contribute" +msgstr "" + +#: sql-novice-survey/CONTRIBUTING.md:69 +msgid "There are many ways to contribute,\n" +"from writing new exercises and improving existing ones\n" +"to updating or filling in the documentation\n" +"and and submitting [bug reports][issues]\n" +"about things that don't work, aren't clear, or are missing.\n" +"If you are looking for ideas,\n" +"please see [the list of issues for this repository][issues],\n" +"or the issues for [Data Carpentry][dc-issues]\n" +"and [Software Carpentry][swc-issues] projects." +msgstr "" + +#: sql-novice-survey/CONTRIBUTING.md:79 +#: sql-novice-survey/bin/boilerplate/CONTRIBUTING.md:79 +msgid "Comments on issues and reviews of pull requests are just as welcome:\n" +"we are smarter together than we are on our own.\n" +"Reviews from novices and newcomers are particularly valuable:\n" +"it's easy for people who have been using these lessons for a while\n" +"to forget how impenetrable some of this material can be,\n" +"so fresh eyes are always welcome." +msgstr "" + +#: sql-novice-survey/CONTRIBUTING.md:86 +#: sql-novice-survey/bin/boilerplate/CONTRIBUTING.md:86 +# header +msgid "## What *Not* to Contribute" +msgstr "" + +#: sql-novice-survey/CONTRIBUTING.md:88 +#: sql-novice-survey/bin/boilerplate/CONTRIBUTING.md:88 +msgid "Our lessons already contain more material than we can cover in a typical workshop,\n" +"so we are usually *not* looking for more concepts or tools to add to them.\n" +"As a rule,\n" +"if you want to introduce a new idea,\n" +"you must (a) estimate how long it will take to teach\n" +"and (b) explain what you would take out to make room for it.\n" +"The first encourages contributors to be honest about requirements;\n" +"the second, to think hard about priorities." +msgstr "" + +#: sql-novice-survey/CONTRIBUTING.md:97 +#: sql-novice-survey/bin/boilerplate/CONTRIBUTING.md:97 +msgid "We are also not looking for exercises or other material that only run on one platform.\n" +"Our workshops typically contain a mixture of Windows, Mac OS X, and Linux users;\n" +"in order to be usable,\n" +"our lessons must run equally well on all three." +msgstr "" + +#: sql-novice-survey/CONTRIBUTING.md:102 +#: sql-novice-survey/bin/boilerplate/CONTRIBUTING.md:102 +# header +msgid "## Using GitHub" +msgstr "" + +#: sql-novice-survey/CONTRIBUTING.md:104 +msgid "If you choose to contribute via GitHub,\n" +"you may want to look at\n" +"[How to Contribute to an Open Source Project on GitHub][how-contribute].\n" +"In brief:" +msgstr "" + +#: sql-novice-survey/CONTRIBUTING.md:109 +# ordered list +msgid "1. The published copy of the lesson is in the `gh-pages` branch of the repository" +msgstr "" + +#: sql-novice-survey/CONTRIBUTING.md:110 +msgid " (so that GitHub will regenerate it automatically).\n" +" Please create all branches from that,\n" +" and merge the [master repository][repo]'s `gh-pages` branch into your `gh-pages` branch\n" +" before starting work.\n" +" Please do *not* work directly in your `gh-pages` branch,\n" +" since that will make it difficult for you to work on other contributions." +msgstr "" + +#: sql-novice-survey/CONTRIBUTING.md:117 +# ordered list +msgid "2. We use [GitHub flow][github-flow] to manage changes:" +msgstr "" + +#: sql-novice-survey/CONTRIBUTING.md:118 +msgid " 1. Create a new branch in your desktop copy of this repository for each significant change.\n" +" 2. Commit the change in that branch.\n" +" 3. Push that branch to your fork of this repository on GitHub.\n" +" 4. Submit a pull request from that branch to the [master repository][repo].\n" +" 5. If you receive feedback,\n" +" make changes on your desktop and push to your branch on GitHub:\n" +" the pull request will update automatically." +msgstr "" + +#: sql-novice-survey/CONTRIBUTING.md:126 +msgid "Each lesson has two maintainers who review issues and pull requests\n" +"or encourage others to do so.\n" +"The maintainers are community volunteers,\n" +"and have final say over what gets merged into the lesson." +msgstr "" + +#: sql-novice-survey/CONTRIBUTING.md:131 +#: sql-novice-survey/bin/boilerplate/CONTRIBUTING.md:129 +# header +msgid "## Other Resources" +msgstr "" + +#: sql-novice-survey/CONTRIBUTING.md:133 +msgid "General discussion of [Software Carpentry][swc-site] and [Data Carpentry][dc-site]\n" +"happens on the [discussion mailing list][discuss-list],\n" +"which everyone is welcome to join.\n" +"You can also [reach us by email][contact]." +msgstr "" + +#: sql-novice-survey/CONTRIBUTING.md:138 +msgid "[contact]: mailto:admin@software-carpentry.org\n" +"[dc-issues]: https://github.com/issues?q=user%3Adatacarpentry\n" +"[dc-lessons]: http://datacarpentry.org/lessons/\n" +"[dc-site]: http://datacarpentry.org/\n" +"[discuss-list]: http://lists.software-carpentry.org/listinfo/discuss\n" +"[example-site]: https://carpentries.github.io/lesson-example/\n" +"[github]: http://github.com\n" +"[github-flow]: https://guides.github.com/introduction/flow/\n" +"[github-join]: https://github.com/join\n" +"[how-contribute]: https://egghead.io/series/how-to-contribute-to-an-open-source-project-on-github\n" +"[issues]: https://github.com/swcarpentry/sql-novice-survey/issues/\n" +"[repo]: https://github.com/swcarpentry/sql-novice-survey/\n" +"[swc-issues]: https://github.com/issues?q=user%3Aswcarpentry\n" +"[swc-lessons]: http://software-carpentry.org/lessons/\n" +"[swc-site]: http://software-carpentry.org/" +msgstr "" + +#: sql-novice-survey/LICENSE.md:1 +# Front Matter +msgid "---\n" +"layout: page\n" +"title: \"Licenses\"\n" +"root: .\n" +"---" +msgstr "" + +#: sql-novice-survey/LICENSE.md:6 +# header +msgid "## Instructional Material" +msgstr "" + +#: sql-novice-survey/LICENSE.md:8 +msgid "All Software Carpentry and Data Carpentry instructional material is\n" +"made available under the [Creative Commons Attribution\n" +"license][cc-by-human]. The following is a human-readable summary of\n" +"(and not a substitute for) the [full legal text of the CC BY 4.0\n" +"license][cc-by-legal]." +msgstr "" + +#: sql-novice-survey/LICENSE.md:14 +msgid "You are free:" +msgstr "" + +#: sql-novice-survey/LICENSE.md:16 +# unordered list +msgid "* to **Share**---copy and redistribute the material in any medium or format" +msgstr "" + +#: sql-novice-survey/LICENSE.md:17 +# unordered list +msgid "* to **Adapt**---remix, transform, and build upon the material" +msgstr "" + +#: sql-novice-survey/LICENSE.md:19 +msgid "for any purpose, even commercially." +msgstr "" + +#: sql-novice-survey/LICENSE.md:21 +msgid "The licensor cannot revoke these freedoms as long as you follow the\n" +"license terms." +msgstr "" + +#: sql-novice-survey/LICENSE.md:24 +msgid "Under the following terms:" +msgstr "" + +#: sql-novice-survey/LICENSE.md:26 +# unordered list +msgid "* **Attribution**---You must give appropriate credit (mentioning that" +msgstr "" + +#: sql-novice-survey/LICENSE.md:27 +msgid " your work is derived from work that is Copyright © Software\n" +" Carpentry and, where practical, linking to\n" +" http://software-carpentry.org/), provide a [link to the\n" +" license][cc-by-human], and indicate if changes were made. You may do\n" +" so in any reasonable manner, but not in any way that suggests the\n" +" licensor endorses you or your use." +msgstr "" + +#: sql-novice-survey/LICENSE.md:34 +msgid "**No additional restrictions**---You may not apply legal terms or\n" +"technological measures that legally restrict others from doing\n" +"anything the license permits. With the understanding that:" +msgstr "" + +#: sql-novice-survey/LICENSE.md:38 +msgid "Notices:" +msgstr "" + +#: sql-novice-survey/LICENSE.md:40 +# unordered list +msgid "* You do not have to comply with the license for elements of the" +msgstr "" + +#: sql-novice-survey/LICENSE.md:41 +msgid " material in the public domain or where your use is permitted by an\n" +" applicable exception or limitation.\n" +"* No warranties are given. The license may not give you all of the\n" +" permissions necessary for your intended use. For example, other\n" +" rights such as publicity, privacy, or moral rights may limit how you\n" +" use the material." +msgstr "" + +#: sql-novice-survey/LICENSE.md:48 +# header +msgid "## Software" +msgstr "" + +#: sql-novice-survey/LICENSE.md:50 +msgid "Except where otherwise noted, the example programs and other software\n" +"provided by Software Carpentry and Data Carpentry are made available under the\n" +"[OSI][osi]-approved\n" +"[MIT license][mit-license]." +msgstr "" + +#: sql-novice-survey/LICENSE.md:55 +msgid "Permission is hereby granted, free of charge, to any person obtaining\n" +"a copy of this software and associated documentation files (the\n" +"\"Software\"), to deal in the Software without restriction, including\n" +"without limitation the rights to use, copy, modify, merge, publish,\n" +"distribute, sublicense, and/or sell copies of the Software, and to\n" +"permit persons to whom the Software is furnished to do so, subject to\n" +"the following conditions:" +msgstr "" + +#: sql-novice-survey/LICENSE.md:63 +msgid "The above copyright notice and this permission notice shall be\n" +"included in all copies or substantial portions of the Software." +msgstr "" + +#: sql-novice-survey/LICENSE.md:66 +msgid "THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n" +"EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n" +"MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n" +"NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\n" +"LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\n" +"OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\n" +"WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." +msgstr "" + +#: sql-novice-survey/LICENSE.md:74 +# header +msgid "## Trademark" +msgstr "" + +#: sql-novice-survey/LICENSE.md:76 +msgid "\"Software Carpentry\" and \"Data Carpentry\" and their respective logos\n" +"are registered trademarks of [Community Initiatives][CI]." +msgstr "" + +#: sql-novice-survey/LICENSE.md:79 +msgid "[cc-by-human]: https://creativecommons.org/licenses/by/4.0/\n" +"[cc-by-legal]: https://creativecommons.org/licenses/by/4.0/legalcode\n" +"[mit-license]: https://opensource.org/licenses/mit-license.html\n" +"[ci]: http://communityin.org/\n" +"[osi]: https://opensource.org" +msgstr "" + +#: sql-novice-survey/README.md:1 +msgid "[![Create a Slack Account with us](https://img.shields.io/badge/Create_Slack_Account-The_Carpentries-071159.svg)](https://swc-slack-invite.herokuapp.com/) \n" +" [![Slack Status](https://img.shields.io/badge/Slack_Channel-swc--sql-E01563.svg)](https://swcarpentry.slack.com/messages/C9X3YNVNY) " +msgstr "" + +#: sql-novice-survey/README.md:5 +msgid "sql-novice-survey\n" +"=================" +msgstr "" + +#: sql-novice-survey/README.md:8 +msgid "An introduction to databases and SQL using Antarctic survey data.\n" +"Please see for a rendered version of this material,\n" +"[the lesson template documentation][lesson-example]\n" +"for instructions on formatting, building, and submitting material,\n" +"or run `make` in this directory for a list of helpful commands." +msgstr "" + +#: sql-novice-survey/README.md:14 +msgid "Maintainer(s):" +msgstr "" + +#: sql-novice-survey/README.md:16 +# unordered list +msgid "* [Rémi Rampin](https://software-carpentry.org/team/#rampin_rmi)" +msgstr "" + +#: sql-novice-survey/README.md:17 +# unordered list +msgid "* [Henry Senyondo](https://software-carpentry.org/team/#senyondo_henry)" +msgstr "" + +#: sql-novice-survey/README.md:18 +# unordered list +msgid "* Jane Wyngaard" +msgstr "" + +#: sql-novice-survey/README.md:20 +msgid "[lesson-example]: https://carpentries.github.io/lesson-example/" +msgstr "" + +#: sql-novice-survey/_episodes/01-select.md:1 +# Front Matter +msgid "---\n" +"title: \"Selecting Data\"\n" +"teaching: 10\n" +"exercises: 5\n" +"questions:\n" +"- \"How can I get data from a database?\"\n" +"objectives:\n" +"- \"Explain the difference between a table, a record, and a field.\"\n" +"- \"Explain the difference between a database and a database manager.\"\n" +"- \"Write a query to select all values for specific fields from a single table.\"\n" +"keypoints:\n" +"- \"A relational database stores information in tables, each of which has a fixed set of columns and a variable number of records.\"\n" +"- \"A database manager is a program that manipulates information stored in a database.\"\n" +"- \"We write queries in a specialized language called SQL to extract information from databases.\"\n" +"- \"Use SELECT... FROM... to get values from a database table.\"\n" +"- \"SQL is case-insensitive (but data is case-sensitive).\"\n" +"---" +msgstr "" + +#: sql-novice-survey/_episodes/01-select.md:18 +msgid "A [relational database]({{ site.github.url }}/reference.html#relational-database)\n" +"is a way to store and manipulate information.\n" +"Databases are arranged as [tables]({{ site.github.url }}/reference.html#table).\n" +"Each table has columns (also known as [fields]({{ site.github.url }}/reference.html#fields)) that describe the data,\n" +"and rows (also known as [records]({{ site.github.url }}/reference.html#record)) which contain the data." +msgstr "" + +#: sql-novice-survey/_episodes/01-select.md:24 +msgid "When we are using a spreadsheet,\n" +"we put formulas into cells to calculate new values based on old ones.\n" +"When we are using a database,\n" +"we send commands\n" +"(usually called [queries]({{ site.github.url }}/reference.html#query))\n" +"to a [database manager]({{ site.github.url }}/reference.html#database-manager):\n" +"a program that manipulates the database for us.\n" +"The database manager does whatever lookups and calculations the query specifies,\n" +"returning the results in a tabular form\n" +"that we can then use as a starting point for further queries." +msgstr "" + +#: sql-novice-survey/_episodes/01-select.md:35 +# blockquote, which can be cascaded +msgid "> ## Changing Database Managers" +msgstr "" + +#: sql-novice-survey/_episodes/01-select.md:36 +msgid ">\n" +"> Every database manager --- Oracle,\n" +"> IBM DB2, PostgreSQL, MySQL, Microsoft Access, and SQLite --- stores\n" +"> data in a different way,\n" +"> so a database created with one cannot be used directly by another.\n" +"> However,\n" +"> every database manager can import and export data in a variety of formats, like .csv,\n" +"> so it *is* possible to move information from one to another." +msgstr "" + +#: sql-novice-survey/_episodes/01-select.md:44 +#: sql-novice-survey/_episodes/01-select.md:70 +#: sql-novice-survey/_episodes/01-select.md:204 +#: sql-novice-survey/_episodes/02-sort-dup.md:145 +#: sql-novice-survey/_episodes/03-filter.md:94 +#: sql-novice-survey/_episodes/03-filter.md:239 +#: sql-novice-survey/_episodes/09-create.md:177 +# SC/DC Template label +msgid "{: .callout}" +msgstr "" + +#: sql-novice-survey/_episodes/01-select.md:46 +msgid "Queries are written in a language called [SQL]({{ site.github.url }}/reference.html#sql),\n" +"which stands for \"Structured Query Language\".\n" +"SQL provides hundreds of different ways to analyze and recombine data.\n" +"We will only look at a handful of queries,\n" +"but that handful accounts for most of what scientists do." +msgstr "" + +#: sql-novice-survey/_episodes/01-select.md:52 +# blockquote, which can be cascaded +msgid "> ## Getting Into and Out Of SQLite" +msgstr "" + +#: sql-novice-survey/_episodes/01-select.md:53 +msgid ">\n" +"> In order to use the SQLite commands *interactively*, we need to\n" +"> enter into the SQLite console. So, open up a terminal, and run\n" +">\n" +"> ~~~\n" +"> $ cd /path/to/survey/data/\n" +"> $ sqlite3 survey.db\n" +"> ~~~" +msgstr "" + +#: sql-novice-survey/_episodes/01-select.md:61 +#: sql-novice-survey/_episodes/01-select.md:156 +#: sql-novice-survey/_episodes/01-select.md:167 +# SC/DC Template label +msgid "> {: .bash}" +msgstr "" + +#: sql-novice-survey/_episodes/01-select.md:62 +msgid ">\n" +"> The SQLite command is `sqlite3` and you are telling SQLite to open up\n" +"> the `survey.db`. You need to specify the `.db` file otherwise, SQLite\n" +"> will open up a temporary, empty database.\n" +">\n" +"> To get out of SQLite, type out `.exit` or `.quit`. For some\n" +"> terminals, `Ctrl-D` can also work. If you forget any SQLite `.` (dot)\n" +"> command, type `.help`." +msgstr "" + +#: sql-novice-survey/_episodes/01-select.md:72 +msgid "Before we get into using SQLite to select the data, let's take a look at the tables of the database we will use in our examples:" +msgstr "" + +#: sql-novice-survey/_episodes/01-select.md:74 +msgid "
\n" +"
" +msgstr "" + +#: sql-novice-survey/_episodes/01-select.md:77 +msgid "**Person**: people who took readings." +msgstr "" + +#: sql-novice-survey/_episodes/01-select.md:79 +msgid "|id |personal |family\n" +"|--------|---------|----------\n" +"|dyer |William |Dyer\n" +"|pb |Frank |Pabodie\n" +"|lake |Anderson |Lake\n" +"|roe |Valentina|Roerich\n" +"|danforth|Frank |Danforth" +msgstr "" + +#: sql-novice-survey/_episodes/01-select.md:87 +msgid "**Site**: locations where readings were taken." +msgstr "" + +#: sql-novice-survey/_episodes/01-select.md:89 +msgid "|name |lat |long |\n" +"|-----|------|-------|\n" +"|DR-1 |-49.85|-128.57|\n" +"|DR-3 |-47.15|-126.72|\n" +"|MSK-4|-48.87|-123.4 |" +msgstr "" + +#: sql-novice-survey/_episodes/01-select.md:95 +msgid "**Visited**: when readings were taken at specific sites." +msgstr "" + +#: sql-novice-survey/_episodes/01-select.md:97 +msgid "|id |site |dated |\n" +"|-----|-----|----------|\n" +"|619 |DR-1 |1927-02-08|\n" +"|622 |DR-1 |1927-02-10|\n" +"|734 |DR-3 |1930-01-07|\n" +"|735 |DR-3 |1930-01-12|\n" +"|751 |DR-3 |1930-02-26|\n" +"|752 |DR-3 |-null- |\n" +"|837 |MSK-4|1932-01-14|\n" +"|844 |DR-1 |1932-03-22|" +msgstr "" + +#: sql-novice-survey/_episodes/01-select.md:108 +msgid "
\n" +"
" +msgstr "" + +#: sql-novice-survey/_episodes/01-select.md:111 +msgid "**Survey**: the actual readings." +msgstr "" + +#: sql-novice-survey/_episodes/01-select.md:113 +msgid "|taken|person|quant|reading|\n" +"|-----|------|-----|-------|\n" +"|619 |dyer |rad |9.82 |\n" +"|619 |dyer |sal |0.13 |\n" +"|622 |dyer |rad |7.8 |\n" +"|622 |dyer |sal |0.09 |\n" +"|734 |pb |rad |8.41 |\n" +"|734 |lake |sal |0.05 |\n" +"|734 |pb |temp |-21.5 |\n" +"|735 |pb |rad |7.22 |\n" +"|735 |-null-|sal |0.06 |\n" +"|735 |-null-|temp |-26.0 |\n" +"|751 |pb |rad |4.35 |\n" +"|751 |pb |temp |-18.5 |\n" +"|751 |lake |sal |0.1 |\n" +"|752 |lake |rad |2.19 |\n" +"|752 |lake |sal |0.09 |\n" +"|752 |lake |temp |-16.0 |\n" +"|752 |roe |sal |41.6 |\n" +"|837 |lake |rad |1.46 |\n" +"|837 |lake |sal |0.21 |\n" +"|837 |roe |sal |22.5 |\n" +"|844 |roe |rad |11.25 |" +msgstr "" + +#: sql-novice-survey/_episodes/01-select.md:137 +msgid "
\n" +"
" +msgstr "" + +#: sql-novice-survey/_episodes/01-select.md:140 +msgid "Notice that three entries --- one in the `Visited` table,\n" +"and two in the `Survey` table --- don't contain any actual\n" +"data, but instead have a special `-null-` entry:\n" +"we'll return to these missing values [later]({{ site.github.url }}/05-null/)." +msgstr "" + +#: sql-novice-survey/_episodes/01-select.md:146 +# blockquote, which can be cascaded +msgid "> ## Checking If Data is Available" +msgstr "" + +#: sql-novice-survey/_episodes/01-select.md:147 +msgid ">\n" +"> On the shell command line,\n" +"> change the working directory to the one where you saved `survey.db`.\n" +"> If you saved it at your Desktop you should use\n" +">\n" +"> ~~~\n" +"> $ cd Desktop\n" +"> $ ls | grep survey.db\n" +"> ~~~" +msgstr "" + +#: sql-novice-survey/_episodes/01-select.md:157 +#: sql-novice-survey/_episodes/01-select.md:159 +#: sql-novice-survey/_episodes/01-select.md:168 +#: sql-novice-survey/_episodes/01-select.md:172 +#: sql-novice-survey/_episodes/01-select.md:186 +#: sql-novice-survey/_episodes/01-select.md:188 +# blockquote, which can be cascaded +msgid "> ~~~" +msgstr "" + +#: sql-novice-survey/_episodes/01-select.md:158 +# blockquote, which can be cascaded +msgid "> survey.db" +msgstr "" + +#: sql-novice-survey/_episodes/01-select.md:160 +#: sql-novice-survey/_episodes/01-select.md:173 +#: sql-novice-survey/_episodes/01-select.md:189 +#: sql-novice-survey/_episodes/09-create.md:203 +# SC/DC Template label +msgid "> {: .output}" +msgstr "" + +#: sql-novice-survey/_episodes/01-select.md:161 +msgid ">\n" +"> If you get the same output, you can run\n" +">\n" +"> ~~~\n" +"> $ sqlite3 survey.db\n" +"> ~~~" +msgstr "" + +#: sql-novice-survey/_episodes/01-select.md:169 +# blockquote, which can be cascaded +msgid "> SQLite version 3.8.8 2015-01-16 12:08:06" +msgstr "" + +#: sql-novice-survey/_episodes/01-select.md:170 +# blockquote, which can be cascaded +msgid "> Enter \".help\" for usage hints." +msgstr "" + +#: sql-novice-survey/_episodes/01-select.md:171 +# blockquote, which can be cascaded +msgid "> sqlite>" +msgstr "" + +#: sql-novice-survey/_episodes/01-select.md:174 +msgid ">\n" +"> that instructs SQLite to load the database in the `survey.db` file.\n" +">\n" +"> For a list of useful system commands, enter `.help`.\n" +">\n" +"> All SQLite-specific commands are prefixed with a `.` to distinguish them from SQL commands.\n" +"> Type `.tables` to list the tables in the database.\n" +">\n" +"> ~~~\n" +"> .tables\n" +"> ~~~" +msgstr "" + +#: sql-novice-survey/_episodes/01-select.md:185 +#: sql-novice-survey/_episodes/01-select.md:200 +#: sql-novice-survey/_episodes/01-select.md:352 +#: sql-novice-survey/_episodes/01-select.md:359 +#: sql-novice-survey/_episodes/03-filter.md:249 +#: sql-novice-survey/_episodes/04-calc.md:123 +#: sql-novice-survey/_episodes/04-calc.md:163 +#: sql-novice-survey/_episodes/05-null.md:225 +#: sql-novice-survey/_episodes/06-agg.md:377 +#: sql-novice-survey/_episodes/06-agg.md:394 +#: sql-novice-survey/_episodes/07-join.md:285 +# SC/DC Template label +msgid "> {: .sql}" +msgstr "" + +#: sql-novice-survey/_episodes/01-select.md:187 +# blockquote, which can be cascaded +msgid "> Person Site Survey Visited" +msgstr "" + +#: sql-novice-survey/_episodes/01-select.md:190 +msgid ">\n" +"> You can change some SQLite settings to make the output easier to read.\n" +"> First,\n" +"> set the output mode to display left-aligned columns.\n" +"> Then turn on the display of column headers.\n" +">\n" +"> ~~~\n" +"> .mode column\n" +"> .header on\n" +"> ~~~" +msgstr "" + +#: sql-novice-survey/_episodes/01-select.md:201 +msgid ">\n" +"> To exit SQLite and return to the shell command line,\n" +"> you can use either `.quit` or `.exit`." +msgstr "" + +#: sql-novice-survey/_episodes/01-select.md:206 +msgid "For now,\n" +"let's write an SQL query that displays scientists' names.\n" +"We do this using the SQL command `SELECT`,\n" +"giving it the names of the columns we want and the table we want them from.\n" +"Our query and its output look like this:" +msgstr "" + +#: sql-novice-survey/_episodes/01-select.md:212 +# code block +msgid "~~~\n" +"SELECT family, personal FROM Person;\n" +"~~~" +msgstr "" + +#: sql-novice-survey/_episodes/01-select.md:215 +#: sql-novice-survey/_episodes/01-select.md:236 +#: sql-novice-survey/_episodes/01-select.md:268 +#: sql-novice-survey/_episodes/01-select.md:285 +#: sql-novice-survey/_episodes/01-select.md:300 +#: sql-novice-survey/_episodes/01-select.md:316 +#: sql-novice-survey/_episodes/02-sort-dup.md:33 +#: sql-novice-survey/_episodes/02-sort-dup.md:67 +#: sql-novice-survey/_episodes/02-sort-dup.md:85 +#: sql-novice-survey/_episodes/02-sort-dup.md:125 +#: sql-novice-survey/_episodes/02-sort-dup.md:149 +#: sql-novice-survey/_episodes/02-sort-dup.md:174 +#: sql-novice-survey/_episodes/02-sort-dup.md:211 +#: sql-novice-survey/_episodes/03-filter.md:28 +#: sql-novice-survey/_episodes/03-filter.md:50 +#: sql-novice-survey/_episodes/03-filter.md:67 +#: sql-novice-survey/_episodes/03-filter.md:102 +#: sql-novice-survey/_episodes/03-filter.md:123 +#: sql-novice-survey/_episodes/03-filter.md:146 +#: sql-novice-survey/_episodes/03-filter.md:165 +#: sql-novice-survey/_episodes/03-filter.md:185 +#: sql-novice-survey/_episodes/03-filter.md:205 +#: sql-novice-survey/_episodes/04-calc.md:23 +#: sql-novice-survey/_episodes/04-calc.md:49 +#: sql-novice-survey/_episodes/04-calc.md:68 +#: sql-novice-survey/_episodes/04-calc.md:83 +#: sql-novice-survey/_episodes/05-null.md:33 +#: sql-novice-survey/_episodes/05-null.md:52 +#: sql-novice-survey/_episodes/05-null.md:65 +#: sql-novice-survey/_episodes/05-null.md:103 +#: sql-novice-survey/_episodes/05-null.md:110 +#: sql-novice-survey/_episodes/05-null.md:118 +#: sql-novice-survey/_episodes/05-null.md:129 +#: sql-novice-survey/_episodes/05-null.md:150 +#: sql-novice-survey/_episodes/05-null.md:171 +#: sql-novice-survey/_episodes/06-agg.md:25 +#: sql-novice-survey/_episodes/06-agg.md:47 +#: sql-novice-survey/_episodes/06-agg.md:58 +#: sql-novice-survey/_episodes/06-agg.md:73 +#: sql-novice-survey/_episodes/06-agg.md:82 +#: sql-novice-survey/_episodes/06-agg.md:91 +#: sql-novice-survey/_episodes/06-agg.md:112 +#: sql-novice-survey/_episodes/06-agg.md:124 +#: sql-novice-survey/_episodes/06-agg.md:146 +#: sql-novice-survey/_episodes/06-agg.md:170 +#: sql-novice-survey/_episodes/06-agg.md:181 +#: sql-novice-survey/_episodes/06-agg.md:198 +#: sql-novice-survey/_episodes/06-agg.md:215 +#: sql-novice-survey/_episodes/06-agg.md:235 +#: sql-novice-survey/_episodes/06-agg.md:263 +#: sql-novice-survey/_episodes/06-agg.md:292 +#: sql-novice-survey/_episodes/07-join.md:43 +#: sql-novice-survey/_episodes/07-join.md:95 +#: sql-novice-survey/_episodes/07-join.md:135 +#: sql-novice-survey/_episodes/07-join.md:163 +#: sql-novice-survey/_episodes/07-join.md:223 +#: sql-novice-survey/_episodes/09-create.md:39 +#: sql-novice-survey/_episodes/09-create.md:46 +#: sql-novice-survey/_episodes/09-create.md:87 +#: sql-novice-survey/_episodes/09-create.md:105 +#: sql-novice-survey/_episodes/09-create.md:113 +#: sql-novice-survey/_episodes/09-create.md:126 +#: sql-novice-survey/_episodes/09-create.md:143 +#: sql-novice-survey/_episodes/10-prog.md:135 +#: sql-novice-survey/_episodes/11-prog-R.md:110 +#: sql-novice-survey/_episodes/11-prog-R.md:120 +# SC/DC Template label +msgid "{: .sql}" +msgstr "" + +#: sql-novice-survey/_episodes/01-select.md:217 +#: sql-novice-survey/_episodes/01-select.md:238 +msgid "|family |personal |\n" +"|--------|---------|\n" +"|Dyer |William |\n" +"|Pabodie |Frank |\n" +"|Lake |Anderson |\n" +"|Roerich |Valentina|\n" +"|Danforth|Frank |" +msgstr "" + +#: sql-novice-survey/_episodes/01-select.md:225 +msgid "The semicolon at the end of the query\n" +"tells the database manager that the query is complete and ready to run.\n" +"We have written our commands in upper case and the names for the table and columns\n" +"in lower case,\n" +"but we don't have to:\n" +"as the example below shows,\n" +"SQL is [case insensitive]({{ site.github.url }}/reference.html#case-insensitive)." +msgstr "" + +#: sql-novice-survey/_episodes/01-select.md:233 +# code block +msgid "~~~\n" +"SeLeCt FaMiLy, PeRsOnAl FrOm PeRsOn;\n" +"~~~" +msgstr "" + +#: sql-novice-survey/_episodes/01-select.md:246 +msgid "You can use SQL's case insensitivity to your advantage. For instance,\n" +"some people choose to write SQL keywords (such as `SELECT` and `FROM`)\n" +"in capital letters and **field** and **table** names in lower\n" +"case. This can make it easier to locate parts of an SQL statement. For\n" +"instance, you can scan the statement, quickly locate the prominent\n" +"`FROM` keyword and know the table name follows. Whatever casing\n" +"convention you choose, please be consistent: complex queries are hard\n" +"enough to read without the extra cognitive load of random\n" +"capitalization. One convention is to use UPPER CASE for SQL\n" +"statements, to distinguish them from tables and column names. This is\n" +"the convention that we will use for this lesson." +msgstr "" + +#: sql-novice-survey/_episodes/01-select.md:258 +msgid "While we are on the topic of SQL's syntax, one aspect of SQL's syntax\n" +"that can frustrate novices and experts alike is forgetting to finish a\n" +"command with `;` (semicolon). When you press enter for a command\n" +"without adding the `;` to the end, it can look something like this:" +msgstr "" + +#: sql-novice-survey/_episodes/01-select.md:263 +# code block +msgid "~~~\n" +"SELECT id FROM Person\n" +"...>\n" +"...>\n" +"~~~" +msgstr "" + +#: sql-novice-survey/_episodes/01-select.md:270 +msgid "This is SQL's prompt, where it is waiting for additional commands or\n" +"for a `;` to let SQL know to finish. This is easy to fix! Just type\n" +"`;` and press enter!" +msgstr "" + +#: sql-novice-survey/_episodes/01-select.md:274 +msgid "Now, going back to our query,\n" +"it's important to understand that\n" +"the rows and columns in a database table aren't actually stored in any particular order.\n" +"They will always be *displayed* in some order,\n" +"but we can control that in various ways.\n" +"For example,\n" +"we could swap the columns in the output by writing our query as:" +msgstr "" + +#: sql-novice-survey/_episodes/01-select.md:282 +# code block +msgid "~~~\n" +"SELECT personal, family FROM Person;\n" +"~~~" +msgstr "" + +#: sql-novice-survey/_episodes/01-select.md:287 +msgid "|personal |family |\n" +"|---------|--------|\n" +"|William |Dyer |\n" +"|Frank |Pabodie |\n" +"|Anderson |Lake |\n" +"|Valentina|Roerich |\n" +"|Frank |Danforth|" +msgstr "" + +#: sql-novice-survey/_episodes/01-select.md:295 +msgid "or even repeat columns:" +msgstr "" + +#: sql-novice-survey/_episodes/01-select.md:297 +# code block +msgid "~~~\n" +"SELECT id, id, id FROM Person;\n" +"~~~" +msgstr "" + +#: sql-novice-survey/_episodes/01-select.md:302 +msgid "|id |id |id |\n" +"|--------|--------|--------|\n" +"|dyer |dyer |dyer |\n" +"|pb |pb |pb |\n" +"|lake |lake |lake |\n" +"|roe |roe |roe |\n" +"|danforth|danforth|danforth|" +msgstr "" + +#: sql-novice-survey/_episodes/01-select.md:310 +msgid "As a shortcut,\n" +"we can select all of the columns in a table using `*`:" +msgstr "" + +#: sql-novice-survey/_episodes/01-select.md:313 +# code block +msgid "~~~\n" +"SELECT * FROM Person;\n" +"~~~" +msgstr "" + +#: sql-novice-survey/_episodes/01-select.md:318 +msgid "|id |personal |family |\n" +"|--------|---------|--------|\n" +"|dyer |William |Dyer |\n" +"|pb |Frank |Pabodie |\n" +"|lake |Anderson |Lake |\n" +"|roe |Valentina|Roerich |\n" +"|danforth|Frank |Danforth|" +msgstr "" + +#: sql-novice-survey/_episodes/01-select.md:326 +# blockquote, which can be cascaded +msgid "> ## Selecting Site Names" +msgstr "" + +#: sql-novice-survey/_episodes/01-select.md:327 +msgid ">\n" +"> Write a query that selects only the `name` column from the `Site` table.\n" +">\n" +"> > ## Solution\n" +"> > \n" +"> > ~~~\n" +"> > SELECT name FROM Site;\n" +"> > ~~~\n" +"> > {: .sql}\n" +"> >\n" +"> > |name |\n" +"> > |----------|\n" +"> > |DR-1 |\n" +"> > |DR-3 |\n" +"> > |MSK-4 |" +msgstr "" + +#: sql-novice-survey/_episodes/01-select.md:342 +#: sql-novice-survey/_episodes/02-sort-dup.md:248 +#: sql-novice-survey/_episodes/02-sort-dup.md:270 +#: sql-novice-survey/_episodes/03-filter.md:264 +#: sql-novice-survey/_episodes/03-filter.md:284 +#: sql-novice-survey/_episodes/03-filter.md:304 +#: sql-novice-survey/_episodes/04-calc.md:113 +#: sql-novice-survey/_episodes/04-calc.md:152 +#: sql-novice-survey/_episodes/04-calc.md:186 +#: sql-novice-survey/_episodes/05-null.md:215 +#: sql-novice-survey/_episodes/06-agg.md:341 +#: sql-novice-survey/_episodes/06-agg.md:364 +#: sql-novice-survey/_episodes/08-hygiene.md:100 +#: sql-novice-survey/_episodes/08-hygiene.md:114 +#: sql-novice-survey/_episodes/09-create.md:189 +#: sql-novice-survey/_episodes/09-create.md:234 +#: sql-novice-survey/_episodes/10-prog.md:318 +#: sql-novice-survey/_episodes/10-prog.md:390 +# SC/DC Template label +msgid "> {: .solution}" +msgstr "" + +#: sql-novice-survey/_episodes/01-select.md:343 +#: sql-novice-survey/_episodes/01-select.md:362 +#: sql-novice-survey/_episodes/02-sort-dup.md:249 +#: sql-novice-survey/_episodes/02-sort-dup.md:271 +#: sql-novice-survey/_episodes/03-filter.md:265 +#: sql-novice-survey/_episodes/03-filter.md:285 +#: sql-novice-survey/_episodes/03-filter.md:305 +#: sql-novice-survey/_episodes/04-calc.md:114 +#: sql-novice-survey/_episodes/04-calc.md:153 +#: sql-novice-survey/_episodes/04-calc.md:187 +#: sql-novice-survey/_episodes/05-null.md:216 +#: sql-novice-survey/_episodes/05-null.md:229 +#: sql-novice-survey/_episodes/05-null.md:242 +#: sql-novice-survey/_episodes/06-agg.md:342 +#: sql-novice-survey/_episodes/06-agg.md:365 +#: sql-novice-survey/_episodes/06-agg.md:380 +#: sql-novice-survey/_episodes/06-agg.md:397 +#: sql-novice-survey/_episodes/07-join.md:254 +#: sql-novice-survey/_episodes/07-join.md:275 +#: sql-novice-survey/_episodes/07-join.md:286 +#: sql-novice-survey/_episodes/07-join.md:326 +#: sql-novice-survey/_episodes/08-hygiene.md:101 +#: sql-novice-survey/_episodes/08-hygiene.md:115 +#: sql-novice-survey/_episodes/09-create.md:190 +#: sql-novice-survey/_episodes/09-create.md:210 +#: sql-novice-survey/_episodes/09-create.md:235 +#: sql-novice-survey/_episodes/10-prog.md:319 +#: sql-novice-survey/_episodes/10-prog.md:391 +#: sql-novice-survey/_episodes/11-prog-R.md:181 +#: sql-novice-survey/_episodes/11-prog-R.md:190 +# SC/DC Template label +msgid "{: .challenge}" +msgstr "" + +#: sql-novice-survey/_episodes/01-select.md:345 +# blockquote, which can be cascaded +msgid "> ## Query Style" +msgstr "" + +#: sql-novice-survey/_episodes/01-select.md:346 +msgid ">\n" +"> Many people format queries as:\n" +">\n" +"> ~~~\n" +"> SELECT personal, family FROM person;\n" +"> ~~~" +msgstr "" + +#: sql-novice-survey/_episodes/01-select.md:353 +msgid ">\n" +"> or as:\n" +">\n" +"> ~~~\n" +"> select Personal, Family from PERSON;\n" +"> ~~~" +msgstr "" + +#: sql-novice-survey/_episodes/01-select.md:360 +msgid ">\n" +"> What style do you find easiest to read, and why?" +msgstr "" + +#: sql-novice-survey/_episodes/02-sort-dup.md:1 +# Front Matter +msgid "---\n" +"title: \"Sorting and Removing Duplicates\"\n" +"teaching: 10\n" +"exercises: 10\n" +"questions:\n" +"- \"How can I sort a query's results?\"\n" +"- \"How can I remove duplicate values from a query's results?\"\n" +"objectives:\n" +"- \"Write queries that display results in a particular order.\"\n" +"- \"Write queries that eliminate duplicate values from data.\"\n" +"keypoints:\n" +"- \"The records in a database table are not intrinsically ordered: if we want to display them in some order, we must specify that explicitly with ORDER BY.\"\n" +"- \"The values in a database are not guaranteed to be unique: if we want to eliminate duplicates, we must specify that explicitly as well using DISTINCT.\"\n" +"---" +msgstr "" + +#: sql-novice-survey/_episodes/02-sort-dup.md:15 +msgid "In beginning our examination of the Antarctic data, we want to know:" +msgstr "" + +#: sql-novice-survey/_episodes/02-sort-dup.md:17 +# unordered list +msgid "* what kind of quantity measurements were taken at each site;" +msgstr "" + +#: sql-novice-survey/_episodes/02-sort-dup.md:18 +# unordered list +msgid "* which scientists took measurements on the expedition;" +msgstr "" + +#: sql-novice-survey/_episodes/02-sort-dup.md:19 +# unordered list +msgid "* the sites where each scientist took measurements" +msgstr "" + +#: sql-novice-survey/_episodes/02-sort-dup.md:21 +msgid "To determine which measurements were taken at each site,\n" +"we can examine the `Survey` table.\n" +"Data is often redundant,\n" +"so queries often return redundant information.\n" +"For example,\n" +"if we select the quantities that have been measured\n" +"from the `Survey` table,\n" +"we get this:" +msgstr "" + +#: sql-novice-survey/_episodes/02-sort-dup.md:30 +# code block +msgid "~~~\n" +"SELECT quant FROM Survey;\n" +"~~~" +msgstr "" + +#: sql-novice-survey/_episodes/02-sort-dup.md:35 +msgid "|quant|\n" +"|-----|\n" +"|rad |\n" +"|sal |\n" +"|rad |\n" +"|sal |\n" +"|rad |\n" +"|sal |\n" +"|temp |\n" +"|rad |\n" +"|sal |\n" +"|temp |\n" +"|rad |\n" +"|temp |\n" +"|sal |\n" +"|rad |\n" +"|sal |\n" +"|temp |\n" +"|sal |\n" +"|rad |\n" +"|sal |\n" +"|sal |\n" +"|rad |" +msgstr "" + +#: sql-novice-survey/_episodes/02-sort-dup.md:59 +msgid "This result makes it difficult to see all of the different types of\n" +"`quant` in the Survey table. We can eliminate the redundant output to\n" +"make the result more readable by adding the `DISTINCT` keyword to our\n" +"query:" +msgstr "" + +#: sql-novice-survey/_episodes/02-sort-dup.md:64 +# code block +msgid "~~~\n" +"SELECT DISTINCT quant FROM Survey;\n" +"~~~" +msgstr "" + +#: sql-novice-survey/_episodes/02-sort-dup.md:69 +msgid "|quant|\n" +"|-----|\n" +"|rad |\n" +"|sal |\n" +"|temp |" +msgstr "" + +#: sql-novice-survey/_episodes/02-sort-dup.md:75 +msgid "If we want to determine which visit (stored in the `taken` column)\n" +"have which `quant` measurement,\n" +"we can use the `DISTINCT` keyword on multiple columns.\n" +"If we select more than one column,\n" +"distinct *sets* of values are returned\n" +"(in this case *pairs*, because we are selecting two columns):" +msgstr "" + +#: sql-novice-survey/_episodes/02-sort-dup.md:82 +# code block +msgid "~~~\n" +"SELECT DISTINCT taken, quant FROM Survey;\n" +"~~~" +msgstr "" + +#: sql-novice-survey/_episodes/02-sort-dup.md:87 +msgid "|taken|quant|\n" +"|-----|-----|\n" +"|619 |rad |\n" +"|619 |sal |\n" +"|622 |rad |\n" +"|622 |sal |\n" +"|734 |rad |\n" +"|734 |sal |\n" +"|734 |temp |\n" +"|735 |rad |\n" +"|735 |sal |\n" +"|735 |temp |\n" +"|751 |rad |\n" +"|751 |temp |\n" +"|751 |sal |\n" +"|752 |rad |\n" +"|752 |sal |\n" +"|752 |temp |\n" +"|837 |rad |\n" +"|837 |sal |\n" +"|844 |rad |" +msgstr "" + +#: sql-novice-survey/_episodes/02-sort-dup.md:109 +msgid "Notice in both cases that duplicates are removed\n" +"even if the rows they come from didn't appear to be adjacent in the database table." +msgstr "" + +#: sql-novice-survey/_episodes/02-sort-dup.md:113 +msgid "Our next task is to identify the scientists on the expedition by looking at the `Person` table.\n" +"As we mentioned earlier,\n" +"database records are not stored in any particular order.\n" +"This means that query results aren't necessarily sorted,\n" +"and even if they are,\n" +"we often want to sort them in a different way,\n" +"e.g., by their identifier instead of by their personal name.\n" +"We can do this in SQL by adding an `ORDER BY` clause to our query:" +msgstr "" + +#: sql-novice-survey/_episodes/02-sort-dup.md:122 +# code block +msgid "~~~\n" +"SELECT * FROM Person ORDER BY id;\n" +"~~~" +msgstr "" + +#: sql-novice-survey/_episodes/02-sort-dup.md:127 +msgid "|id |personal |family |\n" +"|-------|---------|--------|\n" +"|danfort|Frank |Danforth|\n" +"|dyer |William |Dyer |\n" +"|lake |Anderson |Lake |\n" +"|pb |Frank |Pabodie |\n" +"|roe |Valentina|Roerich |" +msgstr "" + +#: sql-novice-survey/_episodes/02-sort-dup.md:135 +msgid "By default, when we use ORDER BY\n" +"results are sorted in ascending order of the column we specify\n" +"(i.e.,\n" +"from least to greatest)." +msgstr "" + +#: sql-novice-survey/_episodes/02-sort-dup.md:140 +msgid "We can sort in the opposite order using `DESC` (for \"descending\"):" +msgstr "" + +#: sql-novice-survey/_episodes/02-sort-dup.md:142 +# blockquote, which can be cascaded +msgid "> ## A note on ordering" +msgstr "" + +#: sql-novice-survey/_episodes/02-sort-dup.md:143 +msgid ">\n" +"> While it may look that the records are consistent every time we ask for them in this lesson, that is because no one has changed or modified any of the data so far. Remember to use ORDER BY if you want the rows returned to have any sort of consistent or predictable order." +msgstr "" + +#: sql-novice-survey/_episodes/02-sort-dup.md:146 +# code block +msgid "~~~\n" +"SELECT * FROM person ORDER BY id DESC;\n" +"~~~" +msgstr "" + +#: sql-novice-survey/_episodes/02-sort-dup.md:151 +msgid "|id |personal |family |\n" +"|-------|---------|--------|\n" +"|roe |Valentina|Roerich |\n" +"|pb |Frank |Pabodie |\n" +"|lake |Anderson |Lake |\n" +"|dyer |William |Dyer |\n" +"|danfort|Frank |Danforth|" +msgstr "" + +#: sql-novice-survey/_episodes/02-sort-dup.md:159 +msgid "(And if we want to make it clear that we're sorting in ascending order,\n" +"we can use `ASC` instead of `DESC`.)" +msgstr "" + +#: sql-novice-survey/_episodes/02-sort-dup.md:163 +msgid "In order to look at which scientist measured quantities during each visit,\n" +"we can look again at the `Survey` table.\n" +"We can also sort on several fields at once.\n" +"For example,\n" +"this query sorts results first in ascending order by `taken`,\n" +"and then in descending order by `person`\n" +"within each group of equal `taken` values:" +msgstr "" + +#: sql-novice-survey/_episodes/02-sort-dup.md:171 +# code block +msgid "~~~\n" +"SELECT taken, person, quant FROM Survey ORDER BY taken ASC, person DESC;\n" +"~~~" +msgstr "" + +#: sql-novice-survey/_episodes/02-sort-dup.md:176 +msgid "|taken|person|quant|\n" +"|-----|------|-----|\n" +"|619 |dyer |rad |\n" +"|619 |dyer |sal |\n" +"|622 |dyer |rad |\n" +"|622 |dyer |sal |\n" +"|734 |pb |rad |\n" +"|734 |pb |temp |\n" +"|734 |lake |sal |\n" +"|735 |pb |rad |\n" +"|735 |-null-|sal |\n" +"|735 |-null-|temp |\n" +"|751 |pb |rad |\n" +"|751 |pb |temp |\n" +"|751 |lake |sal |\n" +"|752 |roe |sal |\n" +"|752 |lake |rad |\n" +"|752 |lake |sal |\n" +"|752 |lake |temp |\n" +"|837 |roe |sal |\n" +"|837 |lake |rad |\n" +"|837 |lake |sal |\n" +"|844 |roe |rad |" +msgstr "" + +#: sql-novice-survey/_episodes/02-sort-dup.md:200 +msgid "This query gives us a good idea of which scientist was involved in which visit,\n" +"and what measurements they performed during the visit." +msgstr "" + +#: sql-novice-survey/_episodes/02-sort-dup.md:203 +msgid "Looking at the table, it seems like some scientists specialized in\n" +"certain kinds of measurements. We can examine which scientists\n" +"performed which measurements by selecting the appropriate columns and\n" +"removing duplicates." +msgstr "" + +#: sql-novice-survey/_episodes/02-sort-dup.md:208 +# code block +msgid "~~~\n" +"SELECT DISTINCT quant, person FROM Survey ORDER BY quant ASC;\n" +"~~~" +msgstr "" + +#: sql-novice-survey/_episodes/02-sort-dup.md:213 +msgid "|quant|person|\n" +"|-----|------|\n" +"|rad |dyer |\n" +"|rad |pb |\n" +"|rad |lake |\n" +"|rad |roe |\n" +"|sal |dyer |\n" +"|sal |lake |\n" +"|sal |-null-|\n" +"|sal |roe |\n" +"|temp |pb |\n" +"|temp |-null-|\n" +"|temp |lake |" +msgstr "" + +#: sql-novice-survey/_episodes/02-sort-dup.md:227 +# blockquote, which can be cascaded +msgid "> ## Finding Distinct Dates" +msgstr "" + +#: sql-novice-survey/_episodes/02-sort-dup.md:228 +msgid ">\n" +"> Write a query that selects distinct dates from the `Visited` table.\n" +">\n" +"> > ## Solution\n" +"> > \n" +"> > ~~~\n" +"> > SELECT DISTINCT dated FROM Visited;\n" +"> > ~~~\n" +"> > {: .sql}\n" +"> >\n" +"> > |dated |\n" +"> > |----------|\n" +"> > |1927-02-08|\n" +"> > |1927-02-10|\n" +"> > |1930-01-07|\n" +"> > |1930-01-12|\n" +"> > |1930-02-26|\n" +"> > |  |\n" +"> > |1932-01-14|\n" +"> > |1932-03-22|" +msgstr "" + +#: sql-novice-survey/_episodes/02-sort-dup.md:251 +# blockquote, which can be cascaded +msgid "> ## Displaying Full Names" +msgstr "" + +#: sql-novice-survey/_episodes/02-sort-dup.md:252 +msgid ">\n" +"> Write a query that displays the full names of the scientists in the `Person` table,\n" +"> ordered by family name.\n" +">\n" +"> > ## Solution\n" +"> > \n" +"> > ~~~\n" +"> > SELECT personal, family FROM Person ORDER BY family ASC;\n" +"> > ~~~\n" +"> > {: .sql}\n" +"> >\n" +"> > |personal |family |\n" +"> > |----------|----------|\n" +"> > |Frank |Danforth |\n" +"> > |William |Dyer |\n" +"> > |Anderson |Lake |\n" +"> > |Frank |Pabodie |\n" +"> > |Valentina |Roerich |" +msgstr "" + +#: sql-novice-survey/_episodes/03-filter.md:1 +# Front Matter +msgid "---\n" +"title: \"Filtering\"\n" +"teaching: 10\n" +"exercises: 10\n" +"questions:\n" +"- \"How can I select subsets of data?\"\n" +"objectives:\n" +"- \"Write queries that select records that satisfy user-specified conditions.\"\n" +"- \"Explain the order in which the clauses in a query are executed.\"\n" +"keypoints:\n" +"- \"Use WHERE to specify conditions that records must meet in order to be included in a query's results.\"\n" +"- \"Use AND, OR, and NOT to combine tests.\"\n" +"- \"Filtering is done on whole records, so conditions can use fields that are not actually displayed.\"\n" +"- \"Write queries incrementally.\"\n" +"---" +msgstr "" + +#: sql-novice-survey/_episodes/03-filter.md:16 +msgid "One of the most powerful features of a database is\n" +"the ability to [filter]({{ site.github.url }}/reference.html#filter) data,\n" +"i.e.,\n" +"to select only those records that match certain criteria.\n" +"For example,\n" +"suppose we want to see when a particular site was visited.\n" +"We can select these records from the `Visited` table\n" +"by using a `WHERE` clause in our query:" +msgstr "" + +#: sql-novice-survey/_episodes/03-filter.md:25 +# code block +msgid "~~~\n" +"SELECT * FROM Visited WHERE site = 'DR-1';\n" +"~~~" +msgstr "" + +#: sql-novice-survey/_episodes/03-filter.md:30 +msgid "|id |site|dated |\n" +"|-----|----|----------|\n" +"|619 |DR-1|1927-02-08|\n" +"|622 |DR-1|1927-02-10|\n" +"|844 |DR-1|1932-03-22|" +msgstr "" + +#: sql-novice-survey/_episodes/03-filter.md:36 +msgid "The database manager executes this query in two stages.\n" +"First,\n" +"it checks at each row in the `Visited` table\n" +"to see which ones satisfy the `WHERE`.\n" +"It then uses the column names following the `SELECT` keyword\n" +"to determine which columns to display." +msgstr "" + +#: sql-novice-survey/_episodes/03-filter.md:43 +msgid "This processing order means that\n" +"we can filter records using `WHERE`\n" +"based on values in columns that aren't then displayed:" +msgstr "" + +#: sql-novice-survey/_episodes/03-filter.md:47 +# code block +msgid "~~~\n" +"SELECT id FROM Visited WHERE site = 'DR-1';\n" +"~~~" +msgstr "" + +#: sql-novice-survey/_episodes/03-filter.md:52 +msgid "|id |\n" +"|-----|\n" +"|619 |\n" +"|622 |\n" +"|844 |" +msgstr "" + +#: sql-novice-survey/_episodes/03-filter.md:58 +msgid "![SQL Filtering in Action](../fig/sql-filter.svg)" +msgstr "" + +#: sql-novice-survey/_episodes/03-filter.md:60 +msgid "We can use many other Boolean operators to filter our data.\n" +"For example,\n" +"we can ask for all information from the DR-1 site collected before 1930:" +msgstr "" + +#: sql-novice-survey/_episodes/03-filter.md:64 +# code block +msgid "~~~\n" +"SELECT * FROM Visited WHERE site = 'DR-1' AND dated < '1930-01-01';\n" +"~~~" +msgstr "" + +#: sql-novice-survey/_episodes/03-filter.md:69 +#: sql-novice-survey/_episodes/05-null.md:54 +msgid "|id |site|dated |\n" +"|-----|----|----------|\n" +"|619 |DR-1|1927-02-08|\n" +"|622 |DR-1|1927-02-10|" +msgstr "" + +#: sql-novice-survey/_episodes/03-filter.md:74 +# blockquote, which can be cascaded +msgid "> ## Date Types" +msgstr "" + +#: sql-novice-survey/_episodes/03-filter.md:75 +msgid ">\n" +"> Most database managers have a special data type for dates.\n" +"> In fact, many have two:\n" +"> one for dates,\n" +"> such as \"May 31, 1971\",\n" +"> and one for durations,\n" +"> such as \"31 days\".\n" +"> SQLite doesn't:\n" +"> instead,\n" +"> it stores dates as either text\n" +"> (in the ISO-8601 standard format \"YYYY-MM-DD HH:MM:SS.SSSS\"),\n" +"> real numbers\n" +"> ([Julian days](https://en.wikipedia.org/wiki/Julian_day), the number of days since November 24, 4714 BCE),\n" +"> or integers\n" +"> ([Unix time](https://en.wikipedia.org/wiki/Unix_time), the number of seconds since midnight, January 1, 1970).\n" +"> If this sounds complicated,\n" +"> it is,\n" +"> but not nearly as complicated as figuring out\n" +"> [historical dates in Sweden](https://en.wikipedia.org/wiki/Swedish_calendar)." +msgstr "" + +#: sql-novice-survey/_episodes/03-filter.md:96 +msgid "If we want to find out what measurements were taken by either Lake or Roerich,\n" +"we can combine the tests on their names using `OR`:" +msgstr "" + +#: sql-novice-survey/_episodes/03-filter.md:99 +# code block +msgid "~~~\n" +"SELECT * FROM Survey WHERE person = 'lake' OR person = 'roe';\n" +"~~~" +msgstr "" + +#: sql-novice-survey/_episodes/03-filter.md:104 +#: sql-novice-survey/_episodes/03-filter.md:125 +msgid "|taken|person|quant|reading|\n" +"|-----|------|-----|-------|\n" +"|734 |lake |sal |0.05 |\n" +"|751 |lake |sal |0.1 |\n" +"|752 |lake |rad |2.19 |\n" +"|752 |lake |sal |0.09 |\n" +"|752 |lake |temp |-16.0 |\n" +"|752 |roe |sal |41.6 |\n" +"|837 |lake |rad |1.46 |\n" +"|837 |lake |sal |0.21 |\n" +"|837 |roe |sal |22.5 |\n" +"|844 |roe |rad |11.25 |" +msgstr "" + +#: sql-novice-survey/_episodes/03-filter.md:117 +msgid "Alternatively,\n" +"we can use `IN` to see if a value is in a specific set:" +msgstr "" + +#: sql-novice-survey/_episodes/03-filter.md:120 +# code block +msgid "~~~\n" +"SELECT * FROM Survey WHERE person IN ('lake', 'roe');\n" +"~~~" +msgstr "" + +#: sql-novice-survey/_episodes/03-filter.md:138 +msgid "We can combine `AND` with `OR`,\n" +"but we need to be careful about which operator is executed first.\n" +"If we *don't* use parentheses,\n" +"we get this:" +msgstr "" + +#: sql-novice-survey/_episodes/03-filter.md:143 +# code block +msgid "~~~\n" +"SELECT * FROM Survey WHERE quant = 'sal' AND person = 'lake' OR person = 'roe';\n" +"~~~" +msgstr "" + +#: sql-novice-survey/_episodes/03-filter.md:148 +msgid "|taken|person|quant|reading|\n" +"|-----|------|-----|-------|\n" +"|734 |lake |sal |0.05 |\n" +"|751 |lake |sal |0.1 |\n" +"|752 |lake |sal |0.09 |\n" +"|752 |roe |sal |41.6 |\n" +"|837 |lake |sal |0.21 |\n" +"|837 |roe |sal |22.5 |\n" +"|844 |roe |rad |11.25 |" +msgstr "" + +#: sql-novice-survey/_episodes/03-filter.md:158 +msgid "which is salinity measurements by Lake,\n" +"and *any* measurement by Roerich.\n" +"We probably want this instead:" +msgstr "" + +#: sql-novice-survey/_episodes/03-filter.md:162 +# code block +msgid "~~~\n" +"SELECT * FROM Survey WHERE quant = 'sal' AND (person = 'lake' OR person = 'roe');\n" +"~~~" +msgstr "" + +#: sql-novice-survey/_episodes/03-filter.md:167 +msgid "|taken|person|quant|reading|\n" +"|-----|------|-----|-------|\n" +"|734 |lake |sal |0.05 |\n" +"|751 |lake |sal |0.1 |\n" +"|752 |lake |sal |0.09 |\n" +"|752 |roe |sal |41.6 |\n" +"|837 |lake |sal |0.21 |\n" +"|837 |roe |sal |22.5 |" +msgstr "" + +#: sql-novice-survey/_episodes/03-filter.md:176 +msgid "We can also filter by partial matches. For example, if we want to\n" +"know something just about the site names beginning with \"DR\" we can\n" +"use the `LIKE` keyword. The percent symbol acts as a\n" +"[wildcard]({{ site.github.url }}/reference.html#wildcard), matching any characters in that\n" +"place. It can be used at the beginning, middle, or end of the string:" +msgstr "" + +#: sql-novice-survey/_episodes/03-filter.md:182 +# code block +msgid "~~~\n" +"SELECT * FROM Visited WHERE site LIKE 'DR%';\n" +"~~~" +msgstr "" + +#: sql-novice-survey/_episodes/03-filter.md:187 +msgid "|id |site |dated |\n" +"|-----|-----|----------|\n" +"|619 |DR-1 |1927-02-08|\n" +"|622 |DR-1 |1927-02-10|\n" +"|734 |DR-3 |1930-01-07|\n" +"|735 |DR-3 |1930-01-12|\n" +"|751 |DR-3 |1930-02-26|\n" +"|752 |DR-3 | |\n" +"|844 |DR-1 |1932-03-22|" +msgstr "" + +#: sql-novice-survey/_episodes/03-filter.md:198 +msgid "Finally,\n" +"we can use `DISTINCT` with `WHERE`\n" +"to give a second level of filtering:" +msgstr "" + +#: sql-novice-survey/_episodes/03-filter.md:202 +# code block +msgid "~~~\n" +"SELECT DISTINCT person, quant FROM Survey WHERE person = 'lake' OR person = 'roe';\n" +"~~~" +msgstr "" + +#: sql-novice-survey/_episodes/03-filter.md:207 +msgid "|person|quant|\n" +"|------|-----|\n" +"|lake |sal |\n" +"|lake |rad |\n" +"|lake |temp |\n" +"|roe |sal |\n" +"|roe |rad |" +msgstr "" + +#: sql-novice-survey/_episodes/03-filter.md:215 +msgid "But remember:\n" +"`DISTINCT` is applied to the values displayed in the chosen columns,\n" +"not to the entire rows as they are being processed." +msgstr "" + +#: sql-novice-survey/_episodes/03-filter.md:219 +# blockquote, which can be cascaded +msgid "> ## Growing Queries" +msgstr "" + +#: sql-novice-survey/_episodes/03-filter.md:220 +msgid ">\n" +"> What we have just done is how most people \"grow\" their SQL queries.\n" +"> We started with something simple that did part of what we wanted,\n" +"> then added more clauses one by one,\n" +"> testing their effects as we went.\n" +"> This is a good strategy --- in fact,\n" +"> for complex queries it's often the *only* strategy --- but\n" +"> it depends on quick turnaround,\n" +"> and on us recognizing the right answer when we get it.\n" +">\n" +"> The best way to achieve quick turnaround is often\n" +"> to put a subset of data in a temporary database\n" +"> and run our queries against that,\n" +"> or to fill a small database with synthesized records.\n" +"> For example,\n" +"> instead of trying our queries against an actual database of 20 million Australians,\n" +"> we could run it against a sample of ten thousand,\n" +"> or write a small program to generate ten thousand random (but plausible) records\n" +"> and use that." +msgstr "" + +#: sql-novice-survey/_episodes/03-filter.md:241 +# blockquote, which can be cascaded +msgid "> ## Fix This Query" +msgstr "" + +#: sql-novice-survey/_episodes/03-filter.md:242 +msgid ">\n" +"> Suppose we want to select all sites that lie more than 42 degrees from the poles.\n" +"> Our first query is:\n" +">\n" +"> ~~~\n" +"> SELECT * FROM Site WHERE (lat > -48) OR (lat < 48);\n" +"> ~~~" +msgstr "" + +#: sql-novice-survey/_episodes/03-filter.md:250 +msgid ">\n" +"> Explain why this is wrong,\n" +"> and rewrite the query so that it is correct.\n" +">\n" +"> > ## Solution\n" +"> >\n" +"> > Because we used `OR`, a site on the South Pole for example will still meet \n" +"> > the second criteria and thus be included. Instead, we want to restrict this\n" +"> > to sites that meet _both_ criteria:\n" +"> >\n" +"> > ~~~\n" +"> > SELECT * FROM Site WHERE (lat > -48) AND (lat < 48);\n" +"> > ~~~\n" +"> > {: .sql}" +msgstr "" + +#: sql-novice-survey/_episodes/03-filter.md:267 +# blockquote, which can be cascaded +msgid "> ## Finding Outliers" +msgstr "" + +#: sql-novice-survey/_episodes/03-filter.md:268 +msgid ">\n" +"> Normalized salinity readings are supposed to be between 0.0 and 1.0.\n" +"> Write a query that selects all records from `Survey`\n" +"> with salinity values outside this range.\n" +">\n" +"> > ## Solution\n" +"> >\n" +"> > ~~~\n" +"> > SELECT * FROM Survey WHERE quant = 'sal' AND ((reading > 1.0) OR (reading < 0.0));\n" +"> > ~~~\n" +"> > {: .sql}\n" +"> >\n" +"> > |taken |person |quant |reading |\n" +"> > |----------|----------|----------|----------|\n" +"> > |752 |roe |sal |41.6 |\n" +"> > |837 |roe |sal |22.5 |" +msgstr "" + +#: sql-novice-survey/_episodes/03-filter.md:287 +# blockquote, which can be cascaded +msgid "> ## Matching Patterns" +msgstr "" + +#: sql-novice-survey/_episodes/03-filter.md:288 +msgid ">\n" +"> Which of these expressions are true?\n" +">\n" +"> 1. `'a' LIKE 'a'`\n" +"> 2. `'a' LIKE '%a'`\n" +"> 3. `'beta' LIKE '%a'`\n" +"> 4. `'alpha' LIKE 'a%%'`\n" +"> 5. `'alpha' LIKE 'a%p%'`\n" +">\n" +"> > ## Solution\n" +"> >\n" +"> > 1. True because these are the same character.\n" +"> > 2. True because the wildcard can match _zero_ or more characters.\n" +"> > 3. True because the `%` matches `bet` and the `a` matches the `a`.\n" +"> > 4. True because the first wildcard matches `lpha` and the second wildcard matches zero characters (or vice versa).\n" +"> > 5. True because the first wildcard matches `l` and the second wildcard matches `ha`." +msgstr "" + +#: sql-novice-survey/_episodes/04-calc.md:1 +# Front Matter +msgid "---\n" +"title: \"Calculating New Values\"\n" +"teaching: 5\n" +"exercises: 5\n" +"questions:\n" +"- \"How can I calculate new values on the fly?\"\n" +"objectives:\n" +"- \"Write queries that calculate new values for each selected record.\"\n" +"keypoints:\n" +"- \"Queries can do the usual arithmetic operations on values.\"\n" +"- \"Use UNION to combine the results of two or more queries.\"\n" +"---" +msgstr "" + +#: sql-novice-survey/_episodes/04-calc.md:13 +msgid "After carefully re-reading the expedition logs,\n" +"we realize that the radiation measurements they report\n" +"may need to be corrected upward by 5%.\n" +"Rather than modifying the stored data,\n" +"we can do this calculation on the fly\n" +"as part of our query:" +msgstr "" + +#: sql-novice-survey/_episodes/04-calc.md:20 +# code block +msgid "~~~\n" +"SELECT 1.05 * reading FROM Survey WHERE quant = 'rad';\n" +"~~~" +msgstr "" + +#: sql-novice-survey/_episodes/04-calc.md:25 +msgid "|1.05 * reading|\n" +"|--------------|\n" +"|10.311 |\n" +"|8.19 |\n" +"|8.8305 |\n" +"|7.581 |\n" +"|4.5675 |\n" +"|2.2995 |\n" +"|1.533 |\n" +"|11.8125 |" +msgstr "" + +#: sql-novice-survey/_episodes/04-calc.md:36 +msgid "When we run the query,\n" +"the expression `1.05 * reading` is evaluated for each row.\n" +"Expressions can use any of the fields,\n" +"all of usual arithmetic operators,\n" +"and a variety of common functions.\n" +"(Exactly which ones depends on which database manager is being used.)\n" +"For example,\n" +"we can convert temperature readings from Fahrenheit to Celsius\n" +"and round to two decimal places:" +msgstr "" + +#: sql-novice-survey/_episodes/04-calc.md:46 +# code block +msgid "~~~\n" +"SELECT taken, round(5 * (reading - 32) / 9, 2) FROM Survey WHERE quant = 'temp';\n" +"~~~" +msgstr "" + +#: sql-novice-survey/_episodes/04-calc.md:51 +msgid "|taken|round(5*(reading-32)/9, 2)|\n" +"|-----|--------------------------|\n" +"|734 |-29.72 |\n" +"|735 |-32.22 |\n" +"|751 |-28.06 |\n" +"|752 |-26.67 |" +msgstr "" + +#: sql-novice-survey/_episodes/04-calc.md:58 +msgid "As you can see from this example, though, the string describing our\n" +"new field (generated from the equation) can become quite unwieldy. SQL\n" +"allows us to rename our fields, any field for that matter, whether it\n" +"was calculated or one of the existing fields in our database, for\n" +"succinctness and clarity. For example, we could write the previous\n" +"query as:" +msgstr "" + +#: sql-novice-survey/_episodes/04-calc.md:65 +# code block +msgid "~~~\n" +"SELECT taken, round(5 * (reading - 32) / 9, 2) as Celsius FROM Survey WHERE quant = 'temp';\n" +"~~~" +msgstr "" + +#: sql-novice-survey/_episodes/04-calc.md:70 +msgid "|taken|Celsius|\n" +"|-----|-------|\n" +"|734 |-29.72 |\n" +"|735 |-32.22 |\n" +"|751 |-28.06 |\n" +"|752 |-26.67 |" +msgstr "" + +#: sql-novice-survey/_episodes/04-calc.md:77 +msgid "We can also combine values from different fields,\n" +"for example by using the string concatenation operator `||`:" +msgstr "" + +#: sql-novice-survey/_episodes/04-calc.md:80 +# code block +msgid "~~~\n" +"SELECT personal || ' ' || family FROM Person;\n" +"~~~" +msgstr "" + +#: sql-novice-survey/_episodes/04-calc.md:85 +msgid "|personal || ' ' || family|\n" +"|-------------------------|\n" +"|William Dyer |\n" +"|Frank Pabodie |\n" +"|Anderson Lake |\n" +"|Valentina Roerich |\n" +"|Frank Danforth |" +msgstr "" + +#: sql-novice-survey/_episodes/04-calc.md:93 +# blockquote, which can be cascaded +msgid "> ## Fixing Salinity Readings" +msgstr "" + +#: sql-novice-survey/_episodes/04-calc.md:94 +msgid ">\n" +"> After further reading,\n" +"> we realize that Valentina Roerich\n" +"> was reporting salinity as percentages.\n" +"> Write a query that returns all of her salinity measurements\n" +"> from the `Survey` table\n" +"> with the values divided by 100.\n" +"> \n" +"> > ## Solution\n" +"> >\n" +"> > ~~~\n" +"> > SELECT taken, reading / 100 FROM Survey WHERE person = 'roe' AND quant = 'sal';\n" +"> > ~~~\n" +"> > {: .sql}\n" +"> >\n" +"> > |taken |reading / 100|\n" +"> > |----------|-------------|\n" +"> > |752 |0.416 |\n" +"> > |837 |0.225 |" +msgstr "" + +#: sql-novice-survey/_episodes/04-calc.md:116 +# blockquote, which can be cascaded +msgid "> ## Unions" +msgstr "" + +#: sql-novice-survey/_episodes/04-calc.md:117 +msgid ">\n" +"> The `UNION` operator combines the results of two queries:\n" +">\n" +"> ~~~\n" +"> SELECT * FROM Person WHERE id = 'dyer' UNION SELECT * FROM Person WHERE id = 'roe';\n" +"> ~~~" +msgstr "" + +#: sql-novice-survey/_episodes/04-calc.md:124 +msgid ">\n" +"> |id |personal |family |\n" +"> |----|-------- |-------|\n" +"> |dyer|William |Dyer |\n" +"> |roe |Valentina|Roerich|\n" +">\n" +"> Use `UNION` to create a consolidated list of salinity measurements\n" +"> in which Valentina Roerich's, and only Valentina's,\n" +"> have been corrected as described in the previous challenge.\n" +"> The output should be something like:\n" +">\n" +"> |taken|reading|\n" +"> |-----|-------|\n" +"> |619 |0.13 |\n" +"> |622 |0.09 |\n" +"> |734 |0.05 |\n" +"> |751 |0.1 |\n" +"> |752 |0.09 |\n" +"> |752 |0.416 |\n" +"> |837 |0.21 |\n" +"> |837 |0.225 |\n" +"> \n" +"> > ## Solution\n" +"> >\n" +"> > ~~~\n" +"> > SELECT taken, reading FROM Survey WHERE person != 'roe' AND quant = 'sal' UNION SELECT taken, reading / 100 FROM Survey WHERE person = 'roe' AND quant = 'sal' ORDER BY taken ASC;\n" +"> > ~~~\n" +"> > {: .sql}" +msgstr "" + +#: sql-novice-survey/_episodes/04-calc.md:155 +# blockquote, which can be cascaded +msgid "> ## Selecting Major Site Identifiers" +msgstr "" + +#: sql-novice-survey/_episodes/04-calc.md:156 +msgid ">\n" +"> The site identifiers in the `Visited` table have two parts\n" +"> separated by a '-':\n" +">\n" +"> ~~~\n" +"> SELECT DISTINCT site FROM Visited;\n" +"> ~~~" +msgstr "" + +#: sql-novice-survey/_episodes/04-calc.md:164 +msgid ">\n" +"> |site |\n" +"> |-----|\n" +"> |DR-1 |\n" +"> |DR-3 |\n" +"> |MSK-4|\n" +">\n" +"> Some major site identifiers (i.e. the letter codes) are two letters long and some are three.\n" +"> The \"in string\" function `instr(X, Y)`\n" +"> returns the 1-based index of the first occurrence of string Y in string X,\n" +"> or 0 if Y does not exist in X.\n" +"> The substring function `substr(X, I, [L])`\n" +"> returns the substring of X starting at index I, with an optional length L.\n" +"> Use these two functions to produce a list of unique major site identifiers.\n" +"> (For this data,\n" +"> the list should contain only \"DR\" and \"MSK\").\n" +">\n" +"> > ## Solution\n" +"> > ```\n" +"> > SELECT DISTINCT substr(site, 1, instr(site, '-') - 1) AS MajorSite FROM Visited;\n" +"> > ```\n" +"> > {: .sql}" +msgstr "" + +#: sql-novice-survey/_episodes/05-null.md:1 +# Front Matter +msgid "---\n" +"title: \"Missing Data\"\n" +"teaching: 15\n" +"exercises: 15\n" +"questions:\n" +"- \"How do databases represent missing information?\"\n" +"- \"What special handling does missing information require?\"\n" +"objectives:\n" +"- \"Explain how databases represent missing information.\"\n" +"- \"Explain the three-valued logic databases use when manipulating missing information.\"\n" +"- \"Write queries that handle missing information correctly.\"\n" +"keypoints:\n" +"- \"Databases use a special value called NULL to represent missing information.\"\n" +"- \"Almost all operations on NULL produce NULL.\"\n" +"- \"Queries can test for NULLs using IS NULL and IS NOT NULL.\"\n" +"---" +msgstr "" + +#: sql-novice-survey/_episodes/05-null.md:17 +msgid "Real-world data is never complete --- there are always holes.\n" +"Databases represent these holes using a special value called `null`.\n" +"`null` is not zero, `False`, or the empty string;\n" +"it is a one-of-a-kind value that means \"nothing here\".\n" +"Dealing with `null` requires a few special tricks\n" +"and some careful thinking." +msgstr "" + +#: sql-novice-survey/_episodes/05-null.md:24 +msgid "To start,\n" +"let's have a look at the `Visited` table.\n" +"There are eight records,\n" +"but #752 doesn't have a date --- or rather,\n" +"its date is null:" +msgstr "" + +#: sql-novice-survey/_episodes/05-null.md:30 +# code block +msgid "~~~\n" +"SELECT * FROM Visited;\n" +"~~~" +msgstr "" + +#: sql-novice-survey/_episodes/05-null.md:35 +msgid "|id |site|dated |\n" +"|-----|----|----------|\n" +"|619 |DR-1|1927-02-08|\n" +"|622 |DR-1|1927-02-10|\n" +"|734 |DR-3|1930-01-07|\n" +"|735 |DR-3|1930-01-12|\n" +"|751 |DR-3|1930-02-26|\n" +"|752 |DR-3|-null- |\n" +"|837 |MSK-|1932-01-14|\n" +"|844 |DR-1|1932-03-22|" +msgstr "" + +#: sql-novice-survey/_episodes/05-null.md:46 +msgid "Null doesn't behave like other values.\n" +"If we select the records that come before 1930:" +msgstr "" + +#: sql-novice-survey/_episodes/05-null.md:49 +# code block +msgid "~~~\n" +"SELECT * FROM Visited WHERE dated < '1930-01-01';\n" +"~~~" +msgstr "" + +#: sql-novice-survey/_episodes/05-null.md:59 +msgid "we get two results,\n" +"and if we select the ones that come during or after 1930:" +msgstr "" + +#: sql-novice-survey/_episodes/05-null.md:62 +# code block +msgid "~~~\n" +"SELECT * FROM Visited WHERE dated >= '1930-01-01';\n" +"~~~" +msgstr "" + +#: sql-novice-survey/_episodes/05-null.md:67 +msgid "|id |site|dated |\n" +"|-----|----|----------|\n" +"|734 |DR-3|1930-01-07|\n" +"|735 |DR-3|1930-01-12|\n" +"|751 |DR-3|1930-02-26|\n" +"|837 |MSK-|1932-01-14|\n" +"|844 |DR-1|1932-03-22|" +msgstr "" + +#: sql-novice-survey/_episodes/05-null.md:75 +msgid "we get five,\n" +"but record #752 isn't in either set of results.\n" +"The reason is that\n" +"`null<'1930-01-01'`\n" +"is neither true nor false:\n" +"null means, \"We don't know,\"\n" +"and if we don't know the value on the left side of a comparison,\n" +"we don't know whether the comparison is true or false.\n" +"Since databases represent \"don't know\" as null,\n" +"the value of `null<'1930-01-01'`\n" +"is actually `null`.\n" +"`null>='1930-01-01'` is also null\n" +"because we can't answer to that question either.\n" +"And since the only records kept by a `WHERE`\n" +"are those for which the test is true,\n" +"record #752 isn't included in either set of results." +msgstr "" + +#: sql-novice-survey/_episodes/05-null.md:92 +msgid "Comparisons aren't the only operations that behave this way with nulls.\n" +"`1+null` is `null`,\n" +"`5*null` is `null`,\n" +"`log(null)` is `null`,\n" +"and so on.\n" +"In particular,\n" +"comparing things to null with = and != produces null:" +msgstr "" + +#: sql-novice-survey/_episodes/05-null.md:100 +# code block +msgid "~~~\n" +"SELECT * FROM Visited WHERE dated = NULL;\n" +"~~~" +msgstr "" + +#: sql-novice-survey/_episodes/05-null.md:105 +msgid "produces no output, and neither does:" +msgstr "" + +#: sql-novice-survey/_episodes/05-null.md:107 +# code block +msgid "~~~\n" +"SELECT * FROM Visited WHERE dated != NULL;\n" +"~~~" +msgstr "" + +#: sql-novice-survey/_episodes/05-null.md:112 +msgid "To check whether a value is `null` or not,\n" +"we must use a special test `IS NULL`:" +msgstr "" + +#: sql-novice-survey/_episodes/05-null.md:115 +# code block +msgid "~~~\n" +"SELECT * FROM Visited WHERE dated IS NULL;\n" +"~~~" +msgstr "" + +#: sql-novice-survey/_episodes/05-null.md:120 +msgid "|id |site|dated |\n" +"|-----|----|----------|\n" +"|752 |DR-3|-null- |" +msgstr "" + +#: sql-novice-survey/_episodes/05-null.md:124 +msgid "or its inverse `IS NOT NULL`:" +msgstr "" + +#: sql-novice-survey/_episodes/05-null.md:126 +# code block +msgid "~~~\n" +"SELECT * FROM Visited WHERE dated IS NOT NULL;\n" +"~~~" +msgstr "" + +#: sql-novice-survey/_episodes/05-null.md:131 +msgid "|id |site|dated |\n" +"|-----|----|----------|\n" +"|619 |DR-1|1927-02-08|\n" +"|622 |DR-1|1927-02-10|\n" +"|734 |DR-3|1930-01-07|\n" +"|735 |DR-3|1930-01-12|\n" +"|751 |DR-3|1930-02-26|\n" +"|837 |MSK-|1932-01-14|\n" +"|844 |DR-1|1932-03-22|" +msgstr "" + +#: sql-novice-survey/_episodes/05-null.md:141 +msgid "Null values can cause headaches wherever they appear.\n" +"For example,\n" +"suppose we want to find all the salinity measurements\n" +"that weren't taken by Lake.\n" +"It's natural to write the query like this:" +msgstr "" + +#: sql-novice-survey/_episodes/05-null.md:147 +# code block +msgid "~~~\n" +"SELECT * FROM Survey WHERE quant = 'sal' AND person != 'lake';\n" +"~~~" +msgstr "" + +#: sql-novice-survey/_episodes/05-null.md:152 +msgid "|taken|person|quant|reading|\n" +"|-----|------|-----|-------|\n" +"|619 |dyer |sal |0.13 |\n" +"|622 |dyer |sal |0.09 |\n" +"|752 |roe |sal |41.6 |\n" +"|837 |roe |sal |22.5 |" +msgstr "" + +#: sql-novice-survey/_episodes/05-null.md:159 +msgid "but this query filters omits the records\n" +"where we don't know who took the measurement.\n" +"Once again,\n" +"the reason is that when `person` is `null`,\n" +"the `!=` comparison produces `null`,\n" +"so the record isn't kept in our results.\n" +"If we want to keep these records\n" +"we need to add an explicit check:" +msgstr "" + +#: sql-novice-survey/_episodes/05-null.md:168 +# code block +msgid "~~~\n" +"SELECT * FROM Survey WHERE quant = 'sal' AND (person != 'lake' OR person IS NULL);\n" +"~~~" +msgstr "" + +#: sql-novice-survey/_episodes/05-null.md:173 +msgid "|taken|person|quant|reading|\n" +"|-----|------|-----|-------|\n" +"|619 |dyer |sal |0.13 |\n" +"|622 |dyer |sal |0.09 |\n" +"|735 |-null-|sal |0.06 |\n" +"|752 |roe |sal |41.6 |\n" +"|837 |roe |sal |22.5 |" +msgstr "" + +#: sql-novice-survey/_episodes/05-null.md:181 +msgid "We still have to decide whether this is the right thing to do or not.\n" +"If we want to be absolutely sure that\n" +"we aren't including any measurements by Lake in our results,\n" +"we need to exclude all the records for which we don't know who did the work." +msgstr "" + +#: sql-novice-survey/_episodes/05-null.md:186 +msgid "In contrast to arithmetic or Boolean operators, aggregation functions\n" +"that combine multiple values, such as `min`, `max` or `avg`, *ignore*\n" +"`null` values. In the majority of cases, this is a desirable output:\n" +"for example, unknown values are thus not affecting our data when we\n" +"are averaging it. Aggregation functions will be addressed in more\n" +"detail in [the next section]({{ site.github.url }}/06-agg/)." +msgstr "" + +#: sql-novice-survey/_episodes/05-null.md:193 +# blockquote, which can be cascaded +msgid "> ## Sorting by Known Date" +msgstr "" + +#: sql-novice-survey/_episodes/05-null.md:194 +msgid ">\n" +"> Write a query that sorts the records in `Visited` by date,\n" +"> omitting entries for which the date is not known\n" +"> (i.e., is null).\n" +">\n" +"> > ## Solution\n" +"> >\n" +"> > ~~~\n" +"> > SELECT * FROM Visited WHERE dated IS NOT NULL ORDER BY dated ASC;\n" +"> > ~~~\n" +"> > {: .sql}\n" +"> >\n" +"> > |id |site |dated |\n" +"> > |----------|----------|----------|\n" +"> > |619 |DR-1 |1927-02-08|\n" +"> > |622 |DR-1 |1927-02-10|\n" +"> > |734 |DR-3 |1930-01-07|\n" +"> > |735 |DR-3 |1930-01-12|\n" +"> > |751 |DR-3 |1930-02-26|\n" +"> > |837 |MSK-4 |1932-01-14|\n" +"> > |844 |DR-1 |1932-03-22|" +msgstr "" + +#: sql-novice-survey/_episodes/05-null.md:218 +# blockquote, which can be cascaded +msgid "> ## NULL in a Set" +msgstr "" + +#: sql-novice-survey/_episodes/05-null.md:219 +msgid ">\n" +"> What do you expect the query:\n" +">\n" +"> ~~~\n" +"> SELECT * FROM Visited WHERE dated IN ('1927-02-08', NULL);\n" +"> ~~~" +msgstr "" + +#: sql-novice-survey/_episodes/05-null.md:226 +msgid ">\n" +"> to produce?\n" +"> What does it actually produce?" +msgstr "" + +#: sql-novice-survey/_episodes/05-null.md:231 +# blockquote, which can be cascaded +msgid "> ## Pros and Cons of Sentinels" +msgstr "" + +#: sql-novice-survey/_episodes/05-null.md:232 +msgid ">\n" +"> Some database designers prefer to use\n" +"> a [sentinel value]({{ site.github.url }}/reference.html#sentinel-value)\n" +"> to mark missing data rather than `null`.\n" +"> For example,\n" +"> they will use the date \"0000-00-00\" to mark a missing date,\n" +"> or -1.0 to mark a missing salinity or radiation reading\n" +"> (since actual readings cannot be negative).\n" +"> What does this simplify?\n" +"> What burdens or risks does it introduce?" +msgstr "" + +#: sql-novice-survey/_episodes/06-agg.md:1 +# Front Matter +msgid "---\n" +"title: \"Aggregation\"\n" +"teaching: 10\n" +"exercises: 10\n" +"questions:\n" +"- \"How can I calculate sums, averages, and other summary values?\"\n" +"objectives:\n" +"- \"Define aggregation and give examples of its use.\"\n" +"- \"Write queries that compute aggregated values.\"\n" +"- \"Trace the execution of a query that performs aggregation.\"\n" +"- \"Explain how missing data is handled during aggregation.\"\n" +"keypoints:\n" +"- \"Use aggregation functions to combine multiple values.\"\n" +"- \"Aggregation functions ignore `null` values.\"\n" +"- \"Aggregation happens after filtering.\"\n" +"- \"Use GROUP BY to combine subsets separately.\"\n" +"- \"If no aggregation function is specified for a field, the query may return an arbitrary value for that field.\"\n" +"---" +msgstr "" + +#: sql-novice-survey/_episodes/06-agg.md:19 +msgid "We now want to calculate ranges and averages for our data.\n" +"We know how to select all of the dates from the `Visited` table:" +msgstr "" + +#: sql-novice-survey/_episodes/06-agg.md:22 +# code block +msgid "~~~\n" +"SELECT dated FROM Visited;\n" +"~~~" +msgstr "" + +#: sql-novice-survey/_episodes/06-agg.md:27 +msgid "|dated |\n" +"|----------|\n" +"|1927-02-08|\n" +"|1927-02-10|\n" +"|1930-01-07|\n" +"|1930-01-12|\n" +"|1930-02-26|\n" +"|-null- |\n" +"|1932-01-14|\n" +"|1932-03-22|" +msgstr "" + +#: sql-novice-survey/_episodes/06-agg.md:38 +msgid "but to combine them,\n" +"we must use an [aggregation function]({{ site.github.url }}/reference.html#aggregation-function)\n" +"such as `min` or `max`.\n" +"Each of these functions takes a set of records as input,\n" +"and produces a single record as output:" +msgstr "" + +#: sql-novice-survey/_episodes/06-agg.md:44 +#: sql-novice-survey/_episodes/06-agg.md:167 +# code block +msgid "~~~\n" +"SELECT min(dated) FROM Visited;\n" +"~~~" +msgstr "" + +#: sql-novice-survey/_episodes/06-agg.md:49 +#: sql-novice-survey/_episodes/06-agg.md:172 +#: sql-novice-survey/_episodes/06-agg.md:183 +msgid "|min(dated)|\n" +"|----------|\n" +"|1927-02-08|" +msgstr "" + +#: sql-novice-survey/_episodes/06-agg.md:53 +msgid "![SQL Aggregation](../fig/sql-aggregation.svg)" +msgstr "" + +#: sql-novice-survey/_episodes/06-agg.md:55 +# code block +msgid "~~~\n" +"SELECT max(dated) FROM Visited;\n" +"~~~" +msgstr "" + +#: sql-novice-survey/_episodes/06-agg.md:60 +msgid "|max(dated)|\n" +"|----------|\n" +"|1932-03-22|" +msgstr "" + +#: sql-novice-survey/_episodes/06-agg.md:64 +msgid "`min` and `max` are just two of\n" +"the aggregation functions built into SQL.\n" +"Three others are `avg`,\n" +"`count`,\n" +"and `sum`:" +msgstr "" + +#: sql-novice-survey/_episodes/06-agg.md:70 +# code block +msgid "~~~\n" +"SELECT avg(reading) FROM Survey WHERE quant = 'sal';\n" +"~~~" +msgstr "" + +#: sql-novice-survey/_episodes/06-agg.md:75 +msgid "|avg(reading) |\n" +"|----------------|\n" +"|7.20333333333333|" +msgstr "" + +#: sql-novice-survey/_episodes/06-agg.md:79 +# code block +msgid "~~~\n" +"SELECT count(reading) FROM Survey WHERE quant = 'sal';\n" +"~~~" +msgstr "" + +#: sql-novice-survey/_episodes/06-agg.md:84 +msgid "|count(reading)|\n" +"|--------------|\n" +"|9 |" +msgstr "" + +#: sql-novice-survey/_episodes/06-agg.md:88 +# code block +msgid "~~~\n" +"SELECT sum(reading) FROM Survey WHERE quant = 'sal';\n" +"~~~" +msgstr "" + +#: sql-novice-survey/_episodes/06-agg.md:93 +msgid "|sum(reading)|\n" +"|------------|\n" +"|64.83 |" +msgstr "" + +#: sql-novice-survey/_episodes/06-agg.md:97 +msgid "We used `count(reading)` here,\n" +"but we could just as easily have counted `quant`\n" +"or any other field in the table,\n" +"or even used `count(*)`,\n" +"since the function doesn't care about the values themselves,\n" +"just how many values there are." +msgstr "" + +#: sql-novice-survey/_episodes/06-agg.md:104 +msgid "SQL lets us do several aggregations at once.\n" +"We can,\n" +"for example,\n" +"find the range of sensible salinity measurements:" +msgstr "" + +#: sql-novice-survey/_episodes/06-agg.md:109 +# code block +msgid "~~~\n" +"SELECT min(reading), max(reading) FROM Survey WHERE quant = 'sal' AND reading <= 1.0;\n" +"~~~" +msgstr "" + +#: sql-novice-survey/_episodes/06-agg.md:114 +msgid "|min(reading)|max(reading)|\n" +"|------------|------------|\n" +"|0.05 |0.21 |" +msgstr "" + +#: sql-novice-survey/_episodes/06-agg.md:118 +msgid "We can also combine aggregated results with raw results,\n" +"although the output might surprise you:" +msgstr "" + +#: sql-novice-survey/_episodes/06-agg.md:121 +# code block +msgid "~~~\n" +"SELECT person, count(*) FROM Survey WHERE quant = 'sal' AND reading <= 1.0;\n" +"~~~" +msgstr "" + +#: sql-novice-survey/_episodes/06-agg.md:126 +msgid "|person|count(\\*)|\n" +"|------|--------|\n" +"|lake |7 |" +msgstr "" + +#: sql-novice-survey/_episodes/06-agg.md:130 +msgid "Why does Lake's name appear rather than Roerich's or Dyer's?\n" +"The answer is that when it has to aggregate a field,\n" +"but isn't told how to,\n" +"the database manager chooses an actual value from the input set.\n" +"It might use the first one processed,\n" +"the last one,\n" +"or something else entirely." +msgstr "" + +#: sql-novice-survey/_episodes/06-agg.md:138 +msgid "Another important fact is that when there are no values to aggregate ---\n" +"for example, where there are no rows satisfying the `WHERE` clause ---\n" +"aggregation's result is \"don't know\"\n" +"rather than zero or some other arbitrary value:" +msgstr "" + +#: sql-novice-survey/_episodes/06-agg.md:143 +# code block +msgid "~~~\n" +"SELECT person, max(reading), sum(reading) FROM Survey WHERE quant = 'missing';\n" +"~~~" +msgstr "" + +#: sql-novice-survey/_episodes/06-agg.md:148 +msgid "|person|max(reading)|sum(reading)|\n" +"|------|------------|------------|\n" +"|-null-|-null- |-null- |" +msgstr "" + +#: sql-novice-survey/_episodes/06-agg.md:152 +msgid "One final important feature of aggregation functions is that\n" +"they are inconsistent with the rest of SQL in a very useful way.\n" +"If we add two values,\n" +"and one of them is null,\n" +"the result is null.\n" +"By extension,\n" +"if we use `sum` to add all the values in a set,\n" +"and any of those values are null,\n" +"the result should also be null.\n" +"It's much more useful,\n" +"though,\n" +"for aggregation functions to ignore null values\n" +"and only combine those that are non-null.\n" +"This behavior lets us write our queries as:" +msgstr "" + +#: sql-novice-survey/_episodes/06-agg.md:176 +msgid "instead of always having to filter explicitly:" +msgstr "" + +#: sql-novice-survey/_episodes/06-agg.md:178 +# code block +msgid "~~~\n" +"SELECT min(dated) FROM Visited WHERE dated IS NOT NULL;\n" +"~~~" +msgstr "" + +#: sql-novice-survey/_episodes/06-agg.md:187 +msgid "Aggregating all records at once doesn't always make sense.\n" +"For example,\n" +"suppose we suspect that there is a systematic bias in our data,\n" +"and that some scientists' radiation readings are higher than others.\n" +"We know that this doesn't work:" +msgstr "" + +#: sql-novice-survey/_episodes/06-agg.md:193 +# code block +msgid "~~~\n" +"SELECT person, count(reading), round(avg(reading), 2)\n" +"FROM Survey\n" +"WHERE quant = 'rad';\n" +"~~~" +msgstr "" + +#: sql-novice-survey/_episodes/06-agg.md:200 +msgid "|person|count(reading)|round(avg(reading), 2)|\n" +"|------|--------------|----------------------|\n" +"|roe |8 |6.56 |" +msgstr "" + +#: sql-novice-survey/_episodes/06-agg.md:204 +msgid "because the database manager selects a single arbitrary scientist's name\n" +"rather than aggregating separately for each scientist.\n" +"Since there are only five scientists,\n" +"we could write five queries of the form:" +msgstr "" + +#: sql-novice-survey/_episodes/06-agg.md:209 +# code block +msgid "~~~\n" +"SELECT person, count(reading), round(avg(reading), 2)\n" +"FROM Survey\n" +"WHERE quant = 'rad'\n" +"AND person = 'dyer';\n" +"~~~" +msgstr "" + +#: sql-novice-survey/_episodes/06-agg.md:217 +msgid "person|count(reading)|round(avg(reading), 2)|\n" +"------|--------------|----------------------|\n" +"dyer |2 |8.81 |" +msgstr "" + +#: sql-novice-survey/_episodes/06-agg.md:221 +msgid "but this would be tedious,\n" +"and if we ever had a data set with fifty or five hundred scientists,\n" +"the chances of us getting all of those queries right is small." +msgstr "" + +#: sql-novice-survey/_episodes/06-agg.md:225 +msgid "What we need to do is\n" +"tell the database manager to aggregate the hours for each scientist separately\n" +"using a `GROUP BY` clause:" +msgstr "" + +#: sql-novice-survey/_episodes/06-agg.md:229 +# code block +msgid "~~~\n" +"SELECT person, count(reading), round(avg(reading), 2)\n" +"FROM Survey\n" +"WHERE quant = 'rad'\n" +"GROUP BY person;\n" +"~~~" +msgstr "" + +#: sql-novice-survey/_episodes/06-agg.md:237 +msgid "person|count(reading)|round(avg(reading), 2)|\n" +"------|--------------|----------------------|\n" +"dyer |2 |8.81 |\n" +"lake |2 |1.82 |\n" +"pb |3 |6.66 |\n" +"roe |1 |11.25 |" +msgstr "" + +#: sql-novice-survey/_episodes/06-agg.md:244 +msgid "`GROUP BY` does exactly what its name implies:\n" +"groups all the records with the same value for the specified field together\n" +"so that aggregation can process each batch separately.\n" +"Since all the records in each batch have the same value for `person`,\n" +"it no longer matters that the database manager\n" +"is picking an arbitrary one to display\n" +"alongside the aggregated `reading` values." +msgstr "" + +#: sql-novice-survey/_episodes/06-agg.md:252 +msgid "Just as we can sort by multiple criteria at once,\n" +"we can also group by multiple criteria.\n" +"To get the average reading by scientist and quantity measured,\n" +"for example,\n" +"we just add another field to the `GROUP BY` clause:" +msgstr "" + +#: sql-novice-survey/_episodes/06-agg.md:258 +# code block +msgid "~~~\n" +"SELECT person, quant, count(reading), round(avg(reading), 2)\n" +"FROM Survey\n" +"GROUP BY person, quant;\n" +"~~~" +msgstr "" + +#: sql-novice-survey/_episodes/06-agg.md:265 +msgid "|person|quant|count(reading)|round(avg(reading), 2)|\n" +"|------|-----|--------------|----------------------|\n" +"|-null-|sal |1 |0.06 |\n" +"|-null-|temp |1 |-26.0 |\n" +"|dyer |rad |2 |8.81 |\n" +"|dyer |sal |2 |0.11 |\n" +"|lake |rad |2 |1.82 |\n" +"|lake |sal |4 |0.11 |\n" +"|lake |temp |1 |-16.0 |\n" +"|pb |rad |3 |6.66 |\n" +"|pb |temp |2 |-20.0 |\n" +"|roe |rad |1 |11.25 |\n" +"|roe |sal |2 |32.05 |" +msgstr "" + +#: sql-novice-survey/_episodes/06-agg.md:279 +msgid "Note that we have added `quant` to the list of fields displayed,\n" +"since the results wouldn't make much sense otherwise." +msgstr "" + +#: sql-novice-survey/_episodes/06-agg.md:282 +msgid "Let's go one step further and remove all the entries\n" +"where we don't know who took the measurement:" +msgstr "" + +#: sql-novice-survey/_episodes/06-agg.md:285 +# code block +msgid "~~~\n" +"SELECT person, quant, count(reading), round(avg(reading), 2)\n" +"FROM Survey\n" +"WHERE person IS NOT NULL\n" +"GROUP BY person, quant\n" +"ORDER BY person, quant;\n" +"~~~" +msgstr "" + +#: sql-novice-survey/_episodes/06-agg.md:294 +msgid "|person|quant|count(reading)|round(avg(reading), 2)|\n" +"|------|-----|--------------|----------------------|\n" +"|dyer |rad |2 |8.81 |\n" +"|dyer |sal |2 |0.11 |\n" +"|lake |rad |2 |1.82 |\n" +"|lake |sal |4 |0.11 |\n" +"|lake |temp |1 |-16.0 |\n" +"|pb |rad |3 |6.66 |\n" +"|pb |temp |2 |-20.0 |\n" +"|roe |rad |1 |11.25 |\n" +"|roe |sal |2 |32.05 |" +msgstr "" + +#: sql-novice-survey/_episodes/06-agg.md:306 +msgid "Looking more closely,\n" +"this query:" +msgstr "" + +#: sql-novice-survey/_episodes/06-agg.md:309 +# ordered list +msgid "1. selected records from the `Survey` table" +msgstr "" + +#: sql-novice-survey/_episodes/06-agg.md:310 +msgid " where the `person` field was not null;" +msgstr "" + +#: sql-novice-survey/_episodes/06-agg.md:312 +# ordered list +msgid "2. grouped those records into subsets" +msgstr "" + +#: sql-novice-survey/_episodes/06-agg.md:313 +msgid " so that the `person` and `quant` values in each subset\n" +" were the same;" +msgstr "" + +#: sql-novice-survey/_episodes/06-agg.md:316 +# ordered list +msgid "3. ordered those subsets first by `person`," +msgstr "" + +#: sql-novice-survey/_episodes/06-agg.md:317 +msgid " and then within each sub-group by `quant`;\n" +" and" +msgstr "" + +#: sql-novice-survey/_episodes/06-agg.md:320 +# ordered list +msgid "4. counted the number of records in each subset," +msgstr "" + +#: sql-novice-survey/_episodes/06-agg.md:321 +msgid " calculated the average `reading` in each,\n" +" and chose a `person` and `quant` value from each\n" +" (it doesn't matter which ones,\n" +" since they're all equal)." +msgstr "" + +#: sql-novice-survey/_episodes/06-agg.md:326 +# blockquote, which can be cascaded +msgid "> ## Counting Temperature Readings" +msgstr "" + +#: sql-novice-survey/_episodes/06-agg.md:327 +msgid ">\n" +"> How many temperature readings did Frank Pabodie record,\n" +"> and what was their average value?\n" +">\n" +"> > ## Solution\n" +"> >\n" +"> > ~~~\n" +"> > SELECT count(reading), avg(reading) FROM Survey WHERE quant = 'temp' AND person = 'pb';\n" +"> > ~~~\n" +"> > {: .sql}\n" +"> >\n" +"> > |count(reading)|avg(reading)|\n" +"> > |--------------|------------|\n" +"> > |2 |-20.0 |" +msgstr "" + +#: sql-novice-survey/_episodes/06-agg.md:344 +# blockquote, which can be cascaded +msgid "> ## Averaging with NULL" +msgstr "" + +#: sql-novice-survey/_episodes/06-agg.md:345 +msgid ">\n" +"> The average of a set of values is the sum of the values\n" +"> divided by the number of values.\n" +"> Does this mean that the `avg` function returns 2.0 or 3.0\n" +"> when given the values 1.0, `null`, and 5.0?\n" +">\n" +"> > ## Solution\n" +"> > The answer is 3.0.\n" +"> > `NULL` is not a value; it is the absence of a value.\n" +"> > As such it is not included in the calculation.\n" +"> >\n" +"> > You can confirm this, by executing this code:\n" +"> > ```\n" +"> > SELECT AVG(a) FROM (\n" +"> > SELECT 1 AS a\n" +"> > UNION ALL SELECT NULL\n" +"> > UNION ALL SELECT 5);\n" +"> > ```\n" +"> > {: .sql}" +msgstr "" + +#: sql-novice-survey/_episodes/06-agg.md:367 +# blockquote, which can be cascaded +msgid "> ## What Does This Query Do?" +msgstr "" + +#: sql-novice-survey/_episodes/06-agg.md:368 +msgid ">\n" +"> We want to calculate the difference between\n" +"> each individual radiation reading\n" +"> and the average of all the radiation readings.\n" +"> We write the query:\n" +">\n" +"> ~~~\n" +"> SELECT reading - avg(reading) FROM Survey WHERE quant = 'rad';\n" +"> ~~~" +msgstr "" + +#: sql-novice-survey/_episodes/06-agg.md:378 +msgid ">\n" +"> What does this actually produce, and why?" +msgstr "" + +#: sql-novice-survey/_episodes/06-agg.md:382 +# blockquote, which can be cascaded +msgid "> ## Ordering When Concatenating" +msgstr "" + +#: sql-novice-survey/_episodes/06-agg.md:383 +msgid ">\n" +"> The function `group_concat(field, separator)`\n" +"> concatenates all the values in a field\n" +"> using the specified separator character\n" +"> (or ',' if the separator isn't specified).\n" +"> Use this to produce a one-line list of scientists' names,\n" +"> such as:\n" +">\n" +"> ~~~\n" +"> William Dyer, Frank Pabodie, Anderson Lake, Valentina Roerich, Frank Danforth\n" +"> ~~~" +msgstr "" + +#: sql-novice-survey/_episodes/06-agg.md:395 +msgid ">\n" +"> Can you find a way to order the list by surname?" +msgstr "" + +#: sql-novice-survey/_episodes/07-join.md:1 +# Front Matter +msgid "---\n" +"title: \"Combining Data\"\n" +"teaching: 20\n" +"exercises: 20\n" +"questions:\n" +"- \"How can I combine data from multiple tables?\"\n" +"objectives:\n" +"- \"Explain the operation of a query that joins two tables.\"\n" +"- \"Explain how to restrict the output of a query containing a join to only include meaningful combinations of values.\"\n" +"- \"Write queries that join tables on equal keys.\"\n" +"- \"Explain what primary and foreign keys are, and why they are useful.\"\n" +"keypoints:\n" +"- \"Use JOIN to combine data from two tables.\"\n" +"- \"Use table.field notation to refer to fields when doing joins.\"\n" +"- \"Every fact should be represented in a database exactly once.\"\n" +"- \"A join produces all combinations of records from one table with records from another.\"\n" +"- \"A primary key is a field (or set of fields) whose values uniquely identify the records in a table.\"\n" +"- \"A foreign key is a field (or set of fields) in one table whose values are a primary key in another table.\"\n" +"- \"We can eliminate meaningless combinations of records by matching primary keys and foreign keys between tables.\"\n" +"- \"The most common join condition is matching keys.\"\n" +"---" +msgstr "" + +#: sql-novice-survey/_episodes/07-join.md:22 +msgid "In order to submit our data to a web site\n" +"that aggregates historical meteorological data,\n" +"we might need to format it as\n" +"latitude, longitude, date, quantity, and reading.\n" +"However,\n" +"our latitudes and longitudes are in the `Site` table,\n" +"while the dates of measurements are in the `Visited` table\n" +"and the readings themselves are in the `Survey` table.\n" +"We need to combine these tables somehow." +msgstr "" + +#: sql-novice-survey/_episodes/07-join.md:32 +msgid "This figure shows the relations between the tables:" +msgstr "" + +#: sql-novice-survey/_episodes/07-join.md:34 +msgid "![Survey Database Structure](../fig/sql-join-structure.svg)" +msgstr "" + +#: sql-novice-survey/_episodes/07-join.md:36 +msgid "The SQL command to do this is `JOIN`.\n" +"To see how it works,\n" +"let's start by joining the `Site` and `Visited` tables:" +msgstr "" + +#: sql-novice-survey/_episodes/07-join.md:40 +# code block +msgid "~~~\n" +"SELECT * FROM Site JOIN Visited;\n" +"~~~" +msgstr "" + +#: sql-novice-survey/_episodes/07-join.md:45 +msgid "|name |lat |long |id |site |dated |\n" +"|-----|------|-------|-----|------|----------|\n" +"|DR-1 |-49.85|-128.57|619 |DR-1 |1927-02-08|\n" +"|DR-1 |-49.85|-128.57|622 |DR-1 |1927-02-10|\n" +"|DR-1 |-49.85|-128.57|734 |DR-3 |1930-01-07|\n" +"|DR-1 |-49.85|-128.57|735 |DR-3 |1930-01-12|\n" +"|DR-1 |-49.85|-128.57|751 |DR-3 |1930-02-26|\n" +"|DR-1 |-49.85|-128.57|752 |DR-3 |-null- |\n" +"|DR-1 |-49.85|-128.57|837 |MSK-4 |1932-01-14|\n" +"|DR-1 |-49.85|-128.57|844 |DR-1 |1932-03-22|\n" +"|DR-3 |-47.15|-126.72|619 |DR-1 |1927-02-08|\n" +"|DR-3 |-47.15|-126.72|622 |DR-1 |1927-02-10|\n" +"|DR-3 |-47.15|-126.72|734 |DR-3 |1930-01-07|\n" +"|DR-3 |-47.15|-126.72|735 |DR-3 |1930-01-12|\n" +"|DR-3 |-47.15|-126.72|751 |DR-3 |1930-02-26|\n" +"|DR-3 |-47.15|-126.72|752 |DR-3 |-null- |\n" +"|DR-3 |-47.15|-126.72|837 |MSK-4 |1932-01-14|\n" +"|DR-3 |-47.15|-126.72|844 |DR-1 |1932-03-22|\n" +"|MSK-4|-48.87|-123.4 |619 |DR-1 |1927-02-08|\n" +"|MSK-4|-48.87|-123.4 |622 |DR-1 |1927-02-10|\n" +"|MSK-4|-48.87|-123.4 |734 |DR-3 |1930-01-07|\n" +"|MSK-4|-48.87|-123.4 |735 |DR-3 |1930-01-12|\n" +"|MSK-4|-48.87|-123.4 |751 |DR-3 |1930-02-26|\n" +"|MSK-4|-48.87|-123.4 |752 |DR-3 |-null- |\n" +"|MSK-4|-48.87|-123.4 |837 |MSK-4 |1932-01-14|\n" +"|MSK-4|-48.87|-123.4 |844 |DR-1 |1932-03-22|" +msgstr "" + +#: sql-novice-survey/_episodes/07-join.md:72 +msgid "`JOIN` creates\n" +"the [cross product]({{ site.github.url }}/reference.html#cross-product)\n" +"of two tables,\n" +"i.e.,\n" +"it joins each record of one table with each record of the other table\n" +"to give all possible combinations.\n" +"Since there are three records in `Site`\n" +"and eight in `Visited`,\n" +"the join's output has 24 records (3 * 8 = 24) .\n" +"And since each table has three fields,\n" +"the output has six fields (3 + 3 = 6)." +msgstr "" + +#: sql-novice-survey/_episodes/07-join.md:84 +msgid "What the join *hasn't* done is\n" +"figure out if the records being joined have anything to do with each other.\n" +"It has no way of knowing whether they do or not until we tell it how.\n" +"To do that,\n" +"we add a clause specifying that\n" +"we're only interested in combinations that have the same site name,\n" +"thus we need to use a filter:" +msgstr "" + +#: sql-novice-survey/_episodes/07-join.md:92 +# code block +msgid "~~~\n" +"SELECT * FROM Site JOIN Visited ON Site.name = Visited.site;\n" +"~~~" +msgstr "" + +#: sql-novice-survey/_episodes/07-join.md:97 +msgid "|name |lat |long |id |site |dated |\n" +"|-----|------|-------|-----|-----|----------|\n" +"|DR-1 |-49.85|-128.57|619 |DR-1 |1927-02-08|\n" +"|DR-1 |-49.85|-128.57|622 |DR-1 |1927-02-10|\n" +"|DR-1 |-49.85|-128.57|844 |DR-1 |1932-03-22|\n" +"|DR-3 |-47.15|-126.72|734 |DR-3 |1930-01-07|\n" +"|DR-3 |-47.15|-126.72|735 |DR-3 |1930-01-12|\n" +"|DR-3 |-47.15|-126.72|751 |DR-3 |1930-02-26|\n" +"|DR-3 |-47.15|-126.72|752 |DR-3 |-null- |\n" +"|MSK-4|-48.87|-123.4 |837 |MSK-4|1932-01-14|" +msgstr "" + +#: sql-novice-survey/_episodes/07-join.md:108 +msgid "`ON` is very similar to `WHERE`,\n" +"and for all the queries in this lesson you can use them interchangeably.\n" +"There are differences in how they affect [outer joins][outer],\n" +"but that's beyond the scope of this lesson.\n" +"Once we add this to our query,\n" +"the database manager throws away records\n" +"that combined information about two different sites,\n" +"leaving us with just the ones we want." +msgstr "" + +#: sql-novice-survey/_episodes/07-join.md:117 +msgid "Notice that we used `Table.field` to specify field names\n" +"in the output of the join.\n" +"We do this because tables can have fields with the same name,\n" +"and we need to be specific which ones we're talking about.\n" +"For example,\n" +"if we joined the `Person` and `Visited` tables,\n" +"the result would inherit a field called `id`\n" +"from each of the original tables." +msgstr "" + +#: sql-novice-survey/_episodes/07-join.md:126 +msgid "We can now use the same dotted notation\n" +"to select the three columns we actually want\n" +"out of our join:" +msgstr "" + +#: sql-novice-survey/_episodes/07-join.md:130 +# code block +msgid "~~~\n" +"SELECT Site.lat, Site.long, Visited.dated\n" +"FROM Site JOIN Visited\n" +"ON Site.name = Visited.site;\n" +"~~~" +msgstr "" + +#: sql-novice-survey/_episodes/07-join.md:137 +msgid "|lat |long |dated |\n" +"|------|-------|----------|\n" +"|-49.85|-128.57|1927-02-08|\n" +"|-49.85|-128.57|1927-02-10|\n" +"|-49.85|-128.57|1932-03-22|\n" +"|-47.15|-126.72|-null- |\n" +"|-47.15|-126.72|1930-01-12|\n" +"|-47.15|-126.72|1930-02-26|\n" +"|-47.15|-126.72|1930-01-07|\n" +"|-48.87|-123.4 |1932-01-14|" +msgstr "" + +#: sql-novice-survey/_episodes/07-join.md:148 +msgid "If joining two tables is good,\n" +"joining many tables must be better.\n" +"In fact,\n" +"we can join any number of tables\n" +"simply by adding more `JOIN` clauses to our query,\n" +"and more `ON` tests to filter out combinations of records\n" +"that don't make sense:" +msgstr "" + +#: sql-novice-survey/_episodes/07-join.md:156 +# code block +msgid "~~~\n" +"SELECT Site.lat, Site.long, Visited.dated, Survey.quant, Survey.reading\n" +"FROM Site JOIN Visited JOIN Survey\n" +"ON Site.name = Visited.site\n" +"AND Visited.id = Survey.taken\n" +"AND Visited.dated IS NOT NULL;\n" +"~~~" +msgstr "" + +#: sql-novice-survey/_episodes/07-join.md:165 +msgid "|lat |long |dated |quant|reading|\n" +"|------|-------|----------|-----|-------|\n" +"|-49.85|-128.57|1927-02-08|rad |9.82 |\n" +"|-49.85|-128.57|1927-02-08|sal |0.13 |\n" +"|-49.85|-128.57|1927-02-10|rad |7.8 |\n" +"|-49.85|-128.57|1927-02-10|sal |0.09 |\n" +"|-47.15|-126.72|1930-01-07|rad |8.41 |\n" +"|-47.15|-126.72|1930-01-07|sal |0.05 |\n" +"|-47.15|-126.72|1930-01-07|temp |-21.5 |\n" +"|-47.15|-126.72|1930-01-12|rad |7.22 |\n" +"|-47.15|-126.72|1930-01-12|sal |0.06 |\n" +"|-47.15|-126.72|1930-01-12|temp |-26.0 |\n" +"|-47.15|-126.72|1930-02-26|rad |4.35 |\n" +"|-47.15|-126.72|1930-02-26|sal |0.1 |\n" +"|-47.15|-126.72|1930-02-26|temp |-18.5 |\n" +"|-48.87|-123.4 |1932-01-14|rad |1.46 |\n" +"|-48.87|-123.4 |1932-01-14|sal |0.21 |\n" +"|-48.87|-123.4 |1932-01-14|sal |22.5 |\n" +"|-49.85|-128.57|1932-03-22|rad |11.25 |" +msgstr "" + +#: sql-novice-survey/_episodes/07-join.md:185 +msgid "We can tell which records from `Site`, `Visited`, and `Survey`\n" +"correspond with each other\n" +"because those tables contain\n" +"[primary keys]({{ site.github.url }}/reference.html#primary-key)\n" +"and [foreign keys]({{ site.github.url }}/reference.html#foreign-key).\n" +"A primary key is a value,\n" +"or combination of values,\n" +"that uniquely identifies each record in a table.\n" +"A foreign key is a value (or combination of values) from one table\n" +"that identifies a unique record in another table.\n" +"Another way of saying this is that\n" +"a foreign key is the primary key of one table\n" +"that appears in some other table.\n" +"In our database,\n" +"`Person.id` is the primary key in the `Person` table,\n" +"while `Survey.person` is a foreign key\n" +"relating the `Survey` table's entries\n" +"to entries in `Person`." +msgstr "" + +#: sql-novice-survey/_episodes/07-join.md:204 +msgid "Most database designers believe that\n" +"every table should have a well-defined primary key.\n" +"They also believe that this key should be separate from the data itself,\n" +"so that if we ever need to change the data,\n" +"we only need to make one change in one place.\n" +"One easy way to do this is\n" +"to create an arbitrary, unique ID for each record\n" +"as we add it to the database.\n" +"This is actually very common:\n" +"those IDs have names like \"student numbers\" and \"patient numbers\",\n" +"and they almost always turn out to have originally been\n" +"a unique record identifier in some database system or other.\n" +"As the query below demonstrates,\n" +"SQLite [automatically numbers records][rowid] as they're added to tables,\n" +"and we can use those record numbers in queries:" +msgstr "" + +#: sql-novice-survey/_episodes/07-join.md:220 +# code block +msgid "~~~\n" +"SELECT rowid, * FROM Person;\n" +"~~~" +msgstr "" + +#: sql-novice-survey/_episodes/07-join.md:225 +msgid "|rowid|id |personal |family |\n" +"|-----|--------|---------|--------|\n" +"|1 |dyer |William |Dyer |\n" +"|2 |pb |Frank |Pabodie |\n" +"|3 |lake |Anderson |Lake |\n" +"|4 |roe |Valentina|Roerich |\n" +"|5 |danforth|Frank |Danforth|" +msgstr "" + +#: sql-novice-survey/_episodes/07-join.md:233 +# blockquote, which can be cascaded +msgid "> ## Listing Radiation Readings" +msgstr "" + +#: sql-novice-survey/_episodes/07-join.md:234 +msgid ">\n" +"> Write a query that lists all radiation readings from the DR-1 site.\n" +" > > ## Solution\n" +" > > \n" +" > > ~~~\n" +" > > SELECT Survey.reading \n" +" > > FROM Site JOIN Visited JOIN Survey \n" +" > > ON Site.name = Visited.site\n" +" > > AND Visited.id = Survey.taken\n" +" > > WHERE Site.name = \"DR-1\" \n" +" > > AND Survey.quant = \"rad\";\n" +" > > ~~~\n" +" > > {: .sql}\n" +" > >\n" +" > > |reading |\n" +" > > |----------|\n" +" > > |9.82 |\n" +" > > |7.8 |\n" +" > > |11.25 |\n" +" > {: .solution}" +msgstr "" + +#: sql-novice-survey/_episodes/07-join.md:256 +# blockquote, which can be cascaded +msgid "> ## Where's Frank?" +msgstr "" + +#: sql-novice-survey/_episodes/07-join.md:257 +msgid ">\n" +"> Write a query that lists all sites visited by people named \"Frank\".\n" +" > > ## Solution\n" +" > > \n" +" > > ~~~\n" +" > > SELECT DISTINCT Site.name\n" +" > > FROM Site JOIN Visited JOIN Survey JOIN Person\n" +" > > ON Site.name = Visited.site\n" +" > > AND Visited.id = Survey.taken\n" +" > > AND Survey.person = Person.id\n" +" > > WHERE Person.personal = \"Frank\";\n" +" > > ~~~\n" +" > > {: .sql}\n" +" > >\n" +" > > |name |\n" +" > > |-------|\n" +" > > |DR-3 |\n" +" > {: .solution}" +msgstr "" + +#: sql-novice-survey/_episodes/07-join.md:277 +# blockquote, which can be cascaded +msgid "> ## Reading Queries" +msgstr "" + +#: sql-novice-survey/_episodes/07-join.md:278 +msgid ">\n" +"> Describe in your own words what the following query produces:\n" +">\n" +"> ~~~\n" +"> SELECT Site.name FROM Site JOIN Visited\n" +"> ON Site.lat <- 49.0 AND Site.name = Visited.site AND Visited.dated >= '1932-01-01';\n" +"> ~~~" +msgstr "" + +#: sql-novice-survey/_episodes/07-join.md:288 +# blockquote, which can be cascaded +msgid "> ## Who Has Been Where?" +msgstr "" + +#: sql-novice-survey/_episodes/07-join.md:289 +msgid ">\n" +"> Write a query that shows each site with exact location (lat, long) ordered by visited date,\n" +"> followed by personal name and family name of the person who visited the site\n" +"> and the type of measurement taken and its reading. Please avoid all null values.\n" +"> Tip: you should get 15 records with 8 fields.\n" +" > > ## Solution\n" +" > > \n" +" > > ~~~\n" +" > > SELECT Site.name, Site.lat, Site.long, Person.personal, Person.family, Survey.quant, Survey.reading, Visited.dated\n" +" > > FROM Site JOIN Visited JOIN Survey JOIN Person\n" +" > > ON Site.name = Visited.site\n" +" > > AND Visited.id = Survey.taken\n" +" > > AND Survey.person = Person.id\n" +" > > WHERE Survey.person IS NOT NULL\n" +" > > AND Visited.dated IS NOT NULL\n" +" > > ORDER BY Visited.dated;\n" +" > > ~~~\n" +" > > {: .sql}\n" +" > >\n" +" > > name | lat | long | personal | family | quant | reading | dated\n" +" > >--------|-------------|-------------|-------------|----------|-----------|-----------|-----------\n" +" > >DR-1 | -49.85 | -128.57 | William | Dyer | rad | 9.82 | 1927-02-08\n" +" > >DR-1 | -49.85 | -128.57 | William | Dyer | sal | 0.13 | 1927-02-08\n" +" > >DR-1 | -49.85 | -128.57 | William | Dyer | rad | 7.8 | 1927-02-10\n" +" > >DR-1 | -49.85 | -128.57 | William | Dyer | sal | 0.09 | 1927-02-10\n" +" > >DR-3 | -47.15 | -126.72 | Anderson | Lake | sal | 0.05 | 1930-01-07\n" +" > >DR-3 | -47.15 | -126.72 | Frank | Pabodie | rad | 8.41 | 1930-01-07\n" +" > >DR-3 | -47.15 | -126.72 | Frank | Pabodie | temp | -21.5 | 1930-01-07\n" +" > >DR-3 | -47.15 | -126.72 | Frank | Pabodie | rad | 7.22 | 1930-01-12\n" +" > >DR-3 | -47.15 | -126.72 | Anderson | Lake | sal | 0.1 | 1930-02-26\n" +" > >DR-3 | -47.15 | -126.72 | Frank | Pabodie | rad | 4.35 | 1930-02-26\n" +" > >DR-3 | -47.15 | -126.72 | Frank | Pabodie | temp | -18.5 | 1930-02-26\n" +" > >MSK-4 | -48.87 | -123.4 | Anderson | Lake | rad | 1.46 | 1932-01-14\n" +" > >MSK-4 | -48.87 | -123.4 | Anderson | Lake | sal | 0.21 | 1932-01-14\n" +" > >MSK-4 | -48.87 | -123.4 | Valentina | Roerich | sal | 22.5 | 1932-01-14\n" +" > >DR-1 | -49.85 | -128.57 | Valentina | Roerich | rad | 11.25 | 1932-03-22\n" +" > {: .solution}" +msgstr "" + +#: sql-novice-survey/_episodes/07-join.md:328 +msgid "A good visual explanation of joins can be found [here][joinref]" +msgstr "" + +#: sql-novice-survey/_episodes/07-join.md:330 +msgid "[outer]: https://en.wikipedia.org/wiki/Join_%28SQL%29#Outer_join\n" +"[rowid]: https://www.sqlite.org/lang_createtable.html#rowid\n" +"[joinref]: https://sql-joins.leopard.in.ua/" +msgstr "" + +#: sql-novice-survey/_episodes/08-hygiene.md:1 +# Front Matter +msgid "---\n" +"title: \"Data Hygiene\"\n" +"teaching: 15\n" +"exercises: 15\n" +"questions:\n" +"- \"How should I format data in a database, and why?\"\n" +"objectives:\n" +"- \"Explain what an atomic value is.\"\n" +"- \"Distinguish between atomic and non-atomic values.\"\n" +"- \"Explain why every value in a database should be atomic.\"\n" +"- \"Explain what a primary key is and why every record should have one.\"\n" +"- \"Identify primary keys in database tables.\"\n" +"- \"Explain why database entries should not contain redundant information.\"\n" +"- \"Identify redundant information in databases.\"\n" +"keypoints:\n" +"- \"Every value in a database should be atomic.\"\n" +"- \"Every record should have a unique primary key.\"\n" +"- \"A database should not contain redundant information.\"\n" +"- \"Units and similar metadata should be stored with the data.\"\n" +"---" +msgstr "" + +#: sql-novice-survey/_episodes/08-hygiene.md:22 +msgid "Now that we have seen how joins work, we can see why the relational\n" +"model is so useful and how best to use it. The first rule is that\n" +"every value should be [atomic]({{ site.github.url }}/reference.html#atomic), i.e., not\n" +"contain parts that we might want to work with separately. We store\n" +"personal and family names in separate columns instead of putting the\n" +"entire name in one column so that we don't have to use substring\n" +"operations to get the name's components. More importantly, we store\n" +"the two parts of the name separately because splitting on spaces is\n" +"unreliable: just think of a name like \"Eloise St. Cyr\" or \"Jan Mikkel\n" +"Steubart\"." +msgstr "" + +#: sql-novice-survey/_episodes/08-hygiene.md:33 +msgid "The second rule is that every record should have a unique primary key.\n" +"This can be a serial number that has no intrinsic meaning,\n" +"one of the values in the record (like the `id` field in the `Person` table),\n" +"or even a combination of values:\n" +"the triple `(taken, person, quant)` from the `Survey` table uniquely identifies every measurement." +msgstr "" + +#: sql-novice-survey/_episodes/08-hygiene.md:39 +msgid "The third rule is that there should be no redundant information.\n" +"For example,\n" +"we could get rid of the `Site` table and rewrite the `Visited` table like this:" +msgstr "" + +#: sql-novice-survey/_episodes/08-hygiene.md:43 +msgid "|id |lat |long |dated |\n" +"|-----|------|-------|-----------|\n" +"|619 |-49.85|-128.57| 1927-02-08|\n" +"|622 |-49.85|-128.57| 1927-02-10|\n" +"|734 |-47.15|-126.72| 1930-01-07|\n" +"|735 |-47.15|-126.72| 1930-01-12|\n" +"|751 |-47.15|-126.72| 1930-02-26|\n" +"|752 |-47.15|-126.72| -null- |\n" +"|837 |-48.87|-123.40| 1932-01-14|\n" +"|844 |-49.85|-128.57| 1932-03-22|" +msgstr "" + +#: sql-novice-survey/_episodes/08-hygiene.md:54 +msgid "In fact,\n" +"we could use a single table that recorded all the information about each reading in each row,\n" +"just as a spreadsheet would.\n" +"The problem is that it's very hard to keep data organized this way consistent:\n" +"if we realize that the date of a particular visit to a particular site is wrong,\n" +"we have to change multiple records in the database.\n" +"What's worse,\n" +"we may have to guess which records to change,\n" +"since other sites may also have been visited on that date." +msgstr "" + +#: sql-novice-survey/_episodes/08-hygiene.md:64 +msgid "The fourth rule is that the units for every value should be stored explicitly.\n" +"Our database doesn't do this,\n" +"and that's a problem:\n" +"Roerich's salinity measurements are several orders of magnitude larger than anyone else's,\n" +"but we don't know if that means she was using parts per million instead of parts per thousand,\n" +"or whether there actually was a saline anomaly at that site in 1932." +msgstr "" + +#: sql-novice-survey/_episodes/08-hygiene.md:71 +msgid "Stepping back,\n" +"data and the tools used to store it have a symbiotic relationship:\n" +"we use tables and joins because it's efficient,\n" +"provided our data is organized a certain way,\n" +"but organize our data that way because we have tools to manipulate it efficiently.\n" +"As anthropologists say,\n" +"the tool shapes the hand that shapes the tool." +msgstr "" + +#: sql-novice-survey/_episodes/08-hygiene.md:79 +# blockquote, which can be cascaded +msgid "> ## Identifying Atomic Values" +msgstr "" + +#: sql-novice-survey/_episodes/08-hygiene.md:80 +msgid ">\n" +"> Which of the following are atomic values? Which are not? Why?\n" +">\n" +"> * New Zealand\n" +"> * 87 Turing Avenue\n" +"> * January 25, 1971\n" +"> * the XY coordinate (0.5, 3.3)\n" +">\n" +"> > ## Solution\n" +"> > New Zealand is the only clear-cut atomic value.\n" +"> >\n" +"> > The address and the XY coordinate contain more than one piece of information\n" +"> > which should be stored separately:\n" +"> > - House number, street name\n" +"> > - X coordinate, Y coordinate\n" +"> >\n" +"> > The date entry is less clear cut, because it contains month, day, and year elements.\n" +"> > However, there is a `DATE` datatype in SQL, and dates should be stored using this format.\n" +"> > If we need to work with the month, day, or year separately, we can use the SQL functions available for our database software\n" +"> > (for example [`EXTRACT`](https://docs.oracle.com/cd/B19306_01/server.102/b14200/functions050.htm) or [`STRFTIME`](http://www.sqlite.org/lang_datefunc.html) for SQLite)." +msgstr "" + +#: sql-novice-survey/_episodes/08-hygiene.md:103 +# blockquote, which can be cascaded +msgid "> ## Identifying a Primary Key" +msgstr "" + +#: sql-novice-survey/_episodes/08-hygiene.md:104 +msgid ">\n" +"> What is the primary key in this table?\n" +"> I.e., what value or combination of values uniquely identifies a record?\n" +">\n" +"> |latitude|longitude|date |temperature|\n" +"> |--------|---------|----------|-----------|\n" +"> |57.3 |-22.5 |2015-01-09|-14.2 |\n" +">\n" +"> > ## Solution\n" +"> > Latitude, longitude, and date are all required to uniquely identify the temperature record." +msgstr "" + +#: sql-novice-survey/_episodes/09-create.md:1 +# Front Matter +msgid "---\n" +"title: \"Creating and Modifying Data\"\n" +"teaching: 15\n" +"exercises: 10\n" +"questions:\n" +"- \"How can I create, modify, and delete tables and data?\"\n" +"objectives:\n" +"- \"Write statements that create tables.\"\n" +"- \"Write statements to insert, modify, and delete records.\"\n" +"keypoints:\n" +"- \"Use CREATE and DROP to create and delete tables.\"\n" +"- \"Use INSERT to add data.\"\n" +"- \"Use UPDATE to modify existing data.\"\n" +"- \"Use DELETE to remove data.\"\n" +"- \"It is simpler and safer to modify data when every record has a unique primary key.\"\n" +"- \"Do not create dangling references by deleting records that other records refer to.\"\n" +"---" +msgstr "" + +#: sql-novice-survey/_episodes/09-create.md:18 +msgid "So far we have only looked at how to get information out of a database,\n" +"both because that is more frequent than adding information,\n" +"and because most other operations only make sense\n" +"once queries are understood.\n" +"If we want to create and modify data,\n" +"we need to know two other sets of commands." +msgstr "" + +#: sql-novice-survey/_episodes/09-create.md:25 +msgid "The first pair are [`CREATE TABLE`][create-table] and [`DROP TABLE`][drop-table].\n" +"While they are written as two words,\n" +"they are actually single commands.\n" +"The first one creates a new table;\n" +"its arguments are the names and types of the table's columns.\n" +"For example,\n" +"the following statements create the four tables in our survey database:" +msgstr "" + +#: sql-novice-survey/_episodes/09-create.md:33 +# code block +msgid "~~~\n" +"CREATE TABLE Person(id text, personal text, family text);\n" +"CREATE TABLE Site(name text, lat real, long real);\n" +"CREATE TABLE Visited(id integer, site text, dated text);\n" +"CREATE TABLE Survey(taken integer, person text, quant real, reading real);\n" +"~~~" +msgstr "" + +#: sql-novice-survey/_episodes/09-create.md:41 +msgid "We can get rid of one of our tables using:" +msgstr "" + +#: sql-novice-survey/_episodes/09-create.md:43 +# code block +msgid "~~~\n" +"DROP TABLE Survey;\n" +"~~~" +msgstr "" + +#: sql-novice-survey/_episodes/09-create.md:48 +msgid "Be very careful when doing this:\n" +"if you drop the wrong table, hope that the person maintaining the database has a backup,\n" +"but it's better not to have to rely on it." +msgstr "" + +#: sql-novice-survey/_episodes/09-create.md:52 +msgid "Different database systems support different data types for table columns,\n" +"but most provide the following:" +msgstr "" + +#: sql-novice-survey/_episodes/09-create.md:55 +msgid "|data type| use | \n" +"|---------| ----------------------------------------- |\n" +"|INTEGER | a signed integer |\n" +"|REAL | a floating point number |\n" +"|TEXT | a character string |\n" +"|BLOB | a \"binary large object\", such as an image |" +msgstr "" + +#: sql-novice-survey/_episodes/09-create.md:62 +msgid "Most databases also support Booleans and date/time values;\n" +"SQLite uses the integers 0 and 1 for the former,\n" +"and represents the latter as discussed [earlier]({{ page.root }}/03-filter/#date-types).\n" +"An increasing number of databases also support geographic data types,\n" +"such as latitude and longitude.\n" +"Keeping track of what particular systems do or do not offer,\n" +"and what names they give different data types,\n" +"is an unending portability headache." +msgstr "" + +#: sql-novice-survey/_episodes/09-create.md:71 +msgid "When we create a table,\n" +"we can specify several kinds of constraints on its columns.\n" +"For example,\n" +"a better definition for the `Survey` table would be:" +msgstr "" + +#: sql-novice-survey/_episodes/09-create.md:76 +# code block +msgid "~~~\n" +"CREATE TABLE Survey(\n" +" taken integer not null, -- where reading taken\n" +" person text, -- may not know who took it\n" +" quant real not null, -- the quantity measured\n" +" reading real not null, -- the actual reading\n" +" primary key(taken, quant),\n" +" foreign key(taken) references Visited(id),\n" +" foreign key(person) references Person(id)\n" +");\n" +"~~~" +msgstr "" + +#: sql-novice-survey/_episodes/09-create.md:89 +msgid "Once again,\n" +"exactly what constraints are available\n" +"and what they're called\n" +"depends on which database manager we are using." +msgstr "" + +#: sql-novice-survey/_episodes/09-create.md:94 +msgid "Once tables have been created,\n" +"we can add, change, and remove records using our other set of commands,\n" +"`INSERT`, `UPDATE`, and `DELETE`." +msgstr "" + +#: sql-novice-survey/_episodes/09-create.md:98 +msgid "The simplest form of `INSERT` statement lists values in order:" +msgstr "" + +#: sql-novice-survey/_episodes/09-create.md:100 +# code block +msgid "~~~\n" +"INSERT INTO Site VALUES('DR-1', -49.85, -128.57);\n" +"INSERT INTO Site VALUES('DR-3', -47.15, -126.72);\n" +"INSERT INTO Site VALUES('MSK-4', -48.87, -123.40);\n" +"~~~" +msgstr "" + +#: sql-novice-survey/_episodes/09-create.md:107 +msgid "We can also insert values into one table directly from another:" +msgstr "" + +#: sql-novice-survey/_episodes/09-create.md:109 +# code block +msgid "~~~\n" +"CREATE TABLE JustLatLong(lat text, long text);\n" +"INSERT INTO JustLatLong SELECT lat, long FROM Site;\n" +"~~~" +msgstr "" + +#: sql-novice-survey/_episodes/09-create.md:115 +msgid "Modifying existing records is done using the `UPDATE` statement.\n" +"To do this we tell the database which table we want to update,\n" +"what we want to change the values to for any or all of the fields,\n" +"and under what conditions we should update the values." +msgstr "" + +#: sql-novice-survey/_episodes/09-create.md:120 +msgid "For example, if we made a mistake when entering the lat and long values\n" +"of the last `INSERT` statement above:" +msgstr "" + +#: sql-novice-survey/_episodes/09-create.md:123 +# code block +msgid "~~~\n" +"UPDATE Site SET lat = -47.87, long = -122.40 WHERE name = 'MSK-4';\n" +"~~~" +msgstr "" + +#: sql-novice-survey/_episodes/09-create.md:128 +msgid "Be careful to not forget the `WHERE` clause or the update statement will\n" +"modify *all* of the records in the database." +msgstr "" + +#: sql-novice-survey/_episodes/09-create.md:131 +msgid "Deleting records can be a bit trickier,\n" +"because we have to ensure that the database remains internally consistent.\n" +"If all we care about is a single table,\n" +"we can use the `DELETE` command with a `WHERE` clause\n" +"that matches the records we want to discard.\n" +"For example,\n" +"once we realize that Frank Danforth didn't take any measurements,\n" +"we can remove him from the `Person` table like this:" +msgstr "" + +#: sql-novice-survey/_episodes/09-create.md:140 +# code block +msgid "~~~\n" +"DELETE FROM Person WHERE id = 'danforth';\n" +"~~~" +msgstr "" + +#: sql-novice-survey/_episodes/09-create.md:145 +msgid "But what if we removed Anderson Lake instead?\n" +"Our `Survey` table would still contain seven records\n" +"of measurements he'd taken,\n" +"but that's never supposed to happen:\n" +"`Survey.person` is a foreign key into the `Person` table,\n" +"and all our queries assume there will be a row in the latter\n" +"matching every value in the former." +msgstr "" + +#: sql-novice-survey/_episodes/09-create.md:153 +msgid "This problem is called [referential integrity]({{ site.github.url }}/reference.html#referential-integrity):\n" +"we need to ensure that all references between tables can always be resolved correctly.\n" +"One way to do this is to delete all the records\n" +"that use `'lake'` as a foreign key\n" +"before deleting the record that uses it as a primary key.\n" +"If our database manager supports it,\n" +"we can automate this\n" +"using [cascading delete]({{ site.github.url }}/reference.html#cascading-delete).\n" +"However,\n" +"this technique is outside the scope of this chapter." +msgstr "" + +#: sql-novice-survey/_episodes/09-create.md:164 +# blockquote, which can be cascaded +msgid "> ## Hybrid Storage Models" +msgstr "" + +#: sql-novice-survey/_episodes/09-create.md:165 +msgid ">\n" +"> Many applications use a hybrid storage model\n" +"> instead of putting everything into a database:\n" +"> the actual data (such as astronomical images) is stored in files,\n" +"> while the database stores the files' names,\n" +"> their modification dates,\n" +"> the region of the sky they cover,\n" +"> their spectral characteristics,\n" +"> and so on.\n" +"> This is also how most music player software is built:\n" +"> the database inside the application keeps track of the MP3 files,\n" +"> but the files themselves live on disk." +msgstr "" + +#: sql-novice-survey/_episodes/09-create.md:179 +# blockquote, which can be cascaded +msgid "> ## Replacing NULL" +msgstr "" + +#: sql-novice-survey/_episodes/09-create.md:180 +msgid ">\n" +"> Write an SQL statement to replace all uses of `null` in\n" +"> `Survey.person` with the string `'unknown'`.\n" +">\n" +"> > ## Solution\n" +"> > ~~~\n" +"> > UPDATE Survey SET person = \"unknown\" WHERE person IS NULL;\n" +"> > ~~~\n" +"> > {: .sql}" +msgstr "" + +#: sql-novice-survey/_episodes/09-create.md:192 +# blockquote, which can be cascaded +msgid "> ## Generating Insert Statements" +msgstr "" + +#: sql-novice-survey/_episodes/09-create.md:193 +msgid ">\n" +"> One of our colleagues has sent us a [CSV]({{ site.github.url }}/reference.html#comma-separated-values-csv) file containing\n" +"> temperature readings by Robert Olmstead, which is formatted like\n" +"> this:\n" +">\n" +"> ~~~\n" +"> Taken,Temp\n" +"> 619,-21.5\n" +"> 622,-15.5\n" +"> ~~~" +msgstr "" + +#: sql-novice-survey/_episodes/09-create.md:204 +msgid ">\n" +"> Write a small Python program that reads this file in and prints out\n" +"> the SQL `INSERT` statements needed to add these records to the\n" +"> survey database. Note: you will need to add an entry for Olmstead\n" +"> to the `Person` table. If you are testing your program repeatedly,\n" +"> you may want to investigate SQL's `INSERT or REPLACE` command." +msgstr "" + +#: sql-novice-survey/_episodes/09-create.md:212 +# blockquote, which can be cascaded +msgid "> ## Backing Up with SQL" +msgstr "" + +#: sql-novice-survey/_episodes/09-create.md:213 +msgid ">\n" +"> SQLite has several administrative commands that aren't part of the\n" +"> SQL standard. One of them is `.dump`, which prints the SQL commands\n" +"> needed to re-create the database. Another is `.read`, which reads a\n" +"> file created by `.dump` and restores the database. A colleague of\n" +"> yours thinks that storing dump files (which are text) in version\n" +"> control is a good way to track and manage changes to the database.\n" +"> What are the pros and cons of this approach? (Hint: records aren't\n" +"> stored in any particular order.)\n" +">\n" +"> > ## Solution\n" +"> > #### Advantages\n" +"> > - A version control system will be able to show differences between versions\n" +"> > of the dump file; something it can't do for binary files like databases\n" +"> > - A VCS only saves changes between versions, rather than a complete copy of\n" +"> > each version (save disk space)\n" +"> > - The version control log will explain the reason for the changes in each version\n" +"> > of the database\n" +"> >\n" +"> > #### Disadvantages\n" +"> > - Artificial differences between commits because records don't have a fixed order" +msgstr "" + +#: sql-novice-survey/_episodes/09-create.md:237 +msgid "[create-table]: https://www.sqlite.org/lang_createtable.html\n" +"[drop-table]: https://www.sqlite.org/lang_droptable.html" +msgstr "" + +#: sql-novice-survey/_episodes/10-prog.md:1 +# Front Matter +msgid "---\n" +"title: \"Programming with Databases - Python\"\n" +"teaching: 20\n" +"exercises: 15\n" +"questions:\n" +"- \"How can I access databases from programs written in Python?\"\n" +"objectives:\n" +"- \"Write short programs that execute SQL queries.\"\n" +"- \"Trace the execution of a program that contains an SQL query.\"\n" +"- \"Explain why most database applications are written in a general-purpose language rather than in SQL.\"\n" +"keypoints:\n" +"- \"General-purpose languages have libraries for accessing databases.\"\n" +"- \"To connect to a database, a program must use a library specific to that database manager.\"\n" +"- \"These libraries use a connection-and-cursor model.\"\n" +"- \"Programs can read query results in batches or all at once.\"\n" +"- \"Queries should be written using parameter substitution, not string formatting.\"\n" +"---" +msgstr "" + +#: sql-novice-survey/_episodes/10-prog.md:18 +msgid "To close,\n" +"let's have a look at how to access a database from\n" +"a general-purpose programming language like Python.\n" +"Other languages use almost exactly the same model:\n" +"library and function names may differ,\n" +"but the concepts are the same." +msgstr "" + +#: sql-novice-survey/_episodes/10-prog.md:25 +msgid "Here's a short Python program that selects latitudes and longitudes\n" +"from an SQLite database stored in a file called `survey.db`:" +msgstr "" + +#: sql-novice-survey/_episodes/10-prog.md:28 +# code block +msgid "~~~\n" +"import sqlite3\n" +"\n" +"connection = sqlite3.connect(\"survey.db\")\n" +"cursor = connection.cursor()\n" +"cursor.execute(\"SELECT Site.lat, Site.long FROM Site;\")\n" +"results = cursor.fetchall()\n" +"for r in results:\n" +" print(r)\n" +"cursor.close()\n" +"connection.close()\n" +"~~~" +msgstr "" + +#: sql-novice-survey/_episodes/10-prog.md:40 +#: sql-novice-survey/_episodes/10-prog.md:111 +#: sql-novice-survey/_episodes/10-prog.md:171 +#: sql-novice-survey/_episodes/10-prog.md:222 +#: sql-novice-survey/_episodes/10-prog.md:266 +# SC/DC Template label +msgid "{: .python}" +msgstr "" + +#: sql-novice-survey/_episodes/10-prog.md:41 +# code block +msgid "~~~\n" +"(-49.85, -128.57)\n" +"(-47.15, -126.72)\n" +"(-48.87, -123.4)\n" +"~~~" +msgstr "" + +#: sql-novice-survey/_episodes/10-prog.md:46 +#: sql-novice-survey/_episodes/10-prog.md:115 +#: sql-novice-survey/_episodes/10-prog.md:175 +#: sql-novice-survey/_episodes/10-prog.md:226 +#: sql-novice-survey/_episodes/10-prog.md:270 +#: sql-novice-survey/_episodes/11-prog-R.md:44 +#: sql-novice-survey/_episodes/11-prog-R.md:100 +#: sql-novice-survey/_episodes/11-prog-R.md:160 +#: sql-novice-survey/_episodes/11-prog-R.md:208 +#: sql-novice-survey/_episodes/11-prog-R.md:220 +#: sql-novice-survey/_episodes/11-prog-R.md:237 +#: sql-novice-survey/_episodes/11-prog-R.md:259 +# SC/DC Template label +msgid "{: .output}" +msgstr "" + +#: sql-novice-survey/_episodes/10-prog.md:48 +msgid "The program starts by importing the `sqlite3` library.\n" +"If we were connecting to MySQL, DB2, or some other database,\n" +"we would import a different library,\n" +"but all of them provide the same functions,\n" +"so that the rest of our program does not have to change\n" +"(at least, not much)\n" +"if we switch from one database to another." +msgstr "" + +#: sql-novice-survey/_episodes/10-prog.md:56 +msgid "Line 2 establishes a connection to the database.\n" +"Since we're using SQLite,\n" +"all we need to specify is the name of the database file.\n" +"Other systems may require us to provide a username and password as well.\n" +"Line 3 then uses this connection to create a [cursor]({{ site.github.url }}/reference.html#cursor).\n" +"Just like the cursor in an editor,\n" +"its role is to keep track of where we are in the database." +msgstr "" + +#: sql-novice-survey/_episodes/10-prog.md:64 +msgid "On line 4, we use that cursor to ask the database to execute a query for us.\n" +"The query is written in SQL,\n" +"and passed to `cursor.execute` as a string.\n" +"It's our job to make sure that SQL is properly formatted;\n" +"if it isn't,\n" +"or if something goes wrong when it is being executed,\n" +"the database will report an error." +msgstr "" + +#: sql-novice-survey/_episodes/10-prog.md:72 +msgid "The database returns the results of the query to us\n" +"in response to the `cursor.fetchall` call on line 5.\n" +"This result is a list with one entry for each record in the result set;\n" +"if we loop over that list (line 6) and print those list entries (line 7),\n" +"we can see that each one is a tuple\n" +"with one element for each field we asked for." +msgstr "" + +#: sql-novice-survey/_episodes/10-prog.md:79 +msgid "Finally, lines 8 and 9 close our cursor and our connection,\n" +"since the database can only keep a limited number of these open at one time.\n" +"Since establishing a connection takes time,\n" +"though,\n" +"we shouldn't open a connection,\n" +"do one operation,\n" +"then close the connection,\n" +"only to reopen it a few microseconds later to do another operation.\n" +"Instead,\n" +"it's normal to create one connection that stays open for the lifetime of the program." +msgstr "" + +#: sql-novice-survey/_episodes/10-prog.md:90 +#: sql-novice-survey/_episodes/11-prog-R.md:77 +msgid "Queries in real applications will often depend on values provided by users.\n" +"For example,\n" +"this function takes a user's ID as a parameter and returns their name:" +msgstr "" + +#: sql-novice-survey/_episodes/10-prog.md:94 +# code block +msgid "~~~\n" +"import sqlite3\n" +"\n" +"def get_name(database_file, person_id):\n" +" query = \"SELECT personal || ' ' || family FROM Person WHERE id='\" + person_id + \"';\"\n" +"\n" +" connection = sqlite3.connect(database_file)\n" +" cursor = connection.cursor()\n" +" cursor.execute(query)\n" +" results = cursor.fetchall()\n" +" cursor.close()\n" +" connection.close()\n" +"\n" +" return results[0][0]\n" +"\n" +"print(\"Full name for dyer:\", get_name('survey.db', 'dyer'))\n" +"~~~" +msgstr "" + +#: sql-novice-survey/_episodes/10-prog.md:112 +#: sql-novice-survey/_episodes/10-prog.md:172 +# code block +msgid "~~~\n" +"Full name for dyer: William Dyer\n" +"~~~" +msgstr "" + +#: sql-novice-survey/_episodes/10-prog.md:117 +#: sql-novice-survey/_episodes/11-prog-R.md:102 +msgid "We use string concatenation on the first line of this function\n" +"to construct a query containing the user ID we have been given.\n" +"This seems simple enough,\n" +"but what happens if someone gives us this string as input?" +msgstr "" + +#: sql-novice-survey/_episodes/10-prog.md:122 +# code block +msgid "~~~\n" +"dyer'; DROP TABLE Survey; SELECT '\n" +"~~~" +msgstr "" + +#: sql-novice-survey/_episodes/10-prog.md:125 +# SC/DC Template label +msgid "{: .source}" +msgstr "" + +#: sql-novice-survey/_episodes/10-prog.md:127 +#: sql-novice-survey/_episodes/11-prog-R.md:112 +msgid "It looks like there's garbage after the user's ID,\n" +"but it is very carefully chosen garbage.\n" +"If we insert this string into our query,\n" +"the result is:" +msgstr "" + +#: sql-novice-survey/_episodes/10-prog.md:132 +# code block +msgid "~~~\n" +"SELECT personal || ' ' || family FROM Person WHERE id='dyer'; DROP TABLE Survey; SELECT '';\n" +"~~~" +msgstr "" + +#: sql-novice-survey/_episodes/10-prog.md:137 +#: sql-novice-survey/_episodes/11-prog-R.md:122 +msgid "If we execute this,\n" +"it will erase one of the tables in our database." +msgstr "" + +#: sql-novice-survey/_episodes/10-prog.md:140 +msgid "This is called an [SQL injection attack]({{ site.github.url }}/reference.html#sql-injection-attack),\n" +"and it has been used to attack thousands of programs over the years.\n" +"In particular,\n" +"many web sites that take data from users insert values directly into queries\n" +"without checking them carefully first." +msgstr "" + +#: sql-novice-survey/_episodes/10-prog.md:146 +msgid "Since a villain might try to smuggle commands into our queries in many different ways,\n" +"the safest way to deal with this threat is\n" +"to replace characters like quotes with their escaped equivalents,\n" +"so that we can safely put whatever the user gives us inside a string.\n" +"We can do this by using a [prepared statement]({{ site.github.url }}/reference.html#prepared-statement)\n" +"instead of formatting our statements as strings.\n" +"Here's what our example program looks like if we do this:" +msgstr "" + +#: sql-novice-survey/_episodes/10-prog.md:154 +# code block +msgid "~~~\n" +"import sqlite3\n" +"\n" +"def get_name(database_file, person_id):\n" +" query = \"SELECT personal || ' ' || family FROM Person WHERE id=?;\"\n" +"\n" +" connection = sqlite3.connect(database_file)\n" +" cursor = connection.cursor()\n" +" cursor.execute(query, [person_id])\n" +" results = cursor.fetchall()\n" +" cursor.close()\n" +" connection.close()\n" +"\n" +" return results[0][0]\n" +"\n" +"print(\"Full name for dyer:\", get_name('survey.db', 'dyer'))\n" +"~~~" +msgstr "" + +#: sql-novice-survey/_episodes/10-prog.md:177 +msgid "The key changes are in the query string and the `execute` call.\n" +"Instead of formatting the query ourselves,\n" +"we put question marks in the query template where we want to insert values.\n" +"When we call `execute`,\n" +"we provide a list\n" +"that contains as many values as there are question marks in the query.\n" +"The library matches values to question marks in order,\n" +"and translates any special characters in the values\n" +"into their escaped equivalents\n" +"so that they are safe to use." +msgstr "" + +#: sql-novice-survey/_episodes/10-prog.md:188 +msgid "We can also use `sqlite3`'s cursor to make changes to our database,\n" +"such as inserting a new name.\n" +"For instance, we can define a new function called `add_name` like so:" +msgstr "" + +#: sql-novice-survey/_episodes/10-prog.md:192 +# code block +msgid "~~~\n" +"import sqlite3\n" +"\n" +"def add_name(database_file, new_person):\n" +" query = \"INSERT INTO Person VALUES (?, ?, ?);\"\n" +"\n" +" connection = sqlite3.connect(database_file)\n" +" cursor = connection.cursor()\n" +" cursor.execute(query, list(new_person))\n" +" cursor.close()\n" +" connection.close()\n" +"\n" +"\n" +"def get_name(database_file, person_id):\n" +" query = \"SELECT personal || ' ' || family FROM Person WHERE id=?;\"\n" +"\n" +" connection = sqlite3.connect(database_file)\n" +" cursor = connection.cursor()\n" +" cursor.execute(query, [person_id])\n" +" results = cursor.fetchall()\n" +" cursor.close()\n" +" connection.close()\n" +"\n" +" return results[0][0]\n" +"\n" +"# Insert a new name\n" +"add_name('survey.db', ('barrett', 'Mary', 'Barrett'))\n" +"# Check it exists\n" +"print(\"Full name for barrett:\", get_name('survey.db', 'barrett'))\n" +"~~~" +msgstr "" + +#: sql-novice-survey/_episodes/10-prog.md:223 +# code block +msgid "~~~\n" +"IndexError: list index out of range\n" +"~~~" +msgstr "" + +#: sql-novice-survey/_episodes/10-prog.md:228 +msgid "Note that in versions of sqlite3 >= 2.5, the `get_name` function described\n" +"above will fail with an `IndexError: list index out of range`,\n" +"even though we added Mary's\n" +"entry into the table using `add_name`.\n" +"This is because we must perform a `connection.commit()` before closing\n" +"the connection, in order to save our changes to the database." +msgstr "" + +#: sql-novice-survey/_episodes/10-prog.md:235 +# code block +msgid "~~~\n" +"import sqlite3\n" +"\n" +"def add_name(database_file, new_person):\n" +" query = \"INSERT INTO Person VALUES (?, ?, ?);\"\n" +"\n" +" connection = sqlite3.connect(database_file)\n" +" cursor = connection.cursor()\n" +" cursor.execute(query, list(new_person))\n" +" cursor.close()\n" +" connection.commit()\n" +" connection.close()\n" +"\n" +"\n" +"def get_name(database_file, person_id):\n" +" query = \"SELECT personal || ' ' || family FROM Person WHERE id=?;\"\n" +"\n" +" connection = sqlite3.connect(database_file)\n" +" cursor = connection.cursor()\n" +" cursor.execute(query, [person_id])\n" +" results = cursor.fetchall()\n" +" cursor.close()\n" +" connection.close()\n" +"\n" +" return results[0][0]\n" +"\n" +"# Insert a new name\n" +"add_name('survey.db', ('barrett', 'Mary', 'Barrett'))\n" +"# Check it exists\n" +"print(\"Full name for barrett:\", get_name('survey.db', 'barrett'))\n" +"~~~" +msgstr "" + +#: sql-novice-survey/_episodes/10-prog.md:267 +# code block +msgid "~~~\n" +"Full name for barrett: Mary Barrett\n" +"~~~" +msgstr "" + +#: sql-novice-survey/_episodes/10-prog.md:273 +# blockquote, which can be cascaded +msgid "> ## Filling a Table vs. Printing Values" +msgstr "" + +#: sql-novice-survey/_episodes/10-prog.md:274 +msgid ">\n" +"> Write a Python program that creates a new database in a file called\n" +"> `original.db` containing a single table called `Pressure`, with a\n" +"> single field called `reading`, and inserts 100,000 random numbers\n" +"> between 10.0 and 25.0. How long does it take this program to run?\n" +"> How long does it take to run a program that simply writes those\n" +"> random numbers to a file?\n" +">\n" +"> > ## Solution\n" +"> > ~~~\n" +"> > import sqlite3\n" +"> > # import random number generator\n" +"> > from numpy.random import uniform\n" +"> >\n" +"> > random_numbers = uniform(low=10.0, high=25.0, size=100000)\n" +"> >\n" +"> > connection = sqlite3.connect(\"original.db\")\n" +"> > cursor = connection.cursor()\n" +"> > cursor.execute(\"CREATE TABLE Pressure (reading float not null)\")\n" +"> > query = \"INSERT INTO Pressure values (?);\"\n" +"> >\n" +"> > for number in random_numbers:\n" +"> > cursor.execute(query, [number])\n" +"> >\n" +"> > cursor.close()\n" +"> > # save changes to file for next exercise\n" +"> > connection.commit()\n" +"> > connection.close()\n" +"> > ~~~\n" +"> > {: .python}\n" +"> >\n" +"> > For comparison, the following program writes the random numbers\n" +"> > into the file `random_numbers.txt`:\n" +"> >\n" +"> > ~~~\n" +"> > from numpy.random import uniform\n" +"> >\n" +"> > random_numbers = uniform(low=10.0, high=25.0, size=100000)\n" +"> > with open('random_numbers.txt', 'w') as outfile:\n" +"> > for number in random_numbers:\n" +"> > # need to add linebreak \\n\n" +"> > outfile.write(\"{}\\n\".format(number))\n" +"> > ~~~\n" +"> > {: .python}" +msgstr "" + +#: sql-novice-survey/_episodes/10-prog.md:321 +# blockquote, which can be cascaded +msgid "> ## Filtering in SQL vs. Filtering in Python" +msgstr "" + +#: sql-novice-survey/_episodes/10-prog.md:322 +msgid ">\n" +"> Write a Python program that creates a new database called\n" +"> `backup.db` with the same structure as `original.db` and copies all\n" +"> the values greater than 20.0 from `original.db` to `backup.db`.\n" +"> Which is faster: filtering values in the query, or reading\n" +"> everything into memory and filtering in Python?\n" +">\n" +"> > ## Solution\n" +"> > The first example reads all the data into memory and filters the\n" +"> > numbers using the if statement in Python.\n" +"> >\n" +"> > ~~~\n" +"> > import sqlite3\n" +"> >\n" +"> > connection_original = sqlite3.connect(\"original.db\")\n" +"> > cursor_original = connection_original.cursor()\n" +"> > cursor_original.execute(\"SELECT * FROM Pressure;\")\n" +"> > results = cursor_original.fetchall()\n" +"> > cursor_original.close()\n" +"> > connection_original.close()\n" +"> >\n" +"> > connection_backup = sqlite3.connect(\"backup.db\")\n" +"> > cursor_backup = connection_backup.cursor()\n" +"> > cursor_backup.execute(\"CREATE TABLE Pressure (reading float not null)\")\n" +"> > query = \"INSERT INTO Pressure values (?);\"\n" +"> >\n" +"> > for entry in results:\n" +"> > # number is saved in first column of the table\n" +"> > if entry[0] > 20.0:\n" +"> > cursor_backup.execute(query, entry)\n" +"> >\n" +"> > cursor_backup.close()\n" +"> > connection_backup.commit()\n" +"> > connection_backup.close()\n" +"> > ~~~\n" +"> > {: .python}\n" +"> >\n" +"> > In contrast the following example uses the conditional ``SELECT`` statement\n" +"> > to filter the numbers in SQL.\n" +"> > The only lines that changed are in line 5, where the values are fetched\n" +"> > from `original.db` and the for loop starting in line 15 used to insert\n" +"> > the numbers into `backup.db`.\n" +"> > Note how this version does not require the use of Python's if statement.\n" +"> >\n" +"> > ~~~\n" +"> > import sqlite3\n" +"> >\n" +"> > connection_original = sqlite3.connect(\"original.db\")\n" +"> > cursor_original = connection_original.cursor()\n" +"> > cursor_original.execute(\"SELECT * FROM Pressure WHERE reading > 20.0;\")\n" +"> > results = cursor_original.fetchall()\n" +"> > cursor_original.close()\n" +"> > connection_original.close()\n" +"> >\n" +"> > connection_backup = sqlite3.connect(\"backup.db\")\n" +"> > cursor_backup = connection_backup.cursor()\n" +"> > cursor_backup.execute(\"CREATE TABLE Pressure (reading float not null)\")\n" +"> > query = \"INSERT INTO Pressure values (?);\"\n" +"> >\n" +"> > for entry in results:\n" +"> > cursor_backup.execute(query, entry)\n" +"> >\n" +"> > cursor_backup.close()\n" +"> > connection_backup.commit()\n" +"> > connection_backup.close()\n" +"> > ~~~\n" +"> > {: .python}\n" +"> >" +msgstr "" + +#: sql-novice-survey/_episodes/11-prog-R.md:1 +# Front Matter +msgid "---\n" +"title: Programming with Databases - R\n" +"teaching: 30\n" +"exercises: 15\n" +"questions:\n" +"- \"How can I access databases from programs written in R?\"\n" +"objectives:\n" +"- \"Write short programs that execute SQL queries.\"\n" +"- \"Trace the execution of a program that contains an SQL query.\"\n" +"- \"Explain why most database applications are written in a general-purpose language rather than in SQL.\"\n" +"keypoints:\n" +"- \"Data analysis languages have libraries for accessing databases.\"\n" +"- \"To connect to a database, a program must use a library specific to that database manager.\"\n" +"- \"R's libraries can be used to directly query or read from a database.\"\n" +"- \"Programs can read query results in batches or all at once.\"\n" +"- \"Queries should be written using parameter substitution, not string formatting.\"\n" +"- \"R has multiple helper functions to make working with databases easier.\"\n" +"---" +msgstr "" + +#: sql-novice-survey/_episodes/11-prog-R.md:20 +msgid "To close,\n" +"let's have a look at how to access a database from\n" +"a data analysis language like R.\n" +"Other languages use almost exactly the same model:\n" +"library and function names may differ,\n" +"but the concepts are the same." +msgstr "" + +#: sql-novice-survey/_episodes/11-prog-R.md:27 +msgid "Here's a short R program that selects latitudes and longitudes\n" +"from an SQLite database stored in a file called `survey.db`:" +msgstr "" + +#: sql-novice-survey/_episodes/11-prog-R.md:30 +# code block +msgid "~~~\n" +"library(RSQLite)\n" +"connection <- dbConnect(SQLite(), \"survey.db\")\n" +"results <- dbGetQuery(connection, \"SELECT Site.lat, Site.long FROM Site;\")\n" +"print(results)\n" +"dbDisconnect(connection)\n" +"~~~" +msgstr "" + +#: sql-novice-survey/_episodes/11-prog-R.md:37 +#: sql-novice-survey/_episodes/11-prog-R.md:96 +#: sql-novice-survey/_episodes/11-prog-R.md:156 +#: sql-novice-survey/_episodes/11-prog-R.md:204 +#: sql-novice-survey/_episodes/11-prog-R.md:216 +#: sql-novice-survey/_episodes/11-prog-R.md:228 +#: sql-novice-survey/_episodes/11-prog-R.md:249 +#: sql-novice-survey/_episodes/11-prog-R.md:266 +# SC/DC Template label +msgid "{: .r}" +msgstr "" + +#: sql-novice-survey/_episodes/11-prog-R.md:38 +# code block +msgid "~~~\n" +" lat long\n" +"1 -49.85 -128.57\n" +"2 -47.15 -126.72\n" +"3 -48.87 -123.40\n" +"~~~" +msgstr "" + +#: sql-novice-survey/_episodes/11-prog-R.md:46 +msgid "The program starts by importing the `RSQLite` library.\n" +"If we were connecting to MySQL, DB2, or some other database,\n" +"we would import a different library,\n" +"but all of them provide the same functions,\n" +"so that the rest of our program does not have to change\n" +"(at least, not much)\n" +"if we switch from one database to another." +msgstr "" + +#: sql-novice-survey/_episodes/11-prog-R.md:54 +msgid "Line 2 establishes a connection to the database.\n" +"Since we're using SQLite,\n" +"all we need to specify is the name of the database file.\n" +"Other systems may require us to provide a username and password as well." +msgstr "" + +#: sql-novice-survey/_episodes/11-prog-R.md:59 +msgid "On line 3, we retrieve the results from an SQL query.\n" +"It's our job to make sure that SQL is properly formatted;\n" +"if it isn't,\n" +"or if something goes wrong when it is being executed,\n" +"the database will report an error.\n" +"This result is a dataframe with one row for each entry and one column for each column in the database." +msgstr "" + +#: sql-novice-survey/_episodes/11-prog-R.md:66 +msgid "Finally, the last line closes our connection,\n" +"since the database can only keep a limited number of these open at one time.\n" +"Since establishing a connection takes time,\n" +"though,\n" +"we shouldn't open a connection,\n" +"do one operation,\n" +"then close the connection,\n" +"only to reopen it a few microseconds later to do another operation.\n" +"Instead,\n" +"it's normal to create one connection that stays open for the lifetime of the program." +msgstr "" + +#: sql-novice-survey/_episodes/11-prog-R.md:81 +# code block +msgid "~~~\n" +"library(RSQLite)\n" +"\n" +"connection <- dbConnect(SQLite(), \"survey.db\")\n" +"\n" +"getName <- function(personID) {\n" +" query <- paste0(\"SELECT personal || ' ' || family FROM Person WHERE id =='\",\n" +" personID, \"';\")\n" +" return(dbGetQuery(connection, query))\n" +"}\n" +"\n" +"print(paste(\"full name for dyer:\", getName('dyer')))\n" +"\n" +"dbDisconnect(connection)\n" +"~~~" +msgstr "" + +#: sql-novice-survey/_episodes/11-prog-R.md:97 +#: sql-novice-survey/_episodes/11-prog-R.md:157 +# code block +msgid "~~~ \n" +"full name for dyer: William Dyer\n" +"~~~" +msgstr "" + +#: sql-novice-survey/_episodes/11-prog-R.md:107 +# code block +msgid "~~~ \n" +"dyer'; DROP TABLE Survey; SELECT '\n" +"~~~" +msgstr "" + +#: sql-novice-survey/_episodes/11-prog-R.md:117 +# code block +msgid "~~~ \n" +"SELECT personal || ' ' || family FROM Person WHERE id='dyer'; DROP TABLE Survey; SELECT '';\n" +"~~~" +msgstr "" + +#: sql-novice-survey/_episodes/11-prog-R.md:125 +msgid "This is called an [SQL injection attack]({{ site.github.url }}/reference.html#sql-injection-attack),\n" +"and it has been used to attack thousands of programs over the years.\n" +"In particular,\n" +"many web sites that take data from users insert values directly into queries\n" +"without checking them carefully first.\n" +"A very [relevant XKCD](https://xkcd.com/327/) that explains the \n" +"dangers of using raw input in queries a little more succinctly:" +msgstr "" + +#: sql-novice-survey/_episodes/11-prog-R.md:133 +msgid "![relevant XKCD](https://imgs.xkcd.com/comics/exploits_of_a_mom.png) " +msgstr "" + +#: sql-novice-survey/_episodes/11-prog-R.md:135 +msgid "Since an unscrupulous parent might try to smuggle commands into our queries in many different ways,\n" +"the safest way to deal with this threat is\n" +"to replace characters like quotes with their escaped equivalents,\n" +"so that we can safely put whatever the user gives us inside a string.\n" +"We can do this by using a [prepared statement]({{ site.github.url }}/reference.html#prepared-statement)\n" +"instead of formatting our statements as strings.\n" +"Here's what our example program looks like if we do this:" +msgstr "" + +#: sql-novice-survey/_episodes/11-prog-R.md:143 +# code block +msgid "~~~ \n" +"library(RSQLite)\n" +"connection <- dbConnect(SQLite(), \"survey.db\")\n" +"\n" +"getName <- function(personID) {\n" +" query <- \"SELECT personal || ' ' || family FROM Person WHERE id == ?\"\n" +" return(dbGetPreparedQuery(connection, query, data.frame(personID)))\n" +"}\n" +"\n" +"print(paste(\"full name for dyer:\", getName('dyer')))\n" +"\n" +"dbDisconnect(connection)\n" +"~~~" +msgstr "" + +#: sql-novice-survey/_episodes/11-prog-R.md:162 +msgid "The key changes are in the query string and the `dbGetQuery` call (we use dbGetPreparedQuery instead).\n" +"Instead of formatting the query ourselves,\n" +"we put question marks in the query template where we want to insert values.\n" +"When we call `dbGetPreparedQuery`,\n" +"we provide a dataframe\n" +"that contains as many values as there are question marks in the query.\n" +"The library matches values to question marks in order,\n" +"and translates any special characters in the values\n" +"into their escaped equivalents\n" +"so that they are safe to use." +msgstr "" + +#: sql-novice-survey/_episodes/11-prog-R.md:173 +# blockquote, which can be cascaded +msgid "> ## Filling a Table vs. Printing Values " +msgstr "" + +#: sql-novice-survey/_episodes/11-prog-R.md:174 +msgid ">\n" +"> Write an R program that creates a new database in a file called\n" +"> `original.db` containing a single table called `Pressure`, with a\n" +"> single field called `reading`, and inserts 100,000 random numbers\n" +"> between 10.0 and 25.0. How long does it take this program to run?\n" +"> How long does it take to run a program that simply writes those\n" +"> random numbers to a file?" +msgstr "" + +#: sql-novice-survey/_episodes/11-prog-R.md:183 +# blockquote, which can be cascaded +msgid "> ## Filtering in SQL vs. Filtering in R" +msgstr "" + +#: sql-novice-survey/_episodes/11-prog-R.md:184 +msgid ">\n" +"> Write an R program that creates a new database called\n" +"> `backup.db` with the same structure as `original.db` and copies all\n" +"> the values greater than 20.0 from `original.db` to `backup.db`.\n" +"> Which is faster: filtering values in the query, or reading\n" +"> everything into memory and filtering in R?" +msgstr "" + +#: sql-novice-survey/_episodes/11-prog-R.md:192 +# header +msgid "## Database helper functions in R" +msgstr "" + +#: sql-novice-survey/_episodes/11-prog-R.md:194 +msgid "R's database interface packages (like `RSQLite`) all share \n" +"a common set of helper functions useful for exploring databases and \n" +"reading/writing entire tables at once." +msgstr "" + +#: sql-novice-survey/_episodes/11-prog-R.md:198 +msgid "To view all tables in a database, we can use `dbListTables()`:" +msgstr "" + +#: sql-novice-survey/_episodes/11-prog-R.md:200 +# code block +msgid "~~~ \n" +"connection <- dbConnect(SQLite(), \"survey.db\")\n" +"dbListTables(connection)\n" +"~~~" +msgstr "" + +#: sql-novice-survey/_episodes/11-prog-R.md:205 +# code block +msgid "~~~\n" +"\"Person\" \"Site\" \"Survey\" \"Visited\"\n" +"~~~" +msgstr "" + +#: sql-novice-survey/_episodes/11-prog-R.md:211 +msgid "To view all column names of a table, use `dbListFields()`:" +msgstr "" + +#: sql-novice-survey/_episodes/11-prog-R.md:213 +# code block +msgid "~~~\n" +"dbListFields(connection, \"Survey\")\n" +"~~~" +msgstr "" + +#: sql-novice-survey/_episodes/11-prog-R.md:217 +# code block +msgid "~~~\n" +"\"taken\" \"person\" \"quant\" \"reading\"\n" +"~~~" +msgstr "" + +#: sql-novice-survey/_episodes/11-prog-R.md:223 +msgid "To read an entire table as a dataframe, use `dbReadTable()`:" +msgstr "" + +#: sql-novice-survey/_episodes/11-prog-R.md:225 +# code block +msgid "~~~\n" +"dbReadTable(connection, \"Person\")\n" +"~~~" +msgstr "" + +#: sql-novice-survey/_episodes/11-prog-R.md:229 +# code block +msgid "~~~\n" +" id personal family\n" +"1 dyer William Dyer\n" +"2 pb Frank Pabodie\n" +"3 lake Anderson Lake\n" +"4 roe Valentina Roerich\n" +"5 danforth Frank Danforth\n" +"~~~" +msgstr "" + +#: sql-novice-survey/_episodes/11-prog-R.md:240 +msgid "Finally to write an entire table to a database, you can use `dbWriteTable()`. \n" +"Note that we will always want to use the `row.names = FALSE` argument or R \n" +"will write the row names as a separate column. \n" +"In this example we will write R's built-in `iris` dataset as a table in `survey.db`." +msgstr "" + +#: sql-novice-survey/_episodes/11-prog-R.md:245 +# code block +msgid "~~~\n" +"dbWriteTable(connection, \"iris\", iris, row.names = FALSE)\n" +"head(dbReadTable(connection, \"iris\"))\n" +"~~~" +msgstr "" + +#: sql-novice-survey/_episodes/11-prog-R.md:250 +# code block +msgid "~~~\n" +" Sepal.Length Sepal.Width Petal.Length Petal.Width Species\n" +"1 5.1 3.5 1.4 0.2 setosa\n" +"2 4.9 3.0 1.4 0.2 setosa\n" +"3 4.7 3.2 1.3 0.2 setosa\n" +"4 4.6 3.1 1.5 0.2 setosa\n" +"5 5.0 3.6 1.4 0.2 setosa\n" +"6 5.4 3.9 1.7 0.4 setosa\n" +"~~~" +msgstr "" + +#: sql-novice-survey/_episodes/11-prog-R.md:261 +msgid "And as always, remember to close the database connection when done!" +msgstr "" + +#: sql-novice-survey/_episodes/11-prog-R.md:263 +# code block +msgid "~~~\n" +"dbDisconnect(connection)\n" +"~~~" +msgstr "" + +#: sql-novice-survey/_extras/about.md:1 +# Front Matter +msgid "---\n" +"layout: page\n" +"title: About\n" +"permalink: /about/\n" +"---" +msgstr "" + +#: sql-novice-survey/_extras/about.md:6 +msgid "{% include carpentries.html %}" +msgstr "" + +#: sql-novice-survey/_extras/discuss.md:1 +# Front Matter +msgid "---\n" +"layout: page\n" +"title: Discussion\n" +"permalink: /discuss/\n" +"---" +msgstr "" + +#: sql-novice-survey/_extras/discuss.md:7 +msgid "Relational databases are the most widely used by far,\n" +"but other kinds also exist,\n" +"such as the document-oriented database [MongoDB](https://www.mongodb.com/)." +msgstr "" + +#: sql-novice-survey/_extras/figures.md:1 +# Front Matter +msgid "---\n" +"layout: page\n" +"title: Figures\n" +"permalink: /figures/\n" +"---" +msgstr "" + +#: sql-novice-survey/_extras/figures.md:6 +msgid "{% include all_figures.html %}" +msgstr "" + +#: sql-novice-survey/_extras/guide.md:1 +# Front Matter +msgid "---\n" +"layout: page\n" +"title: \"Instructor Notes\"\n" +"permalink: /guide/\n" +"---" +msgstr "" + +#: sql-novice-survey/_extras/guide.md:7 +# blockquote, which can be cascaded +msgid "> **database** (dā'tə-bās') noun:" +msgstr "" + +#: sql-novice-survey/_extras/guide.md:8 +# blockquote, which can be cascaded +msgid "> \"A collection of data arranged for ease and speed of search and retrieval by a computer\"" +msgstr "" + +#: sql-novice-survey/_extras/guide.md:9 +msgid ">\n" +"> — The American Heritage® Science Dictionary" +msgstr "" + +#: sql-novice-survey/_extras/guide.md:11 +# SC/DC Template label +msgid "{: .quotation}" +msgstr "" + +#: sql-novice-survey/_extras/guide.md:13 +# unordered list +msgid "* Three common options for storing data" +msgstr "" + +#: sql-novice-survey/_extras/guide.md:14 +# unordered list +msgid "* Text" +msgstr "" + +#: sql-novice-survey/_extras/guide.md:15 +# unordered list +msgid " * Easy to create, work well with version control" +msgstr "" + +#: sql-novice-survey/_extras/guide.md:16 +# unordered list +msgid " * But then we have to build search and analysis tools ourselves" +msgstr "" + +#: sql-novice-survey/_extras/guide.md:17 +# unordered list +msgid "* Spreadsheets" +msgstr "" + +#: sql-novice-survey/_extras/guide.md:18 +# unordered list +msgid " * Good for simple analyses" +msgstr "" + +#: sql-novice-survey/_extras/guide.md:19 +# unordered list +msgid " * But don't handle large or complex data sets well" +msgstr "" + +#: sql-novice-survey/_extras/guide.md:20 +# unordered list +msgid "* Databases" +msgstr "" + +#: sql-novice-survey/_extras/guide.md:21 +# unordered list +msgid " * Include powerful tools for search and analysis" +msgstr "" + +#: sql-novice-survey/_extras/guide.md:22 +# unordered list +msgid " * Can handle large, complex data sets." +msgstr "" + +#: sql-novice-survey/_extras/guide.md:24 +# header +msgid "## Overall" +msgstr "" + +#: sql-novice-survey/_extras/guide.md:26 +msgid "Relational databases are not as widely used in science as in business,\n" +"but they are still a common way to store large data sets with complex structure.\n" +"Even when the data itself isn't in a database,\n" +"the metadata could be:\n" +"for example,\n" +"meteorological data might be stored in files on disk,\n" +"but data about when and where observations were made,\n" +"data ranges,\n" +"and so on could be in a database\n" +"to make it easier for scientists to find what they want to." +msgstr "" + +#: sql-novice-survey/_extras/guide.md:37 +# unordered list +msgid "* The first few sections (up to \"Missing Data\") usually go very quickly." +msgstr "" + +#: sql-novice-survey/_extras/guide.md:38 +msgid " The pace usually slows down a bit when null values are discussed\n" +" mostly because learners have a lot of details to keep straight by this point.\n" +" Things *really* slow down during the discussion of joins,\n" +" but this is the key idea in the whole lesson:\n" +" important ideas like primary keys and referential integrity\n" +" only make sense once learners have seen how they're used in joins.\n" +" It's worth going over things a couple of times if necessary (with lots of examples)." +msgstr "" + +#: sql-novice-survey/_extras/guide.md:46 +# unordered list +msgid "* The sections on creating and modifying data," +msgstr "" + +#: sql-novice-survey/_extras/guide.md:47 +msgid " and programming with databases,\n" +" can be dropped if time is short.\n" +" Of the two,\n" +" people seem to care most about how to add data (which only takes a few minutes to demonstrate)." +msgstr "" + +#: sql-novice-survey/_extras/guide.md:52 +# unordered list +msgid "* Simple calculations are actually easier to do in a spreadsheet; the" +msgstr "" + +#: sql-novice-survey/_extras/guide.md:53 +msgid " advantages of using a database become clear as soon as filtering\n" +" and joins are needed. Instructors may therefore want to show a\n" +" spreadsheet with the information from the four database tables\n" +" consolidated into a single sheet, and demonstrate what's needed in\n" +" both systems to answer questions like, \"What was the average\n" +" radiation reading in 1931?\"" +msgstr "" + +#: sql-novice-survey/_extras/guide.md:60 +# unordered list +msgid "* Some advanced learners may have heard that NoSQL databases" +msgstr "" + +#: sql-novice-survey/_extras/guide.md:61 +msgid " (i.e., ones that don't use the relational model)\n" +" are the next big thing,\n" +" and ask why we're not teaching those.\n" +" The answers are:\n" +" 1. Relational databases are far more widely used than NoSQL databases.\n" +" 2. We have far more experience with relational databases than with any other kind,\n" +" so we have a better idea of what to teach and how to teach it.\n" +" 3. NoSQL databases are as different from each other as they are from relational databases.\n" +" Until a leader emerges, it isn't clear *which* NoSQL database we should teach." +msgstr "" + +#: sql-novice-survey/_extras/guide.md:71 +# header +msgid "## Resources" +msgstr "" + +#: sql-novice-survey/_extras/guide.md:73 +# unordered list +msgid "* `data/*.csv`: CSV versions of data in sample survey database." +msgstr "" + +#: sql-novice-survey/_extras/guide.md:74 +# unordered list +msgid "* `bin/create-db.sql`: generate survey database used in examples based on CSV." +msgstr "" + +#: sql-novice-survey/_extras/guide.md:76 +# header +msgid "## SQLite Setup" +msgstr "" + +#: sql-novice-survey/_extras/guide.md:78 +msgid "In order to execute the following lessons interactively,\n" +"please install SQLite as mentioned in the setup instructions for your workshop.\n" +"Then:" +msgstr "" + +#: sql-novice-survey/_extras/guide.md:82 +# code block +msgid "~~~\n" +"$ git clone http://github.com/swcarpentry/sql-novice-survey.git\n" +"$ cd sql-novice-survey\n" +"~~~" +msgstr "" + +#: sql-novice-survey/_extras/guide.md:86 +#: sql-novice-survey/_extras/guide.md:94 +#: sql-novice-survey/_extras/guide.md:108 +#: sql-novice-survey/_extras/guide.md:126 +# SC/DC Template label +msgid "{: .bash}" +msgstr "" + +#: sql-novice-survey/_extras/guide.md:88 +msgid "Next,\n" +"create the database that will be used:" +msgstr "" + +#: sql-novice-survey/_extras/guide.md:91 +# code block +msgid "~~~\n" +"$ sqlite3 survey.sqlite '.read bin/create-db.sql'\n" +"~~~" +msgstr "" + +#: sql-novice-survey/_extras/guide.md:96 +msgid "This reads commands from `bin/create-db.sql`,\n" +"which sets up the tables and loads data from the CSV files in the `data` directory." +msgstr "" + +#: sql-novice-survey/_extras/guide.md:99 +msgid "To run commands interactively,\n" +"run SQLite on `survey.sqlite`:" +msgstr "" + +#: sql-novice-survey/_extras/guide.md:102 +# code block +msgid "~~~\n" +"$ sqlite3 survey.sqlite\n" +"SQLite version 3.8.5 2014-08-15 22:37:57\n" +"Enter \".help\" for usage hints.\n" +"sqlite>\n" +"~~~" +msgstr "" + +#: sql-novice-survey/_extras/guide.md:110 +# header +msgid "## Troubleshooting" +msgstr "" + +#: sql-novice-survey/_extras/guide.md:112 +msgid "The command history and line editing features provided by `readline` are\n" +"invaluable with a command-line tool like `sqlite3`. Participants should be\n" +"encouraged strongly to start with a simple SQL statement and then use the\n" +"up-arrow key to go back and add clauses one at a time, or fix problems, rather\n" +"than typing each command from scratch. Unfortunately on some Linux and Mac OS X\n" +"systems participants have found that the arrow keys do not scroll through the\n" +"command history as expected." +msgstr "" + +#: sql-novice-survey/_extras/guide.md:120 +msgid "A workaround for this it to use the [rlwrap](https://github.com/hanslub42/rlwrap)\n" +"(readline wrapper) command when starting SQLite:" +msgstr "" + +#: sql-novice-survey/_extras/guide.md:123 +# code block +msgid "~~~\n" +"$ rlwrap sqlite3 survey.sqlite\n" +"~~~" +msgstr "" + +#: sql-novice-survey/_extras/guide.md:128 +msgid "The `rlwrap` package is available in the standard Fedora repository\n" +"(but wasn't needed when I [@benwaugh] taught this) and appears to be\n" +"available in [Ubuntu](http://packages.ubuntu.com/precise/rlwrap) too,\n" +"and in [OS X using Homebrew](https://news.ycombinator.com/item?id=5087790)." +msgstr "" + +#: sql-novice-survey/_includes/links.md:1 +msgid "[cc-by-human]: https://creativecommons.org/licenses/by/4.0/\n" +"[cc-by-legal]: https://creativecommons.org/licenses/by/4.0/legalcode\n" +"[ci]: http://communityin.org/\n" +"[coc-reporting]: https://docs.carpentries.org/topic_folders/policies/code-of-conduct.html#reporting-guidelines\n" +"[coc]: https://docs.carpentries.org/topic_folders/policies/code-of-conduct.html\n" +"[concept-maps]: https://carpentries.github.io/instructor-training/05-memory/\n" +"[contrib-covenant]: https://contributor-covenant.org/\n" +"[contributing]: {{ site.github.repository_url }}/blob/gh-pages/CONTRIBUTING.md\n" +"[cran-checkpoint]: https://cran.r-project.org/package=checkpoint\n" +"[cran-knitr]: https://cran.r-project.org/package=knitr\n" +"[cran-stringr]: https://cran.r-project.org/package=stringr\n" +"[email]: mailto:team@carpentries.org\n" +"[github-importer]: https://import.github.com/\n" +"[importer]: https://github.com/new/import\n" +"[jekyll-collection]: https://jekyllrb.com/docs/collections/\n" +"[jekyll-install]: https://jekyllrb.com/docs/installation/\n" +"[jekyll-windows]: http://jekyll-windows.juthilo.com/\n" +"[jekyll]: https://jekyllrb.com/\n" +"[jupyter]: https://jupyter.org/\n" +"[lesson-example]: https://carpentries.github.io/lesson-example/\n" +"[mit-license]: https://opensource.org/licenses/mit-license.html\n" +"[morea]: https://morea-framework.github.io/\n" +"[numfocus]: https://numfocus.org/\n" +"[osi]: https://opensource.org\n" +"[pandoc]: https://pandoc.org/\n" +"[paper-now]: https://github.com/PeerJ/paper-now\n" +"[python-gapminder]: https://swcarpentry.github.io/python-novice-gapminder/\n" +"[pyyaml]: https://pypi.python.org/pypi/PyYAML\n" +"[r-markdown]: https://rmarkdown.rstudio.com/\n" +"[rstudio]: https://www.rstudio.com/\n" +"[ruby-install-guide]: https://www.ruby-lang.org/en/downloads/\n" +"[ruby-installer]: https://rubyinstaller.org/\n" +"[rubygems]: https://rubygems.org/pages/download/\n" +"[styles]: https://github.com/carpentries/styles/\n" +"[swc-releases]: https://github.com/swcarpentry/swc-releases\n" +"[workshop-repo]: {{ site.workshop_repo }}\n" +"[yaml]: http://yaml.org/" +msgstr "" + +#: sql-novice-survey/aio.md:1 +# Front Matter +msgid "---\n" +"layout: page \n" +"root: .\n" +"---" +msgstr "" + +#: sql-novice-survey/aio.md:5 +#: sql-novice-survey/bin/boilerplate/aio.md:3 +# inline html +msgid "" +msgstr "" + +#: sql-novice-survey/aio.md:31 +#: sql-novice-survey/bin/boilerplate/_extras/figures.md:33 +#: sql-novice-survey/bin/boilerplate/aio.md:29 +msgid "{% comment %}\n" +"Create anchor for each one of the episodes.\n" +"{% endcomment %}\n" +"{% for episode in site.episodes %}\n" +"
\n" +"{% endfor %}" +msgstr "" + +#: sql-novice-survey/bin/boilerplate/CONTRIBUTING.md:12 +msgid "By contributing,\n" +"you agree that we may redistribute your work under [our license](LICENSE.md).\n" +"In exchange,\n" +"we will address your issues and/or assess your change proposal as promptly as we can,\n" +"and help you become a member of our community.\n" +"Everyone involved in [Software Carpentry][swc-site] and [Data Carpentry][dc-site]\n" +"agrees to abide by our [code of conduct](CODE_OF_CONDUCT.md)." +msgstr "" + +#: sql-novice-survey/bin/boilerplate/CONTRIBUTING.md:30 +msgid " you can [send us comments by email][email].\n" +" However,\n" +" we will be able to respond more quickly if you use one of the other methods described below." +msgstr "" + +#: sql-novice-survey/bin/boilerplate/CONTRIBUTING.md:49 +msgid " please work in ,\n" +" which can be viewed at ." +msgstr "" + +#: sql-novice-survey/bin/boilerplate/CONTRIBUTING.md:69 +msgid "There are many ways to contribute,\n" +"from writing new exercises and improving existing ones\n" +"to updating or filling in the documentation\n" +"and submitting [bug reports][issues]\n" +"about things that don't work, aren't clear, or are missing.\n" +"If you are looking for ideas, please see the 'Issues' tab for\n" +"a list of issues associated with this repository,\n" +"or you may also look at the issues for [Data Carpentry][dc-issues]\n" +"and [Software Carpentry][swc-issues] projects." +msgstr "" + +#: sql-novice-survey/bin/boilerplate/CONTRIBUTING.md:104 +msgid "If you choose to contribute via GitHub, you may want to look at\n" +"[How to Contribute to an Open Source Project on GitHub][how-contribute].\n" +"To manage changes, we follow [GitHub flow][github-flow].\n" +"Each lesson has two maintainers who review issues and pull requests or encourage others to do so.\n" +"The maintainers are community volunteers and have final say over what gets merged into the lesson.\n" +"To use the web interface for contributing to a lesson:" +msgstr "" + +#: sql-novice-survey/bin/boilerplate/CONTRIBUTING.md:111 +# ordered list +msgid "1. Fork the originating repository to your GitHub profile." +msgstr "" + +#: sql-novice-survey/bin/boilerplate/CONTRIBUTING.md:112 +# ordered list +msgid "2. Within your version of the forked repository, move to the `gh-pages` branch and" +msgstr "" + +#: sql-novice-survey/bin/boilerplate/CONTRIBUTING.md:113 +msgid "create a new branch for each significant change being made.\n" +"3. Navigate to the file(s) you wish to change within the new branches and make revisions as required.\n" +"4. Commit all changed files within the appropriate branches.\n" +"5. Create individual pull requests from each of your changed branches\n" +"to the `gh-pages` branch within the originating repository.\n" +"6. If you receive feedback, make changes using your issue-specific branches of the forked\n" +"repository and the pull requests will update automatically.\n" +"7. Repeat as needed until all feedback has been addressed." +msgstr "" + +#: sql-novice-survey/bin/boilerplate/CONTRIBUTING.md:122 +msgid "When starting work, please make sure your clone of the originating `gh-pages` branch is up-to-date\n" +"before creating your own revision-specific branch(es) from there.\n" +"Additionally, please only work from your newly-created branch(es) and *not*\n" +"your clone of the originating `gh-pages` branch.\n" +"Lastly, published copies of all the lessons are available in the `gh-pages` branch of the originating\n" +"repository for reference while revising." +msgstr "" + +#: sql-novice-survey/bin/boilerplate/CONTRIBUTING.md:131 +msgid "General discussion of [Software Carpentry][swc-site] and [Data Carpentry][dc-site]\n" +"happens on the [discussion mailing list][discuss-list],\n" +"which everyone is welcome to join.\n" +"You can also [reach us by email][email]." +msgstr "" + +#: sql-novice-survey/bin/boilerplate/CONTRIBUTING.md:136 +msgid "[email]: mailto:admin@software-carpentry.org\n" +"[dc-issues]: https://github.com/issues?q=user%3Adatacarpentry\n" +"[dc-lessons]: http://datacarpentry.org/lessons/\n" +"[dc-site]: http://datacarpentry.org/\n" +"[discuss-list]: http://lists.software-carpentry.org/listinfo/discuss\n" +"[github]: https://github.com\n" +"[github-flow]: https://guides.github.com/introduction/flow/\n" +"[github-join]: https://github.com/join\n" +"[how-contribute]: https://egghead.io/series/how-to-contribute-to-an-open-source-project-on-github\n" +"[issues]: https://guides.github.com/features/issues/\n" +"[swc-issues]: https://github.com/issues?q=user%3Aswcarpentry\n" +"[swc-lessons]: https://software-carpentry.org/lessons/\n" +"[swc-site]: https://software-carpentry.org/" +msgstr "" + +#: sql-novice-survey/bin/boilerplate/README.md:1 +# header +msgid "# FIXME Lesson title" +msgstr "" + +#: sql-novice-survey/bin/boilerplate/README.md:3 +msgid "[![Create a Slack Account with us](https://img.shields.io/badge/Create_Slack_Account-The_Carpentries-071159.svg)](https://swc-slack-invite.herokuapp.com/)" +msgstr "" + +#: sql-novice-survey/bin/boilerplate/README.md:5 +#: sql-novice-survey/bin/boilerplate/_episodes/01-introduction.md:12 +#: sql-novice-survey/bin/boilerplate/_extras/discuss.md:4 +#: sql-novice-survey/bin/boilerplate/_extras/guide.md:4 +#: sql-novice-survey/bin/boilerplate/reference.md:7 +#: sql-novice-survey/bin/boilerplate/setup.md:4 +msgid "FIXME" +msgstr "" + +#: sql-novice-survey/bin/boilerplate/README.md:7 +# header +msgid "## Contributing" +msgstr "" + +#: sql-novice-survey/bin/boilerplate/README.md:9 +msgid "We welcome all contributions to improve the lesson! Maintainers will do their best to help you if you have any\n" +"questions, concerns, or experience any difficulties along the way." +msgstr "" + +#: sql-novice-survey/bin/boilerplate/README.md:12 +msgid "We'd like to ask you to familiarize yourself with our [Contribution Guide](CONTRIBUTING.md) and have a look at\n" +"the [more detailed guidelines][lesson-example] on proper formatting, ways to render the lesson locally, and even\n" +"how to write new episodes." +msgstr "" + +#: sql-novice-survey/bin/boilerplate/README.md:16 +# header +msgid "## Maintainer(s)" +msgstr "" + +#: sql-novice-survey/bin/boilerplate/README.md:18 +# unordered list +msgid "* FIXME" +msgstr "" + +#: sql-novice-survey/bin/boilerplate/README.md:20 +# header +msgid "## Authors" +msgstr "" + +#: sql-novice-survey/bin/boilerplate/README.md:22 +msgid "A list of contributors to the lesson can be found in [AUTHORS](AUTHORS)" +msgstr "" + +#: sql-novice-survey/bin/boilerplate/README.md:24 +# header +msgid "## Citation" +msgstr "" + +#: sql-novice-survey/bin/boilerplate/README.md:26 +msgid "To cite this lesson, please consult with [CITATION](CITATION)" +msgstr "" + +#: sql-novice-survey/bin/boilerplate/README.md:28 +msgid "[lesson-example]: https://carpentries.github.io/lesson-example" +msgstr "" + +#: sql-novice-survey/bin/boilerplate/_episodes/01-introduction.md:1 +# Front Matter +msgid "---\n" +"title: \"Introduction\"\n" +"teaching: 0\n" +"exercises: 0\n" +"questions:\n" +"- \"Key question (FIXME)\"\n" +"objectives:\n" +"- \"First objective. (FIXME)\"\n" +"keypoints:\n" +"- \"First key point. (FIXME)\"\n" +"---" +msgstr "" + +#: sql-novice-survey/bin/boilerplate/_extras/about.md:1 +# Front Matter +msgid "---\n" +"title: About\n" +"---" +msgstr "" + +#: sql-novice-survey/bin/boilerplate/_extras/about.md:4 +msgid "{% include carpentries.html %}\n" +"{% include links.md %}" +msgstr "" + +#: sql-novice-survey/bin/boilerplate/_extras/discuss.md:1 +# Front Matter +msgid "---\n" +"title: Discussion\n" +"---" +msgstr "" + +#: sql-novice-survey/bin/boilerplate/_extras/figures.md:1 +# Front Matter +msgid "---\n" +"title: Figures\n" +"---" +msgstr "" + +#: sql-novice-survey/bin/boilerplate/_extras/figures.md:4 +# inline html +msgid "" +msgstr "" + +#: sql-novice-survey/bin/boilerplate/_extras/guide.md:1 +# Front Matter +msgid "---\n" +"title: \"Instructor Notes\"\n" +"---" +msgstr "" + +#: sql-novice-survey/bin/boilerplate/aio.md:1 +# Front Matter +msgid "---\n" +"---" +msgstr "" + +#: sql-novice-survey/bin/boilerplate/index.md:1 +# Front Matter +msgid "---\n" +"layout: lesson\n" +"root: . # Is the only page that don't follow the partner /:path/index.html\n" +"permalink: index.html # Is the only page that don't follow the partner /:path/index.html\n" +"---" +msgstr "" + +#: sql-novice-survey/bin/boilerplate/index.md:6 +msgid "FIXME: home page introduction" +msgstr "" + +#: sql-novice-survey/bin/boilerplate/index.md:8 +#: sql-novice-survey/index.md:32 +# blockquote, which can be cascaded +msgid "> ## Prerequisites" +msgstr "" + +#: sql-novice-survey/bin/boilerplate/index.md:9 +msgid ">\n" +"> FIXME" +msgstr "" + +#: sql-novice-survey/bin/boilerplate/index.md:11 +#: sql-novice-survey/index.md:36 +# SC/DC Template label +msgid "{: .prereq}" +msgstr "" + +#: sql-novice-survey/bin/boilerplate/reference.md:1 +#: sql-novice-survey/reference.md:1 +# Front Matter +msgid "---\n" +"layout: reference\n" +"---" +msgstr "" + +#: sql-novice-survey/bin/boilerplate/reference.md:5 +#: sql-novice-survey/reference.md:5 +# header +msgid "## Glossary" +msgstr "" + +#: sql-novice-survey/bin/boilerplate/setup.md:1 +# Front Matter +msgid "---\n" +"title: Setup\n" +"---" +msgstr "" + +#: sql-novice-survey/index.md:1 +# Front Matter +msgid "---\n" +"layout: lesson\n" +"root: .\n" +"---" +msgstr "" + +#: sql-novice-survey/index.md:6 +msgid "In the late 1920s and early 1930s,\n" +"William Dyer,\n" +"Frank Pabodie,\n" +"and Valentina Roerich led expeditions to the\n" +"[Pole of Inaccessibility](https://en.wikipedia.org/wiki/Pole_of_inaccessibility)\n" +"in the South Pacific,\n" +"and then onward to Antarctica.\n" +"Two years ago,\n" +"their expeditions were found in a storage locker at Miskatonic University.\n" +"We have scanned and OCR the data they contain,\n" +"and we now want to store that information\n" +"in a way that will make search and analysis easy." +msgstr "" + +#: sql-novice-survey/index.md:19 +msgid "Three common options for storage are\n" +"text files,\n" +"spreadsheets,\n" +"and databases.\n" +"Text files are easiest to create,\n" +"and work well with version control,\n" +"but then we would have to build search and analysis tools ourselves.\n" +"Spreadsheets are good for doing simple analyses,\n" +"but they don't handle large or complex data sets well.\n" +"Databases, however, include powerful tools for search and analysis,\n" +"and can handle large, complex data sets.\n" +"These lessons will show how to use a database to explore the expeditions' data." +msgstr "" + +#: sql-novice-survey/index.md:33 +msgid ">\n" +"> * This lesson requires the Unix shell, plus [SQLite3](http://www.sqlite.org/) or [DB Browser for SQLite](http://sqlitebrowser.org/).\n" +"> * Please download the database we will use: [survey.db]({{ page.root }}/files/survey.db)" +msgstr "" + +#: sql-novice-survey/reference.md:7 +msgid "{:auto_ids}\n" +"aggregation function\n" +": A function that combines multiple values to produce a single new value (e.g. sum, mean, median)." +msgstr "" + +#: sql-novice-survey/reference.md:11 +msgid "atomic\n" +": Describes a value *not* divisible into parts that one might want to\n" +" work with separately. For example, if one wanted to work with\n" +" first and last names separately, the values \"Ada\" and \"Lovelace\"\n" +" would be atomic, but the value \"Ada Lovelace\" would not." +msgstr "" + +#: sql-novice-survey/reference.md:17 +msgid "cascading delete\n" +": An [SQL](#sql) constraint requiring that if a given [record](#record) is deleted,\n" +" all records referencing it (via [foreign key](#foreign-key)) in other [tables](#table)\n" +" must also be deleted." +msgstr "" + +#: sql-novice-survey/reference.md:22 +msgid "case insensitive\n" +": Treating text as if upper and lower case characters were the same.\n" +" See also: [case sensitive](#case-sensitive)." +msgstr "" + +#: sql-novice-survey/reference.md:26 +msgid "case sensitive\n" +": Treating upper and lower case characters as different. See also: [case insensitive](#case-insensitive)." +msgstr "" + +#: sql-novice-survey/reference.md:29 +msgid "comma-separated values (CSV)\n" +": A common textual representation for tables in which the values in each row are separated by commas." +msgstr "" + +#: sql-novice-survey/reference.md:32 +msgid "cross product\n" +": A pairing of all elements of one set with all elements of another." +msgstr "" + +#: sql-novice-survey/reference.md:35 +msgid "cursor\n" +": A pointer into a database that keeps track of outstanding operations." +msgstr "" + +#: sql-novice-survey/reference.md:38 +msgid "database manager\n" +": A program that manages a database, such as SQLite." +msgstr "" + +#: sql-novice-survey/reference.md:41 +msgid "fields\n" +": A set of data values of a particular type, one for each [record](#record) in a [table](#table)." +msgstr "" + +#: sql-novice-survey/reference.md:44 +msgid "filter\n" +": To select only the records that meet certain conditions." +msgstr "" + +#: sql-novice-survey/reference.md:47 +msgid "foreign key\n" +": One or more values in a [database table](#table) that identify\n" +" [records](#record) in another table." +msgstr "" + +#: sql-novice-survey/reference.md:51 +msgid "prepared statement\n" +": A template for an [SQL](#sql) query in which some values can be filled in." +msgstr "" + +#: sql-novice-survey/reference.md:54 +msgid "primary key\n" +": One or more [fields](#fields) in a [database table](#table) whose values are\n" +" guaranteed to be unique for each [record](#record), i.e., whose values\n" +" uniquely identify the entry." +msgstr "" + +#: sql-novice-survey/reference.md:59 +msgid "query\n" +": A textual description of a database operation. Queries are expressed in\n" +" a special-purpose language called [SQL](#sql), and despite the name \"query\",\n" +" they may modify or delete data as well as interrogate it." +msgstr "" + +#: sql-novice-survey/reference.md:64 +msgid "record\n" +": A set of related values making up a single entry in a [database table](#table),\n" +" typically shown as a row. See also: [field](#field)." +msgstr "" + +#: sql-novice-survey/reference.md:68 +msgid "referential integrity\n" +": The internal consistency of values in a database. If an entry in one table\n" +" contains a [foreign key](#foreign-key), but the corresponding [records](#record)\n" +" don't exist, referential integrity has been violated." +msgstr "" + +#: sql-novice-survey/reference.md:73 +msgid "relational database\n" +": A collection of data organized into [tables](#table)." +msgstr "" + +#: sql-novice-survey/reference.md:76 +msgid "sentinel value\n" +": A value in a collection that has a special meaning, such as 999 to mean \"age unknown\"." +msgstr "" + +#: sql-novice-survey/reference.md:79 +msgid "SQL\n" +": A special-purpose language for describing operations on [relational databases](#relational-database)." +msgstr "" + +#: sql-novice-survey/reference.md:82 +msgid "SQL injection attack\n" +": An attack on a program in which the user's input contains malicious SQL statements.\n" +" If this text is copied directly into an SQL statement, it will be executed in the database." +msgstr "" + +#: sql-novice-survey/reference.md:86 +msgid "table\n" +": A set of data in a [relational database](#relational-database) organized into a set\n" +" of [records](#record), each having the same named [fields](#field)." +msgstr "" + +#: sql-novice-survey/reference.md:90 +msgid "wildcard\n" +": A character used in pattern matching. In SQL's `like` operator, the wildcard \"%\"\n" +" matches zero or more characters, so that `%able%` matches \"fixable\" and \"tablets\"." +msgstr "" + +#: sql-novice-survey/setup.md:1 +# Front Matter +msgid "---\n" +"layout: page\n" +"title: Setup\n" +"---" +msgstr "" + +#: sql-novice-survey/setup.md:5 +# header +msgid "# Software" +msgstr "" + +#: sql-novice-survey/setup.md:6 +msgid "For this course you will need the UNIX shell, plus [SQLite3](http://www.sqlite.org/) or\n" +"[DB Browser for SQLite](http://sqlitebrowser.org/)." +msgstr "" + +#: sql-novice-survey/setup.md:9 +msgid "If you are running Linux, you may already have SQLite3 installed, otherwise you\n" +"should be able to get it from your package manager (on Debian/Ubuntu, you can\n" +"use the command `apt install sqlite3`)." +msgstr "" + +#: sql-novice-survey/setup.md:13 +# header +msgid "# Files" +msgstr "" + +#: sql-novice-survey/setup.md:14 +msgid "Please download the database we'll be using: [survey.db]({{ page.root }}/files/survey.db)" +msgstr "" + diff --git a/po/POTFILES.in b/po/POTFILES.in index e1a765eb..859994f5 100644 --- a/po/POTFILES.in +++ b/po/POTFILES.in @@ -1,10 +1,17 @@ ChangeLog.md CultureNotes.md README.md +README_en.md TranslatorGuidelines.md Translators.md +admin.md +git.md +importing.md lang.md quickstart.md +quickstart_ja.md +rules.md +updating.md git-novice/CODE_OF_CONDUCT.md git-novice/CONTRIBUTING.md git-novice/LICENSE.md @@ -58,6 +65,40 @@ git-novice/aio.md git-novice/index.md git-novice/reference.md git-novice/setup.md +make-novice/CODE_OF_CONDUCT.md +make-novice/CONTRIBUTING.md +make-novice/LICENSE.md +make-novice/README.md +make-novice/_episodes/01-intro.md +make-novice/_episodes/02-makefiles.md +make-novice/_episodes/03-variables.md +make-novice/_episodes/04-dependencies.md +make-novice/_episodes/05-patterns.md +make-novice/_episodes/06-variables.md +make-novice/_episodes/07-functions.md +make-novice/_episodes/08-self-doc.md +make-novice/_episodes/09-conclusion.md +make-novice/_extras/about.md +make-novice/_extras/discuss.md +make-novice/_extras/guide.md +make-novice/_includes/links.md +make-novice/aio.md +make-novice/bin/boilerplate/CODE_OF_CONDUCT.md +make-novice/bin/boilerplate/CONTRIBUTING.md +make-novice/bin/boilerplate/README.md +make-novice/bin/boilerplate/_episodes/01-introduction.md +make-novice/bin/boilerplate/_extras/about.md +make-novice/bin/boilerplate/_extras/discuss.md +make-novice/bin/boilerplate/_extras/figures.md +make-novice/bin/boilerplate/_extras/guide.md +make-novice/bin/boilerplate/aio.md +make-novice/bin/boilerplate/index.md +make-novice/bin/boilerplate/reference.md +make-novice/bin/boilerplate/setup.md +make-novice/data/books/LICENSE_TEXTS.md +make-novice/index.md +make-novice/reference.md +make-novice/setup.md po4gitbook/README.md python-novice-gapminder/CODE_OF_CONDUCT.md python-novice-gapminder/CONTRIBUTING.md @@ -265,4 +306,3 @@ sql-novice-survey/bin/boilerplate/setup.md sql-novice-survey/index.md sql-novice-survey/reference.md sql-novice-survey/setup.md -team_notes/20181110_minutes.md diff --git a/po/git-novice.es.po b/po/git-novice.es.po index 867fdadd..34fb0706 100644 --- a/po/git-novice.es.po +++ b/po/git-novice.es.po @@ -1,7 +1,7 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# David Perez-Suarez , 2018. +# David Perez-Suarez , 2020. # msgid "" msgstr "" diff --git a/po/git-novice.ja.po b/po/git-novice.ja.po index e0472734..b24171f5 100644 --- a/po/git-novice.ja.po +++ b/po/git-novice.ja.po @@ -1,21 +1,21 @@ # Japanese translation of the Software Carpentry Git Lesson -# Copyright (C) 2018 Software Carpentry Foundation; Japanese Translation Team +# Copyright (C) 2019 Software Carpentry Foundation; Japanese Translation Team # This file is distributed under the same license as the gitbook package. -# Riku Takei , 2018. +# Riku Takei , 2019, 2020. # msgid "" msgstr "" "Project-Id-Version: i18n\n" "Report-Msgid-Bugs-To: https://github.com/haiwen/seafile-docs/issues\n" -"POT-Creation-Date: 2018-09-15 22:59:57+0900\n" +"POT-Creation-Date: 2019-12-16 13:05:42+0900\n" "PO-Revision-Date: 2018-11-07 17:21+0900\n" +"Last-Translator: Riku Takei \n" +"Language-Team: Japanese \n" +"Language: ja\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -"Last-Translator: Riku Takei \n" -"Language-Team: Japanese \n" -"Language: ja\n" "X-Generator: Poedit 2.2\n" # Front Matter @@ -33,7 +33,7 @@ msgstr "" "permalink: /conduct/\n" "---" -#: git-novice/CODE_OF_CONDUCT.md:6 git-novice/_locale/es/CODE_OF_CONDUCT.md:6 +#: git-novice/CODE_OF_CONDUCT.md:6 msgid "" "As contributors and maintainers of this project,\n" "we pledge to follow the [Carpentry Code of Conduct][coc]." @@ -41,15 +41,16 @@ msgstr "" "プロジェクト貢献者・保持者は、\n" "[カーペントリーの行動規範][coc]に基づき行動することを誓います。" -#: git-novice/CODE_OF_CONDUCT.md:9 git-novice/_locale/es/CODE_OF_CONDUCT.md:9 +#: git-novice/CODE_OF_CONDUCT.md:9 msgid "" "Instances of abusive, harassing, or otherwise unacceptable behavior\n" "may be reported by following our [reporting guidelines][coc-reporting]." msgstr "" "嫌がらせ、ハラスメント行為、その他の悪意ある行動・言動は、\n" -"カーペントリーの[報告ガイドライン][coc-reporting]に沿って報告させていただきます。" +"カーペントリーの[報告ガイドライン][coc-reporting]に沿って報告させていただきま" +"す。" -#: git-novice/CODE_OF_CONDUCT.md:12 git-novice/_locale/es/CODE_OF_CONDUCT.md:12 +#: git-novice/CODE_OF_CONDUCT.md:12 msgid "{% include links.md %}" msgstr "{% include links.md %}" @@ -60,14 +61,16 @@ msgstr "# プロジェクトに貢献する" #: git-novice/CONTRIBUTING.md:3 msgid "" -"[Software Carpentry][swc-site] and [Data Carpentry][dc-site] are open source projects,\n" +"[Software Carpentry][swc-site] and [Data Carpentry][dc-site] are open source " +"projects,\n" "and we welcome contributions of all kinds:\n" "new lessons,\n" "fixes to existing material,\n" "bug reports,\n" "and reviews of proposed changes are all welcome." msgstr "" -"[SoftwareCarpentry][swc-site]と[DataCarpentry][dc-site]はオープンソースのプロジェクトです。\n" +"[SoftwareCarpentry][swc-site]と[DataCarpentry][dc-site]はオープンソースのプロ" +"ジェクトです。\n" "コミュニティーからの資料提供・ご協力、例えば、\n" "新しいレッスン、\n" "既存の資料の修正、\n" @@ -82,20 +85,27 @@ msgstr "## 貢献者の規約" #: git-novice/CONTRIBUTING.md:12 msgid "" "By contributing,\n" -"you agree that we may redistribute your work under [our license](LICENSE.md).\n" +"you agree that we may redistribute your work under [our license](LICENSE." +"md).\n" "In exchange,\n" -"we will address your issues and/or assess your change proposal as promptly as we can,\n" +"we will address your issues and/or assess your change proposal as promptly " +"as we can,\n" "and help you become a member of our community.\n" -"Everyone involved in [Software Carpentry][swc-site] and [Data Carpentry][dc-site]\n" -"agrees to abide by our [code of conduct](https://docs.carpentries.org/topic_folders/policies/code-of-conduct.html)." +"Everyone involved in [Software Carpentry][swc-site] and [Data Carpentry][dc-" +"site]\n" +"agrees to abide by our [code of conduct](https://docs.carpentries.org/" +"topic_folders/policies/code-of-conduct.html)." msgstr "" "このプロジェクトに貢献することにより、\n" -"自身が提供したコンテンツを[私達のライセンス](License.md)に基づき配布する事に同意するものとします。\n" +"自身が提供したコンテンツを[私達のライセンス](License.md)に基づき配布する事に" +"同意するものとします。\n" "ご協力と引き換えに、\n" "私達はあなたが提供する変更点・問題点などを検討し、\n" "できるだけ早くコミュニティーの一員になれるよう尽力いたします。\n" -"[Software Carpentry][swc-site]と[Data Carpentry][dc-site]の一員になられた際には、\n" -"私達の[行動規範](https://docs.carpentries.org/topic_folders/policies/code-of-conduct.html)を遵守する事に同意していただきます。" +"[Software Carpentry][swc-site]と[Data Carpentry][dc-site]の一員になられた際に" +"は、\n" +"私達の[行動規範](https://docs.carpentries.org/topic_folders/policies/code-of-" +"conduct.html)を遵守する事に同意していただきます。" # header #: git-novice/CONTRIBUTING.md:20 @@ -127,11 +137,13 @@ msgstr "1. [GitHub][github]アカウントをお持ちでない場合、" msgid "" " you can [send us comments by email][contact].\n" " However,\n" -" we will be able to respond more quickly if you use one of the other methods described below." +" we will be able to respond more quickly if you use one of the other " +"methods described below." msgstr "" " [メール][contact]にてご連絡して下さい。\n" " ですが、\n" -" 以下の方法であればメールよりも早急に対応できる場合がありますので、そちらをお勧め致します。" +" 以下の方法であればメールよりも早急に対応できる場合がありますので、そちら" +"をお勧め致します。" # ordered list #: git-novice/CONTRIBUTING.md:34 @@ -142,15 +154,18 @@ msgstr "2. [GitHub][github]アカウントをすでにお持ちである方・" msgid "" " or are willing to [create one][github-join],\n" " but do not know how to use Git,\n" -" you can report problems or suggest improvements by [creating an issue][new-issue].\n" +" you can report problems or suggest improvements by [creating an issue]" +"[new-issue].\n" " This allows us to assign the item to someone\n" " and to respond to it in a threaded discussion." msgstr "" " またはアカウントを[新たに作る][github-join]気がある方で、\n" " あまりGitに詳しくない・使い慣れていない方は、\n" " 質問・提案などを[新しいイシュー][new-issue]として開いて下さい。\n" -" イシューを開くことによって、コミュニティーから誰かをそのイシューに割り当て、\n" -" スレッド化したディスカッションとして質問・提案に応答させていただくことができます。" +" イシューを開くことによって、コミュニティーから誰かをそのイシューに割り当" +"て、\n" +" スレッド化したディスカッションとして質問・提案に応答させていただくことが" +"できます。" # ordered list #: git-novice/CONTRIBUTING.md:41 @@ -165,7 +180,8 @@ msgid "" msgstr "" " 既存の資料を変更、または追加したい方は、\n" " プルリクエスト(Pull Request)にて変更点を提出して下さい。\n" -" プルリクエストを使った提出方法は、[下記に記載されています](#using-github)。" +" プルリクエストを使った提出方法は、[下記に記載されています](#using-" +"github)。" # header #: git-novice/CONTRIBUTING.md:46 @@ -183,7 +199,8 @@ msgid "" " which can be viewed at ." msgstr "" " から編集して下さい。\n" -" ウェブサイトはこちらから観覧いただけます:" +" ウェブサイトはこちらから観覧いただけます:" # ordered list #: git-novice/CONTRIBUTING.md:52 @@ -203,28 +220,36 @@ msgstr "" # ordered list #: git-novice/CONTRIBUTING.md:57 msgid "3. If you wish to change the template used for workshop websites," -msgstr "3. ワークショップのウェブサイトに使われるテンプレートの内容を変更したい場合は、" +msgstr "" +"3. ワークショップのウェブサイトに使われるテンプレートの内容を変更したい場合" +"は、" #: git-novice/CONTRIBUTING.md:58 msgid "" " please work in .\n" -" The home page of that repository explains how to set up workshop websites,\n" -" while the extra pages in \n" +" The home page of that repository explains how to set up workshop " +"websites,\n" +" while the extra pages in \n" " provide more background on our design choices." msgstr "" " から編集して下さい。\n" -" このレポジトリのホームページに、ワークショップに使うウェブサイトの設立方法が記載されており、\n" +" このレポジトリのホームページに、ワークショップに使うウェブサイトの設立方" +"法が記載されており、\n" " から\n" " サイトの詳細なデザイン方針が観覧できます。" # ordered list #: git-novice/CONTRIBUTING.md:63 msgid "4. If you wish to change CSS style files, tools," -msgstr "4. `_includes`、または`_layouts`に保存されている、レッスンやワークショップのためのCSSファイル、ツール、" +msgstr "" +"4. `_includes`、または`_layouts`に保存されている、レッスンやワークショップの" +"ためのCSSファイル、ツール、" #: git-novice/CONTRIBUTING.md:64 msgid "" -" or HTML boilerplate for lessons or workshops stored in `_includes` or `_layouts`,\n" +" or HTML boilerplate for lessons or workshops stored in `_includes` or " +"`_layouts`,\n" " please work in ." msgstr "" " HTML boilerplateなどを編集したい場合は、\n" @@ -266,11 +291,13 @@ msgid "" "to forget how impenetrable some of this material can be,\n" "so fresh eyes are always welcome." msgstr "" -"すでにあるイシューへのコメントや、プルリクエストのレビューなども歓迎いたします。\n" +"すでにあるイシューへのコメントや、プルリクエストのレビューなども歓迎いたしま" +"す。\n" "皆さんで協力したほうが、良い結果につながります。\n" "また、新しく加入された方の意見やレビューなどは特に重要視しています。\n" "レッスンの資料を幾度となく見てきた方は特に見落としがちなのですが、\n" -"私達が提供している資料・コンテンツは、初めて資料を見る方などには、理解するのに時間が掛かる場合があるので、\n" +"私達が提供している資料・コンテンツは、初めて資料を見る方などには、理解するの" +"に時間が掛かる場合があるので、\n" "通常とは違う視点からの意見は大変貴重なのです。" # header @@ -280,7 +307,8 @@ msgstr "## 貢献していただきたくない個所" #: git-novice/CONTRIBUTING.md:88 msgid "" -"Our lessons already contain more material than we can cover in a typical workshop,\n" +"Our lessons already contain more material than we can cover in a typical " +"workshop,\n" "so we are usually *not* looking for more concepts or tools to add to them.\n" "As a rule,\n" "if you want to introduce a new idea,\n" @@ -289,7 +317,8 @@ msgid "" "The first encourages contributors to be honest about requirements;\n" "the second, to think hard about priorities." msgstr "" -"現在、通常のワークショップの時間内ではカバーしきれないほどの内容量がレッスンの資料に含まれています。\n" +"現在、通常のワークショップの時間内ではカバーしきれないほどの内容量がレッスン" +"の資料に含まれています。\n" "ですので、新たにレッスンに含められる項目やツールなどは求めておりません。\n" "どうしても新しい内容を入れたい場合は、\n" "(a)新しい内容を教えるために掛かるおおよその時間、\n" @@ -300,13 +329,17 @@ msgstr "" #: git-novice/CONTRIBUTING.md:97 msgid "" -"We are also not looking for exercises or other material that only run on one platform.\n" -"Our workshops typically contain a mixture of Windows, Mac OS X, and Linux users;\n" +"We are also not looking for exercises or other material that only run on one " +"platform.\n" +"Our workshops typically contain a mixture of Windows, Mac OS X, and Linux " +"users;\n" "in order to be usable,\n" "our lessons must run equally well on all three." msgstr "" -"上記に加え、一つのプラットホーム・OSでしか使用ができないなどといったプログラムのレッスン内容・資料などは求めておりません。\n" -"私達が提供するワークショップでは、Windows、Mac OS X、Linuxなど、違ったOSを使用するユーザーが来ることがあります。\n" +"上記に加え、一つのプラットホーム・OSでしか使用ができないなどといったプログラ" +"ムのレッスン内容・資料などは求めておりません。\n" +"私達が提供するワークショップでは、Windows、Mac OS X、Linuxなど、違ったOSを使" +"用するユーザーが来ることがあります。\n" "そのため、新しいレッスンを作る際には、\n" "先述の三つのOSに対応可能である必要があります。" @@ -315,7 +348,7 @@ msgstr "" msgid "## Using GitHub" msgstr "## GitHubの使い方" -#: git-novice/CONTRIBUTING.md:104 git-novice/_locale/es/CONTRIBUTING.md:84 +#: git-novice/CONTRIBUTING.md:104 msgid "" "If you choose to contribute via GitHub,\n" "you may want to look at\n" @@ -329,21 +362,27 @@ msgstr "" # ordered list #: git-novice/CONTRIBUTING.md:109 -msgid "1. The published copy of the lesson is in the `gh-pages` branch of the repository" -msgstr "1. 現在公開されているレッスン内容はレポジトリの`gh-pages`というブランチに保存されています" +msgid "" +"1. The published copy of the lesson is in the `gh-pages` branch of the " +"repository" +msgstr "" +"1. 現在公開されているレッスン内容はレポジトリの`gh-pages`というブランチに保" +"存されています" #: git-novice/CONTRIBUTING.md:110 msgid "" " (so that GitHub will regenerate it automatically).\n" " Please create all branches from that,\n" -" and merge the [master repository][repo]'s `gh-pages` branch into your `gh-pages` branch\n" +" and merge the [master repository][repo]'s `gh-pages` branch into your " +"`gh-pages` branch\n" " before starting work.\n" " Please do *not* work directly in your `gh-pages` branch,\n" " since that will make it difficult for you to work on other contributions." msgstr "" " (これはGitHubが自動的に変更点を公開させるためです)。\n" " そのため、全てのブランチは`gh-pages`から分岐させ、\n" -" オリジナルの[レポジトリ][repo]の`gh-pages`を自身が分岐した`gh-pages`のブランチにマージ・合流させてから、\n" +" オリジナルの[レポジトリ][repo]の`gh-pages`を自身が分岐した`gh-pages`のブ" +"ランチにマージ・合流させてから、\n" " 内容を変更してください。\n" " 他の内容・個所へ貢献することが難しくなるため、\n" " *オリジナルの`gh-pages`から直接内容を変更することはお控え下さい。*" @@ -351,24 +390,30 @@ msgstr "" # ordered list #: git-novice/CONTRIBUTING.md:117 msgid "2. We use [GitHub flow][github-flow] to manage changes:" -msgstr "2. 私達は[GitHub flow][github-flow]を使って変更点などを管理しています:" +msgstr "" +"2. 私達は[GitHub flow][github-flow]を使って変更点などを管理しています:" #: git-novice/CONTRIBUTING.md:118 msgid "" -" 1. Create a new branch in your desktop copy of this repository for each significant change.\n" +" 1. Create a new branch in your desktop copy of this repository for each " +"significant change.\n" " 2. Commit the change in that branch.\n" " 3. Push that branch to your fork of this repository on GitHub.\n" -" 4. Submit a pull request from that branch to the [master repository][repo].\n" +" 4. Submit a pull request from that branch to the [master repository]" +"[repo].\n" " 5. If you receive feedback,\n" " make changes on your desktop and push to your branch on GitHub:\n" " the pull request will update automatically." msgstr "" -" 1. 自身が持っているオリジナルのレポジトリのコピー(フォーク)に新しいブランチを作り、そのブランチで内容を変更します。\n" +" 1. 自身が持っているオリジナルのレポジトリのコピー(フォーク)に新しいブラ" +"ンチを作り、そのブランチで内容を変更します。\n" " 2. 作ったブランチ内で変更点をコミットします。\n" " 3. そのブランチをGitHubのフォークにプッシュします。\n" -" 4. 自身のフォークからオリジナルの[レポジトリ][repo]へプルリクエストを提出します。\n" +" 4. 自身のフォークからオリジナルの[レポジトリ][repo]へプルリクエストを提" +"出します。\n" " 5. 頂いたコメントやレビューからの提案で、更に内容を変更する場合は、\n" -" 自分のブランチで内容を変更し、GitHubのフォークにプッシュして下さい:\n" +" 自分のブランチで内容を変更し、GitHubのフォークにプッシュして下さ" +"い:\n" " 自動的にプルリクエストの内容がアップデートされます。" #: git-novice/CONTRIBUTING.md:126 @@ -378,7 +423,8 @@ msgid "" "The maintainers are community volunteers,\n" "and have final say over what gets merged into the lesson." msgstr "" -"全てのレッスンには二人のメインテイナーがおり、彼・彼女らがイシューやプルリクエストを管理・見直す、\n" +"全てのレッスンには二人のメインテイナーがおり、彼・彼女らがイシューやプルリク" +"エストを管理・見直す、\n" "もしくはその他のメンバーに、一緒に見直すように声をかけます。\n" "メインテイナー達はコミュニティーのボランティアですので、\n" "最終的に何を変更するかの決定権は、メインテイナーに委ねられています。" @@ -390,12 +436,14 @@ msgstr "## その他の資料" #: git-novice/CONTRIBUTING.md:133 msgid "" -"General discussion of [Software Carpentry][swc-site] and [Data Carpentry][dc-site]\n" +"General discussion of [Software Carpentry][swc-site] and [Data Carpentry][dc-" +"site]\n" "happens on the [discussion mailing list][discuss-list],\n" "which everyone is welcome to join.\n" "You can also [reach us by email][contact]." msgstr "" -"[Software Carpentry][swc-site]と[Data Carpentry][dc-site]についての一般的なディスカッションは、\n" +"[Software Carpentry][swc-site]と[Data Carpentry][dc-site]についての一般的な" +"ディスカッションは、\n" "[ディスカッション用のメーリングリスト][discuss-list]で行われ、\n" "どなたでも参加できます。\n" "また、[メール][contact]からでもご連絡いただけます。" @@ -410,7 +458,8 @@ msgid "" "[github]: https://github.com\n" "[github-flow]: https://guides.github.com/introduction/flow/\n" "[github-join]: https://github.com/join\n" -"[how-contribute]: https://egghead.io/series/how-to-contribute-to-an-open-source-project-on-github\n" +"[how-contribute]: https://egghead.io/series/how-to-contribute-to-an-open-" +"source-project-on-github\n" "[new-issue]: https://github.com/swcarpentry/git-novice/issues/new\n" "[issues]: https://github.com/swcarpentry/git-novice/issues/\n" "[repo]: https://github.com/swcarpentry/git-novice/\n" @@ -426,7 +475,8 @@ msgstr "" "[github]: https://github.com\n" "[github-flow]: https://guides.github.com/introduction/flow/\n" "[github-join]: https://github.com/join\n" -"[how-contribute]: https://egghead.io/series/how-to-contribute-to-an-open-source-project-on-github\n" +"[how-contribute]: https://egghead.io/series/how-to-contribute-to-an-open-" +"source-project-on-github\n" "[new-issue]: https://github.com/swcarpentry/git-novice/issues/new\n" "[issues]: https://github.com/swcarpentry/git-novice/issues/\n" "[repo]: https://github.com/swcarpentry/git-novice/\n" @@ -463,7 +513,8 @@ msgid "" "license][cc-by-legal]." msgstr "" "全てのSoftware Carpentry と Data Carpentry の教材は\n" -"[クリエイティブ・コモンズ・ライセンス(CC BY ライセンス)][cc-by-human]に基づいて\n" +"[クリエイティブ・コモンズ・ライセンス(CC BY ライセンス)][cc-by-human]に基づ" +"いて\n" "提供されています。以下の文章は[CC ライセンス][cc-by-legal]の概要です。\n" "(概要の内容は元の[CC BY ライセンス 4.0][cc-by-legal]の内容\n" "の代わりではないので、ご注意下さい。)" @@ -474,7 +525,8 @@ msgstr "あなたは以下の行動が許されます:" # unordered list #: git-novice/LICENSE.md:16 -msgid "* to **Share**---copy and redistribute the material in any medium or format" +msgid "" +"* to **Share**---copy and redistribute the material in any medium or format" msgstr "* 教材内容を複製、配布・共有、そして別の形式に変換する事" # unordered list @@ -492,7 +544,8 @@ msgid "" "license terms." msgstr "" "以上の行動は、ライセンスの条件を満たしていれば\n" -"誰にでも自由に行使する権利があり、著作者・ライセンサーはその権利を取り消すことができません。" +"誰にでも自由に行使する権利があり、著作者・ライセンサーはその権利を取り消すこ" +"とができません。" #: git-novice/LICENSE.md:24 msgid "Under the following terms:" @@ -501,7 +554,9 @@ msgstr "以下の条件を満たせば、上記の行動が許されます:" # unordered list #: git-novice/LICENSE.md:26 msgid "* **Attribution**---You must give appropriate credit (mentioning that" -msgstr "* **著作権の表示**---使用者は必ず、教材の著作権がどこに帰属しているかを明確にする事" +msgstr "" +"* **著作権の表示**---使用者は必ず、教材の著作権がどこに帰属しているかを明確に" +"する事" #: git-novice/LICENSE.md:27 msgid "" @@ -512,11 +567,16 @@ msgid "" " so in any reasonable manner, but not in any way that suggests the\n" " licensor endorses you or your use." msgstr "" -" (あなたが提供する教材がSoftware Carpentryの著作物を基に制作・引用されたこと、\n" -" そして可能であればSoftware Carpentryへのリンク(https://software-carpentry.org/)を提示すること)、\n" -" [CC ライセンス][cc-by-human]へのリンクを含むこと、そして、教材内容を変更した場合、\n" -" 内容が変更されたことを明確にする事。著作権の表示がどのように記載されるかは、\n" -" 製作者の自由ですが、くれぐれもライセンサー(私達)が「あなた、もしくはあなたの作品を公認した」\n" +" (あなたが提供する教材がSoftware Carpentryの著作物を基に制作・引用されたこ" +"と、\n" +" そして可能であればSoftware Carpentryへのリンク(https://software-carpentry." +"org/)を提示すること)、\n" +" [CC ライセンス][cc-by-human]へのリンクを含むこと、そして、教材内容を変更し" +"た場合、\n" +" 内容が変更されたことを明確にする事。著作権の表示がどのように記載されるか" +"は、\n" +" 製作者の自由ですが、くれぐれもライセンサー(私達)が「あなた、もしくはあな" +"たの作品を公認した」\n" " というような言い回しがないようにお気をつけ下さい。" #: git-novice/LICENSE.md:34 @@ -555,18 +615,20 @@ msgstr "" " 制限されることがあります。" # header -#: git-novice/LICENSE.md:48 git-novice/_locale/es/LICENSE.md:45 +#: git-novice/LICENSE.md:48 msgid "## Software" msgstr "## ソフトウェア" #: git-novice/LICENSE.md:50 msgid "" "Except where otherwise noted, the example programs and other software\n" -"provided by Software Carpentry and Data Carpentry are made available under the\n" +"provided by Software Carpentry and Data Carpentry are made available under " +"the\n" "[OSI][osi]-approved\n" "[MIT license][mit-license]." msgstr "" -"別途で記載されていない限り、Software CarpentryとData Carpentryで使われている\n" +"別途で記載されていない限り、Software CarpentryとData Carpentryで使われてい" +"る\n" "プログラム・ソフトウェアは全て\n" "[OSI][osi](Open Systems Interconnection)に認定された\n" "[MIT ライセンス][mit-license]に基づいて提供されています。" @@ -581,7 +643,8 @@ msgid "" "permit persons to whom the Software is furnished to do so, subject to\n" "the following conditions:" msgstr "" -"ここに、以下の条件に従うことと引き換えに、どなたにも無償でこのソフトウェア、\n" +"ここに、以下の条件に従うことと引き換えに、どなたにも無償でこのソフトウェ" +"ア、\n" "そしてそれに関する資料(以降「ソフトウェア」)を制限なく使用、\n" "複製、編集、変更、併合、\n" "公開、配布、サブライセンス、そして・もしくは\n" @@ -644,13 +707,19 @@ msgstr "" #: git-novice/README.md:1 msgid "" -"[![Create a Slack Account with us](https://img.shields.io/badge/Create_Slack_Account-The_Carpentries-071159.svg)](https://swc-slack-invite.herokuapp.com/) \n" -" [![Slack Status](https://img.shields.io/badge/Slack_Channel-swc--git-E01563.svg)](https://swcarpentry.slack.com/messages/C91JS49HD) " +"[![Create a Slack Account with us](https://img.shields.io/badge/" +"Create_Slack_Account-The_Carpentries-071159.svg)](https://swc-slack-invite." +"herokuapp.com/) \n" +" [![Slack Status](https://img.shields.io/badge/Slack_Channel-swc--git-E01563." +"svg)](https://swcarpentry.slack.com/messages/C91JS49HD) " msgstr "" -"[![Create a Slack Account with us](https://img.shields.io/badge/Create_Slack_Account-The_Carpentries-071159.svg)](https://swc-slack-invite.herokuapp.com/) \n" -" [![Slack Status](https://img.shields.io/badge/Slack_Channel-swc--git-E01563.svg)](https://swcarpentry.slack.com/messages/C91JS49HD) " +"[![Create a Slack Account with us](https://img.shields.io/badge/" +"Create_Slack_Account-The_Carpentries-071159.svg)](https://swc-slack-invite." +"herokuapp.com/) \n" +" [![Slack Status](https://img.shields.io/badge/Slack_Channel-swc--git-E01563." +"svg)](https://swcarpentry.slack.com/messages/C91JS49HD) " -#: git-novice/README.md:4 git-novice/_locale/es/README.md:4 +#: git-novice/README.md:4 msgid "" "git-novice\n" "==========" @@ -661,45 +730,58 @@ msgstr "" #: git-novice/README.md:7 msgid "" "An introduction to version control for novices using Git.\n" -"Please see for a rendered version of this material,\n" +"Please see for a rendered " +"version of this material,\n" "[the lesson template documentation][lesson-example]\n" "for instructions on formatting, building, and submitting material,\n" "or run `make` in this directory for a list of helpful commands." msgstr "" "これはGitを使用している初心者のためのバージョン管理の紹介です。\n" -"この資料のレンダリング版については、を参照してください。\n" +"この資料のレンダリング版については、を参照してください。\n" "[レッスンテンプレートのドキュメント] [lesson-example]\n" "書式設定、構築、および提出に関する指示については、\n" -"有用なコマンドのリストについては、このディレクトリに `make`を実行してください。" +"有用なコマンドのリストについては、このディレクトリに `make`を実行してくださ" +"い。" -#: git-novice/README.md:13 git-novice/_locale/es/README.md:13 +#: git-novice/README.md:13 msgid "Maintainers:" msgstr "メンテナー:" # unordered list -#: git-novice/README.md:15 git-novice/_locale/es/README.md:15 +#: git-novice/README.md:15 msgid "* [Ivan Gonzalez][gonzalez_ivan]: [@iglpdc](https://github.com/iglpdc)" -msgstr "* [Tom Kelly][kelly_tom]: [@TomKellyGenetics](https://github.com/TomKellyGenetics)" +msgstr "" +"* [Tom Kelly][kelly_tom]: [@TomKellyGenetics](https://github.com/" +"TomKellyGenetics)" # unordered list #: git-novice/README.md:16 msgid "* [Nima Hejazi][hejazi_nima]: [@nhejazi](https://github.com/nhejazi)" -msgstr "* [GivenName FamilyName][family_given]: [@GitHubUser](https://github.com/GitHubUser)" +msgstr "" +"* [GivenName FamilyName][family_given]: [@GitHubUser](https://github.com/" +"GitHubUser)" # unordered list #: git-novice/README.md:17 msgid "* [Daisie Huang][huang_daisie]: [@daisieh](https://github.com/daisieh)" -msgstr "* [GivenName FamilyName][family_given]: [@GitHubUser](https://github.com/GitHubUser)" +msgstr "" +"* [GivenName FamilyName][family_given]: [@GitHubUser](https://github.com/" +"GitHubUser)" # unordered list #: git-novice/README.md:18 msgid "* [Kat Koziar][koziar_kat]: [@kekoziar](https://github.com/kekoziar)" -msgstr "* [GivenName FamilyName][family_given]: [@GitHubUser](https://github.com/GitHubUser)" +msgstr "" +"* [GivenName FamilyName][family_given]: [@GitHubUser](https://github.com/" +"GitHubUser)" # unordered list #: git-novice/README.md:19 msgid "* [Madicken Munk][munk_madicken]: [@munkm](https://github.com/munkm)" -msgstr "* [GivenName FamilyName][family_given]: [@GitHubUser](https://github.com/GitHubUser)" +msgstr "" +"* [GivenName FamilyName][family_given]: [@GitHubUser](https://github.com/" +"GitHubUser)" #: git-novice/README.md:21 msgid "" @@ -735,17 +817,17 @@ msgid "" "---" msgstr "" "---\n" -"title: Automated Version Control\n" +"title: 自動的なバージョン管理\n" "teaching: 5\n" "exercises: 0\n" -"questions:\n" -"- \"What is version control and why should I use it?\"\n" -"objectives:\n" -"- \"Understand the benefits of an automated version control system.\"\n" -"- \"Understand the basics of how Git works.\"\n" -"keypoints:\n" -"- \"Version control is like an unlimited 'undo'.\"\n" -"- \"Version control also allows many people to work in parallel.\"\n" +"疑問:\n" +"- \"バージョン管理って何?なんで必要なの?\"\n" +"目的:\n" +"- \"自動的なバージョン管理システムの利点を理解する。\"\n" +"- \"Gitの基本を理解する。\"\n" +"まとめ:\n" +"- \"バージョン管理とは、制限無く「元に戻す」ことができる機能。\"\n" +"- \"バージョン管理を使えば、複数の人と同時進行で作業をする事が出来る。\"\n" "---" #: git-novice/_episodes/01-basics.md:15 @@ -755,83 +837,93 @@ msgid "" "Even if you aren't collaborating with other people,\n" "automated version control is much better than this situation:" msgstr "" -"We'll start by exploring how version control can be used\n" -"to keep track of what one person did and when.\n" -"Even if you aren't collaborating with other people,\n" -"automated version control is much better than this situation:" +"それではまず、どのようにしてバージョン管理システムが\n" +"「いつ」、「何」を、「誰」が編集したのかを記録・管理しているかを見ていきましょう。\n" +"他の人と共同作業をしていなくても、\n" +"以下の状況に陥るより、自動的なバージョン管理を使うほうが大分良いはずです:" #: git-novice/_episodes/01-basics.md:20 -#: git-novice/_locale/es/_episodes/01-basics.md:20 -msgid "[![Piled Higher and Deeper by Jorge Cham, http://www.phdcomics.com/comics/archive_print.php?comicid=1531](../fig/phd101212s.png)](http://www.phdcomics.com)" -msgstr "[![Piled Higher and Deeper by Jorge Cham, http://www.phdcomics.com/comics/archive_print.php?comicid=1531](../fig/phd101212s.png)](http://www.phdcomics.com)" +msgid "" +"[![Piled Higher and Deeper by Jorge Cham, http://www.phdcomics.com/comics/" +"archive_print.php?comicid=1531](../fig/phd101212s.png)](http://www.phdcomics." +"com)" +msgstr "" +"[![Piled Higher and Deeper by Jorge Cham, http://www.phdcomics.com/comics/" +"archive_print.php?comicid=1531](../fig/phd101212s.png)](http://www.phdcomics." +"com)" #: git-novice/_episodes/01-basics.md:22 -#: git-novice/_locale/es/_episodes/01-basics.md:22 msgid "\"Piled Higher and Deeper\" by Jorge Cham, http://www.phdcomics.com" -msgstr "\"Piled Higher and Deeper\" by Jorge Cham, http://www.phdcomics.com" +msgstr "「高く、深く積み上げる」Jorge Cham 作、http://www.phdcomics.com" #: git-novice/_episodes/01-basics.md:24 msgid "" "We've all been in this situation before: it seems ridiculous to have\n" "multiple nearly-identical versions of the same document. Some word\n" "processors let us deal with this a little better, such as Microsoft\n" -"Word's [Track Changes](https://support.office.com/en-us/article/Track-changes-in-Word-197ba630-0f5f-4a8e-9a77-3712475e806a), Google Docs' [version\n" -"history](https://support.google.com/docs/answer/190843?hl=en), or LibreOffice's [Recording and Displaying Changes](https://help.libreoffice.org/Common/Recording_and_Displaying_Changes)." -msgstr "" -"We've all been in this situation before: it seems ridiculous to have\n" -"multiple nearly-identical versions of the same document. Some word\n" -"processors let us deal with this a little better, such as Microsoft\n" -"Word's [Track Changes](https://support.office.com/en-us/article/Track-changes-in-Word-197ba630-0f5f-4a8e-9a77-3712475e806a), Google Docs' [version\n" -"history](https://support.google.com/docs/answer/190843?hl=en), or LibreOffice's [Recording and Displaying Changes](https://help.libreoffice.org/Common/Recording_and_Displaying_Changes)." +"Word's [Track Changes](https://support.office.com/en-us/article/Track-" +"changes-in-Word-197ba630-0f5f-4a8e-9a77-3712475e806a), Google " +"Docs' [version\n" +"history](https://support.google.com/docs/answer/190843?hl=en), or " +"LibreOffice's [Recording and Displaying Changes](https://help.libreoffice." +"org/Common/Recording_and_Displaying_Changes)." +msgstr "" +"皆さんもこんな経験をされたことがあるはずです。複数の、(それもほとんど\n" +"内容が同じの)文書のコピーを保存しておくのは馬鹿げたことです。文書作成ソフトの中には、\n" +"例えばMicrosoft Wordの[変更履歴](https://support.office.com/en-us/article/Track-changes-in-Word-197ba630-0f5f-4a8e-9a77-3712475e806a)、Google Docsの[バージョン履歴]" +"(https://support.google.com/docs/answer/190843?hl=en)、LibreOfficeの[変更の記録・表示](https://help.libreoffice.org/Common/Recording_and_Displaying_Changes)、\n" +"こういった状況にある程度うまく対応できるものもあります。" #: git-novice/_episodes/01-basics.md:30 msgid "" "Version control systems start with a base version of the document and\n" "then record changes you make each step of the way. You can\n" -"think of it as a recording of your progress: you can rewind to start at the base\n" +"think of it as a recording of your progress: you can rewind to start at the " +"base\n" "document and play back each change you made, eventually arriving at your\n" "more recent version." msgstr "" -"Version control systems start with a base version of the document and\n" -"then record changes you make each step of the way. You can\n" -"think of it as a recording of your progress: you can rewind to start at the base\n" -"document and play back each change you made, eventually arriving at your\n" -"more recent version." +"バージョン管理システムは、基礎となるドキュメントを元に、\n" +"加えられた全ての変更点を記録していきます。ドキュメントの\n" +"進歩を記録していると考えてもらって構いません。変更点を最初の状況まで\n" +"戻してから、最新版になるまでの変更を一つずつ再現していくことができます。" #: git-novice/_episodes/01-basics.md:36 -#: git-novice/_locale/es/_episodes/01-basics.md:33 msgid "![Changes Are Saved Sequentially](../fig/play-changes.svg)" msgstr "![Changes Are Saved Sequentially](../fig/play-changes.svg)" #: git-novice/_episodes/01-basics.md:38 msgid "" "Once you think of changes as separate from the document itself, you\n" -"can then think about \"playing back\" different sets of changes on the base document, ultimately\n" -"resulting in different versions of that document. For example, two users can make independent\n" +"can then think about \"playing back\" different sets of changes on the base " +"document, ultimately\n" +"resulting in different versions of that document. For example, two users can " +"make independent\n" "sets of changes on the same document. " msgstr "" -"Once you think of changes as separate from the document itself, you\n" -"can then think about \"playing back\" different sets of changes on the base document, ultimately\n" -"resulting in different versions of that document. For example, two users can make independent\n" -"sets of changes on the same document. " +"「変更点」と「ドキュメント」を別々の物として考えてみると、基礎となるドキュメントに\n" +"異なる変更点を「再現」する事によって、結果的に違ったバージョンのドキュメントを\n" +"作る事が可能だという事が分かります。例えば、下の図のように二人のユーザーが同じドキュメントに\n" +"違った編集を加えた場合です。" + #: git-novice/_episodes/01-basics.md:43 -#: git-novice/_locale/es/_episodes/01-basics.md:37 msgid "![Different Versions Can be Saved](../fig/versions.svg)" msgstr "![Different Versions Can be Saved](../fig/versions.svg)" #: git-novice/_episodes/01-basics.md:45 msgid "Unless there are conflicts, you can even incorporate two sets of changes into the same base document." -msgstr "Unless there are conflicts, you can even incorporate two sets of changes into the same base document." +msgstr "変更点の衝突(コンフリクト)が無ければ、二つ以上の違った変更点を基礎ドキュメントに加えることさえできます。" + #: git-novice/_episodes/01-basics.md:47 -#: git-novice/_locale/es/_episodes/01-basics.md:41 msgid "![Multiple Versions Can be Merged](../fig/merge.svg)" msgstr "![Multiple Versions Can be Merged](../fig/merge.svg)" #: git-novice/_episodes/01-basics.md:49 msgid "" -"A version control system is a tool that keeps track of these changes for us,\n" +"A version control system is a tool that keeps track of these changes for " +"us,\n" "effectively creating different versions of our files. It allows us to\n" "decide which changes will be made to the next version (each record of these changes is called a\n" "[commit]({{ page.root }}/reference#commit)), and keeps useful metadata about them. The\n" @@ -839,38 +931,45 @@ msgid "" "a [repository]({{ page.root }}/reference#repository). Repositories can be kept in sync\n" "across different computers, facilitating collaboration among different people." msgstr "" -"A version control system is a tool that keeps track of these changes for us,\n" -"effectively creating different versions of our files. It allows us to\n" -"decide which changes will be made to the next version (each record of these changes is called a\n" -"[commit]({{ page.root }}/reference#commit)), and keeps useful metadata about them. The\n" -"complete history of commits for a particular project and their metadata make up\n" -"a [repository]({{ page.root }}/reference#repository). Repositories can be kept in sync\n" -"across different computers, facilitating collaboration among different people." +"バージョン管理システムは、ユーザーがドキュメントに加えた変更点を記録するツールであり、\n" +"結果的にドキュメントの違ったバージョンを作成する事ができます。このツールを活用\n" +"する事によって、次のバージョンに加える変更点(個々の変更点は\n" +"[「commit(コミット)」]({{ page.root }}/reference#commit)と呼びます)を決める事ができ、変更点に関するメタデータも一緒に保存する事ができます。\n" +"特定のプロジェクトのコミット履歴とそれに関するメタデータを総じて\n" +"[「repository(レポジトリ)」]({{ page.root }}/reference#repository)と呼びます。レポジトリは\n" +"別々のコンピュータと同期させる事が出来るので、他人との共同作業を潤滑に進めることが可能になります。" + # blockquote, which can be cascaded #: git-novice/_episodes/01-basics.md:57 msgid "> ## The Long History of Version Control Systems" -msgstr "> ## バージョンコントールシステムの長い歴史" +msgstr "> ## バージョン管理システムの長い歴史" #: git-novice/_episodes/01-basics.md:58 msgid "" ">\n" "> Automated version control systems are nothing new.\n" -"> Tools like RCS, CVS, or Subversion have been around since the early 1980s and are used by many large companies.\n" -"> However, many of these are now considered legacy systems (i.e., outdated) due to various limitations in their capabilities.\n" -"> More modern systems, such as Git and [Mercurial](https://swcarpentry.github.io/hg-novice/),\n" -"> are *distributed*, meaning that they do not need a centralized server to host the repository.\n" -"> These modern systems also include powerful merging tools that make it possible for multiple authors to work on\n" +"> Tools like RCS, CVS, or Subversion have been around since the early 1980s " +"and are used by many large companies.\n" +"> However, many of these are now considered legacy systems (i.e., outdated) " +"due to various limitations in their capabilities.\n" +"> More modern systems, such as Git and [Mercurial](https://swcarpentry." +"github.io/hg-novice/),\n" +"> are *distributed*, meaning that they do not need a centralized server to " +"host the repository.\n" +"> These modern systems also include powerful merging tools that make it " +"possible for multiple authors to work on\n" "> the same files concurrently." msgstr "" ">\n" -"> Automated version control systems are nothing new.\n" -"> Tools like RCS, CVS, or Subversion have been around since the early 1980s and are used by many large companies.\n" -"> However, many of these are now considered legacy systems (i.e., outdated) due to various limitations in their capabilities.\n" -"> More modern systems, such as Git and [Mercurial](https://swcarpentry.github.io/hg-novice/),\n" -"> are *distributed*, meaning that they do not need a centralized server to host the repository.\n" -"> These modern systems also include powerful merging tools that make it possible for multiple authors to work on\n" -"> the same files concurrently." +"> 自動化されたバージョン管理システムは最近発明されたものではありません。\n" +"> RCS、CVS、Subversionなどのツールは1980年前半から存在しており、多くの会社に使われていました。\n" +"> しかし、これらのツールでは出来る事に制限があり、多くはもう時代遅れとされています。\n" +"> 現代使われているシステム、例えばGitや[Mercurial](https://swcarpentry.github.io/hg-novice/)、は\n" +"> *分散*されています。というのは、特定のサーバーを必要とせずにシステムをホストする事が出来るという事です。\n" +"> 現代のシステムには大変便利で効果的な「merge(マージ)」機能が備われており、同じファイルを\n" +"> 複数人で作業する事が可能になりました。" + # SC/DC Template label #: git-novice/_episodes/01-basics.md:66 git-novice/_episodes/02-setup.md:70 @@ -891,56 +990,34 @@ msgstr "" #: git-novice/_episodes/14-supplemental-rstudio.md:90 #: git-novice/_episodes/14-supplemental-rstudio.md:108 #: git-novice/_extras/discuss.md:115 -#: git-novice/_locale/es/_episodes/01-basics.md:60 -#: git-novice/_locale/es/_episodes/02-setup.md:70 -#: git-novice/_locale/es/_episodes/02-setup.md:98 -#: git-novice/_locale/es/_episodes/02-setup.md:130 -#: git-novice/_locale/es/_episodes/02-setup.md:141 -#: git-novice/_locale/es/_episodes/04-changes.md:206 -#: git-novice/_locale/es/_episodes/04-changes.md:357 -#: git-novice/_locale/es/_episodes/04-changes.md:496 -#: git-novice/_locale/es/_episodes/04-changes.md:509 -#: git-novice/_locale/es/_episodes/04-changes.md:559 -#: git-novice/_locale/es/_episodes/04-changes.md:592 -#: git-novice/_locale/es/_episodes/05-history.md:288 -#: git-novice/_locale/es/_episodes/05-history.md:321 -#: git-novice/_locale/es/_episodes/07-github.md:61 -#: git-novice/_locale/es/_episodes/07-github.md:128 -#: git-novice/_locale/es/_episodes/07-github.md:151 -#: git-novice/_locale/es/_episodes/07-github.md:164 -#: git-novice/_locale/es/_episodes/08-collab.md:20 -#: git-novice/_locale/es/_episodes/08-collab.md:123 -#: git-novice/_locale/es/_episodes/10-open.md:57 -#: git-novice/_locale/es/_episodes/13-hosting.md:70 -#: git-novice/_locale/es/_episodes/14-supplemental-rstudio.md:36 -#: git-novice/_locale/es/_episodes/14-supplemental-rstudio.md:76 -#: git-novice/_locale/es/_episodes/14-supplemental-rstudio.md:92 -#: git-novice/_locale/es/_extras/discuss.md:115 msgid "{: .callout}" msgstr "{: .callout}" # blockquote, which can be cascaded #: git-novice/_episodes/01-basics.md:68 msgid "> ## Paper Writing" -msgstr "> ## Paper Writing" +msgstr "> ## 論文を書くにあたって" #: git-novice/_episodes/01-basics.md:69 msgid "" ">\n" -"> * Imagine you drafted an excellent paragraph for a paper you are writing, but later ruin it. How would you retrieve\n" +"> * Imagine you drafted an excellent paragraph for a paper you are " +"writing, but later ruin it. How would you retrieve\n" "> the *excellent* version of your conclusion? Is it even possible?\n" ">\n" -"> * Imagine you have 5 co-authors. How would you manage the changes and comments they make to your paper?\n" -"> If you use LibreOffice Writer or Microsoft Word, what happens if you accept changes made using the\n" +"> * Imagine you have 5 co-authors. How would you manage the changes and " +"comments they make to your paper?\n" +"> If you use LibreOffice Writer or Microsoft Word, what happens if you " +"accept changes made using the\n" "> `Track Changes` option? Do you have a history of those changes?" msgstr "" ">\n" -"> * Imagine you drafted an excellent paragraph for a paper you are writing, but later ruin it. How would you retrieve\n" -"> the *excellent* version of your conclusion? Is it even possible?\n" +"> * 例えば、論文のために数百行書いたとします。しばらくして、間違えてその文章を編集してしまいます。\n" +"> どうしたら以前書いた文章を取り戻すことができるのでしょう?そもそも、可能なのでしょうか?\n" ">\n" -"> * Imagine you have 5 co-authors. How would you manage the changes and comments they make to your paper?\n" -"> If you use LibreOffice Writer or Microsoft Word, what happens if you accept changes made using the\n" -"> `Track Changes` option? Do you have a history of those changes?" +"> * 五人の共著者がいるとします。どうやって全員の変更やコメントを管理すれば良いのでしょう?\n" +"> LibreOffice WriterやMicrosoft Wordの場合、こういった変更やコメントを変更履歴機能で受け入れると\n" +"> どうなるのでしょう?変更点は記録されるのでしょうか?" # SC/DC Template label #: git-novice/_episodes/01-basics.md:76 git-novice/_episodes/03-create.md:127 @@ -969,44 +1046,6 @@ msgstr "" #: git-novice/_episodes/11-licensing.md:78 #: git-novice/_episodes/13-hosting.md:75 git-novice/_episodes/13-hosting.md:82 #: git-novice/_episodes/14-supplemental-rstudio.md:127 -#: git-novice/_locale/es/_episodes/01-basics.md:70 -#: git-novice/_locale/es/_episodes/03-create.md:122 -#: git-novice/_locale/es/_episodes/03-create.md:143 -#: git-novice/_locale/es/_episodes/04-changes.md:615 -#: git-novice/_locale/es/_episodes/04-changes.md:639 -#: git-novice/_locale/es/_episodes/04-changes.md:699 -#: git-novice/_locale/es/_episodes/04-changes.md:751 -#: git-novice/_locale/es/_episodes/04-changes.md:812 -#: git-novice/_locale/es/_episodes/05-history.md:351 -#: git-novice/_locale/es/_episodes/05-history.md:374 -#: git-novice/_locale/es/_episodes/05-history.md:427 -#: git-novice/_locale/es/_episodes/05-history.md:436 -#: git-novice/_locale/es/_episodes/05-history.md:444 -#: git-novice/_locale/es/_episodes/05-history.md:484 -#: git-novice/_locale/es/_episodes/06-ignore.md:175 -#: git-novice/_locale/es/_episodes/06-ignore.md:194 -#: git-novice/_locale/es/_episodes/06-ignore.md:218 -#: git-novice/_locale/es/_episodes/06-ignore.md:239 -#: git-novice/_locale/es/_episodes/06-ignore.md:258 -#: git-novice/_locale/es/_episodes/07-github.md:197 -#: git-novice/_locale/es/_episodes/07-github.md:210 -#: git-novice/_locale/es/_episodes/07-github.md:220 -#: git-novice/_locale/es/_episodes/07-github.md:242 -#: git-novice/_locale/es/_episodes/07-github.md:253 -#: git-novice/_locale/es/_episodes/08-collab.md:128 -#: git-novice/_locale/es/_episodes/08-collab.md:138 -#: git-novice/_locale/es/_episodes/08-collab.md:147 -#: git-novice/_locale/es/_episodes/08-collab.md:151 -#: git-novice/_locale/es/_episodes/09-conflict.md:319 -#: git-novice/_locale/es/_episodes/09-conflict.md:487 -#: git-novice/_locale/es/_episodes/09-conflict.md:530 -#: git-novice/_locale/es/_episodes/10-open.md:65 -#: git-novice/_locale/es/_episodes/10-open.md:70 -#: git-novice/_locale/es/_episodes/11-licensing.md:36 -#: git-novice/_locale/es/_episodes/11-licensing.md:46 -#: git-novice/_locale/es/_episodes/13-hosting.md:78 -#: git-novice/_locale/es/_episodes/13-hosting.md:85 -#: git-novice/_locale/es/_episodes/14-supplemental-rstudio.md:111 msgid "{: .challenge}" msgstr "{: .challenge}" @@ -1023,7 +1062,8 @@ msgid "" "- \"Configure `git` the first time it is used on a computer.\"\n" "- \"Understand the meaning of the `--global` configuration flag.\"\n" "keypoints:\n" -"- \"Use `git config` with the `--global` option to configure a user name, email address, editor, and other preferences once per machine.\"\n" +"- \"Use `git config` with the `--global` option to configure a user name, " +"email address, editor, and other preferences once per machine.\"\n" "---" msgstr "" "---\n" @@ -1036,7 +1076,8 @@ msgstr "" "- \"Configure `git` the first time it is used on a computer.\"\n" "- \"Understand the meaning of the `--global` configuration flag.\"\n" "keypoints:\n" -"- \"Use `git config` with the `--global` option to configure a user name, email address, editor, and other preferences once per machine.\"\n" +"- \"Use `git config` with the `--global` option to configure a user name, " +"email address, editor, and other preferences once per machine.\"\n" "---" #: git-novice/_episodes/02-setup.md:14 @@ -1061,8 +1102,10 @@ msgstr "* what our preferred text editor is," # unordered list #: git-novice/_episodes/02-setup.md:20 -msgid "* and that we want to use these settings globally (i.e. for every project)." -msgstr "* and that we want to use these settings globally (i.e. for every project)." +msgid "" +"* and that we want to use these settings globally (i.e. for every project)." +msgstr "" +"* and that we want to use these settings globally (i.e. for every project)." #: git-novice/_episodes/02-setup.md:22 msgid "" @@ -1076,7 +1119,6 @@ msgstr "" # code block #: git-novice/_episodes/02-setup.md:26 -#: git-novice/_locale/es/_episodes/02-setup.md:26 msgid "" "~~~\n" "$ git config --global user.name \"Vlad Dracula\"\n" @@ -1157,116 +1199,14 @@ msgstr "" #: git-novice/_extras/discuss.md:359 git-novice/_extras/discuss.md:370 #: git-novice/_extras/discuss.md:386 git-novice/_extras/discuss.md:401 #: git-novice/_extras/discuss.md:409 git-novice/_extras/discuss.md:437 -#: git-novice/_extras/discuss.md:457 -#: git-novice/_locale/es/_episodes/02-setup.md:30 -#: git-novice/_locale/es/_episodes/02-setup.md:107 -#: git-novice/_locale/es/_episodes/03-create.md:22 -#: git-novice/_locale/es/_episodes/03-create.md:30 -#: git-novice/_locale/es/_episodes/03-create.md:38 -#: git-novice/_locale/es/_episodes/03-create.md:46 -#: git-novice/_locale/es/_episodes/03-create.md:62 -#: git-novice/_locale/es/_episodes/04-changes.md:27 -#: git-novice/_locale/es/_episodes/04-changes.md:34 -#: git-novice/_locale/es/_episodes/04-changes.md:45 -#: git-novice/_locale/es/_episodes/04-changes.md:58 -#: git-novice/_locale/es/_episodes/04-changes.md:68 -#: git-novice/_locale/es/_episodes/04-changes.md:81 -#: git-novice/_locale/es/_episodes/04-changes.md:103 -#: git-novice/_locale/es/_episodes/04-changes.md:110 -#: git-novice/_locale/es/_episodes/04-changes.md:133 -#: git-novice/_locale/es/_episodes/04-changes.md:164 -#: git-novice/_locale/es/_episodes/04-changes.md:179 -#: git-novice/_locale/es/_episodes/04-changes.md:216 -#: git-novice/_locale/es/_episodes/04-changes.md:230 -#: git-novice/_locale/es/_episodes/04-changes.md:258 -#: git-novice/_locale/es/_episodes/04-changes.md:293 -#: git-novice/_locale/es/_episodes/04-changes.md:315 -#: git-novice/_locale/es/_episodes/04-changes.md:371 -#: git-novice/_locale/es/_episodes/04-changes.md:383 -#: git-novice/_locale/es/_episodes/04-changes.md:407 -#: git-novice/_locale/es/_episodes/04-changes.md:419 -#: git-novice/_locale/es/_episodes/04-changes.md:441 -#: git-novice/_locale/es/_episodes/04-changes.md:454 -#: git-novice/_locale/es/_episodes/04-changes.md:467 -#: git-novice/_locale/es/_episodes/05-history.md:31 -#: git-novice/_locale/es/_episodes/05-history.md:45 -#: git-novice/_locale/es/_episodes/05-history.md:66 -#: git-novice/_locale/es/_episodes/05-history.md:75 -#: git-novice/_locale/es/_episodes/05-history.md:94 -#: git-novice/_locale/es/_episodes/05-history.md:135 -#: git-novice/_locale/es/_episodes/05-history.md:156 -#: git-novice/_locale/es/_episodes/05-history.md:179 -#: git-novice/_locale/es/_episodes/05-history.md:192 -#: git-novice/_locale/es/_episodes/05-history.md:213 -#: git-novice/_locale/es/_episodes/05-history.md:233 -#: git-novice/_locale/es/_episodes/05-history.md:238 -#: git-novice/_locale/es/_episodes/05-history.md:248 -#: git-novice/_locale/es/_episodes/05-history.md:271 -#: git-novice/_locale/es/_episodes/06-ignore.md:23 -#: git-novice/_locale/es/_episodes/06-ignore.md:30 -#: git-novice/_locale/es/_episodes/06-ignore.md:56 -#: git-novice/_locale/es/_episodes/06-ignore.md:75 -#: git-novice/_locale/es/_episodes/06-ignore.md:98 -#: git-novice/_locale/es/_episodes/06-ignore.md:111 -#: git-novice/_locale/es/_episodes/06-ignore.md:128 -#: git-novice/_locale/es/_episodes/07-github.md:40 -#: git-novice/_locale/es/_episodes/07-github.md:70 -#: git-novice/_locale/es/_episodes/07-github.md:79 -#: git-novice/_locale/es/_episodes/07-github.md:94 -#: git-novice/_locale/es/_episodes/07-github.md:171 -#: git-novice/_locale/es/_episodes/08-collab.md:36 -#: git-novice/_locale/es/_episodes/08-collab.md:49 -#: git-novice/_locale/es/_episodes/08-collab.md:60 -#: git-novice/_locale/es/_episodes/08-collab.md:73 -#: git-novice/_locale/es/_episodes/08-collab.md:95 -#: git-novice/_locale/es/_episodes/09-conflict.md:23 -#: git-novice/_locale/es/_episodes/09-conflict.md:38 -#: git-novice/_locale/es/_episodes/09-conflict.md:54 -#: git-novice/_locale/es/_episodes/09-conflict.md:65 -#: git-novice/_locale/es/_episodes/09-conflict.md:86 -#: git-novice/_locale/es/_episodes/09-conflict.md:102 -#: git-novice/_locale/es/_episodes/09-conflict.md:115 -#: git-novice/_locale/es/_episodes/09-conflict.md:140 -#: git-novice/_locale/es/_episodes/09-conflict.md:161 -#: git-novice/_locale/es/_episodes/09-conflict.md:191 -#: git-novice/_locale/es/_episodes/09-conflict.md:209 -#: git-novice/_locale/es/_episodes/09-conflict.md:226 -#: git-novice/_locale/es/_episodes/09-conflict.md:238 -#: git-novice/_locale/es/_episodes/09-conflict.md:258 -#: git-novice/_locale/es/_episodes/09-conflict.md:279 -#: git-novice/_locale/es/_extras/discuss.md:24 -#: git-novice/_locale/es/_extras/discuss.md:48 -#: git-novice/_locale/es/_extras/discuss.md:58 -#: git-novice/_locale/es/_extras/discuss.md:65 -#: git-novice/_locale/es/_extras/discuss.md:72 -#: git-novice/_locale/es/_extras/discuss.md:91 -#: git-novice/_locale/es/_extras/discuss.md:101 -#: git-novice/_locale/es/_extras/discuss.md:149 -#: git-novice/_locale/es/_extras/discuss.md:167 -#: git-novice/_locale/es/_extras/discuss.md:183 -#: git-novice/_locale/es/_extras/discuss.md:233 -#: git-novice/_locale/es/_extras/discuss.md:242 -#: git-novice/_locale/es/_extras/discuss.md:257 -#: git-novice/_locale/es/_extras/discuss.md:277 -#: git-novice/_locale/es/_extras/discuss.md:291 -#: git-novice/_locale/es/_extras/discuss.md:299 -#: git-novice/_locale/es/_extras/discuss.md:322 -#: git-novice/_locale/es/_extras/discuss.md:340 -#: git-novice/_locale/es/_extras/discuss.md:351 -#: git-novice/_locale/es/_extras/discuss.md:359 -#: git-novice/_locale/es/_extras/discuss.md:370 -#: git-novice/_locale/es/_extras/discuss.md:386 -#: git-novice/_locale/es/_extras/discuss.md:401 -#: git-novice/_locale/es/_extras/discuss.md:409 -#: git-novice/_locale/es/_extras/discuss.md:437 -#: git-novice/_locale/es/_extras/discuss.md:457 -#: git-novice/_locale/es/setup.md:16 git-novice/setup.md:15 +#: git-novice/_extras/discuss.md:457 git-novice/setup.md:15 msgid "{: .language-bash}" msgstr "{: .language-bash}" #: git-novice/_episodes/02-setup.md:32 msgid "" -"Please use your own name and email address instead of Dracula's. This user name and email will be associated with your subsequent Git activity,\n" +"Please use your own name and email address instead of Dracula's. This user " +"name and email will be associated with your subsequent Git activity,\n" "which means that any changes pushed to\n" "[GitHub](https://github.com/),\n" "[BitBucket](https://bitbucket.org/),\n" @@ -1274,7 +1214,8 @@ msgid "" "another Git host server\n" "in a later lesson will include this information." msgstr "" -"Please use your own name and email address instead of のび太's. This user name and email will be associated with your subsequent Git activity,\n" +"Please use your own name and email address instead of のび太's. This user " +"name and email will be associated with your subsequent Git activity,\n" "which means that any changes pushed to\n" "[GitHub](https://github.com/),\n" "[BitBucket](https://bitbucket.org/),\n" @@ -1317,7 +1258,8 @@ msgid "" "> {: .language-bash}\n" "> \n" "> You can read more about this issue \n" -"> [on this GitHub page](https://help.github.com/articles/dealing-with-line-endings/)." +"> [on this GitHub page](https://help.github.com/articles/dealing-with-line-" +"endings/)." msgstr "" ">\n" "> As with other keys, when you hit Return on your keyboard,\n" @@ -1347,36 +1289,60 @@ msgstr "" "> {: .language-bash}\n" "> \n" "> You can read more about this issue \n" -"> [on this GitHub page](https://help.github.com/articles/dealing-with-line-endings/)." +"> [on this GitHub page](https://help.github.com/articles/dealing-with-line-" +"endings/)." #: git-novice/_episodes/02-setup.md:72 msgid "" -"For these lessons, we will be interacting with [GitHub](https://github.com/) and so the email address used should be the same as the one used when setting up your GitHub account. If you are concerned about privacy, please review [GitHub's instructions for keeping your email address private][git-privacy]. \n" -"If you elect to use a private email address with GitHub, then use that same email address for the `user.email` value, e.g. `username@users.noreply.github.com` replacing `username` with your GitHub one. You can change the email address later on by using the `git config` command again." -msgstr "" -"For these lessons, we will be interacting with [GitHub](https://github.com/) and so the email address used should be the same as the one used when setting up your GitHub account. If you are concerned about privacy, please review [GitHub's instructions for keeping your email address private][git-privacy]. \n" -"If you elect to use a private email address with GitHub, then use that same email address for the `user.email` value, e.g. `username@users.noreply.github.com` replacing `username` with your GitHub one. You can change the email address later on by using the `git config` command again." +"For these lessons, we will be interacting with [GitHub](https://github.com/) " +"and so the email address used should be the same as the one used when " +"setting up your GitHub account. If you are concerned about privacy, please " +"review [GitHub's instructions for keeping your email address private][git-" +"privacy]. \n" +"If you elect to use a private email address with GitHub, then use that same " +"email address for the `user.email` value, e.g. `username@users.noreply." +"github.com` replacing `username` with your GitHub one. You can change the " +"email address later on by using the `git config` command again." +msgstr "" +"For these lessons, we will be interacting with [GitHub](https://github.com/) " +"and so the email address used should be the same as the one used when " +"setting up your GitHub account. If you are concerned about privacy, please " +"review [GitHub's instructions for keeping your email address private][git-" +"privacy]. \n" +"If you elect to use a private email address with GitHub, then use that same " +"email address for the `user.email` value, e.g. `username@users.noreply." +"github.com` replacing `username` with your GitHub one. You can change the " +"email address later on by using the `git config` command again." #: git-novice/_episodes/02-setup.md:75 msgid "Dracula also has to set his favorite text editor, following this table:" msgstr "のび太 also has to set his favorite text editor, following this table:" #: git-novice/_episodes/02-setup.md:77 -#: git-novice/_locale/es/_episodes/02-setup.md:77 msgid "" "| Editor | Configuration command |\n" "|:-------------------|:-------------------------------------------------|\n" "| Atom | `$ git config --global core.editor \"atom --wait\"`|\n" "| nano | `$ git config --global core.editor \"nano -w\"` |\n" -"| BBEdit (Mac, with command line tools) | `$ git config --global core.editor \"bbedit -w\"` |\n" -"| Sublime Text (Mac) | `$ git config --global core.editor \"/Applications/Sublime\\ Text.app/Contents/SharedSupport/bin/subl -n -w\"` |\n" -"| Sublime Text (Win, 32-bit install) | `$ git config --global core.editor \"'c:/program files (x86)/sublime text 3/sublime_text.exe' -w\"` |\n" -"| Sublime Text (Win, 64-bit install) | `$ git config --global core.editor \"'c:/program files/sublime text 3/sublime_text.exe' -w\"` |\n" -"| Notepad++ (Win, 32-bit install) | `$ git config --global core.editor \"'c:/program files (x86)/Notepad++/notepad++.exe' -multiInst -notabbar -nosession -noPlugin\"`|\n" -"| Notepad++ (Win, 64-bit install) | `$ git config --global core.editor \"'c:/program files/Notepad++/notepad++.exe' -multiInst -notabbar -nosession -noPlugin\"`|\n" +"| BBEdit (Mac, with command line tools) | `$ git config --global core.editor " +"\"bbedit -w\"` |\n" +"| Sublime Text (Mac) | `$ git config --global core.editor \"/Applications/" +"Sublime\\ Text.app/Contents/SharedSupport/bin/subl -n -w\"` |\n" +"| Sublime Text (Win, 32-bit install) | `$ git config --global core.editor " +"\"'c:/program files (x86)/sublime text 3/sublime_text.exe' -w\"` |\n" +"| Sublime Text (Win, 64-bit install) | `$ git config --global core.editor " +"\"'c:/program files/sublime text 3/sublime_text.exe' -w\"` |\n" +"| Notepad++ (Win, 32-bit install) | `$ git config --global core.editor " +"\"'c:/program files (x86)/Notepad++/notepad++.exe' -multiInst -notabbar -" +"nosession -noPlugin\"`|\n" +"| Notepad++ (Win, 64-bit install) | `$ git config --global core.editor " +"\"'c:/program files/Notepad++/notepad++.exe' -multiInst -notabbar -nosession " +"-noPlugin\"`|\n" "| Kate (Linux) | `$ git config --global core.editor \"kate\"` |\n" -"| Gedit (Linux) | `$ git config --global core.editor \"gedit --wait --new-window\"` |\n" -"| Scratch (Linux) | `$ git config --global core.editor \"scratch-text-editor\"` |\n" +"| Gedit (Linux) | `$ git config --global core.editor \"gedit --wait --" +"new-window\"` |\n" +"| Scratch (Linux) | `$ git config --global core.editor \"scratch-text-" +"editor\"` |\n" "| Emacs | `$ git config --global core.editor \"emacs\"` |\n" "| Vim | `$ git config --global core.editor \"vim\"` |" msgstr "" @@ -1384,21 +1350,35 @@ msgstr "" "|:-------------------|:-------------------------------------------------|\n" "| Atom | `$ git config --global core.editor \"atom --wait\"`|\n" "| nano | `$ git config --global core.editor \"nano -w\"` |\n" -"| BBEdit (Mac, with command line tools) | `$ git config --global core.editor \"bbedit -w\"` |\n" -"| Sublime Text (Mac) | `$ git config --global core.editor \"/Applications/Sublime\\ Text.app/Contents/SharedSupport/bin/subl -n -w\"` |\n" -"| Sublime Text (Win, 32-bit install) | `$ git config --global core.editor \"'c:/program files (x86)/sublime text 3/sublime_text.exe' -w\"` |\n" -"| Sublime Text (Win, 64-bit install) | `$ git config --global core.editor \"'c:/program files/sublime text 3/sublime_text.exe' -w\"` |\n" -"| Notepad++ (Win, 32-bit install) | `$ git config --global core.editor \"'c:/program files (x86)/Notepad++/notepad++.exe' -multiInst -notabbar -nosession -noPlugin\"`|\n" -"| Notepad++ (Win, 64-bit install) | `$ git config --global core.editor \"'c:/program files/Notepad++/notepad++.exe' -multiInst -notabbar -nosession -noPlugin\"`|\n" +"| BBEdit (Mac, with command line tools) | `$ git config --global core.editor " +"\"bbedit -w\"` |\n" +"| Sublime Text (Mac) | `$ git config --global core.editor \"/Applications/" +"Sublime\\ Text.app/Contents/SharedSupport/bin/subl -n -w\"` |\n" +"| Sublime Text (Win, 32-bit install) | `$ git config --global core.editor " +"\"'c:/program files (x86)/sublime text 3/sublime_text.exe' -w\"` |\n" +"| Sublime Text (Win, 64-bit install) | `$ git config --global core.editor " +"\"'c:/program files/sublime text 3/sublime_text.exe' -w\"` |\n" +"| Notepad++ (Win, 32-bit install) | `$ git config --global core.editor " +"\"'c:/program files (x86)/Notepad++/notepad++.exe' -multiInst -notabbar -" +"nosession -noPlugin\"`|\n" +"| Notepad++ (Win, 64-bit install) | `$ git config --global core.editor " +"\"'c:/program files/Notepad++/notepad++.exe' -multiInst -notabbar -nosession " +"-noPlugin\"`|\n" "| Kate (Linux) | `$ git config --global core.editor \"kate\"` |\n" -"| Gedit (Linux) | `$ git config --global core.editor \"gedit --wait --new-window\"` |\n" -"| Scratch (Linux) | `$ git config --global core.editor \"scratch-text-editor\"` |\n" +"| Gedit (Linux) | `$ git config --global core.editor \"gedit --wait --" +"new-window\"` |\n" +"| Scratch (Linux) | `$ git config --global core.editor \"scratch-text-" +"editor\"` |\n" "| Emacs | `$ git config --global core.editor \"emacs\"` |\n" "| Vim | `$ git config --global core.editor \"vim\"` |" #: git-novice/_episodes/02-setup.md:93 -msgid "It is possible to reconfigure the text editor for Git whenever you want to change it." -msgstr "It is possible to reconfigure the text editor for Git whenever you want to change it." +msgid "" +"It is possible to reconfigure the text editor for Git whenever you want to " +"change it." +msgstr "" +"It is possible to reconfigure the text editor for Git whenever you want to " +"change it." # blockquote, which can be cascaded #: git-novice/_episodes/02-setup.md:95 @@ -1408,22 +1388,32 @@ msgstr "> ## Vimの終了の仕方" #: git-novice/_episodes/02-setup.md:96 msgid "" ">\n" -"> Note that Vim is the default editor for many programs. If you haven't used Vim before and wish to exit a session without saving\n" -"your changes, press Esc then type `:q!` and hit Return.\n" -"> If you want to save your changes and quit, press Esc then type `:wq` and hit Return." +"> Note that Vim is the default editor for many programs. If you haven't used " +"Vim before and wish to exit a session without saving\n" +"your changes, press Esc then type `:q!` and hit Return.\n" +"> If you want to save your changes and quit, press Esc then type " +"`:wq` and hit Return." msgstr "" ">\n" -"> Note that Vim is the default editor for many programs. If you haven't used Vim before and wish to exit a session without saving\n" -"your changes, press Esc then type `:q!` and hit Return.\n" -"> If you want to save your changes and quit, press Esc then type `:wq` and hit Return." +"> Note that Vim is the default editor for many programs. If you haven't used " +"Vim before and wish to exit a session without saving\n" +"your changes, press Esc then type `:q!` and hit Return.\n" +"> If you want to save your changes and quit, press Esc then type " +"`:wq` and hit Return." #: git-novice/_episodes/02-setup.md:102 msgid "" -"The four commands we just ran above only need to be run once: the flag `--global` tells Git\n" -"to use the settings for every project, in your user account, on this computer." +"The four commands we just ran above only need to be run once: the flag `--" +"global` tells Git\n" +"to use the settings for every project, in your user account, on this " +"computer." msgstr "" -"The four commands we just ran above only need to be run once: the flag `--global` tells Git\n" -"to use the settings for every project, in your user account, on this computer." +"The four commands we just ran above only need to be run once: the flag `--" +"global` tells Git\n" +"to use the settings for every project, in your user account, on this " +"computer." #: git-novice/_episodes/02-setup.md:105 msgid "You can check your settings at any time:" @@ -1431,7 +1421,6 @@ msgstr "You can check your settings at any time:" # code block #: git-novice/_episodes/02-setup.md:107 -#: git-novice/_locale/es/_episodes/02-setup.md:104 msgid "" "~~~\n" "$ git config --list\n" @@ -1451,8 +1440,6 @@ msgstr "" # blockquote, which can be cascaded #: git-novice/_episodes/02-setup.md:115 git-novice/_episodes/07-github.md:127 -#: git-novice/_locale/es/_episodes/02-setup.md:111 -#: git-novice/_locale/es/_episodes/07-github.md:108 msgid "> ## Proxy" msgstr "> ## Proxy" @@ -1460,7 +1447,8 @@ msgstr "> ## Proxy" msgid "" ">\n" "> In some networks you need to use a\n" -"> [proxy](https://en.wikipedia.org/wiki/Proxy_server). If this is the case, you\n" +"> [proxy](https://en.wikipedia.org/wiki/Proxy_server). If this is the case, " +"you\n" "> may also need to tell Git about the proxy:\n" ">\n" "> ~~~\n" @@ -1479,7 +1467,8 @@ msgid "" msgstr "" ">\n" "> In some networks you need to use a\n" -"> [proxy](https://en.wikipedia.org/wiki/Proxy_server). If this is the case, you\n" +"> [proxy](https://en.wikipedia.org/wiki/Proxy_server). If this is the case, " +"you\n" "> may also need to tell Git about the proxy:\n" ">\n" "> ~~~\n" @@ -1504,7 +1493,9 @@ msgstr "> ## Git Help and Manual" #: git-novice/_episodes/02-setup.md:137 msgid "" ">\n" -"> Always remember that if you forget a `git` command, you can access the list of commands by using `-h` and access the Git manual by using `--help` :\n" +"> Always remember that if you forget a `git` command, you can access the " +"list of commands by using `-h` and access the Git manual by using `--" +"help` :\n" ">\n" "> ~~~\n" "> $ git config -h\n" @@ -1513,7 +1504,9 @@ msgid "" "> {: .language-bash}" msgstr "" ">\n" -"> Always remember that if you forget a `git` command, you can access the list of commands by using `-h` and access the Git manual by using `--help` :\n" +"> Always remember that if you forget a `git` command, you can access the " +"list of commands by using `-h` and access the Git manual by using `--" +"help` :\n" ">\n" "> ~~~\n" "> $ git config -h\n" @@ -1522,9 +1515,12 @@ msgstr "" "> {: .language-bash}" #: git-novice/_episodes/02-setup.md:147 -#: git-novice/_locale/es/_episodes/02-setup.md:143 -msgid "[git-privacy]: https://help.github.com/articles/keeping-your-email-address-private/" -msgstr "[git-privacy]: https://help.github.com/articles/keeping-your-email-address-private/" +msgid "" +"[git-privacy]: https://help.github.com/articles/keeping-your-email-address-" +"private/" +msgstr "" +"[git-privacy]: https://help.github.com/articles/keeping-your-email-address-" +"private/" # Front Matter #: git-novice/_episodes/03-create.md:1 @@ -1564,8 +1560,12 @@ msgstr "" "we can start using it." #: git-novice/_episodes/03-create.md:17 -msgid "First, let's create a directory in `Desktop` folder for our work and then move into that directory:" -msgstr "First, let's create a directory in `Desktop` folder for our work and then move into that directory:" +msgid "" +"First, let's create a directory in `Desktop` folder for our work and then " +"move into that directory:" +msgstr "" +"First, let's create a directory in `Desktop` folder for our work and then " +"move into that directory:" # code block #: git-novice/_episodes/03-create.md:19 @@ -1584,15 +1584,16 @@ msgstr "" #: git-novice/_episodes/03-create.md:26 msgid "" -"Then we tell Git to make `planets` a [repository]({{ page.root }}/reference#repository)—a place where\n" +"Then we tell Git to make `planets` a [repository]({{ page.root }}/" +"reference#repository)—a place where\n" "Git can store versions of our files:" msgstr "" -"Then we tell Git to make `planets` a [repository]({{ page.root }}/reference#repository)—a place where\n" +"Then we tell Git to make `planets` a [repository]({{ page.root }}/" +"reference#repository)—a place where\n" "Git can store versions of our files:" # code block #: git-novice/_episodes/03-create.md:29 -#: git-novice/_locale/es/_episodes/03-create.md:27 msgid "" "~~~\n" "$ git init\n" @@ -1612,8 +1613,6 @@ msgstr "" # code block #: git-novice/_episodes/03-create.md:37 git-novice/_episodes/04-changes.md:57 -#: git-novice/_locale/es/_episodes/03-create.md:35 -#: git-novice/_locale/es/_episodes/04-changes.md:55 msgid "" "~~~\n" "$ ls\n" @@ -1626,14 +1625,15 @@ msgstr "" #: git-novice/_episodes/03-create.md:42 msgid "" "But if we add the `-a` flag to show everything,\n" -"we can see that Git has created a hidden directory within `planets` called `.git`:" +"we can see that Git has created a hidden directory within `planets` called `." +"git`:" msgstr "" "But if we add the `-a` flag to show everything,\n" -"we can see that Git has created a hidden directory within `planets` called `.git`:" +"we can see that Git has created a hidden directory within `planets` called `." +"git`:" # code block #: git-novice/_episodes/03-create.md:45 -#: git-novice/_locale/es/_episodes/03-create.md:43 msgid "" "~~~\n" "$ ls -a\n" @@ -1708,89 +1708,22 @@ msgstr "" #: git-novice/_extras/discuss.md:311 git-novice/_extras/discuss.md:332 #: git-novice/_extras/discuss.md:380 git-novice/_extras/discuss.md:426 #: git-novice/_extras/discuss.md:447 -#: git-novice/_locale/es/_episodes/03-create.md:51 -#: git-novice/_locale/es/_episodes/03-create.md:73 -#: git-novice/_locale/es/_episodes/04-changes.md:63 -#: git-novice/_locale/es/_episodes/04-changes.md:73 -#: git-novice/_locale/es/_episodes/04-changes.md:94 -#: git-novice/_locale/es/_episodes/04-changes.md:123 -#: git-novice/_locale/es/_episodes/04-changes.md:140 -#: git-novice/_locale/es/_episodes/04-changes.md:170 -#: git-novice/_locale/es/_episodes/04-changes.md:188 -#: git-novice/_locale/es/_episodes/04-changes.md:222 -#: git-novice/_locale/es/_episodes/04-changes.md:242 -#: git-novice/_locale/es/_episodes/04-changes.md:269 -#: git-novice/_locale/es/_episodes/04-changes.md:305 -#: git-novice/_locale/es/_episodes/04-changes.md:321 -#: git-novice/_locale/es/_episodes/04-changes.md:378 -#: git-novice/_locale/es/_episodes/04-changes.md:395 -#: git-novice/_locale/es/_episodes/04-changes.md:431 -#: git-novice/_locale/es/_episodes/04-changes.md:447 -#: git-novice/_locale/es/_episodes/04-changes.md:460 -#: git-novice/_locale/es/_episodes/04-changes.md:488 -#: git-novice/_locale/es/_episodes/05-history.md:38 -#: git-novice/_locale/es/_episodes/05-history.md:57 -#: git-novice/_locale/es/_episodes/05-history.md:87 -#: git-novice/_locale/es/_episodes/05-history.md:111 -#: git-novice/_locale/es/_episodes/05-history.md:147 -#: git-novice/_locale/es/_episodes/05-history.md:168 -#: git-novice/_locale/es/_episodes/05-history.md:184 -#: git-novice/_locale/es/_episodes/05-history.md:204 -#: git-novice/_locale/es/_episodes/05-history.md:220 -#: git-novice/_locale/es/_episodes/05-history.md:243 -#: git-novice/_locale/es/_episodes/05-history.md:262 -#: git-novice/_locale/es/_episodes/06-ignore.md:43 -#: git-novice/_locale/es/_episodes/06-ignore.md:62 -#: git-novice/_locale/es/_episodes/06-ignore.md:85 -#: git-novice/_locale/es/_episodes/06-ignore.md:104 -#: git-novice/_locale/es/_episodes/06-ignore.md:118 -#: git-novice/_locale/es/_episodes/06-ignore.md:142 -#: git-novice/_locale/es/_episodes/07-github.md:85 -#: git-novice/_locale/es/_episodes/07-github.md:106 -#: git-novice/_locale/es/_episodes/07-github.md:178 -#: git-novice/_locale/es/_episodes/08-collab.md:54 -#: git-novice/_locale/es/_episodes/08-collab.md:66 -#: git-novice/_locale/es/_episodes/08-collab.md:84 -#: git-novice/_locale/es/_episodes/08-collab.md:110 -#: git-novice/_locale/es/_episodes/09-conflict.md:30 -#: git-novice/_locale/es/_episodes/09-conflict.md:46 -#: git-novice/_locale/es/_episodes/09-conflict.md:60 -#: git-novice/_locale/es/_episodes/09-conflict.md:76 -#: git-novice/_locale/es/_episodes/09-conflict.md:94 -#: git-novice/_locale/es/_episodes/09-conflict.md:108 -#: git-novice/_locale/es/_episodes/09-conflict.md:126 -#: git-novice/_locale/es/_episodes/09-conflict.md:153 -#: git-novice/_locale/es/_episodes/09-conflict.md:173 -#: git-novice/_locale/es/_episodes/09-conflict.md:199 -#: git-novice/_locale/es/_episodes/09-conflict.md:221 -#: git-novice/_locale/es/_episodes/09-conflict.md:231 -#: git-novice/_locale/es/_episodes/09-conflict.md:249 -#: git-novice/_locale/es/_episodes/09-conflict.md:272 -#: git-novice/_locale/es/_episodes/09-conflict.md:287 -#: git-novice/_locale/es/_extras/discuss.md:35 -#: git-novice/_locale/es/_extras/discuss.md:157 -#: git-novice/_locale/es/_extras/discuss.md:175 -#: git-novice/_locale/es/_extras/discuss.md:190 -#: git-novice/_locale/es/_extras/discuss.md:203 -#: git-novice/_locale/es/_extras/discuss.md:248 -#: git-novice/_locale/es/_extras/discuss.md:267 -#: git-novice/_locale/es/_extras/discuss.md:311 -#: git-novice/_locale/es/_extras/discuss.md:332 -#: git-novice/_locale/es/_extras/discuss.md:380 -#: git-novice/_locale/es/_extras/discuss.md:426 -#: git-novice/_locale/es/_extras/discuss.md:447 msgid "{: .output}" msgstr "{: .output}" #: git-novice/_episodes/03-create.md:55 msgid "" -"Git uses this special sub-directory to store all the information about the project, \n" -"including all files and sub-directories located within the project's directory.\n" +"Git uses this special sub-directory to store all the information about the " +"project, \n" +"including all files and sub-directories located within the project's " +"directory.\n" "If we ever delete the `.git` sub-directory,\n" "we will lose the project's history." msgstr "" -"Git uses this special sub-directory to store all the information about the project, \n" -"including all files and sub-directories located within the project's directory.\n" +"Git uses this special sub-directory to store all the information about the " +"project, \n" +"including all files and sub-directories located within the project's " +"directory.\n" "If we ever delete the `.git` sub-directory,\n" "we will lose the project's history." @@ -1811,16 +1744,6 @@ msgstr "" #: git-novice/_episodes/05-history.md:191 #: git-novice/_episodes/05-history.md:247 git-novice/_episodes/06-ignore.md:27 #: git-novice/_episodes/06-ignore.md:72 -#: git-novice/_locale/es/_episodes/03-create.md:59 -#: git-novice/_locale/es/_episodes/04-changes.md:78 -#: git-novice/_locale/es/_episodes/04-changes.md:107 -#: git-novice/_locale/es/_episodes/04-changes.md:161 -#: git-novice/_locale/es/_episodes/04-changes.md:227 -#: git-novice/_locale/es/_episodes/04-changes.md:451 -#: git-novice/_locale/es/_episodes/05-history.md:189 -#: git-novice/_locale/es/_episodes/05-history.md:245 -#: git-novice/_locale/es/_episodes/06-ignore.md:27 -#: git-novice/_locale/es/_episodes/06-ignore.md:72 msgid "" "~~~\n" "$ git status\n" @@ -1840,7 +1763,6 @@ msgstr "" # code block #: git-novice/_episodes/03-create.md:71 -#: git-novice/_locale/es/_episodes/03-create.md:66 msgid "" "~~~\n" "# On branch master\n" @@ -1866,39 +1788,53 @@ msgstr "> ## Places to Create Git Repositories" #: git-novice/_episodes/03-create.md:81 msgid "" ">\n" -"> Along with tracking information about planets (the project we have already created), \n" +"> Along with tracking information about planets (the project we have already " +"created), \n" "> Dracula would also like to track information about moons.\n" -"> Despite Wolfman's concerns, Dracula creates a `moons` project inside his `planets` \n" +"> Despite Wolfman's concerns, Dracula creates a `moons` project inside his " +"`planets` \n" "> project with the following sequence of commands:\n" ">\n" "> ~~~\n" "> $ cd ~/Desktop # return to Desktop directory\n" -"> $ cd planets # go into planets directory, which is already a Git repository\n" -"> $ ls -a # ensure the .git sub-directory is still present in the planets directory\n" +"> $ cd planets # go into planets directory, which is already a Git " +"repository\n" +"> $ ls -a # ensure the .git sub-directory is still present in the " +"planets directory\n" "> $ mkdir moons # make a sub-directory planets/moons\n" "> $ cd moons # go into moons sub-directory\n" "> $ git init # make the moons sub-directory a Git repository\n" -"> $ ls -a # ensure the .git sub-directory is present indicating we have created a new Git repository\n" +"> $ ls -a # ensure the .git sub-directory is present indicating we " +"have created a new Git repository\n" "> ~~~\n" "> {: .language-bash}\n" ">\n" -"> Is the `git init` command, run inside the `moons` sub-directory, required for \n" +"> Is the `git init` command, run inside the `moons` sub-directory, required " +"for \n" "> tracking files stored in the `moons` sub-directory?\n" "> \n" "> > ## Solution\n" "> >\n" -"> > No. Dracula does not need to make the `moons` sub-directory a Git repository \n" -"> > because the `planets` repository will track all files, sub-directories, and \n" -"> > sub-directory files under the `planets` directory. Thus, in order to track \n" -"> > all information about moons, Dracula only needed to add the `moons` sub-directory\n" +"> > No. Dracula does not need to make the `moons` sub-directory a Git " +"repository \n" +"> > because the `planets` repository will track all files, sub-directories, " +"and \n" +"> > sub-directory files under the `planets` directory. Thus, in order to " +"track \n" +"> > all information about moons, Dracula only needed to add the `moons` sub-" +"directory\n" "> > to the `planets` directory.\n" "> > \n" -"> > Additionally, Git repositories can interfere with each other if they are \"nested\":\n" +"> > Additionally, Git repositories can interfere with each other if they are " +"\"nested\":\n" "> > the outer repository will try to version-control\n" "> > the inner repository. Therefore, it's best to create each new Git\n" -"> > repository in a separate directory. To be sure that there is no conflicting\n" -"> > repository in the directory, check the output of `git status`. If it looks\n" -"> > like the following, you are good to go to create a new repository as shown\n" +"> > repository in a separate directory. To be sure that there is no " +"conflicting\n" +"> > repository in the directory, check the output of `git status`. If it " +"looks\n" +"> > like the following, you are good to go to create a new repository as " +"shown\n" "> > above:\n" "> >\n" "> > ~~~\n" @@ -1912,39 +1848,53 @@ msgid "" "> > {: .output}" msgstr "" ">\n" -"> Along with tracking information about planets (the project we have already created), \n" +"> Along with tracking information about planets (the project we have already " +"created), \n" "> のび太 would also like to track information about moons.\n" -"> Despite ドラえもん's concerns, のび太 creates a `moons` project inside his `planets` \n" +"> Despite ドラえもん's concerns, のび太 creates a `moons` project inside his " +"`planets` \n" "> project with the following sequence of commands:\n" ">\n" "> ~~~\n" "> $ cd ~/Desktop # return to Desktop directory\n" -"> $ cd planets # go into planets directory, which is already a Git repository\n" -"> $ ls -a # ensure the .git sub-directory is still present in the planets directory\n" +"> $ cd planets # go into planets directory, which is already a Git " +"repository\n" +"> $ ls -a # ensure the .git sub-directory is still present in the " +"planets directory\n" "> $ mkdir moons # make a sub-directory planets/moons\n" "> $ cd moons # go into moons sub-directory\n" "> $ git init # make the moons sub-directory a Git repository\n" -"> $ ls -a # ensure the .git sub-directory is present indicating we have created a new Git repository\n" +"> $ ls -a # ensure the .git sub-directory is present indicating we " +"have created a new Git repository\n" "> ~~~\n" "> {: .language-bash}\n" ">\n" -"> Is the `git init` command, run inside the `moons` sub-directory, required for \n" +"> Is the `git init` command, run inside the `moons` sub-directory, required " +"for \n" "> tracking files stored in the `moons` sub-directory?\n" "> \n" "> > ## Solution\n" "> >\n" -"> > No. のび太 does not need to make the `moons` sub-directory a Git repository \n" -"> > because the `planets` repository will track all files, sub-directories, and \n" -"> > sub-directory files under the `planets` directory. Thus, in order to track \n" -"> > all information about moons, のび太 only needed to add the `moons` sub-directory\n" +"> > No. のび太 does not need to make the `moons` sub-directory a Git " +"repository \n" +"> > because the `planets` repository will track all files, sub-directories, " +"and \n" +"> > sub-directory files under the `planets` directory. Thus, in order to " +"track \n" +"> > all information about moons, のび太 only needed to add the `moons` sub-" +"directory\n" "> > to the `planets` directory.\n" "> > \n" -"> > Additionally, Git repositories can interfere with each other if they are \"nested\":\n" +"> > Additionally, Git repositories can interfere with each other if they are " +"\"nested\":\n" "> > the outer repository will try to version-control\n" "> > the inner repository. Therefore, it's best to create each new Git\n" -"> > repository in a separate directory. To be sure that there is no conflicting\n" -"> > repository in the directory, check the output of `git status`. If it looks\n" -"> > like the following, you are good to go to create a new repository as shown\n" +"> > repository in a separate directory. To be sure that there is no " +"conflicting\n" +"> > repository in the directory, check the output of `git status`. If it " +"looks\n" +"> > like the following, you are good to go to create a new repository as " +"shown\n" "> > above:\n" "> >\n" "> > ~~~\n" @@ -1973,29 +1923,6 @@ msgstr "" #: git-novice/_episodes/09-conflict.md:494 #: git-novice/_episodes/09-conflict.md:536 #: git-novice/_episodes/14-supplemental-rstudio.md:126 -#: git-novice/_locale/es/_episodes/03-create.md:76 -#: git-novice/_locale/es/_episodes/03-create.md:121 -#: git-novice/_locale/es/_episodes/03-create.md:142 -#: git-novice/_locale/es/_episodes/04-changes.md:614 -#: git-novice/_locale/es/_episodes/04-changes.md:638 -#: git-novice/_locale/es/_episodes/04-changes.md:698 -#: git-novice/_locale/es/_episodes/04-changes.md:750 -#: git-novice/_locale/es/_episodes/04-changes.md:811 -#: git-novice/_locale/es/_episodes/05-history.md:426 -#: git-novice/_locale/es/_episodes/06-ignore.md:174 -#: git-novice/_locale/es/_episodes/06-ignore.md:193 -#: git-novice/_locale/es/_episodes/06-ignore.md:217 -#: git-novice/_locale/es/_episodes/06-ignore.md:238 -#: git-novice/_locale/es/_episodes/06-ignore.md:257 -#: git-novice/_locale/es/_episodes/07-github.md:196 -#: git-novice/_locale/es/_episodes/07-github.md:209 -#: git-novice/_locale/es/_episodes/07-github.md:219 -#: git-novice/_locale/es/_episodes/07-github.md:241 -#: git-novice/_locale/es/_episodes/07-github.md:252 -#: git-novice/_locale/es/_episodes/08-collab.md:137 -#: git-novice/_locale/es/_episodes/09-conflict.md:486 -#: git-novice/_locale/es/_episodes/09-conflict.md:529 -#: git-novice/_locale/es/_episodes/14-supplemental-rstudio.md:110 msgid "> {: .solution}" msgstr "> {: .solution}" @@ -2006,13 +1933,21 @@ msgstr "> ## Correcting `git init` Mistakes" # blockquote, which can be cascaded #: git-novice/_episodes/03-create.md:130 -msgid "> Wolfman explains to Dracula how a nested repository is redundant and may cause confusion" -msgstr "> ドラえもん explains to のび太 how a nested repository is redundant and may cause confusion" +msgid "" +"> Wolfman explains to Dracula how a nested repository is redundant and may " +"cause confusion" +msgstr "" +"> ドラえもん explains to のび太 how a nested repository is redundant and may " +"cause confusion" # blockquote, which can be cascaded #: git-novice/_episodes/03-create.md:131 -msgid "> down the road. Dracula would like to remove the nested repository. How can Dracula undo " -msgstr "> down the road. のび太 would like to remove the nested repository. How can のび太 undo " +msgid "" +"> down the road. Dracula would like to remove the nested repository. How can " +"Dracula undo " +msgstr "" +"> down the road. のび太 would like to remove the nested repository. How can " +"のび太 undo " # blockquote, which can be cascaded #: git-novice/_episodes/03-create.md:132 @@ -2025,30 +1960,36 @@ msgid "" "> > ## Solution -- USE WITH CAUTION!\n" "> >\n" "> > To recover from this little mistake, Dracula can just remove the `.git`\n" -"> > folder in the moons subdirectory by running the following command from inside the `planets` directory:\n" +"> > folder in the moons subdirectory by running the following command from " +"inside the `planets` directory:\n" "> >\n" "> > ~~~\n" "> > $ rm -rf moons/.git\n" "> > ~~~\n" "> > {: .language-bash}\n" "> >\n" -"> > But be careful! Running this command in the wrong directory, will remove\n" -"> > the entire Git history of a project you might want to keep. Therefore, always check your current directory using the\n" +"> > But be careful! Running this command in the wrong directory, will " +"remove\n" +"> > the entire Git history of a project you might want to keep. Therefore, " +"always check your current directory using the\n" "> > command `pwd`." msgstr "" ">\n" "> > ## Solution -- USE WITH CAUTION!\n" "> >\n" "> > To recover from this little mistake, のび太 can just remove the `.git`\n" -"> > folder in the moons subdirectory by running the following command from inside the `planets` directory:\n" +"> > folder in the moons subdirectory by running the following command from " +"inside the `planets` directory:\n" "> >\n" "> > ~~~\n" "> > $ rm -rf moons/.git\n" "> > ~~~\n" "> > {: .language-bash}\n" "> >\n" -"> > But be careful! Running this command in the wrong directory, will remove\n" -"> > the entire Git history of a project you might want to keep. Therefore, always check your current directory using the\n" +"> > But be careful! Running this command in the wrong directory, will " +"remove\n" +"> > the entire Git history of a project you might want to keep. Therefore, " +"always check your current directory using the\n" "> > command `pwd`." # Front Matter @@ -2068,9 +2009,12 @@ msgid "" "- \"Distinguish between descriptive and non-descriptive commit messages.\"\n" "keypoints:\n" "- \"`git status` shows the status of a repository.\"\n" -"- \"Files can be stored in a project's working directory (which users see), the staging area (where the next commit is being built up) and the local repository (where commits are permanently recorded).\"\n" +"- \"Files can be stored in a project's working directory (which users see), " +"the staging area (where the next commit is being built up) and the local " +"repository (where commits are permanently recorded).\"\n" "- \"`git add` puts files in the staging area.\"\n" -"- \"`git commit` saves the staged content as a new commit in the local repository.\"\n" +"- \"`git commit` saves the staged content as a new commit in the local " +"repository.\"\n" "- \"Write a commit message that accurately describes your changes.\"\n" "---" msgstr "" @@ -2088,9 +2032,12 @@ msgstr "" "- \"Distinguish between descriptive and non-descriptive commit messages.\"\n" "keypoints:\n" "- \"`git status` shows the status of a repository.\"\n" -"- \"Files can be stored in a project's working directory (which users see), the staging area (where the next commit is being built up) and the local repository (where commits are permanently recorded).\"\n" +"- \"Files can be stored in a project's working directory (which users see), " +"the staging area (where the next commit is being built up) and the local " +"repository (where commits are permanently recorded).\"\n" "- \"`git add` puts files in the staging area.\"\n" -"- \"`git commit` saves the staged content as a new commit in the local repository.\"\n" +"- \"`git commit` saves the staged content as a new commit in the local " +"repository.\"\n" "- \"Write a commit message that accurately describes your changes.\"\n" "---" @@ -2104,7 +2051,6 @@ msgstr "" # code block #: git-novice/_episodes/04-changes.md:24 -#: git-novice/_locale/es/_episodes/04-changes.md:24 msgid "" "~~~\n" "$ pwd\n" @@ -2120,7 +2066,6 @@ msgstr "If you are still in `moons`, navigate back up to `planets`" # code block #: git-novice/_episodes/04-changes.md:31 -#: git-novice/_locale/es/_episodes/04-changes.md:31 msgid "" "~~~\n" "$ cd ..\n" @@ -2136,21 +2081,28 @@ msgid "" "about the Red Planet's suitability as a base.\n" "We'll use `nano` to edit the file;\n" "you can use whatever editor you like.\n" -"In particular, this does not have to be the `core.editor` you set globally earlier. \n" -"But remember, the.language-bash command to create or edit a new file will depend on the editor you choose (it might not be `nano`). \n" -"For a refresher on text editors, check out [\"Which Editor?\"](https://swcarpentry.github.io/shell-novice/03-create/) in [The Unix Shell](https://swcarpentry.github.io/shell-novice/) lesson." +"In particular, this does not have to be the `core.editor` you set globally " +"earlier. \n" +"But remember, the.language-bash command to create or edit a new file will " +"depend on the editor you choose (it might not be `nano`). \n" +"For a refresher on text editors, check out [\"Which Editor?\"](https://" +"swcarpentry.github.io/shell-novice/03-create/) in [The Unix Shell](https://" +"swcarpentry.github.io/shell-novice/) lesson." msgstr "" "Let's create a file called `mars.txt` that contains some notes\n" "about the Red Planet's suitability as a base.\n" "We'll use `nano` to edit the file;\n" "you can use whatever editor you like.\n" -"In particular, this does not have to be the `core.editor` you set globally earlier. \n" -"But remember, the.language-bash command to create or edit a new file will depend on the editor you choose (it might not be `nano`). \n" -"For a refresher on text editors, check out [\"Which Editor?\"](https://swcarpentry.github.io/shell-novice/03-create/) in [The Unix Shell](https://swcarpentry.github.io/shell-novice/) lesson." +"In particular, this does not have to be the `core.editor` you set globally " +"earlier. \n" +"But remember, the.language-bash command to create or edit a new file will " +"depend on the editor you choose (it might not be `nano`). \n" +"For a refresher on text editors, check out [\"Which Editor?\"](https://" +"swcarpentry.github.io/shell-novice/03-create/) in [The Unix Shell](https://" +"swcarpentry.github.io/shell-novice/) lesson." # code block #: git-novice/_episodes/04-changes.md:44 -#: git-novice/_locale/es/_episodes/04-changes.md:42 msgid "" "~~~\n" "$ nano mars.txt\n" @@ -2167,10 +2119,6 @@ msgstr "Type the text below into the `mars.txt` file:" # code block #: git-novice/_episodes/04-changes.md:51 git-novice/_episodes/04-changes.md:72 #: git-novice/_episodes/05-history.md:242 git-novice/_extras/discuss.md:154 -#: git-novice/_locale/es/_episodes/04-changes.md:49 -#: git-novice/_locale/es/_episodes/04-changes.md:70 -#: git-novice/_locale/es/_episodes/05-history.md:240 -#: git-novice/_locale/es/_extras/discuss.md:154 msgid "" "~~~\n" "Cold and dry, but everything is my favorite color\n" @@ -2186,7 +2134,6 @@ msgstr "`mars.txt` now contains a single line, which we can see by running:" # code block #: git-novice/_episodes/04-changes.md:62 -#: git-novice/_locale/es/_episodes/04-changes.md:60 msgid "" "~~~\n" "mars.txt\n" @@ -2202,12 +2149,6 @@ msgstr "" #: git-novice/_episodes/09-conflict.md:164 #: git-novice/_episodes/09-conflict.md:194 #: git-novice/_episodes/09-conflict.md:282 -#: git-novice/_locale/es/_episodes/04-changes.md:65 -#: git-novice/_locale/es/_episodes/05-history.md:235 -#: git-novice/_locale/es/_episodes/09-conflict.md:20 -#: git-novice/_locale/es/_episodes/09-conflict.md:158 -#: git-novice/_locale/es/_episodes/09-conflict.md:188 -#: git-novice/_locale/es/_episodes/09-conflict.md:276 msgid "" "~~~\n" "$ cat mars.txt\n" @@ -2237,7 +2178,8 @@ msgid "" " (use \"git add ...\" to include in what will be committed)\n" "\n" "\tmars.txt\n" -"nothing added to commit but untracked files present (use \"git add\" to track)\n" +"nothing added to commit but untracked files present (use \"git add\" to " +"track)\n" "~~~" msgstr "" "~~~\n" @@ -2249,7 +2191,8 @@ msgstr "" " (use \"git add ...\" to include in what will be committed)\n" "\n" "\tmars.txt\n" -"nothing added to commit but untracked files present (use \"git add\" to track)\n" +"nothing added to commit but untracked files present (use \"git add\" to " +"track)\n" "~~~" #: git-novice/_episodes/04-changes.md:98 @@ -2264,7 +2207,6 @@ msgstr "" # code block #: git-novice/_episodes/04-changes.md:102 -#: git-novice/_locale/es/_episodes/04-changes.md:100 msgid "" "~~~\n" "$ git add mars.txt\n" @@ -2319,7 +2261,6 @@ msgstr "" # code block #: git-novice/_episodes/04-changes.md:132 -#: git-novice/_locale/es/_episodes/04-changes.md:130 msgid "" "~~~\n" "$ git commit -m \"Start notes on Mars as a base\"\n" @@ -2331,7 +2272,6 @@ msgstr "" # code block #: git-novice/_episodes/04-changes.md:137 -#: git-novice/_locale/es/_episodes/04-changes.md:135 msgid "" "~~~\n" "[master (root-commit) f22b25e] Start notes on Mars as a base\n" @@ -2351,39 +2291,53 @@ msgid "" "Git takes everything we have told it to save by using `git add`\n" "and stores a copy permanently inside the special `.git` directory.\n" "This permanent copy is called a [commit]({{ page.root }}/reference#commit)\n" -"(or [revision]({{ page.root }}/reference#revision)) and its short identifier is `f22b25e`.\n" +"(or [revision]({{ page.root }}/reference#revision)) and its short identifier " +"is `f22b25e`.\n" "Your commit may have another identifier." msgstr "" "When we run `git commit`,\n" "Git takes everything we have told it to save by using `git add`\n" "and stores a copy permanently inside the special `.git` directory.\n" "This permanent copy is called a [commit]({{ page.root }}/reference#commit)\n" -"(or [revision]({{ page.root }}/reference#revision)) and its short identifier is `f22b25e`.\n" +"(or [revision]({{ page.root }}/reference#revision)) and its short identifier " +"is `f22b25e`.\n" "Your commit may have another identifier." #: git-novice/_episodes/04-changes.md:151 msgid "" "We use the `-m` flag (for \"message\")\n" -"to record a short, descriptive, and specific comment that will help us remember later on what we did and why.\n" +"to record a short, descriptive, and specific comment that will help us " +"remember later on what we did and why.\n" "If we just run `git commit` without the `-m` option,\n" -"Git will launch `nano` (or whatever other editor we configured as `core.editor`)\n" +"Git will launch `nano` (or whatever other editor we configured as `core." +"editor`)\n" "so that we can write a longer message." msgstr "" "We use the `-m` flag (for \"message\")\n" -"to record a short, descriptive, and specific comment that will help us remember later on what we did and why.\n" +"to record a short, descriptive, and specific comment that will help us " +"remember later on what we did and why.\n" "If we just run `git commit` without the `-m` option,\n" -"Git will launch `nano` (or whatever other editor we configured as `core.editor`)\n" +"Git will launch `nano` (or whatever other editor we configured as `core." +"editor`)\n" "so that we can write a longer message." #: git-novice/_episodes/04-changes.md:157 msgid "" -"[Good commit messages][commit-messages] start with a brief (<50 characters) statement about the\n" -"changes made in the commit. Generally, the message should complete the sentence \"If applied, this commit will\" .\n" -"If you want to go into more detail, add a blank line between the summary line and your additional notes. Use this additional space to explain why you made changes and/or what their impact will be." -msgstr "" -"[Good commit messages][commit-messages] start with a brief (<50 characters) statement about the\n" -"changes made in the commit. Generally, the message should complete the sentence \"If applied, this commit will\" .\n" -"If you want to go into more detail, add a blank line between the summary line and your additional notes. Use this additional space to explain why you made changes and/or what their impact will be." +"[Good commit messages][commit-messages] start with a brief (<50 characters) " +"statement about the\n" +"changes made in the commit. Generally, the message should complete the " +"sentence \"If applied, this commit will\" .\n" +"If you want to go into more detail, add a blank line between the summary " +"line and your additional notes. Use this additional space to explain why you " +"made changes and/or what their impact will be." +msgstr "" +"[Good commit messages][commit-messages] start with a brief (<50 characters) " +"statement about the\n" +"changes made in the commit. Generally, the message should complete the " +"sentence \"If applied, this commit will\" .\n" +"If you want to go into more detail, add a blank line between the summary " +"line and your additional notes. Use this additional space to explain why you " +"made changes and/or what their impact will be." #: git-novice/_episodes/04-changes.md:161 msgid "If we run `git status` now:" @@ -2392,9 +2346,6 @@ msgstr "If we run `git status` now:" # code block #: git-novice/_episodes/04-changes.md:168 #: git-novice/_episodes/04-changes.md:459 git-novice/_extras/discuss.md:244 -#: git-novice/_locale/es/_episodes/04-changes.md:166 -#: git-novice/_locale/es/_episodes/04-changes.md:456 -#: git-novice/_locale/es/_extras/discuss.md:244 msgid "" "~~~\n" "On branch master\n" @@ -2419,8 +2370,6 @@ msgstr "" # code block #: git-novice/_episodes/04-changes.md:178 #: git-novice/_episodes/04-changes.md:467 -#: git-novice/_locale/es/_episodes/04-changes.md:176 -#: git-novice/_locale/es/_episodes/04-changes.md:464 msgid "" "~~~\n" "$ git log\n" @@ -2432,7 +2381,6 @@ msgstr "" # code block #: git-novice/_episodes/04-changes.md:183 -#: git-novice/_locale/es/_episodes/04-changes.md:181 msgid "" "~~~\n" "commit f22b25e3233b4645dabd0d81e651fe074bd8e73b\n" @@ -2452,7 +2400,8 @@ msgstr "" #: git-novice/_episodes/04-changes.md:192 msgid "" -"`git log` lists all commits made to a repository in reverse chronological order.\n" +"`git log` lists all commits made to a repository in reverse chronological " +"order.\n" "The listing for each commit includes\n" "the commit's full identifier\n" "(which starts with the same characters as\n" @@ -2461,7 +2410,8 @@ msgid "" "when it was created,\n" "and the log message Git was given when the commit was created." msgstr "" -"`git log` lists all commits made to a repository in reverse chronological order.\n" +"`git log` lists all commits made to a repository in reverse chronological " +"order.\n" "The listing for each commit includes\n" "the commit's full identifier\n" "(which starts with the same characters as\n" @@ -2478,14 +2428,16 @@ msgstr "> ## Where Are My Changes?" #: git-novice/_episodes/04-changes.md:202 msgid "" ">\n" -"> If we run `ls` at this point, we will still see just one file called `mars.txt`.\n" +"> If we run `ls` at this point, we will still see just one file called `mars." +"txt`.\n" "> That's because Git saves information about files' history\n" "> in the special `.git` directory mentioned earlier\n" "> so that our filesystem doesn't become cluttered\n" "> (and so that we can't accidentally edit or delete an old version)." msgstr "" ">\n" -"> If we run `ls` at this point, we will still see just one file called `mars.txt`.\n" +"> If we run `ls` at this point, we will still see just one file called `mars." +"txt`.\n" "> That's because Git saves information about files' history\n" "> in the special `.git` directory mentioned earlier\n" "> so that our filesystem doesn't become cluttered\n" @@ -2494,11 +2446,13 @@ msgstr "" #: git-novice/_episodes/04-changes.md:210 msgid "" "Now suppose Dracula adds more information to the file.\n" -"(Again, we'll edit with `nano` and then `cat` the file to show its contents;\n" +"(Again, we'll edit with `nano` and then `cat` the file to show its " +"contents;\n" "you may use a different editor, and don't need to `cat`.)" msgstr "" "Now suppose のび太 adds more information to the file.\n" -"(Again, we'll edit with `nano` and then `cat` the file to show its contents;\n" +"(Again, we'll edit with `nano` and then `cat` the file to show its " +"contents;\n" "you may use a different editor, and don't need to `cat`.)" # code block @@ -2507,12 +2461,6 @@ msgstr "" #: git-novice/_episodes/05-history.md:177 #: git-novice/_episodes/09-conflict.md:40 #: git-novice/_episodes/09-conflict.md:88 -#: git-novice/_locale/es/_episodes/04-changes.md:212 -#: git-novice/_locale/es/_episodes/04-changes.md:367 -#: git-novice/_locale/es/_episodes/05-history.md:27 -#: git-novice/_locale/es/_episodes/05-history.md:175 -#: git-novice/_locale/es/_episodes/09-conflict.md:34 -#: git-novice/_locale/es/_episodes/09-conflict.md:82 msgid "" "~~~\n" "$ nano mars.txt\n" @@ -2526,8 +2474,6 @@ msgstr "" # code block #: git-novice/_episodes/04-changes.md:220 git-novice/_extras/discuss.md:171 -#: git-novice/_locale/es/_episodes/04-changes.md:218 -#: git-novice/_locale/es/_extras/discuss.md:171 msgid "" "~~~\n" "Cold and dry, but everything is my favorite color\n" @@ -2556,7 +2502,8 @@ msgid "" "On branch master\n" "Changes not staged for commit:\n" " (use \"git add ...\" to update what will be committed)\n" -" (use \"git checkout -- ...\" to discard changes in working directory)\n" +" (use \"git checkout -- ...\" to discard changes in working " +"directory)\n" "\n" "\tmodified: mars.txt\n" "\n" @@ -2567,7 +2514,8 @@ msgstr "" "On branch master\n" "Changes not staged for commit:\n" " (use \"git add ...\" to update what will be committed)\n" -" (use \"git checkout -- ...\" to discard changes in working directory)\n" +" (use \"git checkout -- ...\" to discard changes in working " +"directory)\n" "\n" "\tmodified: mars.txt\n" "\n" @@ -2601,9 +2549,6 @@ msgstr "" # code block #: git-novice/_episodes/04-changes.md:257 #: git-novice/_episodes/04-changes.md:383 git-novice/_extras/discuss.md:180 -#: git-novice/_locale/es/_episodes/04-changes.md:255 -#: git-novice/_locale/es/_episodes/04-changes.md:380 -#: git-novice/_locale/es/_extras/discuss.md:180 msgid "" "~~~\n" "$ git diff\n" @@ -2615,8 +2560,6 @@ msgstr "" # code block #: git-novice/_episodes/04-changes.md:262 git-novice/_extras/discuss.md:194 -#: git-novice/_locale/es/_episodes/04-changes.md:260 -#: git-novice/_locale/es/_extras/discuss.md:194 msgid "" "~~~\n" "diff --git a/mars.txt b/mars.txt\n" @@ -2652,17 +2595,24 @@ msgstr "" # ordered list #: git-novice/_episodes/04-changes.md:278 -msgid "1. The first line tells us that Git is producing output similar to the Unix `diff` command" -msgstr "1. The first line tells us that Git is producing output similar to the Unix `diff` command" +msgid "" +"1. The first line tells us that Git is producing output similar to the Unix " +"`diff` command" +msgstr "" +"1. The first line tells us that Git is producing output similar to the Unix " +"`diff` command" #: git-novice/_episodes/04-changes.md:279 msgid "" " comparing the old and new versions of the file.\n" "2. The second line tells exactly which versions of the file\n" " Git is comparing;\n" -" `df0654a` and `315bf3a` are unique computer-generated labels for those versions.\n" -"3. The third and fourth lines once again show the name of the file being changed.\n" -"4. The remaining lines are the most interesting, they show us the actual differences\n" +" `df0654a` and `315bf3a` are unique computer-generated labels for those " +"versions.\n" +"3. The third and fourth lines once again show the name of the file being " +"changed.\n" +"4. The remaining lines are the most interesting, they show us the actual " +"differences\n" " and the lines on which they occur.\n" " In particular,\n" " the `+` marker in the first column shows where we added a line." @@ -2670,9 +2620,12 @@ msgstr "" " comparing the old and new versions of the file.\n" "2. The second line tells exactly which versions of the file\n" " Git is comparing;\n" -" `df0654a` and `315bf3a` are unique computer-generated labels for those versions.\n" -"3. The third and fourth lines once again show the name of the file being changed.\n" -"4. The remaining lines are the most interesting, they show us the actual differences\n" +" `df0654a` and `315bf3a` are unique computer-generated labels for those " +"versions.\n" +"3. The third and fourth lines once again show the name of the file being " +"changed.\n" +"4. The remaining lines are the most interesting, they show us the actual " +"differences\n" " and the lines on which they occur.\n" " In particular,\n" " the `+` marker in the first column shows where we added a line." @@ -2683,7 +2636,6 @@ msgstr "After reviewing our change, it's time to commit it:" # code block #: git-novice/_episodes/04-changes.md:291 -#: git-novice/_locale/es/_episodes/04-changes.md:289 msgid "" "~~~\n" "$ git commit -m \"Add concerns about effects of Mars' moons on Wolfman\"\n" @@ -2707,7 +2659,6 @@ msgstr "" # code block #: git-novice/_episodes/04-changes.md:313 -#: git-novice/_locale/es/_episodes/04-changes.md:311 msgid "" "~~~\n" "$ git add mars.txt\n" @@ -2721,7 +2672,6 @@ msgstr "" # code block #: git-novice/_episodes/04-changes.md:319 -#: git-novice/_locale/es/_episodes/04-changes.md:317 msgid "" "~~~\n" "[master 34961b1] Add concerns about effects of Mars' moons on Wolfman\n" @@ -2773,14 +2723,14 @@ msgstr "" # blockquote, which can be cascaded #: git-novice/_episodes/04-changes.md:342 -#: git-novice/_locale/es/_episodes/04-changes.md:339 msgid "> ## Staging Area" msgstr "> ## Staging Area" #: git-novice/_episodes/04-changes.md:343 msgid "" ">\n" -"> If you think of Git as taking snapshots of changes over the life of a project,\n" +"> If you think of Git as taking snapshots of changes over the life of a " +"project,\n" "> `git add` specifies *what* will go in a snapshot\n" "> (putting things in the staging area),\n" "> and `git commit` then *actually takes* the snapshot, and\n" @@ -2798,7 +2748,8 @@ msgid "" "> than you would like!" msgstr "" ">\n" -"> If you think of Git as taking snapshots of changes over the life of a project,\n" +"> If you think of Git as taking snapshots of changes over the life of a " +"project,\n" "> `git add` specifies *what* will go in a snapshot\n" "> (putting things in the staging area),\n" "> and `git commit` then *actually takes* the snapshot, and\n" @@ -2816,7 +2767,6 @@ msgstr "" "> than you would like!" #: git-novice/_episodes/04-changes.md:362 -#: git-novice/_locale/es/_episodes/04-changes.md:359 msgid "![The Git Staging Area](../fig/git-staging-area.svg)" msgstr "![The Git Staging Area](../fig/git-staging-area.svg)" @@ -2838,10 +2788,6 @@ msgstr "" #: git-novice/_episodes/04-changes.md:376 git-novice/_episodes/05-history.md:33 #: git-novice/_episodes/05-history.md:217 #: git-novice/_episodes/09-conflict.md:31 -#: git-novice/_locale/es/_episodes/04-changes.md:373 -#: git-novice/_locale/es/_episodes/05-history.md:33 -#: git-novice/_locale/es/_episodes/05-history.md:215 -#: git-novice/_locale/es/_episodes/09-conflict.md:25 msgid "" "~~~\n" "Cold and dry, but everything is my favorite color\n" @@ -2858,8 +2804,6 @@ msgstr "" # code block #: git-novice/_episodes/04-changes.md:388 #: git-novice/_episodes/04-changes.md:424 -#: git-novice/_locale/es/_episodes/04-changes.md:385 -#: git-novice/_locale/es/_episodes/04-changes.md:421 msgid "" "~~~\n" "diff --git a/mars.txt b/mars.txt\n" @@ -2899,7 +2843,6 @@ msgstr "" # code block #: git-novice/_episodes/04-changes.md:406 -#: git-novice/_locale/es/_episodes/04-changes.md:403 msgid "" "~~~\n" "$ git add mars.txt\n" @@ -2929,7 +2872,6 @@ msgstr "" # code block #: git-novice/_episodes/04-changes.md:419 -#: git-novice/_locale/es/_episodes/04-changes.md:416 msgid "" "~~~\n" "$ git diff --staged\n" @@ -2953,7 +2895,6 @@ msgstr "" # code block #: git-novice/_episodes/04-changes.md:441 -#: git-novice/_locale/es/_episodes/04-changes.md:438 msgid "" "~~~\n" "$ git commit -m \"Discuss concerns about Mars' climate for Mummy\"\n" @@ -2965,7 +2906,6 @@ msgstr "" # code block #: git-novice/_episodes/04-changes.md:446 -#: git-novice/_locale/es/_episodes/04-changes.md:443 msgid "" "~~~\n" "[master 005937f] Discuss concerns about Mars' climate for Mummy\n" @@ -2987,7 +2927,6 @@ msgstr "and look at the history of what we've done so far:" # code block #: git-novice/_episodes/04-changes.md:472 -#: git-novice/_locale/es/_episodes/04-changes.md:469 msgid "" "~~~\n" "commit 005937fbe2a98fb83f0ade869025dc2636b4dad5\n" @@ -3089,9 +3028,12 @@ msgstr "> ## Limit Log Size" #: git-novice/_episodes/04-changes.md:517 msgid "" ">\n" -"> To avoid having `git log` cover your entire terminal screen, you can limit the\n" -"> number of commits that Git lists by using `-N`, where `N` is the number of\n" -"> commits that you want to view. For example, if you only want information from\n" +"> To avoid having `git log` cover your entire terminal screen, you can limit " +"the\n" +"> number of commits that Git lists by using `-N`, where `N` is the number " +"of\n" +"> commits that you want to view. For example, if you only want information " +"from\n" "> the last commit you can use:\n" ">\n" "> ~~~\n" @@ -3108,9 +3050,12 @@ msgid "" "> ~~~" msgstr "" ">\n" -"> To avoid having `git log` cover your entire terminal screen, you can limit the\n" -"> number of commits that Git lists by using `-N`, where `N` is the number of\n" -"> commits that you want to view. For example, if you only want information from\n" +"> To avoid having `git log` cover your entire terminal screen, you can limit " +"the\n" +"> number of commits that Git lists by using `-N`, where `N` is the number " +"of\n" +"> commits that you want to view. For example, if you only want information " +"from\n" "> the last commit you can use:\n" ">\n" "> ~~~\n" @@ -3134,13 +3079,6 @@ msgstr "" #: git-novice/_episodes/05-history.md:406 #: git-novice/_episodes/05-history.md:414 #: git-novice/_episodes/05-history.md:421 -#: git-novice/_locale/es/_episodes/04-changes.md:530 -#: git-novice/_locale/es/_episodes/04-changes.md:544 -#: git-novice/_locale/es/_episodes/04-changes.md:558 -#: git-novice/_locale/es/_episodes/05-history.md:396 -#: git-novice/_locale/es/_episodes/05-history.md:403 -#: git-novice/_locale/es/_episodes/05-history.md:411 -#: git-novice/_locale/es/_episodes/05-history.md:418 msgid "> {: .output}" msgstr "> {: .output}" @@ -3226,14 +3164,19 @@ msgid "" "> {: .language-bash}\n" ">\n" "> Note, our newly created empty directory `directory` does not appear in\n" -"> the list of untracked files even if we explicitly add it (_via_ `git add`) to our\n" -"> repository. This is the reason why you will sometimes see `.gitkeep` files\n" -"> in otherwise empty directories. Unlike `.gitignore`, these files are not special\n" -"> and their sole purpose is to populate a directory so that Git adds it to\n" +"> the list of untracked files even if we explicitly add it (_via_ `git " +"add`) to our\n" +"> repository. This is the reason why you will sometimes see `.gitkeep` " +"files\n" +"> in otherwise empty directories. Unlike `.gitignore`, these files are " +"not special\n" +"> and their sole purpose is to populate a directory so that Git adds it " +"to\n" "> the repository. In fact, you can name such files anything you like.\n" ">\n" "> {:start=\"2\"}\n" -"> 2. If you create a directory in your Git repository and populate it with files,\n" +"> 2. If you create a directory in your Git repository and populate it with " +"files,\n" "> you can add all files in the directory at once by:\n" ">\n" "> ~~~\n" @@ -3256,14 +3199,19 @@ msgstr "" "> {: .language-bash}\n" ">\n" "> Note, our newly created empty directory `directory` does not appear in\n" -"> the list of untracked files even if we explicitly add it (_via_ `git add`) to our\n" -"> repository. This is the reason why you will sometimes see `.gitkeep` files\n" -"> in otherwise empty directories. Unlike `.gitignore`, these files are not special\n" -"> and their sole purpose is to populate a directory so that Git adds it to\n" +"> the list of untracked files even if we explicitly add it (_via_ `git " +"add`) to our\n" +"> repository. This is the reason why you will sometimes see `.gitkeep` " +"files\n" +"> in otherwise empty directories. Unlike `.gitignore`, these files are " +"not special\n" +"> and their sole purpose is to populate a directory so that Git adds it " +"to\n" "> the repository. In fact, you can name such files anything you like.\n" ">\n" "> {:start=\"2\"}\n" -"> 2. If you create a directory in your Git repository and populate it with files,\n" +"> 2. If you create a directory in your Git repository and populate it with " +"files,\n" "> you can add all files in the directory at once by:\n" ">\n" "> ~~~\n" @@ -3284,7 +3232,6 @@ msgstr "" "repository (`git commit`):" #: git-novice/_episodes/04-changes.md:603 -#: git-novice/_locale/es/_episodes/04-changes.md:599 msgid "![The Git Commit Workflow](../fig/git-committing.svg)" msgstr "![The Git Commit Workflow](../fig/git-committing.svg)" @@ -3300,12 +3247,15 @@ msgid "" "> last commit made to `mars.txt`?\n" ">\n" "> 1. \"Changes\"\n" -"> 2. \"Added line 'But the Mummy will appreciate the lack of humidity' to mars.txt\"\n" +"> 2. \"Added line 'But the Mummy will appreciate the lack of humidity' to " +"mars.txt\"\n" "> 3. \"Discuss effects of Mars' climate on the Mummy\"\n" ">\n" "> > ## Solution\n" -"> > Answer 1 is not descriptive enough, and the purpose of the commit is unclear;\n" -"> > and answer 2 is redundant to using \"git diff\" to see what changed in this commit;\n" +"> > Answer 1 is not descriptive enough, and the purpose of the commit is " +"unclear;\n" +"> > and answer 2 is redundant to using \"git diff\" to see what changed in " +"this commit;\n" "> > but answer 3 is good: short, descriptive, and imperative." msgstr "" ">\n" @@ -3313,12 +3263,15 @@ msgstr "" "> last commit made to `mars.txt`?\n" ">\n" "> 1. \"Changes\"\n" -"> 2. \"Added line 'But the Mummy will appreciate the lack of humidity' to mars.txt\"\n" +"> 2. \"Added line 'But the Mummy will appreciate the lack of humidity' to " +"mars.txt\"\n" "> 3. \"Discuss effects of Mars' climate on the Mummy\"\n" ">\n" "> > ## Solution\n" -"> > Answer 1 is not descriptive enough, and the purpose of the commit is unclear;\n" -"> > and answer 2 is redundant to using \"git diff\" to see what changed in this commit;\n" +"> > Answer 1 is not descriptive enough, and the purpose of the commit is " +"unclear;\n" +"> > and answer 2 is redundant to using \"git diff\" to see what changed in " +"this commit;\n" "> > but answer 3 is good: short, descriptive, and imperative." # blockquote, which can be cascaded @@ -3347,7 +3300,8 @@ msgid "" "> > 1. Would only create a commit if files have already been staged.\n" "> > 2. Would try to create a new repository.\n" "> > 3. Is correct: first add the file to the staging area, then commit.\n" -"> > 4. Would try to commit a file \"my recent changes\" with the message myfile.txt." +"> > 4. Would try to commit a file \"my recent changes\" with the message " +"myfile.txt." msgstr "" ">\n" "> Which command(s) below would save the changes of `myfile.txt`\n" @@ -3368,7 +3322,8 @@ msgstr "" "> > 1. Would only create a commit if files have already been staged.\n" "> > 2. Would try to create a new repository.\n" "> > 3. Is correct: first add the file to the staging area, then commit.\n" -"> > 4. Would try to commit a file \"my recent changes\" with the message myfile.txt." +"> > 4. Would try to commit a file \"my recent changes\" with the message " +"myfile.txt." # blockquote, which can be cascaded #: git-novice/_episodes/04-changes.md:645 @@ -3409,7 +3364,8 @@ msgid "" "> > Venus is a nice planet and I definitely should consider it as a base.\n" "> > ~~~\n" "> > {: .output}\n" -"> > Now you can add both files to the staging area. We can do that in one line:\n" +"> > Now you can add both files to the staging area. We can do that in one " +"line:\n" "> >\n" "> > ~~~\n" "> > $ git add mars.txt venus.txt\n" @@ -3421,7 +3377,8 @@ msgid "" "> > $ git add venus.txt\n" "> > ~~~\n" "> > {: .language-bash}\n" -"> > Now the files are ready to commit. You can check that using `git status`. If you are ready to commit use:\n" +"> > Now the files are ready to commit. You can check that using `git " +"status`. If you are ready to commit use:\n" "> > ~~~\n" "> > $ git commit -m \"Write plans to start a base on Venus\"\n" "> > ~~~\n" @@ -3466,7 +3423,8 @@ msgstr "" "> > Venus is a nice planet and I definitely should consider it as a base.\n" "> > ~~~\n" "> > {: .output}\n" -"> > Now you can add both files to the staging area. We can do that in one line:\n" +"> > Now you can add both files to the staging area. We can do that in one " +"line:\n" "> >\n" "> > ~~~\n" "> > $ git add mars.txt venus.txt\n" @@ -3478,7 +3436,8 @@ msgstr "" "> > $ git add venus.txt\n" "> > ~~~\n" "> > {: .language-bash}\n" -"> > Now the files are ready to commit. You can check that using `git status`. If you are ready to commit use:\n" +"> > Now the files are ready to commit. You can check that using `git " +"status`. If you are ready to commit use:\n" "> > ~~~\n" "> > $ git commit -m \"Write plans to start a base on Venus\"\n" "> > ~~~\n" @@ -3530,7 +3489,8 @@ msgid "" "> > ~~~\n" "> > {: .language-bash}\n" "> >\n" -"> > Create your biography file `me.txt` using `nano` or another text editor.\n" +"> > Create your biography file `me.txt` using `nano` or another text " +"editor.\n" "> > Once in place, add and commit it to the repository:\n" "> >\n" "> > ~~~\n" @@ -3581,7 +3541,8 @@ msgstr "" "> > ~~~\n" "> > {: .language-bash}\n" "> >\n" -"> > Create your biography file `me.txt` using `nano` or another text editor.\n" +"> > Create your biography file `me.txt` using `nano` or another text " +"editor.\n" "> > Once in place, add and commit it to the repository:\n" "> >\n" "> > ~~~\n" @@ -3602,7 +3563,6 @@ msgstr "" # blockquote, which can be cascaded #: git-novice/_episodes/04-changes.md:759 -#: git-novice/_locale/es/_episodes/04-changes.md:753 msgid "> ## Author and Committer" msgstr "> ## Author and Committer" @@ -3635,7 +3595,8 @@ msgid "" "> >\n" "> > ~~~\n" "> > $ git add me.txt\n" -"> > $ git commit -m \"Update Vlad's bio.\" --author=\"Frank N. Stein \"\n" +"> > $ git commit -m \"Update Vlad's bio.\" --author=\"Frank N. Stein " +"\"\n" "> > ~~~\n" "> > {: .language-bash}\n" "> >\n" @@ -3693,7 +3654,8 @@ msgstr "" "> >\n" "> > ~~~\n" "> > $ git add me.txt\n" -"> > $ git commit -m \"Update のび太 bio.\" --author=“源 静香 ”\n" +"> > $ git commit -m \"Update のび太 bio.\" --author=“源 静香 " +"”\n" "> > ~~~\n" "> > {: .language-bash}\n" "> >\n" @@ -3725,7 +3687,6 @@ msgstr "" "> > {: .output}" #: git-novice/_episodes/04-changes.md:820 -#: git-novice/_locale/es/_episodes/04-changes.md:814 msgid "[commit-messages]: https://chris.beams.io/posts/git-commit/" msgstr "[commit-messages]: https://chris.beams.io/posts/git-commit/" @@ -3780,11 +3741,13 @@ msgstr "" #: git-novice/_episodes/05-history.md:23 msgid "" -"We've been adding one line at a time to `mars.txt`, so it's easy to track our\n" +"We've been adding one line at a time to `mars.txt`, so it's easy to track " +"our\n" "progress by looking, so let's do that using our `HEAD`s. Before we start,\n" "let's make a change to `mars.txt`." msgstr "" -"We've been adding one line at a time to `mars.txt`, so it's easy to track our\n" +"We've been adding one line at a time to `mars.txt`, so it's easy to track " +"our\n" "progress by looking, so let's do that using our `HEAD`s. Before we start,\n" "let's make a change to `mars.txt`." @@ -3794,7 +3757,6 @@ msgstr "Now, let's see what we get." # code block #: git-novice/_episodes/05-history.md:42 -#: git-novice/_locale/es/_episodes/05-history.md:42 msgid "" "~~~\n" "$ git diff HEAD mars.txt\n" @@ -3806,7 +3768,6 @@ msgstr "" # code block #: git-novice/_episodes/05-history.md:47 -#: git-novice/_locale/es/_episodes/05-history.md:47 msgid "" "~~~\n" "diff --git a/mars.txt b/mars.txt\n" @@ -3832,13 +3793,15 @@ msgstr "" #: git-novice/_episodes/05-history.md:59 msgid "" -"which is the same as what you would get if you leave out `HEAD` (try it). The\n" +"which is the same as what you would get if you leave out `HEAD` (try it). " +"The\n" "real goodness in all this is when you can refer to previous commits. We do\n" "that by adding `~1` \n" "(where \"~\" is \"tilde\", pronounced [**til**-d*uh*]) \n" "to refer to the commit one before `HEAD`." msgstr "" -"which is the same as what you would get if you leave out `HEAD` (try it). The\n" +"which is the same as what you would get if you leave out `HEAD` (try it). " +"The\n" "real goodness in all this is when you can refer to previous commits. We do\n" "that by adding `~1` \n" "(where \"~\" is \"tilde\", pronounced [**til**-d*uh*]) \n" @@ -3846,7 +3809,6 @@ msgstr "" # code block #: git-novice/_episodes/05-history.md:65 -#: git-novice/_locale/es/_episodes/05-history.md:63 msgid "" "~~~\n" "$ git diff HEAD~1 mars.txt\n" @@ -3858,15 +3820,16 @@ msgstr "" #: git-novice/_episodes/05-history.md:70 msgid "" -"If we want to see the differences between older commits we can use `git diff`\n" +"If we want to see the differences between older commits we can use `git " +"diff`\n" "again, but with the notation `HEAD~1`, `HEAD~2`, and so on, to refer to them:" msgstr "" -"If we want to see the differences between older commits we can use `git diff`\n" +"If we want to see the differences between older commits we can use `git " +"diff`\n" "again, but with the notation `HEAD~1`, `HEAD~2`, and so on, to refer to them:" # code block #: git-novice/_episodes/05-history.md:74 -#: git-novice/_locale/es/_episodes/05-history.md:72 msgid "" "~~~\n" "$ git diff HEAD~2 mars.txt\n" @@ -3878,7 +3841,6 @@ msgstr "" # code block #: git-novice/_episodes/05-history.md:79 -#: git-novice/_locale/es/_episodes/05-history.md:77 msgid "" "~~~\n" "diff --git a/mars.txt b/mars.txt\n" @@ -3903,12 +3865,17 @@ msgstr "" "~~~" #: git-novice/_episodes/05-history.md:91 -msgid "We could also use `git show` which shows us what changes we made at an older commit as well as the commit message, rather than the _differences_ between a commit and our working directory that we see by using `git diff`." -msgstr "We could also use `git show` which shows us what changes we made at an older commit as well as the commit message, rather than the _differences_ between a commit and our working directory that we see by using `git diff`." +msgid "" +"We could also use `git show` which shows us what changes we made at an older " +"commit as well as the commit message, rather than the _differences_ between " +"a commit and our working directory that we see by using `git diff`." +msgstr "" +"We could also use `git show` which shows us what changes we made at an older " +"commit as well as the commit message, rather than the _differences_ between " +"a commit and our working directory that we see by using `git diff`." # code block #: git-novice/_episodes/05-history.md:93 -#: git-novice/_locale/es/_episodes/05-history.md:91 msgid "" "~~~\n" "$ git show HEAD~2 mars.txt\n" @@ -3920,7 +3887,6 @@ msgstr "" # code block #: git-novice/_episodes/05-history.md:98 -#: git-novice/_locale/es/_episodes/05-history.md:96 msgid "" "~~~\n" "commit 34961b159c27df3b475cfe4415d94a6d1fcd064d\n" @@ -3998,7 +3964,6 @@ msgstr "" # code block #: git-novice/_episodes/05-history.md:134 -#: git-novice/_locale/es/_episodes/05-history.md:132 msgid "" "~~~\n" "$ git diff f22b25e3233b4645dabd0d81e651fe074bd8e73b mars.txt\n" @@ -4011,8 +3976,6 @@ msgstr "" # code block #: git-novice/_episodes/05-history.md:139 #: git-novice/_episodes/05-history.md:160 -#: git-novice/_locale/es/_episodes/05-history.md:137 -#: git-novice/_locale/es/_episodes/05-history.md:158 msgid "" "~~~\n" "diff --git a/mars.txt b/mars.txt\n" @@ -4048,7 +4011,6 @@ msgstr "" # code block #: git-novice/_episodes/05-history.md:155 -#: git-novice/_locale/es/_episodes/05-history.md:153 msgid "" "~~~\n" "$ git diff f22b25e mars.txt\n" @@ -4072,7 +4034,6 @@ msgstr "" # code block #: git-novice/_episodes/05-history.md:183 -#: git-novice/_locale/es/_episodes/05-history.md:181 msgid "" "~~~\n" "We will need to manufacture our own oxygen\n" @@ -4100,7 +4061,6 @@ msgstr "" # code block #: git-novice/_episodes/05-history.md:211 -#: git-novice/_locale/es/_episodes/05-history.md:209 msgid "" "~~~\n" "$ git checkout HEAD mars.txt\n" @@ -4117,7 +4077,8 @@ msgid "" "As you might guess from its name,\n" "`git checkout` checks out (i.e., restores) an old version of a file.\n" "In this case,\n" -"we're telling Git that we want to recover the version of the file recorded in `HEAD`,\n" +"we're telling Git that we want to recover the version of the file recorded " +"in `HEAD`,\n" "which is the last saved commit.\n" "If we want to go back even further,\n" "we can use a commit identifier instead:" @@ -4125,15 +4086,14 @@ msgstr "" "As you might guess from its name,\n" "`git checkout` checks out (i.e., restores) an old version of a file.\n" "In this case,\n" -"we're telling Git that we want to recover the version of the file recorded in `HEAD`,\n" +"we're telling Git that we want to recover the version of the file recorded " +"in `HEAD`,\n" "which is the last saved commit.\n" "If we want to go back even further,\n" "we can use a commit identifier instead:" # code block #: git-novice/_episodes/05-history.md:232 git-novice/_extras/discuss.md:62 -#: git-novice/_locale/es/_episodes/05-history.md:230 -#: git-novice/_locale/es/_extras/discuss.md:62 msgid "" "~~~\n" "$ git checkout f22b25e mars.txt\n" @@ -4152,7 +4112,8 @@ msgid "" " (use \"git reset HEAD ...\" to unstage)\n" "# Changes not staged for commit:\n" "# (use \"git add ...\" to update what will be committed)\n" -"# (use \"git checkout -- ...\" to discard changes in working directory)\n" +"# (use \"git checkout -- ...\" to discard changes in working " +"directory)\n" "#\n" "#\tmodified: mars.txt\n" "#\n" @@ -4165,7 +4126,8 @@ msgstr "" " (use \"git reset HEAD ...\" to unstage)\n" "# Changes not staged for commit:\n" "# (use \"git add ...\" to update what will be committed)\n" -"# (use \"git checkout -- ...\" to discard changes in working directory)\n" +"# (use \"git checkout -- ...\" to discard changes in working " +"directory)\n" "#\n" "#\tmodified: mars.txt\n" "#\n" @@ -4184,7 +4146,6 @@ msgstr "" # code block #: git-novice/_episodes/05-history.md:270 -#: git-novice/_locale/es/_episodes/05-history.md:268 msgid "" "~~~\n" "$ git checkout -f master mars.txt\n" @@ -4209,13 +4170,16 @@ msgid "" "> ~~~\n" "> {: .language-bash}\n" ">\n" -"> to revert `mars.txt` to its state after the commit `f22b25e`. But be careful! \n" -"> The command `checkout` has other important functionalities and Git will misunderstand\n" +"> to revert `mars.txt` to its state after the commit `f22b25e`. But be " +"careful! \n" +"> The command `checkout` has other important functionalities and Git will " +"misunderstand\n" "> your intentions if you are not accurate with the typing. For example, \n" "> if you forget `mars.txt` in the previous command.\n" "> The \"detached HEAD\" is like \"look, but don't touch\" here,\n" "> so you shouldn't make any changes in this state.\n" -"> After investigating your repo's past state, reattach your `HEAD` with `git checkout master`." +"> After investigating your repo's past state, reattach your `HEAD` with `git " +"checkout master`." msgstr "" ">\n" "> Above we used\n" @@ -4225,13 +4189,16 @@ msgstr "" "> ~~~\n" "> {: .language-bash}\n" ">\n" -"> to revert `mars.txt` to its state after the commit `f22b25e`. But be careful! \n" -"> The command `checkout` has other important functionalities and Git will misunderstand\n" +"> to revert `mars.txt` to its state after the commit `f22b25e`. But be " +"careful! \n" +"> The command `checkout` has other important functionalities and Git will " +"misunderstand\n" "> your intentions if you are not accurate with the typing. For example, \n" "> if you forget `mars.txt` in the previous command.\n" "> The \"detached HEAD\" is like \"look, but don't touch\" here,\n" "> so you shouldn't make any changes in this state.\n" -"> After investigating your repo's past state, reattach your `HEAD` with `git checkout master`." +"> After investigating your repo's past state, reattach your `HEAD` with `git " +"checkout master`." #: git-novice/_episodes/05-history.md:293 msgid "" @@ -4252,7 +4219,6 @@ msgstr "" "recent commit (`HEAD~1`), which is commit `f22b25e`:" #: git-novice/_episodes/05-history.md:301 -#: git-novice/_locale/es/_episodes/05-history.md:298 msgid "![Git Checkout](../fig/git-checkout.svg)" msgstr "![Git Checkout](../fig/git-checkout.svg)" @@ -4265,9 +4231,12 @@ msgstr "" "here's how Git works in cartoon form:" #: git-novice/_episodes/05-history.md:306 -#: git-novice/_locale/es/_episodes/05-history.md:303 -msgid "![https://figshare.com/articles/How_Git_works_a_cartoon/1328266](../fig/git_staging.svg)" -msgstr "![https://figshare.com/articles/How_Git_works_a_cartoon/1328266](../fig/git_staging.svg)" +msgid "" +"![https://figshare.com/articles/How_Git_works_a_cartoon/1328266](../fig/" +"git_staging.svg)" +msgstr "" +"![https://figshare.com/articles/How_Git_works_a_cartoon/1328266](../fig/" +"git_staging.svg)" # blockquote, which can be cascaded #: git-novice/_episodes/05-history.md:308 @@ -4281,13 +4250,16 @@ msgid "" "> you'll see that it includes this hint:\n" ">\n" "> ~~~\n" -"> (use \"git checkout -- ...\" to discard changes in working directory)\n" +"> (use \"git checkout -- ...\" to discard changes in working " +"directory)\n" "> ~~~\n" "> {: .language-bash}\n" ">\n" "> As it says,\n" -"> `git checkout` without a version identifier restores files to the state saved in `HEAD`.\n" -"> The double dash `--` is needed to separate the names of the files being recovered\n" +"> `git checkout` without a version identifier restores files to the state " +"saved in `HEAD`.\n" +"> The double dash `--` is needed to separate the names of the files being " +"recovered\n" "> from the command itself:\n" "> without it,\n" "> Git would try to use the name of the file as the commit identifier." @@ -4297,13 +4269,16 @@ msgstr "" "> you'll see that it includes this hint:\n" ">\n" "> ~~~\n" -"> (use \"git checkout -- ...\" to discard changes in working directory)\n" +"> (use \"git checkout -- ...\" to discard changes in working " +"directory)\n" "> ~~~\n" "> {: .language-bash}\n" ">\n" "> As it says,\n" -"> `git checkout` without a version identifier restores files to the state saved in `HEAD`.\n" -"> The double dash `--` is needed to separate the names of the files being recovered\n" +"> `git checkout` without a version identifier restores files to the state " +"saved in `HEAD`.\n" +"> The double dash `--` is needed to separate the names of the files being " +"recovered\n" "> from the command itself:\n" "> without it,\n" "> Git would try to use the name of the file as the commit identifier." @@ -4336,11 +4311,14 @@ msgstr "> ## Recovering Older Versions of a File" #: git-novice/_episodes/05-history.md:336 msgid "" ">\n" -"> Jennifer has made changes to the Python script that she has been working on for weeks, and the\n" -"> modifications she made this morning \"broke\" the script and it no longer runs. She has spent\n" +"> Jennifer has made changes to the Python script that she has been working " +"on for weeks, and the\n" +"> modifications she made this morning \"broke\" the script and it no longer " +"runs. She has spent\n" "> ~ 1hr trying to fix it, with no luck...\n" ">\n" -"> Luckily, she has been keeping track of her project's versions using Git! Which commands below will\n" +"> Luckily, she has been keeping track of her project's versions using Git! " +"Which commands below will\n" "> let her recover the last committed version of her Python script called\n" "> `data_cruncher.py`?\n" ">\n" @@ -4355,11 +4333,14 @@ msgid "" "> 5. Both 2 and 4" msgstr "" ">\n" -"> Jennifer has made changes to the Python script that she has been working on for weeks, and the\n" -"> modifications she made this morning \"broke\" the script and it no longer runs. She has spent\n" +"> Jennifer has made changes to the Python script that she has been working " +"on for weeks, and the\n" +"> modifications she made this morning \"broke\" the script and it no longer " +"runs. She has spent\n" "> ~ 1hr trying to fix it, with no luck...\n" ">\n" -"> Luckily, she has been keeping track of her project's versions using Git! Which commands below will\n" +"> Luckily, she has been keeping track of her project's versions using Git! " +"Which commands below will\n" "> let her recover the last committed version of her Python script called\n" "> `data_cruncher.py`?\n" ">\n" @@ -4391,7 +4372,8 @@ msgid "" "> group repository. Below are the right steps and explanations for\n" "> Jennifer to use `git revert`, what is the missing command?\n" ">\n" -"> 1. `________ # Look at the git history of the project to find the commit ID`\n" +"> 1. `________ # Look at the git history of the project to find the commit " +"ID`\n" ">\n" "> 2. Copy the ID (the first few characters of the ID, e.g. 0b1d055).\n" ">\n" @@ -4412,7 +4394,8 @@ msgstr "" "> group repository. Below are the right steps and explanations for\n" "> Jennifer to use `git revert`, what is the missing command?\n" ">\n" -"> 1. `________ # Look at the git history of the project to find the commit ID`\n" +"> 1. `________ # Look at the git history of the project to find the commit " +"ID`\n" ">\n" "> 2. Copy the ID (the first few characters of the ID, e.g. 0b1d055).\n" ">\n" @@ -4470,7 +4453,6 @@ msgstr "" "> ~~~" #: git-novice/_episodes/05-history.md:400 -#: git-novice/_locale/es/_episodes/05-history.md:397 msgid "" ">\n" "> 2.\n" @@ -4487,7 +4469,6 @@ msgstr "" "> ~~~" #: git-novice/_episodes/05-history.md:407 -#: git-novice/_locale/es/_episodes/05-history.md:404 msgid "" ">\n" "> 3.\n" @@ -4506,7 +4487,6 @@ msgstr "" "> ~~~" #: git-novice/_episodes/05-history.md:415 -#: git-novice/_locale/es/_episodes/05-history.md:412 msgid "" ">\n" "> 4.\n" @@ -4527,7 +4507,8 @@ msgid "" ">\n" "> > ## Solution\n" "> >\n" -"> > The answer is 2 because `git add venus.txt` was used only before add the line\n" +"> > The answer is 2 because `git add venus.txt` was used only before add the " +"line\n" "> > `Venus is too hot to be suitable as a base`\n" "> > which was lost when `git checkout` was executed.\n" "> > Using the flag `-a` with `git commit` would have prevented the lost." @@ -4535,7 +4516,8 @@ msgstr "" ">\n" "> > ## Solution\n" "> >\n" -"> > The answer is 2 because `git add venus.txt` was used only before add the line\n" +"> > The answer is 2 because `git add venus.txt` was used only before add the " +"line\n" "> > `Venus is too hot to be suitable as a base`\n" "> > which was lost when `git checkout` was executed.\n" "> > Using the flag `-a` with `git commit` would have prevented the lost." @@ -4548,19 +4530,25 @@ msgstr "> ## Checking Understanding of `git diff`" #: git-novice/_episodes/05-history.md:433 msgid "" ">\n" -"> Consider this command: `git diff HEAD~3 mars.txt`. What do you predict this command\n" +"> Consider this command: `git diff HEAD~3 mars.txt`. What do you predict " +"this command\n" "> will do if you execute it? What happens when you do execute it? Why?\n" ">\n" -"> Try another command, `git diff [ID] mars.txt`, where [ID] is replaced with\n" -"> the unique identifier for your most recent commit. What do you think will happen,\n" +"> Try another command, `git diff [ID] mars.txt`, where [ID] is replaced " +"with\n" +"> the unique identifier for your most recent commit. What do you think will " +"happen,\n" "> and what does happen?" msgstr "" ">\n" -"> Consider this command: `git diff HEAD~3 mars.txt`. What do you predict this command\n" +"> Consider this command: `git diff HEAD~3 mars.txt`. What do you predict " +"this command\n" "> will do if you execute it? What happens when you do execute it? Why?\n" ">\n" -"> Try another command, `git diff [ID] mars.txt`, where [ID] is replaced with\n" -"> the unique identifier for your most recent commit. What do you think will happen,\n" +"> Try another command, `git diff [ID] mars.txt`, where [ID] is replaced " +"with\n" +"> the unique identifier for your most recent commit. What do you think will " +"happen,\n" "> and what does happen?" # blockquote, which can be cascaded @@ -4571,15 +4559,21 @@ msgstr "> ## Getting Rid of Staged Changes" #: git-novice/_episodes/05-history.md:443 msgid "" ">\n" -"> `git checkout` can be used to restore a previous commit when unstaged changes have\n" -"> been made, but will it also work for changes that have been staged but not committed?\n" -"> Make a change to `mars.txt`, add that change, and use `git checkout` to see if\n" +"> `git checkout` can be used to restore a previous commit when unstaged " +"changes have\n" +"> been made, but will it also work for changes that have been staged but not " +"committed?\n" +"> Make a change to `mars.txt`, add that change, and use `git checkout` to " +"see if\n" "> you can remove your change." msgstr "" ">\n" -"> `git checkout` can be used to restore a previous commit when unstaged changes have\n" -"> been made, but will it also work for changes that have been staged but not committed?\n" -"> Make a change to `mars.txt`, add that change, and use `git checkout` to see if\n" +"> `git checkout` can be used to restore a previous commit when unstaged " +"changes have\n" +"> been made, but will it also work for changes that have been staged but not " +"committed?\n" +"> Make a change to `mars.txt`, add that change, and use `git checkout` to " +"see if\n" "> you can remove your change." # blockquote, which can be cascaded @@ -4590,11 +4584,13 @@ msgstr "> ## Explore and Summarize Histories" #: git-novice/_episodes/05-history.md:451 msgid "" ">\n" -"> Exploring history is an important part of git, often it is a challenge to find\n" +"> Exploring history is an important part of git, often it is a challenge to " +"find\n" "> the right commit ID, especially if the commit is from several months ago.\n" ">\n" "> Imagine the `planets` project has more than 50 files.\n" -"> You would like to find a commit with specific text in `mars.txt` is modified.\n" +"> You would like to find a commit with specific text in `mars.txt` is " +"modified.\n" "> When you type `git log`, a very long list appeared,\n" "> How can you narrow down the search?\n" ">\n" @@ -4606,10 +4602,12 @@ msgid "" "> ~~~\n" "> {: .language-bash}\n" ">\n" -"> Unfortunately some of these commit messages are very ambiguous e.g. `update files`.\n" +"> Unfortunately some of these commit messages are very ambiguous e.g. " +"`update files`.\n" "> How can you search through these files?\n" ">\n" -"> Both `git diff` and `git log` are very useful and they summarize a different part of the history for you.\n" +"> Both `git diff` and `git log` are very useful and they summarize a " +"different part of the history for you.\n" "> Is it possible to combine both? Let's try the following:\n" ">\n" "> ~~~\n" @@ -4617,7 +4615,8 @@ msgid "" "> ~~~\n" "> {: .language-bash}\n" ">\n" -"> You should get a long list of output, and you should be able to see both commit messages and the difference between each commit.\n" +"> You should get a long list of output, and you should be able to see both " +"commit messages and the difference between each commit.\n" ">\n" "> Question: What does the following command do?\n" ">\n" @@ -4627,11 +4626,13 @@ msgid "" "> {: .language-bash}" msgstr "" ">\n" -"> Exploring history is an important part of git, often it is a challenge to find\n" +"> Exploring history is an important part of git, often it is a challenge to " +"find\n" "> the right commit ID, especially if the commit is from several months ago.\n" ">\n" "> Imagine the `planets` project has more than 50 files.\n" -"> You would like to find a commit with specific text in `mars.txt` is modified.\n" +"> You would like to find a commit with specific text in `mars.txt` is " +"modified.\n" "> When you type `git log`, a very long list appeared,\n" "> How can you narrow down the search?\n" ">\n" @@ -4643,10 +4644,12 @@ msgstr "" "> ~~~\n" "> {: .language-bash}\n" ">\n" -"> Unfortunately some of these commit messages are very ambiguous e.g. `update files`.\n" +"> Unfortunately some of these commit messages are very ambiguous e.g. " +"`update files`.\n" "> How can you search through these files?\n" ">\n" -"> Both `git diff` and `git log` are very useful and they summarize a different part of the history for you.\n" +"> Both `git diff` and `git log` are very useful and they summarize a " +"different part of the history for you.\n" "> Is it possible to combine both? Let's try the following:\n" ">\n" "> ~~~\n" @@ -4654,7 +4657,8 @@ msgstr "" "> ~~~\n" "> {: .language-bash}\n" ">\n" -"> You should get a long list of output, and you should be able to see both commit messages and the difference between each commit.\n" +"> You should get a long list of output, and you should be able to see both " +"commit messages and the difference between each commit.\n" ">\n" "> Question: What does the following command do?\n" ">\n" @@ -4706,7 +4710,6 @@ msgstr "" # code block #: git-novice/_episodes/06-ignore.md:19 -#: git-novice/_locale/es/_episodes/06-ignore.md:19 msgid "" "~~~\n" "$ mkdir results\n" @@ -4734,7 +4737,8 @@ msgid "" "\tb.dat\n" "\tc.dat\n" "\tresults/\n" -"nothing added to commit but untracked files present (use \"git add\" to track)\n" +"nothing added to commit but untracked files present (use \"git add\" to " +"track)\n" "~~~" msgstr "" "~~~\n" @@ -4746,7 +4750,8 @@ msgstr "" "\tb.dat\n" "\tc.dat\n" "\tresults/\n" -"nothing added to commit but untracked files present (use \"git add\" to track)\n" +"nothing added to commit but untracked files present (use \"git add\" to " +"track)\n" "~~~" #: git-novice/_episodes/06-ignore.md:45 @@ -4762,12 +4767,15 @@ msgstr "" "so let's tell Git to ignore them." #: git-novice/_episodes/06-ignore.md:50 -msgid "We do this by creating a file in the root directory of our project called `.gitignore`:" -msgstr "We do this by creating a file in the root directory of our project called `.gitignore`:" +msgid "" +"We do this by creating a file in the root directory of our project called `." +"gitignore`:" +msgstr "" +"We do this by creating a file in the root directory of our project called `." +"gitignore`:" # code block #: git-novice/_episodes/06-ignore.md:52 -#: git-novice/_locale/es/_episodes/06-ignore.md:52 msgid "" "~~~\n" "$ nano .gitignore\n" @@ -4781,7 +4789,6 @@ msgstr "" # code block #: git-novice/_episodes/06-ignore.md:58 -#: git-novice/_locale/es/_episodes/06-ignore.md:58 msgid "" "~~~\n" "*.dat\n" @@ -4822,7 +4829,8 @@ msgid "" " (use \"git add ...\" to include in what will be committed)\n" "\n" "\t.gitignore\n" -"nothing added to commit but untracked files present (use \"git add\" to track)\n" +"nothing added to commit but untracked files present (use \"git add\" to " +"track)\n" "~~~" msgstr "" "~~~\n" @@ -4831,7 +4839,8 @@ msgstr "" " (use \"git add ...\" to include in what will be committed)\n" "\n" "\t.gitignore\n" -"nothing added to commit but untracked files present (use \"git add\" to track)\n" +"nothing added to commit but untracked files present (use \"git add\" to " +"track)\n" "~~~" #: git-novice/_episodes/06-ignore.md:87 @@ -4850,7 +4859,6 @@ msgstr "" # code block #: git-novice/_episodes/06-ignore.md:93 -#: git-novice/_locale/es/_episodes/06-ignore.md:93 msgid "" "~~~\n" "$ git add .gitignore\n" @@ -4866,7 +4874,6 @@ msgstr "" # code block #: git-novice/_episodes/06-ignore.md:100 -#: git-novice/_locale/es/_episodes/06-ignore.md:100 msgid "" "~~~\n" "# On branch master\n" @@ -4879,12 +4886,15 @@ msgstr "" "~~~" #: git-novice/_episodes/06-ignore.md:106 -msgid "As a bonus, using `.gitignore` helps us avoid accidentally adding to the repository files that we don't want to track:" -msgstr "As a bonus, using `.gitignore` helps us avoid accidentally adding to the repository files that we don't want to track:" +msgid "" +"As a bonus, using `.gitignore` helps us avoid accidentally adding to the " +"repository files that we don't want to track:" +msgstr "" +"As a bonus, using `.gitignore` helps us avoid accidentally adding to the " +"repository files that we don't want to track:" # code block #: git-novice/_episodes/06-ignore.md:108 -#: git-novice/_locale/es/_episodes/06-ignore.md:108 msgid "" "~~~\n" "$ git add a.dat\n" @@ -4896,7 +4906,6 @@ msgstr "" # code block #: git-novice/_episodes/06-ignore.md:113 -#: git-novice/_locale/es/_episodes/06-ignore.md:113 msgid "" "~~~\n" "The following paths are ignored by one of your .gitignore files:\n" @@ -4924,7 +4933,6 @@ msgstr "" # code block #: git-novice/_episodes/06-ignore.md:125 -#: git-novice/_locale/es/_episodes/06-ignore.md:125 msgid "" "~~~\n" "$ git status --ignored\n" @@ -4936,7 +4944,6 @@ msgstr "" # code block #: git-novice/_episodes/06-ignore.md:130 -#: git-novice/_locale/es/_episodes/06-ignore.md:130 msgid "" "~~~\n" "On branch master\n" @@ -4992,13 +4999,15 @@ msgid "" "> >\n" "> > `results/plots/`\n" "> >\n" -"> > If, instead, you want to ignore everything in `/results/`, but wanted to track\n" +"> > If, instead, you want to ignore everything in `/results/`, but wanted to " +"track\n" "> > `results/data`, then you can add `results/` to your .gitignore\n" "> > and create an exception for the `results/data/` folder.\n" "> > The next challenge will cover this type of solution.\n" "> >\n" "> > Sometimes the `**` pattern comes in handy, too, which matches\n" -"> > multiple directory levels. E.g. `**/results/plots/*` would make git ignore\n" +"> > multiple directory levels. E.g. `**/results/plots/*` would make git " +"ignore\n" "> > the `results/plots` directory in any root directory." msgstr "" ">\n" @@ -5022,13 +5031,15 @@ msgstr "" "> >\n" "> > `results/plots/`\n" "> >\n" -"> > If, instead, you want to ignore everything in `/results/`, but wanted to track\n" +"> > If, instead, you want to ignore everything in `/results/`, but wanted to " +"track\n" "> > `results/data`, then you can add `results/` to your .gitignore\n" "> > and create an exception for the `results/data/` folder.\n" "> > The next challenge will cover this type of solution.\n" "> >\n" "> > Sometimes the `**` pattern comes in handy, too, which matches\n" -"> > multiple directory levels. E.g. `**/results/plots/*` would make git ignore\n" +"> > multiple directory levels. E.g. `**/results/plots/*` would make git " +"ignore\n" "> > the `results/plots` directory in any root directory." # blockquote, which can be cascaded @@ -5091,12 +5102,14 @@ msgid "" "> ~~~\n" "> {: .language-bash}\n" ">\n" -"> What's the shortest `.gitignore` rule you could write to ignore all `.data`\n" +"> What's the shortest `.gitignore` rule you could write to ignore all `." +"data`\n" "> files in `result/data/position/gps`? Do not ignore the `info.txt`.\n" ">\n" "> > ## Solution\n" "> >\n" -"> > Appending `results/data/position/gps/*.data` will match every file in `results/data/position/gps` that ends with `.data`.\n" +"> > Appending `results/data/position/gps/*.data` will match every file in " +"`results/data/position/gps` that ends with `.data`.\n" "> > The file `results/data/position/gps/info.txt` will not be ignored." msgstr "" ">\n" @@ -5111,12 +5124,14 @@ msgstr "" "> ~~~\n" "> {: .language-bash}\n" ">\n" -"> What's the shortest `.gitignore` rule you could write to ignore all `.data`\n" +"> What's the shortest `.gitignore` rule you could write to ignore all `." +"data`\n" "> files in `result/data/position/gps`? Do not ignore the `info.txt`.\n" ">\n" "> > ## Solution\n" "> >\n" -"> > Appending `results/data/position/gps/*.data` will match every file in `results/data/position/gps` that ends with `.data`.\n" +"> > Appending `results/data/position/gps/*.data` will match every file in " +"`results/data/position/gps` that ends with `.data`.\n" "> > The file `results/data/position/gps/info.txt` will not be ignored." # blockquote, which can be cascaded @@ -5139,8 +5154,10 @@ msgid "" ">\n" "> > ## Solution\n" "> >\n" -"> > The `!` modifier will negate an entry from a previously defined ignore pattern.\n" -"> > Because the `!*.data` entry negates all of the previous `.data` files in the `.gitignore`,\n" +"> > The `!` modifier will negate an entry from a previously defined ignore " +"pattern.\n" +"> > Because the `!*.data` entry negates all of the previous `.data` files in " +"the `.gitignore`,\n" "> > none of them will be ignored, and all `.data` files will be tracked.\n" "> >" msgstr "" @@ -5157,8 +5174,10 @@ msgstr "" ">\n" "> > ## Solution\n" "> >\n" -"> > The `!` modifier will negate an entry from a previously defined ignore pattern.\n" -"> > Because the `!*.data` entry negates all of the previous `.data` files in the `.gitignore`,\n" +"> > The `!` modifier will negate an entry from a previously defined ignore " +"pattern.\n" +"> > Because the `!*.data` entry negates all of the previous `.data` files in " +"the `.gitignore`,\n" "> > none of them will be ignored, and all `.data` files will be tracked.\n" "> >" @@ -5170,16 +5189,22 @@ msgstr "> ## Log Files" #: git-novice/_episodes/06-ignore.md:242 msgid "" ">\n" -"> You wrote a script that creates many intermediate log-files of the form `log_01`, `log_02`, `log_03`, etc.\n" +"> You wrote a script that creates many intermediate log-files of the form " +"`log_01`, `log_02`, `log_03`, etc.\n" "> You want to keep them but you do not want to track them through `git`.\n" ">\n" -"> 1. Write **one** `.gitignore` entry that excludes files of the form `log_01`, `log_02`, etc.\n" +"> 1. Write **one** `.gitignore` entry that excludes files of the form " +"`log_01`, `log_02`, etc.\n" ">\n" -"> 2. Test your \"ignore pattern\" by creating some dummy files of the form `log_01`, etc.\n" +"> 2. Test your \"ignore pattern\" by creating some dummy files of the form " +"`log_01`, etc.\n" ">\n" -"> 3. You find that the file `log_01` is very important after all, add it to the tracked files without changing the `.gitignore` again.\n" +"> 3. You find that the file `log_01` is very important after all, add it to " +"the tracked files without changing the `.gitignore` again.\n" ">\n" -"> 4. Discuss with your neighbor what other types of files could reside in your directory that you do not want to track and thus would exclude via `.gitignore`.\n" +"> 4. Discuss with your neighbor what other types of files could reside in " +"your directory that you do not want to track and thus would exclude via `." +"gitignore`.\n" ">\n" "> > ## Solution\n" "> >\n" @@ -5187,16 +5212,22 @@ msgid "" "> > 3. track `log_01` using `git add -f log_01`" msgstr "" ">\n" -"> You wrote a script that creates many intermediate log-files of the form `log_01`, `log_02`, `log_03`, etc.\n" +"> You wrote a script that creates many intermediate log-files of the form " +"`log_01`, `log_02`, `log_03`, etc.\n" "> You want to keep them but you do not want to track them through `git`.\n" ">\n" -"> 1. Write **one** `.gitignore` entry that excludes files of the form `log_01`, `log_02`, etc.\n" +"> 1. Write **one** `.gitignore` entry that excludes files of the form " +"`log_01`, `log_02`, etc.\n" ">\n" -"> 2. Test your \"ignore pattern\" by creating some dummy files of the form `log_01`, etc.\n" +"> 2. Test your \"ignore pattern\" by creating some dummy files of the form " +"`log_01`, etc.\n" ">\n" -"> 3. You find that the file `log_01` is very important after all, add it to the tracked files without changing the `.gitignore` again.\n" +"> 3. You find that the file `log_01` is very important after all, add it to " +"the tracked files without changing the `.gitignore` again.\n" ">\n" -"> 4. Discuss with your neighbor what other types of files could reside in your directory that you do not want to track and thus would exclude via `.gitignore`.\n" +"> 4. Discuss with your neighbor what other types of files could reside in " +"your directory that you do not want to track and thus would exclude via `." +"gitignore`.\n" ">\n" "> > ## Solution\n" "> >\n" @@ -5216,10 +5247,14 @@ msgid "" "- \"Explain what remote repositories are and why they are useful.\"\n" "- \"Push to or pull from a remote repository.\"\n" "keypoints:\n" -"- \"A local Git repository can be connected to one or more remote repositories.\"\n" -"- \"Use the HTTPS protocol to connect to remote repositories until you have learned how to set up SSH.\"\n" -"- \"`git push` copies changes from a local repository to a remote repository.\"\n" -"- \"`git pull` copies changes from a remote repository to a local repository.\"\n" +"- \"A local Git repository can be connected to one or more remote " +"repositories.\"\n" +"- \"Use the HTTPS protocol to connect to remote repositories until you have " +"learned how to set up SSH.\"\n" +"- \"`git push` copies changes from a local repository to a remote repository." +"\"\n" +"- \"`git pull` copies changes from a remote repository to a local repository." +"\"\n" "---" msgstr "" "---\n" @@ -5232,71 +5267,93 @@ msgstr "" "- \"Explain what remote repositories are and why they are useful.\"\n" "- \"Push to or pull from a remote repository.\"\n" "keypoints:\n" -"- \"A local Git repository can be connected to one or more remote repositories.\"\n" -"- \"Use the HTTPS protocol to connect to remote repositories until you have learned how to set up SSH.\"\n" -"- \"`git push` copies changes from a local repository to a remote repository.\"\n" -"- \"`git pull` copies changes from a remote repository to a local repository.\"\n" +"- \"A local Git repository can be connected to one or more remote " +"repositories.\"\n" +"- \"Use the HTTPS protocol to connect to remote repositories until you have " +"learned how to set up SSH.\"\n" +"- \"`git push` copies changes from a local repository to a remote repository." +"\"\n" +"- \"`git pull` copies changes from a remote repository to a local repository." +"\"\n" "---" #: git-novice/_episodes/07-github.md:17 msgid "" "Version control really comes into its own when we begin to collaborate with\n" -"other people. We already have most of the machinery we need to do this; the\n" +"other people. We already have most of the machinery we need to do this; " +"the\n" "only thing missing is to copy changes from one repository to another." msgstr "" "Version control really comes into its own when we begin to collaborate with\n" -"other people. We already have most of the machinery we need to do this; the\n" +"other people. We already have most of the machinery we need to do this; " +"the\n" "only thing missing is to copy changes from one repository to another." #: git-novice/_episodes/07-github.md:21 msgid "" "Systems like Git allow us to move work between any two repositories. In\n" -"practice, though, it's easiest to use one copy as a central hub, and to keep it\n" +"practice, though, it's easiest to use one copy as a central hub, and to keep " +"it\n" "on the web rather than on someone's laptop. Most programmers use hosting\n" -"services like [GitHub](https://github.com), [BitBucket](https://bitbucket.org) or\n" -"[GitLab](https://gitlab.com/) to hold those master copies; we'll explore the pros\n" +"services like [GitHub](https://github.com), [BitBucket](https://bitbucket." +"org) or\n" +"[GitLab](https://gitlab.com/) to hold those master copies; we'll explore the " +"pros\n" "and cons of this in the final section of this lesson." msgstr "" "Systems like Git allow us to move work between any two repositories. In\n" -"practice, though, it's easiest to use one copy as a central hub, and to keep it\n" +"practice, though, it's easiest to use one copy as a central hub, and to keep " +"it\n" "on the web rather than on someone's laptop. Most programmers use hosting\n" -"services like [GitHub](https://github.com), [BitBucket](https://bitbucket.org) or\n" -"[GitLab](https://gitlab.com/) to hold those master copies; we'll explore the pros\n" +"services like [GitHub](https://github.com), [BitBucket](https://bitbucket." +"org) or\n" +"[GitLab](https://gitlab.com/) to hold those master copies; we'll explore the " +"pros\n" "and cons of this in the final section of this lesson." #: git-novice/_episodes/07-github.md:28 msgid "" -"Let's start by sharing the changes we've made to our current project with the\n" +"Let's start by sharing the changes we've made to our current project with " +"the\n" "world. Log in to GitHub, then click on the icon in the top right corner to\n" "create a new repository called `planets`:" msgstr "" -"Let's start by sharing the changes we've made to our current project with the\n" +"Let's start by sharing the changes we've made to our current project with " +"the\n" "world. Log in to GitHub, then click on the icon in the top right corner to\n" "create a new repository called `planets`:" #: git-novice/_episodes/07-github.md:32 -msgid "![Creating a Repository on GitHub (Step 1)](../fig/github-create-repo-01.png)" -msgstr "![Creating a Repository on GitHub (Step 1)](../fig/github-create-repo-01.png)" +msgid "" +"![Creating a Repository on GitHub (Step 1)](../fig/github-create-repo-01.png)" +msgstr "" +"![Creating a Repository on GitHub (Step 1)](../fig/github-create-repo-01.png)" #: git-novice/_episodes/07-github.md:34 msgid "Name your repository \"planets\" and then click \"Create Repository\":" msgstr "Name your repository \"planets\" and then click \"Create Repository\":" #: git-novice/_episodes/07-github.md:36 -msgid "![Creating a Repository on GitHub (Step 2)](../fig/github-create-repo-02.png)" -msgstr "![Creating a Repository on GitHub (Step 2)](../fig/github-create-repo-02.png)" +msgid "" +"![Creating a Repository on GitHub (Step 2)](../fig/github-create-repo-02.png)" +msgstr "" +"![Creating a Repository on GitHub (Step 2)](../fig/github-create-repo-02.png)" #: git-novice/_episodes/07-github.md:38 msgid "" -"As soon as the repository is created, GitHub displays a page with a URL and some\n" +"As soon as the repository is created, GitHub displays a page with a URL and " +"some\n" "information on how to configure your local repository:" msgstr "" -"As soon as the repository is created, GitHub displays a page with a URL and some\n" +"As soon as the repository is created, GitHub displays a page with a URL and " +"some\n" "information on how to configure your local repository:" #: git-novice/_episodes/07-github.md:41 -msgid "![Creating a Repository on GitHub (Step 3)](../fig/github-create-repo-03.png)" -msgstr "![Creating a Repository on GitHub (Step 3)](../fig/github-create-repo-03.png)" +msgid "" +"![Creating a Repository on GitHub (Step 3)](../fig/github-create-repo-03.png)" +msgstr "" +"![Creating a Repository on GitHub (Step 3)](../fig/github-create-repo-03.png)" #: git-novice/_episodes/07-github.md:43 msgid "This effectively does the following on GitHub's servers:" @@ -5304,7 +5361,6 @@ msgstr "This effectively does the following on GitHub's servers:" # code block #: git-novice/_episodes/07-github.md:45 -#: git-novice/_locale/es/_episodes/07-github.md:35 msgid "" "~~~\n" "$ mkdir planets\n" @@ -5320,81 +5376,103 @@ msgstr "" #: git-novice/_episodes/07-github.md:52 msgid "" -"Note that our local repository still contains our earlier work on `mars.txt`, but the\n" -"remote repository on GitHub appears empty as it doesn't contain any files yet." +"Note that our local repository still contains our earlier work on `mars." +"txt`, but the\n" +"remote repository on GitHub appears empty as it doesn't contain any files " +"yet." msgstr "" -"Note that our local repository still contains our earlier work on `mars.txt`, but the\n" -"remote repository on GitHub appears empty as it doesn't contain any files yet." +"Note that our local repository still contains our earlier work on `mars." +"txt`, but the\n" +"remote repository on GitHub appears empty as it doesn't contain any files " +"yet." #: git-novice/_episodes/07-github.md:55 -msgid "![Freshly-Made GitHub Repository](../fig/git-freshly-made-github-repo.svg)" -msgstr "![Freshly-Made GitHub Repository](../fig/git-freshly-made-github-repo.svg)" +msgid "" +"![Freshly-Made GitHub Repository](../fig/git-freshly-made-github-repo.svg)" +msgstr "" +"![Freshly-Made GitHub Repository](../fig/git-freshly-made-github-repo.svg)" #: git-novice/_episodes/07-github.md:57 msgid "" "The next step is to connect the two repositories. We do this by making the\n" -"GitHub repository a [remote]({{ page.root }}/reference#remote) for the local repository.\n" +"GitHub repository a [remote]({{ page.root }}/reference#remote) for the local " +"repository.\n" "The home page of the repository on GitHub includes the string we need to\n" "identify it:" msgstr "" "The next step is to connect the two repositories. We do this by making the\n" -"GitHub repository a [remote]({{ page.root }}/reference#remote) for the local repository.\n" +"GitHub repository a [remote]({{ page.root }}/reference#remote) for the local " +"repository.\n" "The home page of the repository on GitHub includes the string we need to\n" "identify it:" #: git-novice/_episodes/07-github.md:62 -msgid "![Where to Find Repository URL on GitHub](../fig/github-find-repo-string.png)" -msgstr "![Where to Find Repository URL on GitHub](../fig/github-find-repo-string.png)" +msgid "" +"![Where to Find Repository URL on GitHub](../fig/github-find-repo-string.png)" +msgstr "" +"![Where to Find Repository URL on GitHub](../fig/github-find-repo-string.png)" #: git-novice/_episodes/07-github.md:64 msgid "" -"Click on the 'HTTPS' link to change the [protocol]({{ page.root }}/reference#protocol) from\n" +"Click on the 'HTTPS' link to change the [protocol]({{ page.root }}/" +"reference#protocol) from\n" "SSH to HTTPS." msgstr "" -"Click on the 'HTTPS' link to change the [protocol]({{ page.root }}/reference#protocol) from\n" +"Click on the 'HTTPS' link to change the [protocol]({{ page.root }}/" +"reference#protocol) from\n" "SSH to HTTPS." # blockquote, which can be cascaded #: git-novice/_episodes/07-github.md:67 -#: git-novice/_locale/es/_episodes/07-github.md:52 msgid "> ## HTTPS vs. SSH" msgstr "> ## HTTPS vs. SSH" #: git-novice/_episodes/07-github.md:68 msgid "" ">\n" -"> We use HTTPS here because it does not require additional configuration. After\n" -"> the workshop you may want to set up SSH access, which is a bit more secure, by\n" +"> We use HTTPS here because it does not require additional configuration. " +"After\n" +"> the workshop you may want to set up SSH access, which is a bit more " +"secure, by\n" "> following one of the great tutorials from\n" "> [GitHub](https://help.github.com/articles/generating-ssh-keys),\n" -"> [Atlassian/BitBucket](https://confluence.atlassian.com/display/BITBUCKET/Set+up+SSH+for+Git)\n" +"> [Atlassian/BitBucket](https://confluence.atlassian.com/display/BITBUCKET/" +"Set+up+SSH+for+Git)\n" "> and [GitLab](https://about.gitlab.com/2014/03/04/add-ssh-key-screencast/)\n" "> (this one has a screencast)." msgstr "" ">\n" -"> We use HTTPS here because it does not require additional configuration. After\n" -"> the workshop you may want to set up SSH access, which is a bit more secure, by\n" +"> We use HTTPS here because it does not require additional configuration. " +"After\n" +"> the workshop you may want to set up SSH access, which is a bit more " +"secure, by\n" "> following one of the great tutorials from\n" "> [GitHub](https://help.github.com/articles/generating-ssh-keys),\n" -"> [Atlassian/BitBucket](https://confluence.atlassian.com/display/BITBUCKET/Set+up+SSH+for+Git)\n" +"> [Atlassian/BitBucket](https://confluence.atlassian.com/display/BITBUCKET/" +"Set+up+SSH+for+Git)\n" "> and [GitLab](https://about.gitlab.com/2014/03/04/add-ssh-key-screencast/)\n" "> (this one has a screencast)." #: git-novice/_episodes/07-github.md:78 -msgid "![Changing the Repository URL on GitHub](../fig/github-change-repo-string.png)" -msgstr "![Changing the Repository URL on GitHub](../fig/github-change-repo-string.png)" +msgid "" +"![Changing the Repository URL on GitHub](../fig/github-change-repo-string." +"png)" +msgstr "" +"![Changing the Repository URL on GitHub](../fig/github-change-repo-string." +"png)" #: git-novice/_episodes/07-github.md:80 msgid "" -"Copy that URL from the browser, go into the local `planets` repository, and run\n" +"Copy that URL from the browser, go into the local `planets` repository, and " +"run\n" "this command:" msgstr "" -"Copy that URL from the browser, go into the local `planets` repository, and run\n" +"Copy that URL from the browser, go into the local `planets` repository, and " +"run\n" "this command:" # code block #: git-novice/_episodes/07-github.md:83 -#: git-novice/_locale/es/_episodes/07-github.md:67 msgid "" "~~~\n" "$ git remote add origin https://github.com/vlad/planets.git\n" @@ -5418,7 +5496,6 @@ msgstr "We can check that the command has worked by running `git remote -v`:" # code block #: git-novice/_episodes/07-github.md:93 -#: git-novice/_locale/es/_episodes/07-github.md:76 msgid "" "~~~\n" "$ git remote -v\n" @@ -5430,7 +5507,6 @@ msgstr "" # code block #: git-novice/_episodes/07-github.md:98 -#: git-novice/_locale/es/_episodes/07-github.md:81 msgid "" "~~~\n" "origin https://github.com/vlad/planets.git (push)\n" @@ -5444,18 +5520,24 @@ msgstr "" #: git-novice/_episodes/07-github.md:104 msgid "" -"The name `origin` is a local nickname for your remote repository. We could use\n" -"something else if we wanted to, but `origin` is by far the most common choice." +"The name `origin` is a local nickname for your remote repository. We could " +"use\n" +"something else if we wanted to, but `origin` is by far the most common " +"choice." msgstr "" -"The name `origin` is a local nickname for your remote repository. We could use\n" -"something else if we wanted to, but `origin` is by far the most common choice." +"The name `origin` is a local nickname for your remote repository. We could " +"use\n" +"something else if we wanted to, but `origin` is by far the most common " +"choice." #: git-novice/_episodes/07-github.md:107 msgid "" -"Once the nickname `origin` is set up, this command will push the changes from\n" +"Once the nickname `origin` is set up, this command will push the changes " +"from\n" "our local repository to the repository on GitHub:" msgstr "" -"Once the nickname `origin` is set up, this command will push the changes from\n" +"Once the nickname `origin` is set up, this command will push the changes " +"from\n" "our local repository to the repository on GitHub:" # code block @@ -5463,11 +5545,6 @@ msgstr "" #: git-novice/_episodes/09-conflict.md:68 #: git-novice/_episodes/09-conflict.md:118 #: git-novice/_episodes/09-conflict.md:241 -#: git-novice/_locale/es/_episodes/07-github.md:91 -#: git-novice/_locale/es/_episodes/08-collab.md:70 -#: git-novice/_locale/es/_episodes/09-conflict.md:62 -#: git-novice/_locale/es/_episodes/09-conflict.md:112 -#: git-novice/_locale/es/_episodes/09-conflict.md:235 msgid "" "~~~\n" "$ git push origin master\n" @@ -5479,7 +5556,6 @@ msgstr "" # code block #: git-novice/_episodes/07-github.md:115 -#: git-novice/_locale/es/_episodes/07-github.md:96 msgid "" "~~~\n" "Counting objects: 9, done.\n" @@ -5506,8 +5582,10 @@ msgstr "" #: git-novice/_episodes/07-github.md:128 msgid "" ">\n" -"> If the network you are connected to uses a proxy, there is a chance that your\n" -"> last command failed with \"Could not resolve hostname\" as the error message. To\n" +"> If the network you are connected to uses a proxy, there is a chance that " +"your\n" +"> last command failed with \"Could not resolve hostname\" as the error " +"message. To\n" "> solve this issue, you need to tell Git about the proxy:\n" ">\n" "> ~~~\n" @@ -5516,7 +5594,8 @@ msgid "" "> ~~~\n" "> {: .language-bash}\n" ">\n" -"> When you connect to another network that doesn't use a proxy, you will need to\n" +"> When you connect to another network that doesn't use a proxy, you will " +"need to\n" "> tell Git to disable the proxy using:\n" ">\n" "> ~~~\n" @@ -5526,8 +5605,10 @@ msgid "" "> {: .language-bash}" msgstr "" ">\n" -"> If the network you are connected to uses a proxy, there is a chance that your\n" -"> last command failed with \"Could not resolve hostname\" as the error message. To\n" +"> If the network you are connected to uses a proxy, there is a chance that " +"your\n" +"> last command failed with \"Could not resolve hostname\" as the error " +"message. To\n" "> solve this issue, you need to tell Git about the proxy:\n" ">\n" "> ~~~\n" @@ -5536,7 +5617,8 @@ msgstr "" "> ~~~\n" "> {: .language-bash}\n" ">\n" -"> When you connect to another network that doesn't use a proxy, you will need to\n" +"> When you connect to another network that doesn't use a proxy, you will " +"need to\n" "> tell Git to disable the proxy using:\n" ">\n" "> ~~~\n" @@ -5553,10 +5635,13 @@ msgstr "> ## Password Managers" #: git-novice/_episodes/07-github.md:150 msgid "" ">\n" -"> If your operating system has a password manager configured, `git push` will\n" -"> try to use it when it needs your username and password. For example, this\n" +"> If your operating system has a password manager configured, `git push` " +"will\n" +"> try to use it when it needs your username and password. For example, " +"this\n" "> is the default behavior for Git Bash on Windows. If you want to type your\n" -"> username and password at the terminal instead of using a password manager,\n" +"> username and password at the terminal instead of using a password " +"manager,\n" "> type:\n" ">\n" "> ~~~\n" @@ -5566,18 +5651,23 @@ msgid "" ">\n" "> in the terminal, before you run `git push`. Despite the name, [git uses\n" "> `SSH_ASKPASS` for all credential\n" -"> entry](https://git-scm.com/docs/gitcredentials#_requesting_credentials), so\n" +"> entry](https://git-scm.com/docs/gitcredentials#_requesting_credentials), " +"so\n" "> you may want to unset `SSH_ASKPASS` whether you are using git via SSH or\n" "> https.\n" ">\n" -"> You may also want to add `unset SSH_ASKPASS` at the end of your `~/.language-bashrc`\n" +"> You may also want to add `unset SSH_ASKPASS` at the end of your `~/." +"language-bashrc`\n" "> to make git default to using the terminal for usernames and passwords." msgstr "" ">\n" -"> If your operating system has a password manager configured, `git push` will\n" -"> try to use it when it needs your username and password. For example, this\n" +"> If your operating system has a password manager configured, `git push` " +"will\n" +"> try to use it when it needs your username and password. For example, " +"this\n" "> is the default behavior for Git Bash on Windows. If you want to type your\n" -"> username and password at the terminal instead of using a password manager,\n" +"> username and password at the terminal instead of using a password " +"manager,\n" "> type:\n" ">\n" "> ~~~\n" @@ -5587,11 +5677,13 @@ msgstr "" ">\n" "> in the terminal, before you run `git push`. Despite the name, [git uses\n" "> `SSH_ASKPASS` for all credential\n" -"> entry](https://git-scm.com/docs/gitcredentials#_requesting_credentials), so\n" +"> entry](https://git-scm.com/docs/gitcredentials#_requesting_credentials), " +"so\n" "> you may want to unset `SSH_ASKPASS` whether you are using git via SSH or\n" "> https.\n" ">\n" -"> You may also want to add `unset SSH_ASKPASS` at the end of your `~/.language-bashrc`\n" +"> You may also want to add `unset SSH_ASKPASS` at the end of your `~/." +"language-bashrc`\n" "> to make git default to using the terminal for usernames and passwords." #: git-novice/_episodes/07-github.md:172 @@ -5599,8 +5691,12 @@ msgid "Our local and remote repositories are now in this state:" msgstr "Our local and remote repositories are now in this state:" #: git-novice/_episodes/07-github.md:174 -msgid "![GitHub Repository After First Push](../fig/github-repo-after-first-push.svg)" -msgstr "![GitHub Repository After First Push](../fig/github-repo-after-first-push.svg)" +msgid "" +"![GitHub Repository After First Push](../fig/github-repo-after-first-push." +"svg)" +msgstr "" +"![GitHub Repository After First Push](../fig/github-repo-after-first-push." +"svg)" # blockquote, which can be cascaded #: git-novice/_episodes/07-github.md:176 @@ -5610,31 +5706,37 @@ msgstr "> ## The '-u' Flag" #: git-novice/_episodes/07-github.md:177 msgid "" ">\n" -"> You may see a `-u` option used with `git push` in some documentation. This\n" -"> option is synonymous with the `--set-upstream-to` option for the `git branch`\n" -"> command, and is used to associate the current branch with a remote branch so\n" -"> that the `git pull` command can be used without any arguments. To do this,\n" +"> You may see a `-u` option used with `git push` in some documentation. " +"This\n" +"> option is synonymous with the `--set-upstream-to` option for the `git " +"branch`\n" +"> command, and is used to associate the current branch with a remote branch " +"so\n" +"> that the `git pull` command can be used without any arguments. To do " +"this,\n" "> simply use `git push -u origin master` once the remote has been set up." msgstr "" ">\n" -"> You may see a `-u` option used with `git push` in some documentation. This\n" -"> option is synonymous with the `--set-upstream-to` option for the `git branch`\n" -"> command, and is used to associate the current branch with a remote branch so\n" -"> that the `git pull` command can be used without any arguments. To do this,\n" +"> You may see a `-u` option used with `git push` in some documentation. " +"This\n" +"> option is synonymous with the `--set-upstream-to` option for the `git " +"branch`\n" +"> command, and is used to associate the current branch with a remote branch " +"so\n" +"> that the `git pull` command can be used without any arguments. To do " +"this,\n" "> simply use `git push -u origin master` once the remote has been set up." #: git-novice/_episodes/07-github.md:185 -msgid "We can pull changes from the remote repository to the local one as well:" -msgstr "We can pull changes from the remote repository to the local one as well:" +msgid "" +"We can pull changes from the remote repository to the local one as well:" +msgstr "" +"We can pull changes from the remote repository to the local one as well:" # code block #: git-novice/_episodes/07-github.md:187 git-novice/_episodes/08-collab.md:106 #: git-novice/_episodes/09-conflict.md:143 #: git-novice/_episodes/09-conflict.md:261 -#: git-novice/_locale/es/_episodes/07-github.md:168 -#: git-novice/_locale/es/_episodes/08-collab.md:92 -#: git-novice/_locale/es/_episodes/09-conflict.md:137 -#: git-novice/_locale/es/_episodes/09-conflict.md:255 msgid "" "~~~\n" "$ git pull origin master\n" @@ -5646,7 +5748,6 @@ msgstr "" # code block #: git-novice/_episodes/07-github.md:192 -#: git-novice/_locale/es/_episodes/07-github.md:173 msgid "" "~~~\n" "From https://github.com/vlad/planets\n" @@ -5679,31 +5780,57 @@ msgstr "> ## GitHub GUI" msgid "" ">\n" "> Browse to your `planets` repository on GitHub.\n" -"> Under the Code tab, find and click on the text that says \"XX commits\" (where \"XX\" is some number).\n" +"> Under the Code tab, find and click on the text that says \"XX commits" +"\" (where \"XX\" is some number).\n" "> Hover over, and click on, the three buttons to the right of each commit.\n" "> What information can you gather/explore from these buttons?\n" "> How would you get that same information in the shell?\n" ">\n" "> > ## Solution\n" -"> > The left-most button (with the picture of a clipboard) copies the full identifier of the commit to the clipboard. In the shell, ```git log``` will show you the full commit identifier for each commit.\n" +"> > The left-most button (with the picture of a clipboard) copies the full " +"identifier of the commit to the clipboard. In the shell, ```git log``` will " +"show you the full commit identifier for each commit.\n" "> >\n" -"> > When you click on the middle button, you'll see all of the changes that were made in that particular commit. Green shaded lines indicate additions and red ones removals. In the shell we can do the same thing with ```git diff```. In particular, ```git diff ID1..ID2``` where ID1 and ID2 are commit identifiers (e.g. ```git diff a3bf1e5..041e637```) will show the differences between those two commits.\n" +"> > When you click on the middle button, you'll see all of the changes that " +"were made in that particular commit. Green shaded lines indicate additions " +"and red ones removals. In the shell we can do the same thing with ```git " +"diff```. In particular, ```git diff ID1..ID2``` where ID1 and ID2 are commit " +"identifiers (e.g. ```git diff a3bf1e5..041e637```) will show the differences " +"between those two commits.\n" "> >\n" -"> > The right-most button lets you view all of the files in the repository at the time of that commit. To do this in the shell, we'd need to checkout the repository at that particular time. We can do this with ```git checkout ID``` where ID is the identifier of the commit we want to look at. If we do this, we need to remember to put the repository back to the right state afterwards!" +"> > The right-most button lets you view all of the files in the repository " +"at the time of that commit. To do this in the shell, we'd need to checkout " +"the repository at that particular time. We can do this with ```git checkout " +"ID``` where ID is the identifier of the commit we want to look at. If we do " +"this, we need to remember to put the repository back to the right state " +"afterwards!" msgstr "" ">\n" "> Browse to your `planets` repository on GitHub.\n" -"> Under the Code tab, find and click on the text that says \"XX commits\" (where \"XX\" is some number).\n" +"> Under the Code tab, find and click on the text that says \"XX commits" +"\" (where \"XX\" is some number).\n" "> Hover over, and click on, the three buttons to the right of each commit.\n" "> What information can you gather/explore from these buttons?\n" "> How would you get that same information in the shell?\n" ">\n" "> > ## Solution\n" -"> > The left-most button (with the picture of a clipboard) copies the full identifier of the commit to the clipboard. In the shell, ```git log``` will show you the full commit identifier for each commit.\n" +"> > The left-most button (with the picture of a clipboard) copies the full " +"identifier of the commit to the clipboard. In the shell, ```git log``` will " +"show you the full commit identifier for each commit.\n" "> >\n" -"> > When you click on the middle button, you'll see all of the changes that were made in that particular commit. Green shaded lines indicate additions and red ones removals. In the shell we can do the same thing with ```git diff```. In particular, ```git diff ID1..ID2``` where ID1 and ID2 are commit identifiers (e.g. ```git diff a3bf1e5..041e637```) will show the differences between those two commits.\n" +"> > When you click on the middle button, you'll see all of the changes that " +"were made in that particular commit. Green shaded lines indicate additions " +"and red ones removals. In the shell we can do the same thing with ```git " +"diff```. In particular, ```git diff ID1..ID2``` where ID1 and ID2 are commit " +"identifiers (e.g. ```git diff a3bf1e5..041e637```) will show the differences " +"between those two commits.\n" "> >\n" -"> > The right-most button lets you view all of the files in the repository at the time of that commit. To do this in the shell, we'd need to checkout the repository at that particular time. We can do this with ```git checkout ID``` where ID is the identifier of the commit we want to look at. If we do this, we need to remember to put the repository back to the right state afterwards!" +"> > The right-most button lets you view all of the files in the repository " +"at the time of that commit. To do this in the shell, we'd need to checkout " +"the repository at that particular time. We can do this with ```git checkout " +"ID``` where ID is the identifier of the commit we want to look at. If we do " +"this, we need to remember to put the repository back to the right state " +"afterwards!" # blockquote, which can be cascaded #: git-novice/_episodes/07-github.md:220 @@ -5716,25 +5843,32 @@ msgid "" "> Create a remote repository on GitHub. Push the contents of your local\n" "> repository to the remote. Make changes to your local repository and push\n" "> these changes. Go to the repo you just created on GitHub and check the\n" -"> [timestamps]({{ page.root }}/reference#timestamp) of the files. How does GitHub record\n" +"> [timestamps]({{ page.root }}/reference#timestamp) of the files. How does " +"GitHub record\n" "> times, and why?\n" ">\n" "> > ## Solution\n" -"> > GitHub displays timestamps in a human readable relative format (i.e. \"22 hours ago\" or \"three weeks ago\"). However, if you hover over the timestamp, you can see the exact time at which the last change to the file occurred." +"> > GitHub displays timestamps in a human readable relative format (i.e. " +"\"22 hours ago\" or \"three weeks ago\"). However, if you hover over the " +"timestamp, you can see the exact time at which the last change to the file " +"occurred." msgstr "" ">\n" "> Create a remote repository on GitHub. Push the contents of your local\n" "> repository to the remote. Make changes to your local repository and push\n" "> these changes. Go to the repo you just created on GitHub and check the\n" -"> [timestamps]({{ page.root }}/reference#timestamp) of the files. How does GitHub record\n" +"> [timestamps]({{ page.root }}/reference#timestamp) of the files. How does " +"GitHub record\n" "> times, and why?\n" ">\n" "> > ## Solution\n" -"> > GitHub displays timestamps in a human readable relative format (i.e. \"22 hours ago\" or \"three weeks ago\"). However, if you hover over the timestamp, you can see the exact time at which the last change to the file occurred." +"> > GitHub displays timestamps in a human readable relative format (i.e. " +"\"22 hours ago\" or \"three weeks ago\"). However, if you hover over the " +"timestamp, you can see the exact time at which the last change to the file " +"occurred." # blockquote, which can be cascaded #: git-novice/_episodes/07-github.md:233 -#: git-novice/_locale/es/_episodes/07-github.md:212 msgid "> ## Push vs. Commit" msgstr "> ## Push vs. Commit" @@ -5745,14 +5879,20 @@ msgid "" "> How is \"git push\" different from \"git commit\"?\n" ">\n" "> > ## Solution\n" -"> > When we push changes, we're interacting with a remote repository to update it with the changes we've made locally (often this corresponds to sharing the changes we've made with others). Commit only updates your local repository." +"> > When we push changes, we're interacting with a remote repository to " +"update it with the changes we've made locally (often this corresponds to " +"sharing the changes we've made with others). Commit only updates your local " +"repository." msgstr "" ">\n" "> In this lesson, we introduced the \"git push\" command.\n" "> How is \"git push\" different from \"git commit\"?\n" ">\n" "> > ## Solution\n" -"> > When we push changes, we're interacting with a remote repository to update it with the changes we've made locally (often this corresponds to sharing the changes we've made with others). Commit only updates your local repository." +"> > When we push changes, we're interacting with a remote repository to " +"update it with the changes we've made locally (often this corresponds to " +"sharing the changes we've made with others). Commit only updates your local " +"repository." # blockquote, which can be cascaded #: git-novice/_episodes/07-github.md:243 @@ -5778,7 +5918,10 @@ msgid "" "> done with this exercise.\n" ">\n" "> > ## Solution\n" -"> > We don't see any error message when we add the remote (adding the remote tells git about it, but doesn't try to use it yet). As soon as we try to use ```git push``` we'll see an error message. The command ```git remote set-url``` allows us to change the remote's URL to fix it." +"> > We don't see any error message when we add the remote (adding the remote " +"tells git about it, but doesn't try to use it yet). As soon as we try to use " +"```git push``` we'll see an error message. The command ```git remote set-" +"url``` allows us to change the remote's URL to fix it." msgstr "" ">\n" "> It happens quite often in practice that you made a typo in the\n" @@ -5797,7 +5940,10 @@ msgstr "" "> done with this exercise.\n" ">\n" "> > ## Solution\n" -"> > We don't see any error message when we add the remote (adding the remote tells git about it, but doesn't try to use it yet). As soon as we try to use ```git push``` we'll see an error message. The command ```git remote set-url``` allows us to change the remote's URL to fix it." +"> > We don't see any error message when we add the remote (adding the remote " +"tells git about it, but doesn't try to use it yet). As soon as we try to use " +"```git push``` we'll see an error message. The command ```git remote set-" +"url``` allows us to change the remote's URL to fix it." # blockquote, which can be cascaded #: git-novice/_episodes/07-github.md:265 @@ -5807,20 +5953,28 @@ msgstr "> ## GitHub License and README files" #: git-novice/_episodes/07-github.md:266 msgid "" ">\n" -"> In this section we learned about creating a remote repository on GitHub, but when you initialized your\n" -"> GitHub repo, you didn't add a README.md or a license file. If you had, what do you think would have happened when\n" +"> In this section we learned about creating a remote repository on GitHub, " +"but when you initialized your\n" +"> GitHub repo, you didn't add a README.md or a license file. If you had, " +"what do you think would have happened when\n" "> you tried to link your local and remote repositories?\n" ">\n" "> > ## Solution\n" -"> > In this case, since we already had a README file in our own (local) repository, we'd see a merge conflict (when git realises that there are two versions of the file and asks us to reconcile the differences)." +"> > In this case, since we already had a README file in our own (local) " +"repository, we'd see a merge conflict (when git realises that there are two " +"versions of the file and asks us to reconcile the differences)." msgstr "" ">\n" -"> In this section we learned about creating a remote repository on GitHub, but when you initialized your\n" -"> GitHub repo, you didn't add a README.md or a license file. If you had, what do you think would have happened when\n" +"> In this section we learned about creating a remote repository on GitHub, " +"but when you initialized your\n" +"> GitHub repo, you didn't add a README.md or a license file. If you had, " +"what do you think would have happened when\n" "> you tried to link your local and remote repositories?\n" ">\n" "> > ## Solution\n" -"> > In this case, since we already had a README file in our own (local) repository, we'd see a merge conflict (when git realises that there are two versions of the file and asks us to reconcile the differences)." +"> > In this case, since we already had a README file in our own (local) " +"repository, we'd see a merge conflict (when git realises that there are two " +"versions of the file and asks us to reconcile the differences)." # Front Matter #: git-novice/_episodes/08-collab.md:1 @@ -5836,7 +5990,8 @@ msgid "" "- \"Collaborate pushing to a common repository.\"\n" "- \"Describe the basic collaborative workflow.\"\n" "keypoints:\n" -"- \"`git clone` copies a remote repository to create a local repository with a remote called `origin` automatically set up.\"\n" +"- \"`git clone` copies a remote repository to create a local repository with " +"a remote called `origin` automatically set up.\"\n" "---" msgstr "" "---\n" @@ -5850,19 +6005,26 @@ msgstr "" "- \"Collaborate pushing to a common repository.\"\n" "- \"Describe the basic collaborative workflow.\"\n" "keypoints:\n" -"- \"`git clone` copies a remote repository to create a local repository with a remote called `origin` automatically set up.\"\n" +"- \"`git clone` copies a remote repository to create a local repository with " +"a remote called `origin` automatically set up.\"\n" "---" #: git-novice/_episodes/08-collab.md:15 msgid "" -"For the next step, get into pairs. One person will be the \"Owner\" and the other\n" -"will be the \"Collaborator\". The goal is that the Collaborator add changes into\n" -"the Owner's repository. We will switch roles at the end, so both persons will\n" +"For the next step, get into pairs. One person will be the \"Owner\" and the " +"other\n" +"will be the \"Collaborator\". The goal is that the Collaborator add changes " +"into\n" +"the Owner's repository. We will switch roles at the end, so both persons " +"will\n" "play Owner and Collaborator." msgstr "" -"For the next step, get into pairs. One person will be the \"Owner\" and the other\n" -"will be the \"Collaborator\". The goal is that the Collaborator add changes into\n" -"the Owner's repository. We will switch roles at the end, so both persons will\n" +"For the next step, get into pairs. One person will be the \"Owner\" and the " +"other\n" +"will be the \"Collaborator\". The goal is that the Collaborator add changes " +"into\n" +"the Owner's repository. We will switch roles at the end, so both persons " +"will\n" "play Owner and Collaborator." # blockquote, which can be cascaded @@ -5873,16 +6035,20 @@ msgstr "> ## Practicing By Yourself" #: git-novice/_episodes/08-collab.md:21 msgid "" ">\n" -"> If you're working through this lesson on your own, you can carry on by opening\n" +"> If you're working through this lesson on your own, you can carry on by " +"opening\n" "> a second terminal window.\n" "> This window will represent your partner, working on another computer. You\n" -"> won't need to give anyone access on GitHub, because both 'partners' are you." +"> won't need to give anyone access on GitHub, because both 'partners' are " +"you." msgstr "" ">\n" -"> If you're working through this lesson on your own, you can carry on by opening\n" +"> If you're working through this lesson on your own, you can carry on by " +"opening\n" "> a second terminal window.\n" "> This window will represent your partner, working on another computer. You\n" -"> won't need to give anyone access on GitHub, because both 'partners' are you." +"> won't need to give anyone access on GitHub, because both 'partners' are " +"you." #: git-novice/_episodes/08-collab.md:28 msgid "" @@ -5895,33 +6061,35 @@ msgstr "" "then select Collaborators, and enter your partner's username." #: git-novice/_episodes/08-collab.md:32 -#: git-novice/_locale/es/_episodes/08-collab.md:25 msgid "![Adding Collaborators on GitHub](../fig/github-add-collaborators.png)" msgstr "![Adding Collaborators on GitHub](../fig/github-add-collaborators.png)" #: git-novice/_episodes/08-collab.md:34 msgid "" "To accept access to the Owner's repo, the Collaborator\n" -"needs to go to [https://github.com/notifications](https://github.com/notifications).\n" +"needs to go to [https://github.com/notifications](https://github.com/" +"notifications).\n" "Once there she can accept access to the Owner's repo." msgstr "" "To accept access to the Owner's repo, the Collaborator\n" -"needs to go to [https://github.com/notifications](https://github.com/notifications).\n" +"needs to go to [https://github.com/notifications](https://github.com/" +"notifications).\n" "Once there she can accept access to the Owner's repo." #: git-novice/_episodes/08-collab.md:38 msgid "" -"Next, the Collaborator needs to download a copy of the Owner's repository to her\n" +"Next, the Collaborator needs to download a copy of the Owner's repository to " +"her\n" " machine. This is called \"cloning a repo\". To clone the Owner's repo into\n" "her `Desktop` folder, the Collaborator enters:" msgstr "" -"Next, the Collaborator needs to download a copy of the Owner's repository to her\n" +"Next, the Collaborator needs to download a copy of the Owner's repository to " +"her\n" " machine. This is called \"cloning a repo\". To clone the Owner's repo into\n" "her `Desktop` folder, the Collaborator enters:" # code block #: git-novice/_episodes/08-collab.md:42 -#: git-novice/_locale/es/_episodes/08-collab.md:33 msgid "" "~~~\n" "$ git clone https://github.com/vlad/planets.git ~/Desktop/vlad-planets\n" @@ -5936,21 +6104,21 @@ msgid "Replace 'vlad' with the Owner's username." msgstr "Replace 「nobita」 with the Owner's username." #: git-novice/_episodes/08-collab.md:49 -#: git-novice/_locale/es/_episodes/08-collab.md:40 msgid "![After Creating Clone of Repository](../fig/github-collaboration.svg)" msgstr "![After Creating Clone of Repository](../fig/github-collaboration.svg)" #: git-novice/_episodes/08-collab.md:51 msgid "" -"The Collaborator can now make a change in her clone of the Owner's repository,\n" +"The Collaborator can now make a change in her clone of the Owner's " +"repository,\n" "exactly the same way as we've been doing before:" msgstr "" -"The Collaborator can now make a change in her clone of the Owner's repository,\n" +"The Collaborator can now make a change in her clone of the Owner's " +"repository,\n" "exactly the same way as we've been doing before:" # code block #: git-novice/_episodes/08-collab.md:54 -#: git-novice/_locale/es/_episodes/08-collab.md:44 msgid "" "~~~\n" "$ cd ~/Desktop/vlad-planets\n" @@ -5966,7 +6134,6 @@ msgstr "" # code block #: git-novice/_episodes/08-collab.md:61 -#: git-novice/_locale/es/_episodes/08-collab.md:51 msgid "" "~~~\n" "It is so a planet!\n" @@ -5978,7 +6145,6 @@ msgstr "" # code block #: git-novice/_episodes/08-collab.md:66 -#: git-novice/_locale/es/_episodes/08-collab.md:56 msgid "" "~~~\n" "$ git add pluto.txt\n" @@ -5992,7 +6158,6 @@ msgstr "" # code block #: git-novice/_episodes/08-collab.md:72 -#: git-novice/_locale/es/_episodes/08-collab.md:62 msgid "" "~~~\n" " 1 file changed, 1 insertion(+)\n" @@ -6010,7 +6175,6 @@ msgstr "Then push the change to the *Owner's repository* on GitHub:" # code block #: git-novice/_episodes/08-collab.md:85 -#: git-novice/_locale/es/_episodes/08-collab.md:75 msgid "" "~~~\n" "Counting objects: 4, done.\n" @@ -6044,21 +6208,26 @@ msgstr "" #: git-novice/_episodes/08-collab.md:100 msgid "" -"Take a look to the Owner's repository on its GitHub website now (maybe you need\n" -"to refresh your browser.) You should be able to see the new commit made by the\n" +"Take a look to the Owner's repository on its GitHub website now (maybe you " +"need\n" +"to refresh your browser.) You should be able to see the new commit made by " +"the\n" "Collaborator." msgstr "" -"Take a look to the Owner's repository on its GitHub website now (maybe you need\n" -"to refresh your browser.) You should be able to see the new commit made by the\n" +"Take a look to the Owner's repository on its GitHub website now (maybe you " +"need\n" +"to refresh your browser.) You should be able to see the new commit made by " +"the\n" "Collaborator." #: git-novice/_episodes/08-collab.md:104 -msgid "To download the Collaborator's changes from GitHub, the Owner now enters:" -msgstr "To download the Collaborator's changes from GitHub, the Owner now enters:" +msgid "" +"To download the Collaborator's changes from GitHub, the Owner now enters:" +msgstr "" +"To download the Collaborator's changes from GitHub, the Owner now enters:" # code block #: git-novice/_episodes/08-collab.md:111 -#: git-novice/_locale/es/_episodes/08-collab.md:97 msgid "" "~~~\n" "remote: Counting objects: 4, done.\n" @@ -6090,10 +6259,12 @@ msgstr "" #: git-novice/_episodes/08-collab.md:126 msgid "" -"Now the three repositories (Owner's local, Collaborator's local, and Owner's on\n" +"Now the three repositories (Owner's local, Collaborator's local, and Owner's " +"on\n" "GitHub) are back in sync." msgstr "" -"Now the three repositories (Owner's local, Collaborator's local, and Owner's on\n" +"Now the three repositories (Owner's local, Collaborator's local, and Owner's " +"on\n" "GitHub) are back in sync." # blockquote, which can be cascaded @@ -6104,8 +6275,10 @@ msgstr "> ## A Basic Collaborative Workflow" #: git-novice/_episodes/08-collab.md:130 msgid "" ">\n" -"> In practice, it is good to be sure that you have an updated version of the\n" -"> repository you are collaborating on, so you should `git pull` before making\n" +"> In practice, it is good to be sure that you have an updated version of " +"the\n" +"> repository you are collaborating on, so you should `git pull` before " +"making\n" "> our changes. The basic collaborative workflow would be:\n" ">\n" "> * update your local repo with `git pull origin master`,\n" @@ -6118,8 +6291,10 @@ msgid "" "> read and review." msgstr "" ">\n" -"> In practice, it is good to be sure that you have an updated version of the\n" -"> repository you are collaborating on, so you should `git pull` before making\n" +"> In practice, it is good to be sure that you have an updated version of " +"the\n" +"> repository you are collaborating on, so you should `git pull` before " +"making\n" "> our changes. The basic collaborative workflow would be:\n" ">\n" "> * update your local repo with `git pull origin master`,\n" @@ -6153,42 +6328,60 @@ msgstr "> ## Review Changes" msgid "" ">\n" "> The Owner pushed commits to the repository without giving any information\n" -"> to the Collaborator. How can the Collaborator find out what has changed with\n" +"> to the Collaborator. How can the Collaborator find out what has changed " +"with\n" "> command line? And on GitHub?\n" ">\n" "> > ## Solution\n" -"> > On the command line, the Collaborator can use ```git fetch origin master```\n" -"> > to get the remote changes into the local repository, but without merging\n" -"> > them. Then by running ```git diff master origin/master``` the Collaborator\n" +"> > On the command line, the Collaborator can use ```git fetch origin " +"master```\n" +"> > to get the remote changes into the local repository, but without " +"merging\n" +"> > them. Then by running ```git diff master origin/master``` the " +"Collaborator\n" "> > will see the changes output in the terminal.\n" "> >\n" -"> > On GitHub, the Collaborator can go to their own fork of the repository and\n" +"> > On GitHub, the Collaborator can go to their own fork of the repository " +"and\n" "> > look right above the light blue latest commit bar for a gray bar saying\n" -"> > \"This branch is 1 commit behind Our-Repository:master.\" On the far right of\n" +"> > \"This branch is 1 commit behind Our-Repository:master.\" On the far " +"right of\n" "> > that gray bar is a Compare icon and link. On the Compare page the\n" -"> > Collaborator should change the base fork to their own repository, then click\n" -"> > the link in the paragraph above to \"compare across forks\", and finally\n" -"> > change the head fork to the main repository. This will show all the commits\n" +"> > Collaborator should change the base fork to their own repository, then " +"click\n" +"> > the link in the paragraph above to \"compare across forks\", and " +"finally\n" +"> > change the head fork to the main repository. This will show all the " +"commits\n" "> > that are different." msgstr "" ">\n" "> The Owner pushed commits to the repository without giving any information\n" -"> to the Collaborator. How can the Collaborator find out what has changed with\n" +"> to the Collaborator. How can the Collaborator find out what has changed " +"with\n" "> command line? And on GitHub?\n" ">\n" "> > ## Solution\n" -"> > On the command line, the Collaborator can use ```git fetch origin master```\n" -"> > to get the remote changes into the local repository, but without merging\n" -"> > them. Then by running ```git diff master origin/master``` the Collaborator\n" +"> > On the command line, the Collaborator can use ```git fetch origin " +"master```\n" +"> > to get the remote changes into the local repository, but without " +"merging\n" +"> > them. Then by running ```git diff master origin/master``` the " +"Collaborator\n" "> > will see the changes output in the terminal.\n" "> >\n" -"> > On GitHub, the Collaborator can go to their own fork of the repository and\n" +"> > On GitHub, the Collaborator can go to their own fork of the repository " +"and\n" "> > look right above the light blue latest commit bar for a gray bar saying\n" -"> > \"This branch is 1 commit behind Our-Repository:master.\" On the far right of\n" +"> > \"This branch is 1 commit behind Our-Repository:master.\" On the far " +"right of\n" "> > that gray bar is a Compare icon and link. On the Compare page the\n" -"> > Collaborator should change the base fork to their own repository, then click\n" -"> > the link in the paragraph above to \"compare across forks\", and finally\n" -"> > change the head fork to the main repository. This will show all the commits\n" +"> > Collaborator should change the base fork to their own repository, then " +"click\n" +"> > the link in the paragraph above to \"compare across forks\", and " +"finally\n" +"> > change the head fork to the main repository. This will show all the " +"commits\n" "> > that are different." # blockquote, which can be cascaded @@ -6199,19 +6392,23 @@ msgstr "> ## Comment Changes in GitHub" #: git-novice/_episodes/08-collab.md:174 msgid "" ">\n" -"> The Collaborator has some questions about one line change made by the Owner and\n" +"> The Collaborator has some questions about one line change made by the " +"Owner and\n" "> has some suggestions to propose.\n" ">\n" -"> With GitHub, it is possible to comment the diff of a commit. Over the line of\n" +"> With GitHub, it is possible to comment the diff of a commit. Over the line " +"of\n" "> code to comment, a blue comment icon appears to open a comment window.\n" ">\n" "> The Collaborator posts its comments and suggestions using GitHub interface." msgstr "" ">\n" -"> The Collaborator has some questions about one line change made by the Owner and\n" +"> The Collaborator has some questions about one line change made by the " +"Owner and\n" "> has some suggestions to propose.\n" ">\n" -"> With GitHub, it is possible to comment the diff of a commit. Over the line of\n" +"> With GitHub, it is possible to comment the diff of a commit. Over the line " +"of\n" "> code to comment, a blue comment icon appears to open a comment window.\n" ">\n" "> The Collaborator posts its comments and suggestions using GitHub interface." @@ -6224,13 +6421,17 @@ msgstr "> ## Version History, Backup, and Version Control" #: git-novice/_episodes/08-collab.md:185 msgid "" ">\n" -"> Some backup software can keep a history of the versions of your files. They also\n" -"> allows you to recover specific versions. How is this functionality different from version control?\n" +"> Some backup software can keep a history of the versions of your files. " +"They also\n" +"> allows you to recover specific versions. How is this functionality " +"different from version control?\n" "> What are some of the benefits of using version control, Git and GitHub?" msgstr "" ">\n" -"> Some backup software can keep a history of the versions of your files. They also\n" -"> allows you to recover specific versions. How is this functionality different from version control?\n" +"> Some backup software can keep a history of the versions of your files. " +"They also\n" +"> allows you to recover specific versions. How is this functionality " +"different from version control?\n" "> What are some of the benefits of using version control, Git and GitHub?" # Front Matter @@ -6246,8 +6447,11 @@ msgid "" "- \"Explain what conflicts are and when they can occur.\"\n" "- \"Resolve conflicts resulting from a merge.\"\n" "keypoints:\n" -"- \"Conflicts occur when two or more people change the same file(s) at the same time.\"\n" -"- \"The version control system does not allow people to overwrite each other's changes blindly, but highlights conflicts so that they can be resolved.\"\n" +"- \"Conflicts occur when two or more people change the same file(s) at the " +"same time.\"\n" +"- \"The version control system does not allow people to overwrite each " +"other's changes blindly, but highlights conflicts so that they can be " +"resolved.\"\n" "---" msgstr "" "---\n" @@ -6260,22 +6464,27 @@ msgstr "" "- \"Explain what conflicts are and when they can occur.\"\n" "- \"Resolve conflicts resulting from a merge.\"\n" "keypoints:\n" -"- \"Conflicts occur when two or more people change the same file(s) at the same time.\"\n" -"- \"The version control system does not allow people to overwrite each other's changes blindly, but highlights conflicts so that they can be resolved.\"\n" +"- \"Conflicts occur when two or more people change the same file(s) at the " +"same time.\"\n" +"- \"The version control system does not allow people to overwrite each " +"other's changes blindly, but highlights conflicts so that they can be " +"resolved.\"\n" "---" #: git-novice/_episodes/09-conflict.md:15 msgid "" "As soon as people can work in parallel, they'll likely step on each other's\n" "toes. This will even happen with a single person: if we are working on\n" -"a piece of software on both our laptop and a server in the lab, we could make\n" +"a piece of software on both our laptop and a server in the lab, we could " +"make\n" "different changes to each copy. Version control helps us manage these\n" "[conflicts]({{ page.root }}/reference#conflicts) by giving us tools to\n" "[resolve]({{ page.root }}/reference#resolve) overlapping changes." msgstr "" "As soon as people can work in parallel, they'll likely step on each other's\n" "toes. This will even happen with a single person: if we are working on\n" -"a piece of software on both our laptop and a server in the lab, we could make\n" +"a piece of software on both our laptop and a server in the lab, we could " +"make\n" "different changes to each copy. Version control helps us manage these\n" "[conflicts]({{ page.root }}/reference#conflicts) by giving us tools to\n" "[resolve]({{ page.root }}/reference#resolve) overlapping changes." @@ -6283,11 +6492,13 @@ msgstr "" #: git-novice/_episodes/09-conflict.md:22 msgid "" "To see how we can resolve conflicts, we must first create one. The file\n" -"`mars.txt` currently looks like this in both partners' copies of our `planets`\n" +"`mars.txt` currently looks like this in both partners' copies of our " +"`planets`\n" "repository:" msgstr "" "To see how we can resolve conflicts, we must first create one. The file\n" -"`mars.txt` currently looks like this in both partners' copies of our `planets`\n" +"`mars.txt` currently looks like this in both partners' copies of our " +"`planets`\n" "repository:" #: git-novice/_episodes/09-conflict.md:38 @@ -6296,7 +6507,6 @@ msgstr "Let's add a line to one partner's copy only:" # code block #: git-novice/_episodes/09-conflict.md:46 -#: git-novice/_locale/es/_episodes/09-conflict.md:40 msgid "" "~~~\n" "Cold and dry, but everything is my favorite color\n" @@ -6318,7 +6528,6 @@ msgstr "and then push the change to GitHub:" # code block #: git-novice/_episodes/09-conflict.md:56 -#: git-novice/_locale/es/_episodes/09-conflict.md:50 msgid "" "~~~\n" "$ git add mars.txt\n" @@ -6332,7 +6541,6 @@ msgstr "" # code block #: git-novice/_episodes/09-conflict.md:62 -#: git-novice/_locale/es/_episodes/09-conflict.md:56 msgid "" "~~~\n" "[master 5ae9631] Add a line in our home copy\n" @@ -6346,7 +6554,6 @@ msgstr "" # code block #: git-novice/_episodes/09-conflict.md:73 -#: git-novice/_locale/es/_episodes/09-conflict.md:67 msgid "" "~~~\n" "Counting objects: 5, done.\n" @@ -6380,7 +6587,6 @@ msgstr "" # code block #: git-novice/_episodes/09-conflict.md:94 -#: git-novice/_locale/es/_episodes/09-conflict.md:88 msgid "" "~~~\n" "Cold and dry, but everything is my favorite color\n" @@ -6402,7 +6608,6 @@ msgstr "We can commit the change locally:" # code block #: git-novice/_episodes/09-conflict.md:104 -#: git-novice/_locale/es/_episodes/09-conflict.md:98 msgid "" "~~~\n" "$ git add mars.txt\n" @@ -6416,7 +6621,6 @@ msgstr "" # code block #: git-novice/_episodes/09-conflict.md:110 -#: git-novice/_locale/es/_episodes/09-conflict.md:104 msgid "" "~~~\n" "[master 07ebc69] Add a line in my copy\n" @@ -6434,13 +6638,13 @@ msgstr "but Git won't let us push it to GitHub:" # code block #: git-novice/_episodes/09-conflict.md:123 -#: git-novice/_locale/es/_episodes/09-conflict.md:117 msgid "" "~~~\n" "To https://github.com/vlad/planets.git\n" " ! [rejected] master -> master (non-fast-forward)\n" "error: failed to push some refs to 'https://github.com/vlad/planets.git'\n" -"hint: Updates were rejected because the tip of your current branch is behind\n" +"hint: Updates were rejected because the tip of your current branch is " +"behind\n" "hint: its remote counterpart. Merge the remote changes (e.g. 'git pull')\n" "hint: before pushing again.\n" "hint: See the 'Note about fast-forwards' in 'git push --help' for details.\n" @@ -6450,36 +6654,39 @@ msgstr "" "To https://github.com/nobita/planets.git\n" " ! [rejected] master -> master (non-fast-forward)\n" "error: failed to push some refs to 'https://github.com/vlad/planets.git'\n" -"hint: Updates were rejected because the tip of your current branch is behind\n" +"hint: Updates were rejected because the tip of your current branch is " +"behind\n" "hint: its remote counterpart. Merge the remote changes (e.g. 'git pull')\n" "hint: before pushing again.\n" "hint: See the 'Note about fast-forwards' in 'git push --help' for details.\n" "~~~" #: git-novice/_episodes/09-conflict.md:134 -#: git-novice/_locale/es/_episodes/09-conflict.md:128 msgid "![The Conflicting Changes](../fig/conflict.svg)" msgstr "![The Conflicting Changes](../fig/conflict.svg)" #: git-novice/_episodes/09-conflict.md:136 msgid "" -"Git rejects the push because it detects that the remote repository has new updates that have not been\n" +"Git rejects the push because it detects that the remote repository has new " +"updates that have not been\n" "incorporated into the local branch.\n" "What we have to do is pull the changes from GitHub,\n" -"[merge]({{ page.root }}/reference#merge) them into the copy we're currently working in,\n" +"[merge]({{ page.root }}/reference#merge) them into the copy we're currently " +"working in,\n" "and then push that.\n" "Let's start by pulling:" msgstr "" -"Git rejects the push because it detects that the remote repository has new updates that have not been\n" +"Git rejects the push because it detects that the remote repository has new " +"updates that have not been\n" "incorporated into the local branch.\n" "What we have to do is pull the changes from GitHub,\n" -"[merge]({{ page.root }}/reference#merge) them into the copy we're currently working in,\n" +"[merge]({{ page.root }}/reference#merge) them into the copy we're currently " +"working in,\n" "and then push that.\n" "Let's start by pulling:" # code block #: git-novice/_episodes/09-conflict.md:148 -#: git-novice/_locale/es/_episodes/09-conflict.md:142 msgid "" "~~~\n" "remote: Counting objects: 5, done.\n" @@ -6515,7 +6722,6 @@ msgstr "" # code block #: git-novice/_episodes/09-conflict.md:169 -#: git-novice/_locale/es/_episodes/09-conflict.md:163 msgid "" "~~~\n" "Cold and dry, but everything is my favorite color\n" @@ -6542,13 +6748,15 @@ msgstr "" #: git-novice/_episodes/09-conflict.md:181 msgid "" "Our change is preceded by `<<<<<<< HEAD`.\n" -"Git has then inserted `=======` as a separator between the conflicting changes\n" +"Git has then inserted `=======` as a separator between the conflicting " +"changes\n" "and marked the end of the content downloaded from GitHub with `>>>>>>>`.\n" "(The string of letters and digits after that marker\n" "identifies the commit we've just downloaded.)" msgstr "" "Our change is preceded by `<<<<<<< HEAD`.\n" -"Git has then inserted `=======` as a separator between the conflicting changes\n" +"Git has then inserted `=======` as a separator between the conflicting " +"changes\n" "and marked the end of the content downloaded from GitHub with `>>>>>>>`.\n" "(The string of letters and digits after that marker\n" "identifies the commit we've just downloaded.)" @@ -6557,23 +6765,25 @@ msgstr "" msgid "" "It is now up to us to edit this file to remove these markers\n" "and reconcile the changes.\n" -"We can do anything we want: keep the change made in the local repository, keep\n" -"the change made in the remote repository, write something new to replace both,\n" +"We can do anything we want: keep the change made in the local repository, " +"keep\n" +"the change made in the remote repository, write something new to replace " +"both,\n" "or get rid of the change entirely.\n" "Let's replace both so that the file looks like this:" msgstr "" "It is now up to us to edit this file to remove these markers\n" "and reconcile the changes.\n" -"We can do anything we want: keep the change made in the local repository, keep\n" -"the change made in the remote repository, write something new to replace both,\n" +"We can do anything we want: keep the change made in the local repository, " +"keep\n" +"the change made in the remote repository, write something new to replace " +"both,\n" "or get rid of the change entirely.\n" "Let's replace both so that the file looks like this:" # code block #: git-novice/_episodes/09-conflict.md:199 #: git-novice/_episodes/09-conflict.md:287 -#: git-novice/_locale/es/_episodes/09-conflict.md:193 -#: git-novice/_locale/es/_episodes/09-conflict.md:281 msgid "" "~~~\n" "Cold and dry, but everything is my favorite color\n" @@ -6601,7 +6811,6 @@ msgstr "" # code block #: git-novice/_episodes/09-conflict.md:211 -#: git-novice/_locale/es/_episodes/09-conflict.md:205 msgid "" "~~~\n" "$ git add mars.txt\n" @@ -6640,7 +6849,6 @@ msgstr "" # code block #: git-novice/_episodes/09-conflict.md:229 -#: git-novice/_locale/es/_episodes/09-conflict.md:223 msgid "" "~~~\n" "$ git commit -m \"Merge changes from GitHub\"\n" @@ -6652,7 +6860,6 @@ msgstr "" # code block #: git-novice/_episodes/09-conflict.md:234 -#: git-novice/_locale/es/_episodes/09-conflict.md:228 msgid "" "~~~\n" "[master 2abf2b1] Merge changes from GitHub\n" @@ -6668,7 +6875,6 @@ msgstr "Now we can push our changes to GitHub:" # code block #: git-novice/_episodes/09-conflict.md:246 -#: git-novice/_locale/es/_episodes/09-conflict.md:240 msgid "" "~~~\n" "Counting objects: 10, done.\n" @@ -6702,7 +6908,6 @@ msgstr "" # code block #: git-novice/_episodes/09-conflict.md:266 -#: git-novice/_locale/es/_episodes/09-conflict.md:260 msgid "" "~~~\n" "remote: Counting objects: 10, done.\n" @@ -6735,30 +6940,37 @@ msgid "We get the merged file:" msgstr "We get the merged file:" #: git-novice/_episodes/09-conflict.md:295 -msgid "We don't need to merge again because Git knows someone has already done that." -msgstr "We don't need to merge again because Git knows someone has already done that." +msgid "" +"We don't need to merge again because Git knows someone has already done that." +msgstr "" +"We don't need to merge again because Git knows someone has already done that." #: git-novice/_episodes/09-conflict.md:297 msgid "" "Git's ability to resolve conflicts is very useful, but conflict resolution\n" -"costs time and effort, and can introduce errors if conflicts are not resolved\n" +"costs time and effort, and can introduce errors if conflicts are not " +"resolved\n" "correctly. If you find yourself resolving a lot of conflicts in a project,\n" "consider these technical approaches to reducing them:" msgstr "" "Git's ability to resolve conflicts is very useful, but conflict resolution\n" -"costs time and effort, and can introduce errors if conflicts are not resolved\n" +"costs time and effort, and can introduce errors if conflicts are not " +"resolved\n" "correctly. If you find yourself resolving a lot of conflicts in a project,\n" "consider these technical approaches to reducing them:" # unordered list #: git-novice/_episodes/09-conflict.md:302 -msgid "- Pull from upstream more frequently, especially before starting new work" -msgstr "- Pull from upstream more frequently, especially before starting new work" +msgid "" +"- Pull from upstream more frequently, especially before starting new work" +msgstr "" +"- Pull from upstream more frequently, especially before starting new work" # unordered list #: git-novice/_episodes/09-conflict.md:303 msgid "- Use topic branches to segregate work, merging to master when complete" -msgstr "- Use topic branches to segregate work, merging to master when complete" +msgstr "" +"- Use topic branches to segregate work, merging to master when complete" # unordered list #: git-novice/_episodes/09-conflict.md:304 @@ -6767,8 +6979,12 @@ msgstr "- Make smaller more atomic commits" # unordered list #: git-novice/_episodes/09-conflict.md:305 -msgid "- Where logically appropriate, break large files into smaller ones so that it is" -msgstr "- Where logically appropriate, break large files into smaller ones so that it is" +msgid "" +"- Where logically appropriate, break large files into smaller ones so that " +"it is" +msgstr "" +"- Where logically appropriate, break large files into smaller ones so that " +"it is" #: git-novice/_episodes/09-conflict.md:306 msgid " less likely that two authors will alter the same file simultaneously" @@ -6785,17 +7001,23 @@ msgstr "- Clarify who is responsible for what areas with your collaborators" # unordered list #: git-novice/_episodes/09-conflict.md:311 -msgid "- Discuss what order tasks should be carried out in with your collaborators so" -msgstr "- Discuss what order tasks should be carried out in with your collaborators so" +msgid "" +"- Discuss what order tasks should be carried out in with your collaborators " +"so" +msgstr "" +"- Discuss what order tasks should be carried out in with your collaborators " +"so" #: git-novice/_episodes/09-conflict.md:312 msgid "" -" that tasks expected to change the same lines won't be worked on simultaneously\n" +" that tasks expected to change the same lines won't be worked on " +"simultaneously\n" "- If the conflicts are stylistic churn (e.g. tabs vs. spaces), establish a\n" " project convention that is governing and use code style tools (e.g.\n" " `htmltidy`, `perltidy`, `rubocop`, etc.) to enforce, if necessary" msgstr "" -" that tasks expected to change the same lines won't be worked on simultaneously\n" +" that tasks expected to change the same lines won't be worked on " +"simultaneously\n" "- If the conflicts are stylistic churn (e.g. tabs vs. spaces), establish a\n" " project convention that is governing and use code style tools (e.g.\n" " `htmltidy`, `perltidy`, `rubocop`, etc.) to enforce, if necessary" @@ -6873,7 +7095,8 @@ msgid "" "> > {: .output}\n" "> >\n" "> > Suppose that Wolfman has added a similar picture in the meantime.\n" -"> > His is a picture of the Martian sky, but it is *also* called `mars.jpg`.\n" +"> > His is a picture of the Martian sky, but it is *also* called `mars." +"jpg`.\n" "> > When Dracula tries to push, he gets a familiar message:\n" "> >\n" "> > ~~~\n" @@ -6884,12 +7107,17 @@ msgid "" "> > ~~~\n" "> > To https://github.com/vlad/planets.git\n" "> > ! [rejected] master -> master (fetch first)\n" -"> > error: failed to push some refs to 'https://github.com/vlad/planets.git'\n" -"> > hint: Updates were rejected because the remote contains work that you do\n" -"> > hint: not have locally. This is usually caused by another repository pushing\n" -"> > hint: to the same ref. You may want to first integrate the remote changes\n" +"> > error: failed to push some refs to 'https://github.com/vlad/planets." +"git'\n" +"> > hint: Updates were rejected because the remote contains work that you " +"do\n" +"> > hint: not have locally. This is usually caused by another repository " +"pushing\n" +"> > hint: to the same ref. You may want to first integrate the remote " +"changes\n" "> > hint: (e.g., 'git pull ...') before pushing again.\n" -"> > hint: See the 'Note about fast-forwards' in 'git push --help' for details.\n" +"> > hint: See the 'Note about fast-forwards' in 'git push --help' for " +"details.\n" "> > ~~~\n" "> > {: .output}\n" "> >\n" @@ -6912,27 +7140,33 @@ msgid "" "> > From https://github.com/vlad/planets.git\n" "> > * branch master -> FETCH_HEAD\n" "> > 6a67967..439dc8c master -> origin/master\n" -"> > warning: Cannot merge binary files: mars.jpg (HEAD vs. 439dc8c08869c342438f6dc4a2b615b05b93c76e)\n" +"> > warning: Cannot merge binary files: mars.jpg (HEAD vs. " +"439dc8c08869c342438f6dc4a2b615b05b93c76e)\n" "> > Auto-merging mars.jpg\n" "> > CONFLICT (add/add): Merge conflict in mars.jpg\n" "> > Automatic merge failed; fix conflicts and then commit the result.\n" "> > ~~~\n" "> > {: .output}\n" "> >\n" -"> > The conflict message here is mostly the same as it was for `mars.txt`, but\n" +"> > The conflict message here is mostly the same as it was for `mars.txt`, " +"but\n" "> > there is one key additional line:\n" "> >\n" "> > ~~~\n" -"> > warning: Cannot merge binary files: mars.jpg (HEAD vs. 439dc8c08869c342438f6dc4a2b615b05b93c76e)\n" +"> > warning: Cannot merge binary files: mars.jpg (HEAD vs. " +"439dc8c08869c342438f6dc4a2b615b05b93c76e)\n" "> > ~~~\n" "> > {: .output}\n" "> >\n" -"> > Git cannot automatically insert conflict markers into an image as it does\n" -"> > for text files. So, instead of editing the image file, we must check out\n" +"> > Git cannot automatically insert conflict markers into an image as it " +"does\n" +"> > for text files. So, instead of editing the image file, we must check " +"out\n" "> > the version we want to keep. Then we can add and commit this version.\n" "> >\n" "> > On the key line above, Git has conveniently given us commit identifiers\n" -"> > for the two versions of `mars.jpg`. Our version is `HEAD`, and Wolfman's\n" +"> > for the two versions of `mars.jpg`. Our version is `HEAD`, and " +"Wolfman's\n" "> > version is `439dc8c0...`. If we want to use our version, we can use\n" "> > `git checkout`:\n" "> >\n" @@ -6948,7 +7182,8 @@ msgid "" "> > ~~~\n" "> > {: .output}\n" "> >\n" -"> > If instead we want to use Wolfman's version, we can use `git checkout` with\n" +"> > If instead we want to use Wolfman's version, we can use `git checkout` " +"with\n" "> > Wolfman's commit identifier, `439dc8c0`:\n" "> >\n" "> > ~~~\n" @@ -7040,7 +7275,8 @@ msgstr "" "> > {: .output}\n" "> >\n" "> > Suppose that ドラえもん has added a similar picture in the meantime.\n" -"> > His is a picture of the Martian sky, but it is *also* called `mars.jpg`.\n" +"> > His is a picture of the Martian sky, but it is *also* called `mars." +"jpg`.\n" "> > When のび太 tries to push, he gets a familiar message:\n" "> >\n" "> > ~~~\n" @@ -7051,12 +7287,17 @@ msgstr "" "> > ~~~\n" "> > To https://github.com/vlad/planets.git\n" "> > ! [rejected] master -> master (fetch first)\n" -"> > error: failed to push some refs to 'https://github.com/vlad/planets.git'\n" -"> > hint: Updates were rejected because the remote contains work that you do\n" -"> > hint: not have locally. This is usually caused by another repository pushing\n" -"> > hint: to the same ref. You may want to first integrate the remote changes\n" +"> > error: failed to push some refs to 'https://github.com/vlad/planets." +"git'\n" +"> > hint: Updates were rejected because the remote contains work that you " +"do\n" +"> > hint: not have locally. This is usually caused by another repository " +"pushing\n" +"> > hint: to the same ref. You may want to first integrate the remote " +"changes\n" "> > hint: (e.g., 'git pull ...') before pushing again.\n" -"> > hint: See the 'Note about fast-forwards' in 'git push --help' for details.\n" +"> > hint: See the 'Note about fast-forwards' in 'git push --help' for " +"details.\n" "> > ~~~\n" "> > {: .output}\n" "> >\n" @@ -7079,27 +7320,33 @@ msgstr "" "> > From https://github.com/vlad/planets.git\n" "> > * branch master -> FETCH_HEAD\n" "> > 6a67967..439dc8c master -> origin/master\n" -"> > warning: Cannot merge binary files: mars.jpg (HEAD vs. 439dc8c08869c342438f6dc4a2b615b05b93c76e)\n" +"> > warning: Cannot merge binary files: mars.jpg (HEAD vs. " +"439dc8c08869c342438f6dc4a2b615b05b93c76e)\n" "> > Auto-merging mars.jpg\n" "> > CONFLICT (add/add): Merge conflict in mars.jpg\n" "> > Automatic merge failed; fix conflicts and then commit the result.\n" "> > ~~~\n" "> > {: .output}\n" "> >\n" -"> > The conflict message here is mostly the same as it was for `mars.txt`, but\n" +"> > The conflict message here is mostly the same as it was for `mars.txt`, " +"but\n" "> > there is one key additional line:\n" "> >\n" "> > ~~~\n" -"> > warning: Cannot merge binary files: mars.jpg (HEAD vs. 439dc8c08869c342438f6dc4a2b615b05b93c76e)\n" +"> > warning: Cannot merge binary files: mars.jpg (HEAD vs. " +"439dc8c08869c342438f6dc4a2b615b05b93c76e)\n" "> > ~~~\n" "> > {: .output}\n" "> >\n" -"> > Git cannot automatically insert conflict markers into an image as it does\n" -"> > for text files. So, instead of editing the image file, we must check out\n" +"> > Git cannot automatically insert conflict markers into an image as it " +"does\n" +"> > for text files. So, instead of editing the image file, we must check " +"out\n" "> > the version we want to keep. Then we can add and commit this version.\n" "> >\n" "> > On the key line above, Git has conveniently given us commit identifiers\n" -"> > for the two versions of `mars.jpg`. Our version is `HEAD`, and ドラえもん's\n" +"> > for the two versions of `mars.jpg`. Our version is `HEAD`, and ドラえも" +"ん's\n" "> > version is `439dc8c0...`. If we want to use our version, we can use\n" "> > `git checkout`:\n" "> >\n" @@ -7115,7 +7362,8 @@ msgstr "" "> > ~~~\n" "> > {: .output}\n" "> >\n" -"> > If instead we want to use ドラえもん's version, we can use `git checkout` with\n" +"> > If instead we want to use ドラえもん's version, we can use `git " +"checkout` with\n" "> > ドラえもん's commit identifier, `439dc8c0`:\n" "> >\n" "> > ~~~\n" @@ -7172,11 +7420,13 @@ msgstr "> ## A Typical Work Session" #: git-novice/_episodes/09-conflict.md:498 msgid "" ">\n" -"> You sit down at your computer to work on a shared project that is tracked in a\n" +"> You sit down at your computer to work on a shared project that is tracked " +"in a\n" "> remote Git repository. During your work session, you take the following\n" "> actions, but not in this order:\n" ">\n" -"> - *Make changes* by appending the number `100` to a text file `numbers.txt`\n" +"> - *Make changes* by appending the number `100` to a text file `numbers." +"txt`\n" "> - *Update remote* repository to match the local repository\n" "> - *Celebrate* your success with beer(s)\n" "> - *Update local* repository to match the remote repository\n" @@ -7184,8 +7434,10 @@ msgid "" "> - *Commit changes* to the local repository\n" ">\n" "> In what order should you perform these actions to minimize the chances of\n" -"> conflicts? Put the commands above in order in the *action* column of the table\n" -"> below. When you have the order right, see if you can write the corresponding\n" +"> conflicts? Put the commands above in order in the *action* column of the " +"table\n" +"> below. When you have the order right, see if you can write the " +"corresponding\n" "> commands in the *command* column. A few steps are populated to get you\n" "> started.\n" ">\n" @@ -7200,22 +7452,32 @@ msgid "" ">\n" "> > ## Solution\n" "> >\n" -"> > |order|action . . . . . . |command . . . . . . . . . . . . . . . . . . . |\n" -"> > |-----|-------------------|----------------------------------------------|\n" -"> > |1 | Update local | `git pull origin master` |\n" -"> > |2 | Make changes | `echo 100 >> numbers.txt` |\n" -"> > |3 | Stage changes | `git add numbers.txt` |\n" -"> > |4 | Commit changes | `git commit -m \"Add 100 to numbers.txt\"` |\n" -"> > |5 | Update remote | `git push origin master` |\n" -"> > |6 | Celebrate! | `AFK` |\n" +"> > |order|action . . . . . . |command . . . . . . . . . . . . . . . . . . . " +"|\n" +"> > " +"|-----|-------------------|----------------------------------------------|\n" +"> > |1 | Update local | `git pull origin master` " +"|\n" +"> > |2 | Make changes | `echo 100 >> numbers.txt` " +"|\n" +"> > |3 | Stage changes | `git add numbers.txt` " +"|\n" +"> > |4 | Commit changes | `git commit -m \"Add 100 to numbers.txt" +"\"` |\n" +"> > |5 | Update remote | `git push origin master` " +"|\n" +"> > |6 | Celebrate! | `AFK` " +"|\n" "> >" msgstr "" ">\n" -"> You sit down at your computer to work on a shared project that is tracked in a\n" +"> You sit down at your computer to work on a shared project that is tracked " +"in a\n" "> remote Git repository. During your work session, you take the following\n" "> actions, but not in this order:\n" ">\n" -"> - *Make changes* by appending the number `100` to a text file `numbers.txt`\n" +"> - *Make changes* by appending the number `100` to a text file `numbers." +"txt`\n" "> - *Update remote* repository to match the local repository\n" "> - *Celebrate* your success with beer(s)\n" "> - *Update local* repository to match the remote repository\n" @@ -7223,8 +7485,10 @@ msgstr "" "> - *Commit changes* to the local repository\n" ">\n" "> In what order should you perform these actions to minimize the chances of\n" -"> conflicts? Put the commands above in order in the *action* column of the table\n" -"> below. When you have the order right, see if you can write the corresponding\n" +"> conflicts? Put the commands above in order in the *action* column of the " +"table\n" +"> below. When you have the order right, see if you can write the " +"corresponding\n" "> commands in the *command* column. A few steps are populated to get you\n" "> started.\n" ">\n" @@ -7239,14 +7503,22 @@ msgstr "" ">\n" "> > ## Solution\n" "> >\n" -"> > |order|action . . . . . . |command . . . . . . . . . . . . . . . . . . . |\n" -"> > |-----|-------------------|----------------------------------------------|\n" -"> > |1 | Update local | `git pull origin master` |\n" -"> > |2 | Make changes | `echo 100 >> numbers.txt` |\n" -"> > |3 | Stage changes | `git add numbers.txt` |\n" -"> > |4 | Commit changes | `git commit -m \"Add 100 to numbers.txt\"` |\n" -"> > |5 | Update remote | `git push origin master` |\n" -"> > |6 | Celebrate! | `AFK` |\n" +"> > |order|action . . . . . . |command . . . . . . . . . . . . . . . . . . . " +"|\n" +"> > " +"|-----|-------------------|----------------------------------------------|\n" +"> > |1 | Update local | `git pull origin master` " +"|\n" +"> > |2 | Make changes | `echo 100 >> numbers.txt` " +"|\n" +"> > |3 | Stage changes | `git add numbers.txt` " +"|\n" +"> > |4 | Commit changes | `git commit -m \"Add 100 to numbers.txt" +"\"` |\n" +"> > |5 | Update remote | `git push origin master` " +"|\n" +"> > |6 | Celebrate! | `AFK` " +"|\n" "> >" # Front Matter @@ -7259,9 +7531,11 @@ msgid "" "questions:\n" "- \"How can version control help me make my work more open?\"\n" "objectives:\n" -"- \"Explain how a version control system can be leveraged as an electronic lab notebook for computational work.\"\n" +"- \"Explain how a version control system can be leveraged as an electronic " +"lab notebook for computational work.\"\n" "keypoints:\n" -"- \"Open scientific work is more useful and more highly cited than closed.\"\n" +"- \"Open scientific work is more useful and more highly cited than closed." +"\"\n" "---" msgstr "" "---\n" @@ -7271,9 +7545,11 @@ msgstr "" "questions:\n" "- \"How can version control help me make my work more open?\"\n" "objectives:\n" -"- \"Explain how a version control system can be leveraged as an electronic lab notebook for computational work.\"\n" +"- \"Explain how a version control system can be leveraged as an electronic " +"lab notebook for computational work.\"\n" "keypoints:\n" -"- \"Open scientific work is more useful and more highly cited than closed.\"\n" +"- \"Open scientific work is more useful and more highly cited than closed." +"\"\n" "---" # blockquote, which can be cascaded @@ -7287,7 +7563,6 @@ msgid "> The opposite of \"open\" is \"broken\"." msgstr "> The opposite of \"open\" is \"broken\"." #: git-novice/_episodes/10-open.md:15 -#: git-novice/_locale/es/_episodes/10-open.md:15 msgid "" ">\n" "> --- John Wilbanks" @@ -7297,7 +7572,6 @@ msgstr "" # SC/DC Template label #: git-novice/_episodes/10-open.md:17 -#: git-novice/_locale/es/_episodes/10-open.md:17 msgid "{: .quotation}" msgstr "{: .quotation}" @@ -7324,10 +7598,12 @@ msgid "" " to analyze that data.\n" "* Once she has some results,\n" " she writes them up and submits her paper.\n" -" She might include her data—a growing number of journals require this—but\n" +" She might include her data—a growing number of journals require this—" +"but\n" " she probably doesn't include her code.\n" "* Time passes.\n" -"* The journal sends her reviews written anonymously by a handful of other people in her field.\n" +"* The journal sends her reviews written anonymously by a handful of other " +"people in her field.\n" " She revises her paper to satisfy them,\n" " during which time she might also modify the scripts she wrote earlier,\n" " and resubmits.\n" @@ -7344,10 +7620,12 @@ msgstr "" " to analyze that data.\n" "* Once she has some results,\n" " she writes them up and submits her paper.\n" -" She might include her data—a growing number of journals require this—but\n" +" She might include her data—a growing number of journals require this—" +"but\n" " she probably doesn't include her code.\n" "* Time passes.\n" -"* The journal sends her reviews written anonymously by a handful of other people in her field.\n" +"* The journal sends her reviews written anonymously by a handful of other " +"people in her field.\n" " She revises her paper to satisfy them,\n" " during which time she might also modify the scripts she wrote earlier,\n" " and resubmits.\n" @@ -7370,15 +7648,20 @@ msgstr "" # unordered list #: git-novice/_episodes/10-open.md:48 -msgid "* The data that the scientist collects is stored in an open access repository" -msgstr "* The data that the scientist collects is stored in an open access repository" +msgid "" +"* The data that the scientist collects is stored in an open access " +"repository" +msgstr "" +"* The data that the scientist collects is stored in an open access " +"repository" #: git-novice/_episodes/10-open.md:49 msgid "" " like [figshare](https://figshare.com/) or\n" " [Zenodo](https://zenodo.org), possibly as soon as it's collected,\n" " and given its own\n" -" [Digital Object Identifier](https://en.wikipedia.org/wiki/Digital_object_identifier) (DOI).\n" +" [Digital Object Identifier](https://en.wikipedia.org/wiki/" +"Digital_object_identifier) (DOI).\n" " Or the data was already published and is stored in\n" " [Dryad](https://datadryad.org/).\n" "* The scientist creates a new repository on GitHub to hold her work.\n" @@ -7403,7 +7686,8 @@ msgstr "" " like [figshare](https://figshare.com/) or\n" " [Zenodo](https://zenodo.org), possibly as soon as it's collected,\n" " and given its own\n" -" [Digital Object Identifier](https://en.wikipedia.org/wiki/Digital_object_identifier) (DOI).\n" +" [Digital Object Identifier](https://en.wikipedia.org/wiki/" +"Digital_object_identifier) (DOI).\n" " Or the data was already published and is stored in\n" " [Dryad](https://datadryad.org/).\n" "* The scientist creates a new repository on GitHub to hold her work.\n" @@ -7429,17 +7713,23 @@ msgstr "" msgid "" "This open model accelerates discovery:\n" "the more open work is,\n" -"[the more widely it is cited and re-used](https://doi.org/10.1371/journal.pone.0000308).\n" +"[the more widely it is cited and re-used](https://doi.org/10.1371/journal." +"pone.0000308).\n" "However,\n" "people who want to work this way need to make some decisions\n" -"about what exactly \"open\" means and how to do it. You can find more on the different aspects of Open Science in [this book](https://link.springer.com/book/10.1007/978-3-319-00026-8)." +"about what exactly \"open\" means and how to do it. You can find more on the " +"different aspects of Open Science in [this book](https://link.springer.com/" +"book/10.1007/978-3-319-00026-8)." msgstr "" "This open model accelerates discovery:\n" "the more open work is,\n" -"[the more widely it is cited and re-used](https://doi.org/10.1371/journal.pone.0000308).\n" +"[the more widely it is cited and re-used](https://doi.org/10.1371/journal." +"pone.0000308).\n" "However,\n" "people who want to work this way need to make some decisions\n" -"about what exactly \"open\" means and how to do it. You can find more on the different aspects of Open Science in [this book](https://link.springer.com/book/10.1007/978-3-319-00026-8)." +"about what exactly \"open\" means and how to do it. You can find more on the " +"different aspects of Open Science in [this book](https://link.springer.com/" +"book/10.1007/978-3-319-00026-8)." #: git-novice/_episodes/10-open.md:81 msgid "" @@ -7455,8 +7745,10 @@ msgstr "" # unordered list #: git-novice/_episodes/10-open.md:86 -msgid "* The conceptual stages of your work are documented, including who did" -msgstr "* The conceptual stages of your work are documented, including who did" +msgid "" +"* The conceptual stages of your work are documented, including who did" +msgstr "" +"* The conceptual stages of your work are documented, including who did" #: git-novice/_episodes/10-open.md:87 msgid "" @@ -7484,15 +7776,16 @@ msgid "> ## Making Code Citable" msgstr "> ## Making Code Citable" #: git-novice/_episodes/10-open.md:97 -#: git-novice/_locale/es/_episodes/10-open.md:53 msgid "" ">\n" -"> Anything that is hosted in a version control repository (data, code, papers, \n" +"> Anything that is hosted in a version control repository (data, code, " +"papers, \n" "> etc.) can be turned into a citable object. You'll learn how to do this in\n" "> [lesson 12: Citation]({{ page.root }}/12-citation/)." msgstr "" ">\n" -"> Anything that is hosted in a version control repository (data, code, papers, \n" +"> Anything that is hosted in a version control repository (data, code, " +"papers, \n" "> etc.) can be turned into a citable object. You'll learn how to do this in\n" "> [lesson 12: Citation]({{ page.root }}/12-citation/)." @@ -7523,21 +7816,29 @@ msgstr "> ## How to Find an Appropriate Data Repository?" #: git-novice/_episodes/10-open.md:112 msgid "" ">\n" -"> Surf the internet for a couple of minutes and check out the data repositories\n" -"> mentioned above: [Figshare](https://figshare.com/), [Zenodo](https://zenodo.org),\n" -"> [Dryad](https://datadryad.org/). Depending on your field of research, you might\n" +"> Surf the internet for a couple of minutes and check out the data " +"repositories\n" +"> mentioned above: [Figshare](https://figshare.com/), [Zenodo](https://" +"zenodo.org),\n" +"> [Dryad](https://datadryad.org/). Depending on your field of research, you " +"might\n" "> find community-recognized repositories that are well-known in your field.\n" -"> You might also find useful [these data repositories recommended by Nature](\n" +"> You might also find useful [these data repositories recommended by Nature]" +"(\n" "> https://www.nature.com/sdata/data-policies/repositories).\n" "> Discuss with your neighbor which data repository you might want to\n" "> approach for your current project and explain why." msgstr "" ">\n" -"> Surf the internet for a couple of minutes and check out the data repositories\n" -"> mentioned above: [Figshare](https://figshare.com/), [Zenodo](https://zenodo.org),\n" -"> [Dryad](https://datadryad.org/). Depending on your field of research, you might\n" +"> Surf the internet for a couple of minutes and check out the data " +"repositories\n" +"> mentioned above: [Figshare](https://figshare.com/), [Zenodo](https://" +"zenodo.org),\n" +"> [Dryad](https://datadryad.org/). Depending on your field of research, you " +"might\n" "> find community-recognized repositories that are well-known in your field.\n" -"> You might also find useful [these data repositories recommended by Nature](\n" +"> You might also find useful [these data repositories recommended by Nature]" +"(\n" "> https://www.nature.com/sdata/data-policies/repositories).\n" "> Discuss with your neighbor which data repository you might want to\n" "> approach for your current project and explain why." @@ -7552,13 +7853,19 @@ msgid "" "questions:\n" "- \"What licensing information should I include with my work?\"\n" "objectives:\n" -"- \"Explain why adding licensing information to a repository is important.\"\n" +"- \"Explain why adding licensing information to a repository is important." +"\"\n" "- \"Choose a proper license.\"\n" "- \"Explain differences in licensing and social expectations.\"\n" "keypoints:\n" -"- \"People who incorporate General Public License (GPL'd) software into their own software must make their software also open under the GPL license; most other open licenses do not require this.\"\n" -"- \"The Creative Commons family of licenses allow people to mix and match requirements and restrictions on attribution, creation of derivative works, further sharing, and commercialization.\"\n" -"- \"People who are not lawyers should not try to write licenses from scratch.\"\n" +"- \"People who incorporate General Public License (GPL'd) software into " +"their own software must make their software also open under the GPL license; " +"most other open licenses do not require this.\"\n" +"- \"The Creative Commons family of licenses allow people to mix and match " +"requirements and restrictions on attribution, creation of derivative works, " +"further sharing, and commercialization.\"\n" +"- \"People who are not lawyers should not try to write licenses from scratch." +"\"\n" "---" msgstr "" "---\n" @@ -7568,13 +7875,19 @@ msgstr "" "questions:\n" "- \"What licensing information should I include with my work?\"\n" "objectives:\n" -"- \"Explain why adding licensing information to a repository is important.\"\n" +"- \"Explain why adding licensing information to a repository is important." +"\"\n" "- \"Choose a proper license.\"\n" "- \"Explain differences in licensing and social expectations.\"\n" "keypoints:\n" -"- \"People who incorporate General Public License (GPL'd) software into their own software must make their software also open under the GPL license; most other open licenses do not require this.\"\n" -"- \"The Creative Commons family of licenses allow people to mix and match requirements and restrictions on attribution, creation of derivative works, further sharing, and commercialization.\"\n" -"- \"People who are not lawyers should not try to write licenses from scratch.\"\n" +"- \"People who incorporate General Public License (GPL'd) software into " +"their own software must make their software also open under the GPL license; " +"most other open licenses do not require this.\"\n" +"- \"The Creative Commons family of licenses allow people to mix and match " +"requirements and restrictions on attribution, creation of derivative works, " +"further sharing, and commercialization.\"\n" +"- \"People who are not lawyers should not try to write licenses from scratch." +"\"\n" "---" #: git-novice/_episodes/11-licensing.md:17 @@ -7655,11 +7968,13 @@ msgstr "" #: git-novice/_episodes/11-licensing.md:48 msgid "" -"[This article](https://doi.org/10.1371/journal.pcbi.1002598) provides an excellent overview of\n" +"[This article](https://doi.org/10.1371/journal.pcbi.1002598) provides an " +"excellent overview of\n" "licensing and licensing options from the perspective of scientists who\n" "also write code." msgstr "" -"[This article](https://doi.org/10.1371/journal.pcbi.1002598) provides an excellent overview of\n" +"[This article](https://doi.org/10.1371/journal.pcbi.1002598) provides an " +"excellent overview of\n" "licensing and licensing options from the perspective of scientists who\n" "also write code." @@ -7687,13 +8002,15 @@ msgstr "> ## Can I Use Open License?" #: git-novice/_episodes/11-licensing.md:60 msgid "" ">\n" -"> Find out whether you are allowed to apply an open license to your software.\n" +"> Find out whether you are allowed to apply an open license to your " +"software.\n" "> Can you do this unilaterally,\n" "> or do you need permission from someone in your institution?\n" "> If so, who?" msgstr "" ">\n" -"> Find out whether you are allowed to apply an open license to your software.\n" +"> Find out whether you are allowed to apply an open license to your " +"software.\n" "> Can you do this unilaterally,\n" "> or do you need permission from someone in your institution?\n" "> If so, who?" @@ -7706,26 +8023,40 @@ msgstr "> ## What licenses have I already accepted?" #: git-novice/_episodes/11-licensing.md:68 msgid "" ">\n" -"> Many of the software tools we use on a daily basis (including in this workshop) are\n" -"> released as open-source software. Pick a project on GitHub from the list below, or\n" -"> one of your own choosing. Find its license (usually in a file called `LICENSE` or\n" -"> `COPYING`) and talk about how it restricts your use of the software. Is it one of\n" +"> Many of the software tools we use on a daily basis (including in this " +"workshop) are\n" +"> released as open-source software. Pick a project on GitHub from the list " +"below, or\n" +"> one of your own choosing. Find its license (usually in a file called " +"`LICENSE` or\n" +"> `COPYING`) and talk about how it restricts your use of the software. Is it " +"one of\n" "> the licenses discussed in this session? How is it different?\n" "> - [Git](https://github.com/git/git), the source-code management tool\n" -"> - [CPython](https://github.com/python/cpython), the standard implementation of the Python language\n" -"> - [Jupyter](https://github.com/jupyter), the project behind the web-based Python notebooks we'll be using\n" -"> - [EtherPad](https://github.com/ether/etherpad-lite), a real-time collaborative editor" -msgstr "" -">\n" -"> Many of the software tools we use on a daily basis (including in this workshop) are\n" -"> released as open-source software. Pick a project on GitHub from the list below, or\n" -"> one of your own choosing. Find its license (usually in a file called `LICENSE` or\n" -"> `COPYING`) and talk about how it restricts your use of the software. Is it one of\n" +"> - [CPython](https://github.com/python/cpython), the standard " +"implementation of the Python language\n" +"> - [Jupyter](https://github.com/jupyter), the project behind the web-based " +"Python notebooks we'll be using\n" +"> - [EtherPad](https://github.com/ether/etherpad-lite), a real-time " +"collaborative editor" +msgstr "" +">\n" +"> Many of the software tools we use on a daily basis (including in this " +"workshop) are\n" +"> released as open-source software. Pick a project on GitHub from the list " +"below, or\n" +"> one of your own choosing. Find its license (usually in a file called " +"`LICENSE` or\n" +"> `COPYING`) and talk about how it restricts your use of the software. Is it " +"one of\n" "> the licenses discussed in this session? How is it different?\n" "> - [Git](https://github.com/git/git), the source-code management tool\n" -"> - [CPython](https://github.com/python/cpython), the standard implementation of the Python language\n" -"> - [Jupyter](https://github.com/jupyter), the project behind the web-based Python notebooks we'll be using\n" -"> - [EtherPad](https://github.com/ether/etherpad-lite), a real-time collaborative editor" +"> - [CPython](https://github.com/python/cpython), the standard " +"implementation of the Python language\n" +"> - [Jupyter](https://github.com/jupyter), the project behind the web-based " +"Python notebooks we'll be using\n" +"> - [EtherPad](https://github.com/ether/etherpad-lite), a real-time " +"collaborative editor" # Front Matter #: git-novice/_episodes/12-citation.md:1 @@ -7739,7 +8070,8 @@ msgid "" "objectives:\n" "- \"Make your work easy to cite\"\n" "keypoints:\n" -"- \"Add a CITATION file to a repository to explain how you want your work cited.\"\n" +"- \"Add a CITATION file to a repository to explain how you want your work " +"cited.\"\n" "---" msgstr "" "---\n" @@ -7751,7 +8083,8 @@ msgstr "" "objectives:\n" "- \"Make your work easy to cite\"\n" "keypoints:\n" -"- \"Add a CITATION file to a repository to explain how you want your work cited.\"\n" +"- \"Add a CITATION file to a repository to explain how you want your work " +"cited.\"\n" "---" #: git-novice/_episodes/12-citation.md:13 @@ -7770,10 +8103,10 @@ msgstr "" # code block #: git-novice/_episodes/12-citation.md:19 -#: git-novice/_locale/es/_episodes/12-citation.md:18 msgid "" "~~~\n" -"To reference Software Carpentry in publications, please cite both of the following:\n" +"To reference Software Carpentry in publications, please cite both of the " +"following:\n" "\n" "Greg Wilson: \"Software Carpentry: Getting Scientists to Write Better\n" "Code by Making Them More Productive\". Computing in Science &\n" @@ -7784,7 +8117,8 @@ msgid "" "\n" "@article{wilson-software-carpentry-2006,\n" " author = {Greg Wilson},\n" -" title = {Software Carpentry: Getting Scientists to Write Better Code by Making Them More Productive},\n" +" title = {Software Carpentry: Getting Scientists to Write Better Code " +"by Making Them More Productive},\n" " journal = {Computing in Science \\& Engineering},\n" " month = {November--December},\n" " year = {2006},\n" @@ -7801,7 +8135,8 @@ msgid "" "~~~" msgstr "" "~~~\n" -"To reference Software Carpentry in publications, please cite both of the following:\n" +"To reference Software Carpentry in publications, please cite both of the " +"following:\n" "\n" "Greg Wilson: \"Software Carpentry: Getting Scientists to Write Better\n" "Code by Making Them More Productive\". Computing in Science &\n" @@ -7812,7 +8147,8 @@ msgstr "" "\n" "@article{wilson-software-carpentry-2006,\n" " author = {Greg Wilson},\n" -" title = {Software Carpentry: Getting Scientists to Write Better Code by Making Them More Productive},\n" +" title = {Software Carpentry: Getting Scientists to Write Better Code " +"by Making Them More Productive},\n" " journal = {Computing in Science \\& Engineering},\n" " month = {November--December},\n" " year = {2006},\n" @@ -7830,42 +8166,49 @@ msgstr "" # SC/DC Template label #: git-novice/_episodes/12-citation.md:46 -#: git-novice/_locale/es/_episodes/12-citation.md:45 msgid "{: .source}" msgstr "{: .source}" #: git-novice/_episodes/12-citation.md:48 -#: git-novice/_locale/es/_episodes/12-citation.md:47 msgid "" "More detailed advice, and other ways to make your code citable can be found\n" -"[at the Software Sustainability Institute blog](https://www.software.ac.uk/how-cite-and-describe-software) and in:" +"[at the Software Sustainability Institute blog](https://www.software.ac.uk/" +"how-cite-and-describe-software) and in:" msgstr "" "More detailed advice, and other ways to make your code citable can be found\n" -"[at the Software Sustainability Institute blog](https://www.software.ac.uk/how-cite-and-describe-software) and in:" +"[at the Software Sustainability Institute blog](https://www.software.ac.uk/" +"how-cite-and-describe-software) and in:" # blockquote, which can be cascaded #: git-novice/_episodes/12-citation.md:51 -#: git-novice/_locale/es/_episodes/12-citation.md:50 -msgid "> Smith AM, Katz DS, Niemeyer KE, FORCE11 Software Citation Working Group. " -msgstr "> Smith AM, Katz DS, Niemeyer KE, FORCE11 Software Citation Working Group. " +msgid "" +"> Smith AM, Katz DS, Niemeyer KE, FORCE11 Software Citation Working Group. " +msgstr "" +"> Smith AM, Katz DS, Niemeyer KE, FORCE11 Software Citation Working Group. " # blockquote, which can be cascaded #: git-novice/_episodes/12-citation.md:52 -#: git-novice/_locale/es/_episodes/12-citation.md:51 -msgid "> (2016) Software citation principles. [PeerJ Computer Science 2:e86](https://peerj.com/articles/cs-86/) https://doi.org/10.7717/peerj-cs.86" -msgstr "> (2016) Software citation principles. [PeerJ Computer Science 2:e86](https://peerj.com/articles/cs-86/) https://doi.org/10.7717/peerj-cs.86" +msgid "" +"> (2016) Software citation principles. [PeerJ Computer Science 2:e86]" +"(https://peerj.com/articles/cs-86/) https://doi.org/10.7717/peerj-cs.86" +msgstr "" +"> (2016) Software citation principles. [PeerJ Computer Science 2:e86]" +"(https://peerj.com/articles/cs-86/) https://doi.org/10.7717/peerj-cs.86" #: git-novice/_episodes/12-citation.md:54 -#: git-novice/_locale/es/_episodes/12-citation.md:53 msgid "" -"There is also an [`@software{…`](https://www.google.de/search?q=git+citation+%22%40software%7B%22) \n" +"There is also an [`@software{…`](https://www.google.de/search?q=git+citation+" +"%22%40software%7B%22) \n" "[BibTeX](https://www.ctan.org/pkg/bibtex) entry type in case\n" -"no \"umbrella\" citation like a paper or book exists for the project you want to\n" +"no \"umbrella\" citation like a paper or book exists for the project you " +"want to\n" "make citable." msgstr "" -"There is also an [`@software{…`](https://www.google.de/search?q=git+citation+%22%40software%7B%22) \n" +"There is also an [`@software{…`](https://www.google.de/search?q=git+citation+" +"%22%40software%7B%22) \n" "[BibTeX](https://www.ctan.org/pkg/bibtex) entry type in case\n" -"no \"umbrella\" citation like a paper or book exists for the project you want to\n" +"no \"umbrella\" citation like a paper or book exists for the project you " +"want to\n" "make citable." # Front Matter @@ -7880,8 +8223,10 @@ msgid "" "objectives:\n" "- \"Explain different options for hosting scientific work.\"\n" "keypoints:\n" -"- \"Projects can be hosted on university servers, on personal domains, or on public forges.\"\n" -"- \"Rules regarding intellectual property and storage of sensitive information apply no matter where code and data are hosted.\"\n" +"- \"Projects can be hosted on university servers, on personal domains, or on " +"public forges.\"\n" +"- \"Rules regarding intellectual property and storage of sensitive " +"information apply no matter where code and data are hosted.\"\n" "---" msgstr "" "---\n" @@ -7893,46 +8238,66 @@ msgstr "" "objectives:\n" "- \"Explain different options for hosting scientific work.\"\n" "keypoints:\n" -"- \"Projects can be hosted on university servers, on personal domains, or on public forges.\"\n" -"- \"Rules regarding intellectual property and storage of sensitive information apply no matter where code and data are hosted.\"\n" +"- \"Projects can be hosted on university servers, on personal domains, or on " +"public forges.\"\n" +"- \"Rules regarding intellectual property and storage of sensitive " +"information apply no matter where code and data are hosted.\"\n" "---" #: git-novice/_episodes/13-hosting.md:14 msgid "" -"The second big question for groups that want to open up their work is where to\n" -"host their code and data. One option is for the lab, the department, or the\n" -"university to provide a server, manage accounts and backups, and so on. The\n" -"main benefit of this is that it clarifies who owns what, which is particularly\n" +"The second big question for groups that want to open up their work is where " +"to\n" +"host their code and data. One option is for the lab, the department, or " +"the\n" +"university to provide a server, manage accounts and backups, and so on. " +"The\n" +"main benefit of this is that it clarifies who owns what, which is " +"particularly\n" "important if any of the material is sensitive (i.e., relates to experiments\n" "involving human subjects or may be used in a patent application). The main\n" -"drawbacks are the cost of providing the service and its longevity: a scientist\n" -"who has spent ten years collecting data would like to be sure that data will\n" -"still be available ten years from now, but that's well beyond the lifespan of\n" +"drawbacks are the cost of providing the service and its longevity: a " +"scientist\n" +"who has spent ten years collecting data would like to be sure that data " +"will\n" +"still be available ten years from now, but that's well beyond the lifespan " +"of\n" "most of the grants that fund academic infrastructure." msgstr "" -"The second big question for groups that want to open up their work is where to\n" -"host their code and data. One option is for the lab, the department, or the\n" -"university to provide a server, manage accounts and backups, and so on. The\n" -"main benefit of this is that it clarifies who owns what, which is particularly\n" +"The second big question for groups that want to open up their work is where " +"to\n" +"host their code and data. One option is for the lab, the department, or " +"the\n" +"university to provide a server, manage accounts and backups, and so on. " +"The\n" +"main benefit of this is that it clarifies who owns what, which is " +"particularly\n" "important if any of the material is sensitive (i.e., relates to experiments\n" "involving human subjects or may be used in a patent application). The main\n" -"drawbacks are the cost of providing the service and its longevity: a scientist\n" -"who has spent ten years collecting data would like to be sure that data will\n" -"still be available ten years from now, but that's well beyond the lifespan of\n" +"drawbacks are the cost of providing the service and its longevity: a " +"scientist\n" +"who has spent ten years collecting data would like to be sure that data " +"will\n" +"still be available ten years from now, but that's well beyond the lifespan " +"of\n" "most of the grants that fund academic infrastructure." #: git-novice/_episodes/13-hosting.md:25 msgid "" "Another option is to purchase a domain and pay an Internet service provider\n" "(ISP) to host it. This gives the individual or group more control, and\n" -"sidesteps problems that can arise when moving from one institution to another,\n" -"but requires more time and effort to set up than either the option above or the\n" +"sidesteps problems that can arise when moving from one institution to " +"another,\n" +"but requires more time and effort to set up than either the option above or " +"the\n" "option below." msgstr "" "Another option is to purchase a domain and pay an Internet service provider\n" "(ISP) to host it. This gives the individual or group more control, and\n" -"sidesteps problems that can arise when moving from one institution to another,\n" -"but requires more time and effort to set up than either the option above or the\n" +"sidesteps problems that can arise when moving from one institution to " +"another,\n" +"but requires more time and effort to set up than either the option above or " +"the\n" "option below." #: git-novice/_episodes/13-hosting.md:31 @@ -7940,11 +8305,15 @@ msgid "" "The third option is to use a public hosting service like\n" "[GitHub](https://github.com), [GitLab](https://gitlab.com),or\n" "[BitBucket](https://bitbucket.org).\n" -"Each of these services provides a web interface that enables people to create,\n" +"Each of these services provides a web interface that enables people to " +"create,\n" "view, and edit their code repositories. These services also provide\n" -"communication and project management tools including issue tracking, wiki pages,\n" -"email notifications, and code reviews. These services benefit from economies of\n" -"scale and network effects: it's easier to run one large service well than to run\n" +"communication and project management tools including issue tracking, wiki " +"pages,\n" +"email notifications, and code reviews. These services benefit from " +"economies of\n" +"scale and network effects: it's easier to run one large service well than to " +"run\n" "many smaller services to the same standard. It's also easier for people to\n" "collaborate. Using a popular service can help connect your project with\n" "communities already using the same service." @@ -7952,11 +8321,15 @@ msgstr "" "The third option is to use a public hosting service like\n" "[GitHub](https://github.com), [GitLab](https://gitlab.com),or\n" "[BitBucket](https://bitbucket.org).\n" -"Each of these services provides a web interface that enables people to create,\n" +"Each of these services provides a web interface that enables people to " +"create,\n" "view, and edit their code repositories. These services also provide\n" -"communication and project management tools including issue tracking, wiki pages,\n" -"email notifications, and code reviews. These services benefit from economies of\n" -"scale and network effects: it's easier to run one large service well than to run\n" +"communication and project management tools including issue tracking, wiki " +"pages,\n" +"email notifications, and code reviews. These services benefit from " +"economies of\n" +"scale and network effects: it's easier to run one large service well than to " +"run\n" "many smaller services to the same standard. It's also easier for people to\n" "collaborate. Using a popular service can help connect your project with\n" "communities already using the same service." @@ -7975,29 +8348,42 @@ msgstr "" #: git-novice/_episodes/13-hosting.md:48 msgid "" -"Using large, well-established services can also help you quickly take advantage\n" +"Using large, well-established services can also help you quickly take " +"advantage\n" "of powerful tools. One such tool, continuous integration (CI), can\n" -"automatically run software builds and tests whenever code is committed or pull\n" -"requests are submitted. Direct integration of CI with an online hosting service\n" -"means this information is present in any pull request, and helps maintain code\n" -"integrity and quality standards. While CI is still available in self-hosted\n" +"automatically run software builds and tests whenever code is committed or " +"pull\n" +"requests are submitted. Direct integration of CI with an online hosting " +"service\n" +"means this information is present in any pull request, and helps maintain " +"code\n" +"integrity and quality standards. While CI is still available in self-" +"hosted\n" "situations, there is much less setup and maintenance involved with using an\n" -"online service. Furthermore, such tools are often provided free of charge to\n" -"open source projects, and are also available for private repositories for a fee." +"online service. Furthermore, such tools are often provided free of charge " +"to\n" +"open source projects, and are also available for private repositories for a " +"fee." msgstr "" -"Using large, well-established services can also help you quickly take advantage\n" +"Using large, well-established services can also help you quickly take " +"advantage\n" "of powerful tools. One such tool, continuous integration (CI), can\n" -"automatically run software builds and tests whenever code is committed or pull\n" -"requests are submitted. Direct integration of CI with an online hosting service\n" -"means this information is present in any pull request, and helps maintain code\n" -"integrity and quality standards. While CI is still available in self-hosted\n" +"automatically run software builds and tests whenever code is committed or " +"pull\n" +"requests are submitted. Direct integration of CI with an online hosting " +"service\n" +"means this information is present in any pull request, and helps maintain " +"code\n" +"integrity and quality standards. While CI is still available in self-" +"hosted\n" "situations, there is much less setup and maintenance involved with using an\n" -"online service. Furthermore, such tools are often provided free of charge to\n" -"open source projects, and are also available for private repositories for a fee." +"online service. Furthermore, such tools are often provided free of charge " +"to\n" +"open source projects, and are also available for private repositories for a " +"fee." # blockquote, which can be cascaded #: git-novice/_episodes/13-hosting.md:58 -#: git-novice/_locale/es/_episodes/13-hosting.md:61 msgid "> ## Institutional Barriers" msgstr "> ## Institutional Barriers" @@ -8010,7 +8396,8 @@ msgid "" "> If you encounter such restrictions,\n" "> it can be productive to inquire about the underlying motivations and\n" "> either to request an exception for a specific project or domain,\n" -"> or to push more broadly for institutional reform to support more open science." +"> or to push more broadly for institutional reform to support more open " +"science." msgstr "" ">\n" "> Sharing is the ideal for science,\n" @@ -8019,7 +8406,8 @@ msgstr "" "> If you encounter such restrictions,\n" "> it can be productive to inquire about the underlying motivations and\n" "> either to request an exception for a specific project or domain,\n" -"> or to push more broadly for institutional reform to support more open science." +"> or to push more broadly for institutional reform to support more open " +"science." # blockquote, which can be cascaded #: git-novice/_episodes/13-hosting.md:69 @@ -8029,13 +8417,15 @@ msgstr "> ## Can My Work Be Public?" #: git-novice/_episodes/13-hosting.md:70 msgid "" ">\n" -"> Find out whether you are allowed to host your work openly on a public forge.\n" +"> Find out whether you are allowed to host your work openly on a public " +"forge.\n" "> Can you do this unilaterally,\n" "> or do you need permission from someone in your institution?\n" "> If so, who?" msgstr "" ">\n" -"> Find out whether you are allowed to host your work openly on a public forge.\n" +"> Find out whether you are allowed to host your work openly on a public " +"forge.\n" "> Can you do this unilaterally,\n" "> or do you need permission from someone in your institution?\n" "> If so, who?" @@ -8049,13 +8439,19 @@ msgstr "> ## Where Can I Share My Work?" msgid "" ">\n" "> Does your institution have a repository or repositories that you can\n" -"> use to share your papers, data and software? How do institutional repositories\n" -"> differ from services like [arXiV](https://arxiv.org/), [figshare](https://figshare.com/), [GitHub](https://github.com/) or [GitLab](https://about.gitlab.com/)?" +"> use to share your papers, data and software? How do institutional " +"repositories\n" +"> differ from services like [arXiV](https://arxiv.org/), [figshare](https://" +"figshare.com/), [GitHub](https://github.com/) or [GitLab](https://about." +"gitlab.com/)?" msgstr "" ">\n" "> Does your institution have a repository or repositories that you can\n" -"> use to share your papers, data and software? How do institutional repositories\n" -"> differ from services like [arXiV](https://arxiv.org/), [figshare](https://figshare.com/), [GitHub](https://github.com/) or [GitLab](https://about.gitlab.com/)?" +"> use to share your papers, data and software? How do institutional " +"repositories\n" +"> differ from services like [arXiV](https://arxiv.org/), [figshare](https://" +"figshare.com/), [GitHub](https://github.com/) or [GitLab](https://about." +"gitlab.com/)?" # Front Matter #: git-novice/_episodes/14-supplemental-rstudio.md:1 @@ -8086,13 +8482,15 @@ msgstr "" #: git-novice/_episodes/14-supplemental-rstudio.md:13 msgid "" -"Version control can be very useful when developing data analysis scripts. For\n" +"Version control can be very useful when developing data analysis scripts. " +"For\n" "that reason, the popular development environment\n" "RStudio for the R programming language has built-in\n" "integration with Git. While some advanced Git features still require the\n" "command-line, RStudio has a nice interface for many common Git operations." msgstr "" -"Version control can be very useful when developing data analysis scripts. For\n" +"Version control can be very useful when developing data analysis scripts. " +"For\n" "that reason, the popular development environment\n" "RStudio for the R programming language has built-in\n" "integration with Git. While some advanced Git features still require the\n" @@ -8101,36 +8499,42 @@ msgstr "" #: git-novice/_episodes/14-supplemental-rstudio.md:19 msgid "" "RStudio allows us to create a [project][rstudio-projects] associated with a\n" -"given directory to keep track of various related files. To be able to track the\n" +"given directory to keep track of various related files. To be able to track " +"the\n" "development of the project over time, to be able to revert to previous\n" "versions, and to collaborate with others, we version control the Rstudio\n" -"project with Git. To get started using Git in RStudio, we create a new project:" +"project with Git. To get started using Git in RStudio, we create a new " +"project:" msgstr "" "RStudio allows us to create a [project][rstudio-projects] associated with a\n" -"given directory to keep track of various related files. To be able to track the\n" +"given directory to keep track of various related files. To be able to track " +"the\n" "development of the project over time, to be able to revert to previous\n" "versions, and to collaborate with others, we version control the Rstudio\n" -"project with Git. To get started using Git in RStudio, we create a new project:" +"project with Git. To get started using Git in RStudio, we create a new " +"project:" #: git-novice/_episodes/14-supplemental-rstudio.md:25 -#: git-novice/_locale/es/_episodes/14-supplemental-rstudio.md:17 msgid "![](../fig/RStudio_screenshot_newproject.png)" msgstr "![](../fig/RStudio_screenshot_newproject.png)" #: git-novice/_episodes/14-supplemental-rstudio.md:27 msgid "" -"This will open a dialog asking us how we want to create the project. We have\n" +"This will open a dialog asking us how we want to create the project. We " +"have\n" "some options here. Let's say that we want to use RStudio with the planets\n" -"repository that we already made. Since that repository lives in a directory on\n" +"repository that we already made. Since that repository lives in a directory " +"on\n" "our computer, we choose the option \"Existing Directory\":" msgstr "" -"This will open a dialog asking us how we want to create the project. We have\n" +"This will open a dialog asking us how we want to create the project. We " +"have\n" "some options here. Let's say that we want to use RStudio with the planets\n" -"repository that we already made. Since that repository lives in a directory on\n" +"repository that we already made. Since that repository lives in a directory " +"on\n" "our computer, we choose the option \"Existing Directory\":" #: git-novice/_episodes/14-supplemental-rstudio.md:32 -#: git-novice/_locale/es/_episodes/14-supplemental-rstudio.md:24 msgid "![](../fig/RStudio_screenshot_existingdirectory.png)" msgstr "![](../fig/RStudio_screenshot_existingdirectory.png)" @@ -8142,20 +8546,24 @@ msgstr "> ## Do You See a \"Version Control\" Option?" #: git-novice/_episodes/14-supplemental-rstudio.md:35 msgid "" ">\n" -"> Although we're not going to use it here, there should be a \"version control\"\n" +"> Although we're not going to use it here, there should be a \"version " +"control\"\n" "> option on this menu. That is what you would click on if you wanted to\n" "> create a project on your computer by cloning a repository from GitHub.\n" -"> If that option is not present, it probably means that RStudio doesn't know\n" +"> If that option is not present, it probably means that RStudio doesn't " +"know\n" "> where your Git executable is. See\n" "> [this page](https://stat545-ubc.github.io/git03_rstudio-meet-git.html)\n" "> for some debugging advice. Even if you have Git installed, you may need\n" "> to accept the XCode license if you are using macOS." msgstr "" ">\n" -"> Although we're not going to use it here, there should be a \"version control\"\n" +"> Although we're not going to use it here, there should be a \"version " +"control\"\n" "> option on this menu. That is what you would click on if you wanted to\n" "> create a project on your computer by cloning a repository from GitHub.\n" -"> If that option is not present, it probably means that RStudio doesn't know\n" +"> If that option is not present, it probably means that RStudio doesn't " +"know\n" "> where your Git executable is. See\n" "> [this page](https://stat545-ubc.github.io/git03_rstudio-meet-git.html)\n" "> for some debugging advice. Even if you have Git installed, you may need\n" @@ -8164,13 +8572,14 @@ msgstr "" #: git-novice/_episodes/14-supplemental-rstudio.md:46 msgid "" "Next, RStudio will ask which existing directory we want to use. Click\n" -"\"Browse...\" and navigate to the correct directory, then click \"Create Project\":" +"\"Browse...\" and navigate to the correct directory, then click \"Create " +"Project\":" msgstr "" "Next, RStudio will ask which existing directory we want to use. Click\n" -"\"Browse...\" and navigate to the correct directory, then click \"Create Project\":" +"\"Browse...\" and navigate to the correct directory, then click \"Create " +"Project\":" #: git-novice/_episodes/14-supplemental-rstudio.md:49 -#: git-novice/_locale/es/_episodes/14-supplemental-rstudio.md:42 msgid "![](../fig/RStudio_screenshot_navigateexisting.png)" msgstr "![](../fig/RStudio_screenshot_navigateexisting.png)" @@ -8187,71 +8596,78 @@ msgstr "" "number of tools to use Git:" #: git-novice/_episodes/14-supplemental-rstudio.md:56 -#: git-novice/_locale/es/_episodes/14-supplemental-rstudio.md:46 msgid "![](../fig/RStudio_screenshot_afterclone.png)" msgstr "![](../fig/RStudio_screenshot_afterclone.png)" #: git-novice/_episodes/14-supplemental-rstudio.md:58 msgid "" "To edit the existing files in the repository, we can click on them in the\n" -"\"Files\" panel on the lower right. Now let's add some additional information\n" +"\"Files\" panel on the lower right. Now let's add some additional " +"information\n" "about Pluto:" msgstr "" "To edit the existing files in the repository, we can click on them in the\n" -"\"Files\" panel on the lower right. Now let's add some additional information\n" +"\"Files\" panel on the lower right. Now let's add some additional " +"information\n" "about Pluto:" #: git-novice/_episodes/14-supplemental-rstudio.md:62 -#: git-novice/_locale/es/_episodes/14-supplemental-rstudio.md:50 msgid "![](../fig/RStudio_screenshot_editfiles.png)" msgstr "![](../fig/RStudio_screenshot_editfiles.png)" #: git-novice/_episodes/14-supplemental-rstudio.md:64 msgid "" -"Once we have saved our edited files, we can use RStudio to commit the changes\n" +"Once we have saved our edited files, we can use RStudio to commit the " +"changes\n" "by clicking on \"Commit...\" in the Git menu:" msgstr "" -"Once we have saved our edited files, we can use RStudio to commit the changes\n" +"Once we have saved our edited files, we can use RStudio to commit the " +"changes\n" "by clicking on \"Commit...\" in the Git menu:" #: git-novice/_episodes/14-supplemental-rstudio.md:67 -#: git-novice/_locale/es/_episodes/14-supplemental-rstudio.md:54 msgid "![](../fig/RStudio_screenshot_commit.png)" msgstr "![](../fig/RStudio_screenshot_commit.png)" #: git-novice/_episodes/14-supplemental-rstudio.md:69 msgid "" "This will open a dialogue where we can select which files to commit (by\n" -"checking the appropriate boxes in the \"Staged\" column), and enter a commit\n" -"message (in the upper right panel). The icons in the \"Status\" column indicate\n" +"checking the appropriate boxes in the \"Staged\" column), and enter a " +"commit\n" +"message (in the upper right panel). The icons in the \"Status\" column " +"indicate\n" "the current status of each file. Clicking on a file shows information about\n" -"changes in the lower panel (using output of `git diff`). Once everything is the\n" +"changes in the lower panel (using output of `git diff`). Once everything is " +"the\n" "way we want it, we click \"Commit\":" msgstr "" "This will open a dialogue where we can select which files to commit (by\n" -"checking the appropriate boxes in the \"Staged\" column), and enter a commit\n" -"message (in the upper right panel). The icons in the \"Status\" column indicate\n" +"checking the appropriate boxes in the \"Staged\" column), and enter a " +"commit\n" +"message (in the upper right panel). The icons in the \"Status\" column " +"indicate\n" "the current status of each file. Clicking on a file shows information about\n" -"changes in the lower panel (using output of `git diff`). Once everything is the\n" +"changes in the lower panel (using output of `git diff`). Once everything is " +"the\n" "way we want it, we click \"Commit\":" #: git-novice/_episodes/14-supplemental-rstudio.md:76 -#: git-novice/_locale/es/_episodes/14-supplemental-rstudio.md:62 msgid "![](../fig/RStudio_screenshot_review.png)" msgstr "![](../fig/RStudio_screenshot_review.png)" #: git-novice/_episodes/14-supplemental-rstudio.md:78 msgid "" -"The changes can be pushed by selecting \"Push Branch\" from the Git menu. There\n" +"The changes can be pushed by selecting \"Push Branch\" from the Git menu. " +"There\n" "are also options to pull from the remote repository, and to view the commit\n" "history:" msgstr "" -"The changes can be pushed by selecting \"Push Branch\" from the Git menu. There\n" +"The changes can be pushed by selecting \"Push Branch\" from the Git menu. " +"There\n" "are also options to pull from the remote repository, and to view the commit\n" "history:" #: git-novice/_episodes/14-supplemental-rstudio.md:82 -#: git-novice/_locale/es/_episodes/14-supplemental-rstudio.md:68 msgid "![](../fig/RStudio_screenshot_history.png)" msgstr "![](../fig/RStudio_screenshot_history.png)" @@ -8263,42 +8679,48 @@ msgstr "> ## Are the Push/Pull Commands Grayed Out?" #: git-novice/_episodes/14-supplemental-rstudio.md:85 msgid "" ">\n" -"> Grayed out Push/Pull commands generally mean that RStudio doesn't know the\n" +"> Grayed out Push/Pull commands generally mean that RStudio doesn't know " +"the\n" "> location of your remote repository (e.g. on GitHub). To fix this, open a\n" "> terminal to the repository and enter the command: `git push -u origin\n" "> master`. Then restart RStudio." msgstr "" ">\n" -"> Grayed out Push/Pull commands generally mean that RStudio doesn't know the\n" +"> Grayed out Push/Pull commands generally mean that RStudio doesn't know " +"the\n" "> location of your remote repository (e.g. on GitHub). To fix this, open a\n" "> terminal to the repository and enter the command: `git push -u origin\n" "> master`. Then restart RStudio." #: git-novice/_episodes/14-supplemental-rstudio.md:92 msgid "" -"If we click on \"History\", we can see a graphical version of what `git log`\n" +"If we click on \"History\", we can see a graphical version of what `git " +"log`\n" "would tell us:" msgstr "" -"If we click on \"History\", we can see a graphical version of what `git log`\n" +"If we click on \"History\", we can see a graphical version of what `git " +"log`\n" "would tell us:" #: git-novice/_episodes/14-supplemental-rstudio.md:95 -#: git-novice/_locale/es/_episodes/14-supplemental-rstudio.md:81 msgid "![](../fig/RStudio_screenshot_viewhistory.png)" msgstr "![](../fig/RStudio_screenshot_viewhistory.png)" #: git-novice/_episodes/14-supplemental-rstudio.md:97 msgid "" -"RStudio creates a number of files that it uses to keep track of a project. We\n" -"often don't want to track these, in which case we add them to our `.gitignore`\n" +"RStudio creates a number of files that it uses to keep track of a project. " +"We\n" +"often don't want to track these, in which case we add them to our `." +"gitignore`\n" "file:" msgstr "" -"RStudio creates a number of files that it uses to keep track of a project. We\n" -"often don't want to track these, in which case we add them to our `.gitignore`\n" +"RStudio creates a number of files that it uses to keep track of a project. " +"We\n" +"often don't want to track these, in which case we add them to our `." +"gitignore`\n" "file:" #: git-novice/_episodes/14-supplemental-rstudio.md:101 -#: git-novice/_locale/es/_episodes/14-supplemental-rstudio.md:85 msgid "![](../fig/RStudio_screenshot_gitignore.png)" msgstr "![](../fig/RStudio_screenshot_gitignore.png)" @@ -8310,18 +8732,21 @@ msgstr "> ## Tip: versioning disposable output" #: git-novice/_episodes/14-supplemental-rstudio.md:104 msgid "" ">\n" -"> Generally you do not want to version control disposable output (or read-only\n" -"> data). You should modify the `.gitignore` file to tell Git to ignore these\n" +"> Generally you do not want to version control disposable output (or read-" +"only\n" +"> data). You should modify the `.gitignore` file to tell Git to ignore " +"these\n" "> files and directories." msgstr "" ">\n" -"> Generally you do not want to version control disposable output (or read-only\n" -"> data). You should modify the `.gitignore` file to tell Git to ignore these\n" +"> Generally you do not want to version control disposable output (or read-" +"only\n" +"> data). You should modify the `.gitignore` file to tell Git to ignore " +"these\n" "> files and directories." # blockquote, which can be cascaded #: git-novice/_episodes/14-supplemental-rstudio.md:110 -#: git-novice/_locale/es/_episodes/14-supplemental-rstudio.md:94 msgid "> ## Challenge" msgstr "> ## Challenge" @@ -8329,7 +8754,8 @@ msgstr "> ## Challenge" msgid "" ">\n" "> 1. Create a new directory within your project called `graphs`.\n" -"> 2. Modify the `.gitignore` so that the `graphs` directory is not version controlled.\n" +"> 2. Modify the `.gitignore` so that the `graphs` directory is not version " +"controlled.\n" ">\n" "> Add the newly created folders to version control using\n" "> the Git interface.\n" @@ -8345,7 +8771,8 @@ msgid "" msgstr "" ">\n" "> 1. Create a new directory within your project called `graphs`.\n" -"> 2. Modify the `.gitignore` so that the `graphs` directory is not version controlled.\n" +"> 2. Modify the `.gitignore` so that the `graphs` directory is not version " +"controlled.\n" ">\n" "> Add the newly created folders to version control using\n" "> the Git interface.\n" @@ -8368,9 +8795,12 @@ msgstr "" "enough to get you started!" #: git-novice/_episodes/14-supplemental-rstudio.md:132 -#: git-novice/_locale/es/_episodes/14-supplemental-rstudio.md:116 -msgid "[rstudio-projects]: https://support.rstudio.com/hc/en-us/articles/200526207-Using-Projects" -msgstr "[rstudio-projects]: https://support.rstudio.com/hc/en-us/articles/200526207-Using-Projects" +msgid "" +"[rstudio-projects]: https://support.rstudio.com/hc/en-us/articles/200526207-" +"Using-Projects" +msgstr "" +"[rstudio-projects]: https://support.rstudio.com/hc/en-us/articles/200526207-" +"Using-Projects" # Front Matter #: git-novice/_extras/about.md:1 @@ -8387,7 +8817,7 @@ msgstr "" "permalink: /about/\n" "---" -#: git-novice/_extras/about.md:6 git-novice/_locale/es/_extras/about.md:6 +#: git-novice/_extras/about.md:6 msgid "{% include carpentries.html %}" msgstr "{% include carpentries.html %}" @@ -8413,15 +8843,23 @@ msgstr "## Frequently Asked Questions" #: git-novice/_extras/discuss.md:9 msgid "" -"People often have questions about Git beyond the scope of the core material.\n" -"Students who have completed the rest of the lessons might find value in looking through the following topics." +"People often have questions about Git beyond the scope of the core " +"material.\n" +"Students who have completed the rest of the lessons might find value in " +"looking through the following topics." msgstr "" -"People often have questions about Git beyond the scope of the core material.\n" -"Students who have completed the rest of the lessons might find value in looking through the following topics." +"People often have questions about Git beyond the scope of the core " +"material.\n" +"Students who have completed the rest of the lessons might find value in " +"looking through the following topics." #: git-novice/_extras/discuss.md:12 -msgid "Note that since this material isn't essential for basic Git usage, it won't be covered by the instructor." -msgstr "Note that since this material isn't essential for basic Git usage, it won't be covered by the instructor." +msgid "" +"Note that since this material isn't essential for basic Git usage, it won't " +"be covered by the instructor." +msgstr "" +"Note that since this material isn't essential for basic Git usage, it won't " +"be covered by the instructor." # header #: git-novice/_extras/discuss.md:14 @@ -8432,16 +8870,18 @@ msgstr "## More Advanced Git Configuration" msgid "" "In [Setting Up Git]({{ page.root }}/02-setup/),\n" "we used `git config --global` to set some default options for Git.\n" -"It turns out that these configuration options get stored in your home directory\n" +"It turns out that these configuration options get stored in your home " +"directory\n" "in a plain text file called `.gitconfig`." msgstr "" "In [Setting Up Git]({{ page.root }}/02-setup/),\n" "we used `git config --global` to set some default options for Git.\n" -"It turns out that these configuration options get stored in your home directory\n" +"It turns out that these configuration options get stored in your home " +"directory\n" "in a plain text file called `.gitconfig`." # code block -#: git-novice/_extras/discuss.md:21 git-novice/_locale/es/_extras/discuss.md:21 +#: git-novice/_extras/discuss.md:21 msgid "" "~~~\n" "$ cat ~/.gitconfig\n" @@ -8495,7 +8935,7 @@ msgstr "" "The available options are described in the manual:" # code block -#: git-novice/_extras/discuss.md:45 git-novice/_locale/es/_extras/discuss.md:45 +#: git-novice/_extras/discuss.md:45 msgid "" "~~~\n" "$ git config --help\n" @@ -8518,7 +8958,7 @@ msgstr "" "you could run the command:" # code block -#: git-novice/_extras/discuss.md:55 git-novice/_locale/es/_extras/discuss.md:55 +#: git-novice/_extras/discuss.md:55 msgid "" "~~~\n" "$ git config --global alias.co checkout\n" @@ -8529,15 +8969,19 @@ msgstr "" "~~~" #: git-novice/_extras/discuss.md:60 -msgid "Now if we return to the example from [Exploring History]({{ page.root }}/05-history/) where we ran:" -msgstr "Now if we return to the example from [Exploring History]({{ page.root }}/05-history/) where we ran:" +msgid "" +"Now if we return to the example from [Exploring History]({{ page.root }}/05-" +"history/) where we ran:" +msgstr "" +"Now if we return to the example from [Exploring History]({{ page.root }}/05-" +"history/) where we ran:" #: git-novice/_extras/discuss.md:67 msgid "we could now instead type:" msgstr "we could now instead type:" # code block -#: git-novice/_extras/discuss.md:69 git-novice/_locale/es/_extras/discuss.md:69 +#: git-novice/_extras/discuss.md:69 msgid "" "~~~\n" "$ git co f22b25e mars.txt\n" @@ -8566,16 +9010,18 @@ msgstr "" #: git-novice/_extras/discuss.md:81 msgid "" -"You can use `git log --help` and `git config --help` to look for different ways to change\n" +"You can use `git log --help` and `git config --help` to look for different " +"ways to change\n" "the log output.\n" "Try the following commands and see what effect they have:" msgstr "" -"You can use `git log --help` and `git config --help` to look for different ways to change\n" +"You can use `git log --help` and `git config --help` to look for different " +"ways to change\n" "the log output.\n" "Try the following commands and see what effect they have:" # code block -#: git-novice/_extras/discuss.md:85 git-novice/_locale/es/_extras/discuss.md:85 +#: git-novice/_extras/discuss.md:85 msgid "" "~~~\n" "$ git config --global alias.lg \"log --graph\"\n" @@ -8600,7 +9046,7 @@ msgstr "" "you can undo them with:" # code block -#: git-novice/_extras/discuss.md:96 git-novice/_locale/es/_extras/discuss.md:96 +#: git-novice/_extras/discuss.md:96 msgid "" "~~~\n" "$ git config --global --unset alias.lg\n" @@ -8622,7 +9068,8 @@ msgstr "> ## Undoing Git Configuration Changes" #: git-novice/_extras/discuss.md:104 msgid "" ">\n" -"> You can use the `--unset` flag to delete unwanted options from `.gitconfig`.\n" +"> You can use the `--unset` flag to delete unwanted options from `." +"gitconfig`.\n" "> Another way to roll back changes is to store your `.gitconfig` using Git.\n" ">\n" "> For hints on what you might want to configure,\n" @@ -8631,10 +9078,12 @@ msgid "" "> their own Git configuration files.\n" "> Sort them by the number of stars and have a look at the top few.\n" "> If you find some you like,\n" -"> please check that they're covered by an open source license before you clone them." +"> please check that they're covered by an open source license before you " +"clone them." msgstr "" ">\n" -"> You can use the `--unset` flag to delete unwanted options from `.gitconfig`.\n" +"> You can use the `--unset` flag to delete unwanted options from `." +"gitconfig`.\n" "> Another way to roll back changes is to store your `.gitconfig` using Git.\n" ">\n" "> For hints on what you might want to configure,\n" @@ -8643,7 +9092,8 @@ msgstr "" "> their own Git configuration files.\n" "> Sort them by the number of stars and have a look at the top few.\n" "> If you find some you like,\n" -"> please check that they're covered by an open source license before you clone them." +"> please check that they're covered by an open source license before you " +"clone them." # header #: git-novice/_extras/discuss.md:117 @@ -8670,24 +9120,32 @@ msgstr "We will now revisit this in more detail." #: git-novice/_extras/discuss.md:127 msgid "" -"Many people want to version control non-text files, such as images, PDFs and Microsoft Office or LibreOffice documents.\n" -"It is true that Git can handle these filetypes (which fall under the banner of \"binary\" file types).\n" +"Many people want to version control non-text files, such as images, PDFs and " +"Microsoft Office or LibreOffice documents.\n" +"It is true that Git can handle these filetypes (which fall under the banner " +"of \"binary\" file types).\n" "However, just because it *can* be done doesn't mean it *should* be done." msgstr "" -"Many people want to version control non-text files, such as images, PDFs and Microsoft Office or LibreOffice documents.\n" -"It is true that Git can handle these filetypes (which fall under the banner of \"binary\" file types).\n" +"Many people want to version control non-text files, such as images, PDFs and " +"Microsoft Office or LibreOffice documents.\n" +"It is true that Git can handle these filetypes (which fall under the banner " +"of \"binary\" file types).\n" "However, just because it *can* be done doesn't mean it *should* be done." #: git-novice/_extras/discuss.md:131 msgid "" -"Much of Git's magic comes from being able to do line-by-line comparisons (\"diffs\") between files.\n" +"Much of Git's magic comes from being able to do line-by-line comparisons " +"(\"diffs\") between files.\n" "This is generally easy for programming source code and marked up text.\n" -"For non-text files, a diff can usually only detect that the files have changed\n" +"For non-text files, a diff can usually only detect that the files have " +"changed\n" "but can't say how or where." msgstr "" -"Much of Git's magic comes from being able to do line-by-line comparisons (\"diffs\") between files.\n" +"Much of Git's magic comes from being able to do line-by-line comparisons " +"(\"diffs\") between files.\n" "This is generally easy for programming source code and marked up text.\n" -"For non-text files, a diff can usually only detect that the files have changed\n" +"For non-text files, a diff can usually only detect that the files have " +"changed\n" "but can't say how or where." #: git-novice/_extras/discuss.md:136 @@ -8714,7 +9172,6 @@ msgstr "Create a new directory and go into it:" # code block #: git-novice/_extras/discuss.md:145 -#: git-novice/_locale/es/_extras/discuss.md:145 msgid "" "~~~\n" "$ mkdir planets-nontext\n" @@ -8728,23 +9185,28 @@ msgstr "" #: git-novice/_extras/discuss.md:151 msgid "" -"Use a program such as Microsoft Word or LibreOffice Writer to create a new document.\n" +"Use a program such as Microsoft Word or LibreOffice Writer to create a new " +"document.\n" "Enter the same text that we began with before:" msgstr "" -"Use a program such as Microsoft Word or LibreOffice Writer to create a new document.\n" +"Use a program such as Microsoft Word or LibreOffice Writer to create a new " +"document.\n" "Enter the same text that we began with before:" #: git-novice/_extras/discuss.md:159 msgid "" -"Save the document into the `planets-nontext` directory with the name of `mars.doc`.\n" -"Back in the terminal, run the usual commands for setting up a new Git repository:" +"Save the document into the `planets-nontext` directory with the name of " +"`mars.doc`.\n" +"Back in the terminal, run the usual commands for setting up a new Git " +"repository:" msgstr "" -"Save the document into the `planets-nontext` directory with the name of `mars.doc`.\n" -"Back in the terminal, run the usual commands for setting up a new Git repository:" +"Save the document into the `planets-nontext` directory with the name of " +"`mars.doc`.\n" +"Back in the terminal, run the usual commands for setting up a new Git " +"repository:" # code block #: git-novice/_extras/discuss.md:162 -#: git-novice/_locale/es/_extras/discuss.md:162 msgid "" "~~~\n" "$ git init\n" @@ -8759,8 +9221,12 @@ msgstr "" "~~~" #: git-novice/_extras/discuss.md:169 -msgid "Then make the same changes to `mars.doc` that we (or Vlad) previously made to `mars.txt`." -msgstr "Then make the same changes to `mars.doc` that we (or のび太) previously made to `mars.txt`." +msgid "" +"Then make the same changes to `mars.doc` that we (or Vlad) previously made " +"to `mars.txt`." +msgstr "" +"Then make the same changes to `mars.doc` that we (or のび太) previously made " +"to `mars.txt`." #: git-novice/_extras/discuss.md:177 msgid "" @@ -8772,7 +9238,6 @@ msgstr "" # code block #: git-novice/_extras/discuss.md:185 -#: git-novice/_locale/es/_extras/discuss.md:185 msgid "" "~~~\n" "diff --git a/mars.doc b/mars.doc\n" @@ -8800,37 +9265,49 @@ msgstr "" #: git-novice/_extras/discuss.md:208 msgid "" -"An uninformative `git diff` is not the only consequence of using Git on binary files.\n" -"However, most of the other problems boil down to whether or not a good diff is possible." +"An uninformative `git diff` is not the only consequence of using Git on " +"binary files.\n" +"However, most of the other problems boil down to whether or not a good diff " +"is possible." msgstr "" -"An uninformative `git diff` is not the only consequence of using Git on binary files.\n" -"However, most of the other problems boil down to whether or not a good diff is possible." +"An uninformative `git diff` is not the only consequence of using Git on " +"binary files.\n" +"However, most of the other problems boil down to whether or not a good diff " +"is possible." #: git-novice/_extras/discuss.md:211 msgid "" "This isn't to say you should *never* use Git on binary files.\n" "A rule of thumb is that it's OK if the binary file won't change very often,\n" -"and if it does change, you don't care about merging in small differences between versions." +"and if it does change, you don't care about merging in small differences " +"between versions." msgstr "" "This isn't to say you should *never* use Git on binary files.\n" "A rule of thumb is that it's OK if the binary file won't change very often,\n" -"and if it does change, you don't care about merging in small differences between versions." +"and if it does change, you don't care about merging in small differences " +"between versions." #: git-novice/_extras/discuss.md:215 msgid "" "We've already seen how a word processed report will fail this test.\n" "An example that passes the test is a logo for your organization or project.\n" -"Even though a logo will be stored in a binary format such as `jpg` or `png`,\n" -"you can expect it will remain fairly static through the lifetime of your repository.\n" +"Even though a logo will be stored in a binary format such as `jpg` or " +"`png`,\n" +"you can expect it will remain fairly static through the lifetime of your " +"repository.\n" "On the rare occasion that branding does change,\n" -"you will probably just want to replace the logo completely rather than merge little differences in." +"you will probably just want to replace the logo completely rather than merge " +"little differences in." msgstr "" "We've already seen how a word processed report will fail this test.\n" "An example that passes the test is a logo for your organization or project.\n" -"Even though a logo will be stored in a binary format such as `jpg` or `png`,\n" -"you can expect it will remain fairly static through the lifetime of your repository.\n" +"Even though a logo will be stored in a binary format such as `jpg` or " +"`png`,\n" +"you can expect it will remain fairly static through the lifetime of your " +"repository.\n" "On the rare occasion that branding does change,\n" -"you will probably just want to replace the logo completely rather than merge little differences in." +"you will probably just want to replace the logo completely rather than merge " +"little differences in." # header #: git-novice/_extras/discuss.md:222 @@ -8853,7 +9330,6 @@ msgstr "Create a new file for the planet Nibiru:" # code block #: git-novice/_extras/discuss.md:230 -#: git-novice/_locale/es/_extras/discuss.md:230 msgid "" "~~~\n" "$ echo \"This is another name for fake planet X\" > nibiru.txt\n" @@ -8869,7 +9345,6 @@ msgstr "Now add to the repository like you have learned earlier:" # code block #: git-novice/_extras/discuss.md:237 -#: git-novice/_locale/es/_extras/discuss.md:237 msgid "" "~~~\n" "$ git add nibiru.txt\n" @@ -8893,8 +9368,6 @@ msgstr "" # code block #: git-novice/_extras/discuss.md:253 git-novice/_extras/discuss.md:318 -#: git-novice/_locale/es/_extras/discuss.md:253 -#: git-novice/_locale/es/_extras/discuss.md:318 msgid "" "~~~\n" "$ git rm nibiru.txt\n" @@ -8908,8 +9381,6 @@ msgstr "" # code block #: git-novice/_extras/discuss.md:259 git-novice/_extras/discuss.md:324 -#: git-novice/_locale/es/_extras/discuss.md:259 -#: git-novice/_locale/es/_extras/discuss.md:324 msgid "" "~~~\n" "On branch master\n" @@ -8943,7 +9414,6 @@ msgstr "" # code block #: git-novice/_extras/discuss.md:274 -#: git-novice/_locale/es/_extras/discuss.md:274 msgid "" "~~~\n" "$ git commit -m 'Removing info on Nibiru. It is not a real planet!'\n" @@ -8960,19 +9430,22 @@ msgstr "## Removing a File with Unix" #: git-novice/_extras/discuss.md:281 msgid "" -"Sometimes we might forget to remove the file through Git. If you removed the\n" +"Sometimes we might forget to remove the file through Git. If you removed " +"the\n" "file with Unix `rm` instead of using `git rm`, no worries,\n" -"Git is smart enough to notice the missing file. Let us recreate the file and\n" +"Git is smart enough to notice the missing file. Let us recreate the file " +"and\n" "commit it again." msgstr "" -"Sometimes we might forget to remove the file through Git. If you removed the\n" +"Sometimes we might forget to remove the file through Git. If you removed " +"the\n" "file with Unix `rm` instead of using `git rm`, no worries,\n" -"Git is smart enough to notice the missing file. Let us recreate the file and\n" +"Git is smart enough to notice the missing file. Let us recreate the file " +"and\n" "commit it again." # code block #: git-novice/_extras/discuss.md:286 -#: git-novice/_locale/es/_extras/discuss.md:286 msgid "" "~~~\n" "$ echo \"This is another name for fake planet X\" > nibiru.txt\n" @@ -8992,7 +9465,6 @@ msgstr "Now we remove the file with Unix `rm`:" # code block #: git-novice/_extras/discuss.md:295 -#: git-novice/_locale/es/_extras/discuss.md:295 msgid "" "~~~\n" "$ rm nibiru.txt\n" @@ -9006,13 +9478,13 @@ msgstr "" # code block #: git-novice/_extras/discuss.md:301 -#: git-novice/_locale/es/_extras/discuss.md:301 msgid "" "~~~\n" "On branch master\n" "Changes not staged for commit:\n" " (use \"git add/rm ...\" to update what will be committed)\n" -" (use \"git checkout -- ...\" to discard changes in working directory)\n" +" (use \"git checkout -- ...\" to discard changes in working " +"directory)\n" "\n" " deleted: nibiru.txt\n" "\n" @@ -9023,7 +9495,8 @@ msgstr "" "On branch master\n" "Changes not staged for commit:\n" " (use \"git add/rm ...\" to update what will be committed)\n" -" (use \"git checkout -- ...\" to discard changes in working directory)\n" +" (use \"git checkout -- ...\" to discard changes in working " +"directory)\n" "\n" " deleted: nibiru.txt\n" "\n" @@ -9052,7 +9525,6 @@ msgstr "" # code block #: git-novice/_extras/discuss.md:337 -#: git-novice/_locale/es/_extras/discuss.md:337 msgid "" "~~~\n" "$ git commit -m 'Removing info on Nibiru, again!'\n" @@ -9077,7 +9549,6 @@ msgstr "Create a file for the planet Krypton:" # code block #: git-novice/_extras/discuss.md:348 -#: git-novice/_locale/es/_extras/discuss.md:348 msgid "" "~~~\n" "$ echo \"Superman's home planet\" > krypton.txt\n" @@ -9093,7 +9564,6 @@ msgstr "Add it to the repository:" # code block #: git-novice/_extras/discuss.md:355 -#: git-novice/_locale/es/_extras/discuss.md:355 msgid "" "~~~\n" "$ git add krypton.txt\n" @@ -9119,7 +9589,6 @@ msgstr "Rename the file `krypton.txt` to `earth.txt` with Git:" # code block #: git-novice/_extras/discuss.md:366 -#: git-novice/_locale/es/_extras/discuss.md:366 msgid "" "~~~\n" "$ git mv krypton.txt earth.txt\n" @@ -9158,7 +9627,6 @@ msgstr "The final step is commit our change to the repository:" # code block #: git-novice/_extras/discuss.md:383 -#: git-novice/_locale/es/_extras/discuss.md:383 msgid "" "~~~\n" "$ git commit -m 'Superman's home is now Earth'\n" @@ -9189,7 +9657,6 @@ msgstr "" # code block #: git-novice/_extras/discuss.md:396 -#: git-novice/_locale/es/_extras/discuss.md:396 msgid "" "~~~\n" "$ echo \"Superman's home planet\" > krypton.txt\n" @@ -9209,7 +9676,6 @@ msgstr "Let us rename the file and see what Git can figured out by itself:" # code block #: git-novice/_extras/discuss.md:405 -#: git-novice/_locale/es/_extras/discuss.md:405 msgid "" "~~~\n" "$ mv krypton.txt earth.txt\n" @@ -9223,13 +9689,13 @@ msgstr "" # code block #: git-novice/_extras/discuss.md:411 -#: git-novice/_locale/es/_extras/discuss.md:411 msgid "" "~~~\n" "On branch master\n" "Changes not staged for commit:\n" " (use \"git add/rm ...\" to update what will be committed)\n" -" (use \"git checkout -- ...\" to discard changes in working directory)\n" +" (use \"git checkout -- ...\" to discard changes in working " +"directory)\n" "\n" " deleted: krypton.txt\n" "\n" @@ -9245,7 +9711,8 @@ msgstr "" "On branch master\n" "Changes not staged for commit:\n" " (use \"git add/rm ...\" to update what will be committed)\n" -" (use \"git checkout -- ...\" to discard changes in working directory)\n" +" (use \"git checkout -- ...\" to discard changes in working " +"directory)\n" "\n" " deleted: krypton.txt\n" "\n" @@ -9271,7 +9738,6 @@ msgstr "Add those changes to the staging area:" # code block #: git-novice/_extras/discuss.md:433 -#: git-novice/_locale/es/_extras/discuss.md:433 msgid "" "~~~\n" "$ git add krypton.txt earth.txt\n" @@ -9285,7 +9751,6 @@ msgstr "" # code block #: git-novice/_extras/discuss.md:439 -#: git-novice/_locale/es/_extras/discuss.md:439 msgid "" "~~~\n" "On branch master\n" @@ -9319,7 +9784,6 @@ msgstr "The final step, as before, is to commit our change to the repository:" # code block #: git-novice/_extras/discuss.md:454 -#: git-novice/_locale/es/_extras/discuss.md:454 msgid "" "~~~\n" "$ git commit -m 'Superman's home is Earth, told you before.'\n" @@ -9379,18 +9843,30 @@ msgstr " * It's easy to set up" # unordered list #: git-novice/_extras/guide.md:11 -msgid " * Every copy of a Git repository is a full backup of a project and its history" -msgstr " * Every copy of a Git repository is a full backup of a project and its history" +msgid "" +" * Every copy of a Git repository is a full backup of a project and its " +"history" +msgstr "" +" * Every copy of a Git repository is a full backup of a project and its " +"history" # unordered list #: git-novice/_extras/guide.md:12 -msgid " * A few easy-to-remember commands are all you need for most day-to-day version control tasks" -msgstr " * A few easy-to-remember commands are all you need for most day-to-day version control tasks" +msgid "" +" * A few easy-to-remember commands are all you need for most day-to-day " +"version control tasks" +msgstr "" +" * A few easy-to-remember commands are all you need for most day-to-day " +"version control tasks" # unordered list #: git-novice/_extras/guide.md:13 -msgid " * The [GitHub][github] hosting service provides a web-based collaboration service" -msgstr " * The [GitHub][github] hosting service provides a web-based collaboration service" +msgid "" +" * The [GitHub][github] hosting service provides a web-based " +"collaboration service" +msgstr "" +" * The [GitHub][github] hosting service provides a web-based " +"collaboration service" # unordered list #: git-novice/_extras/guide.md:14 @@ -9419,8 +9895,10 @@ msgstr " * No need for a server: easy to set up" # unordered list #: git-novice/_extras/guide.md:19 -msgid " * GitHub's strong community: your colleagues are probably already there" -msgstr " * GitHub's strong community: your colleagues are probably already there" +msgid "" +" * GitHub's strong community: your colleagues are probably already there" +msgstr "" +" * GitHub's strong community: your colleagues are probably already there" # header #: git-novice/_extras/guide.md:21 @@ -9430,13 +9908,17 @@ msgstr "## Overall" #: git-novice/_extras/guide.md:23 msgid "" "Version control might be the most important topic we teach, but Git is\n" -"definitely the most complicated tool. However, GitHub presently dominates the\n" -"open software repository landscape, so the time and effort required to teach\n" +"definitely the most complicated tool. However, GitHub presently dominates " +"the\n" +"open software repository landscape, so the time and effort required to " +"teach\n" "fundamental Git is justified and worthwhile." msgstr "" "Version control might be the most important topic we teach, but Git is\n" -"definitely the most complicated tool. However, GitHub presently dominates the\n" -"open software repository landscape, so the time and effort required to teach\n" +"definitely the most complicated tool. However, GitHub presently dominates " +"the\n" +"open software repository landscape, so the time and effort required to " +"teach\n" "fundamental Git is justified and worthwhile." #: git-novice/_extras/guide.md:28 @@ -9449,10 +9931,12 @@ msgstr "" #: git-novice/_extras/guide.md:31 msgid "" -"Instead we try to convince them that version control is useful for researchers\n" +"Instead we try to convince them that version control is useful for " +"researchers\n" "working in teams or not, because it is" msgstr "" -"Instead we try to convince them that version control is useful for researchers\n" +"Instead we try to convince them that version control is useful for " +"researchers\n" "working in teams or not, because it is" # unordered list @@ -9467,8 +9951,10 @@ msgstr "* a better way to collaborate than mailing files back and forth, and" # unordered list #: git-novice/_extras/guide.md:36 -msgid "* a better way to share your code and other scientific work with the world." -msgstr "* a better way to share your code and other scientific work with the world." +msgid "" +"* a better way to share your code and other scientific work with the world." +msgstr "" +"* a better way to share your code and other scientific work with the world." # header #: git-novice/_extras/guide.md:38 @@ -9477,8 +9963,12 @@ msgstr "## Teaching Notes" # unordered list #: git-novice/_extras/guide.md:40 -msgid "* You can \"split\" your shell so that recent commands remain in view using [this](https://github.com/rgaiacs/swc-shell-split-window) script." -msgstr "* You can \"split\" your shell so that recent commands remain in view using [this](https://github.com/rgaiacs/swc-shell-split-window) script." +msgid "" +"* You can \"split\" your shell so that recent commands remain in view " +"using [this](https://github.com/rgaiacs/swc-shell-split-window) script." +msgstr "" +"* You can \"split\" your shell so that recent commands remain in view " +"using [this](https://github.com/rgaiacs/swc-shell-split-window) script." # unordered list #: git-novice/_extras/guide.md:42 @@ -9487,8 +9977,12 @@ msgstr "* Make sure the network is working *before* starting this lesson." # unordered list #: git-novice/_extras/guide.md:44 -msgid "* Drawings are particularly useful in this lesson: if you have a whiteboard," -msgstr "* Drawings are particularly useful in this lesson: if you have a whiteboard," +msgid "" +"* Drawings are particularly useful in this lesson: if you have a " +"whiteboard," +msgstr "" +"* Drawings are particularly useful in this lesson: if you have a " +"whiteboard," #: git-novice/_extras/guide.md:45 msgid " [use it][drawings]!" @@ -9502,23 +9996,30 @@ msgstr "* Version control is usually not the first subject in a workshop," #: git-novice/_extras/guide.md:48 msgid "" " so get learners to create a GitHub account after the session before.\n" -" Remind learners that the username and email they use for GitHub (and setup\n" +" Remind learners that the username and email they use for GitHub (and " +"setup\n" " during Git configuration) will be viewable to the public by default.\n" -" However, there are many reasons why a learner may not want their personal\n" -" information viewable, and GitHub has [resources for keeping an email address\n" +" However, there are many reasons why a learner may not want their " +"personal\n" +" information viewable, and GitHub has [resources for keeping an email " +"address\n" " private][github-privacy]." msgstr "" " so get learners to create a GitHub account after the session before.\n" -" Remind learners that the username and email they use for GitHub (and setup\n" +" Remind learners that the username and email they use for GitHub (and " +"setup\n" " during Git configuration) will be viewable to the public by default.\n" -" However, there are many reasons why a learner may not want their personal\n" -" information viewable, and GitHub has [resources for keeping an email address\n" +" However, there are many reasons why a learner may not want their " +"personal\n" +" information viewable, and GitHub has [resources for keeping an email " +"address\n" " private][github-privacy]." # unordered list #: git-novice/_extras/guide.md:55 msgid "* If some learners are using Windows, there will inevitably be issues" -msgstr "* If some learners are using Windows, there will inevitably be issues" +msgstr "" +"* If some learners are using Windows, there will inevitably be issues" #: git-novice/_extras/guide.md:56 msgid "" @@ -9538,19 +10039,27 @@ msgstr "" # unordered list #: git-novice/_extras/guide.md:63 -msgid "* We don't use a Git GUI in these notes because we haven't found one that" -msgstr "* We don't use a Git GUI in these notes because we haven't found one that" +msgid "" +"* We don't use a Git GUI in these notes because we haven't found one that" +msgstr "" +"* We don't use a Git GUI in these notes because we haven't found one that" #: git-novice/_extras/guide.md:64 msgid "" -" installs easily and runs reliably on the three major operating systems, and\n" -" because we want learners to understand what commands are being run. That\n" -" said, instructors should demo a GUI on their desktop at some point during\n" +" installs easily and runs reliably on the three major operating systems, " +"and\n" +" because we want learners to understand what commands are being run. " +"That\n" +" said, instructors should demo a GUI on their desktop at some point " +"during\n" " this lesson and point learners at [this page][github-gui]." msgstr "" -" installs easily and runs reliably on the three major operating systems, and\n" -" because we want learners to understand what commands are being run. That\n" -" said, instructors should demo a GUI on their desktop at some point during\n" +" installs easily and runs reliably on the three major operating systems, " +"and\n" +" because we want learners to understand what commands are being run. " +"That\n" +" said, instructors should demo a GUI on their desktop at some point " +"during\n" " this lesson and point learners at [this page][github-gui]." # unordered list @@ -9564,17 +10073,23 @@ msgstr " [DiffMerge][diffmerge]." # unordered list #: git-novice/_extras/guide.md:72 -msgid "* When appropriate, explain that we teach Git rather than CVS, Subversion, or" -msgstr "* When appropriate, explain that we teach Git rather than CVS, Subversion, or" +msgid "" +"* When appropriate, explain that we teach Git rather than CVS, Subversion, " +"or" +msgstr "" +"* When appropriate, explain that we teach Git rather than CVS, Subversion, " +"or" #: git-novice/_extras/guide.md:73 msgid "" " Mercurial primarily because of GitHub's growing popularity: CVS and\n" -" Subversion are now seen as legacy systems, and Mercurial isn't nearly as\n" +" Subversion are now seen as legacy systems, and Mercurial isn't nearly " +"as\n" " widely used in the sciences right now." msgstr "" " Mercurial primarily because of GitHub's growing popularity: CVS and\n" -" Subversion are now seen as legacy systems, and Mercurial isn't nearly as\n" +" Subversion are now seen as legacy systems, and Mercurial isn't nearly " +"as\n" " widely used in the sciences right now." # unordered list @@ -9589,13 +10104,19 @@ msgstr " * [git-it][git-it] is a self-paced command-line Git demo," #: git-novice/_extras/guide.md:79 msgid "" -" with [git-it-electron][git-it-electron] its GitHub Desktop successor.\n" -" * [Code School][code-school] has a free interactive course, [Try Git][try-git].\n" -" * for instructors, [the Git parable][git-parable] is useful background reading" +" with [git-it-electron][git-it-electron] its GitHub Desktop " +"successor.\n" +" * [Code School][code-school] has a free interactive course, [Try Git]" +"[try-git].\n" +" * for instructors, [the Git parable][git-parable] is useful " +"background reading" msgstr "" -" with [git-it-electron][git-it-electron] its GitHub Desktop successor.\n" -" * [Code School][code-school] has a free interactive course, [Try Git][try-git].\n" -" * for instructors, [the Git parable][git-parable] is useful background reading" +" with [git-it-electron][git-it-electron] its GitHub Desktop " +"successor.\n" +" * [Code School][code-school] has a free interactive course, [Try Git]" +"[try-git].\n" +" * for instructors, [the Git parable][git-parable] is useful " +"background reading" # header #: git-novice/_extras/guide.md:83 @@ -9604,8 +10125,12 @@ msgstr "## [Automated Version Control]({{ page.root }}/01-basics/)" # unordered list #: git-novice/_extras/guide.md:85 -msgid "* Ask, \"Who uses 'undo' in their editor?\" All say \"Me\". 'Undo' is the simplest" -msgstr "* Ask, \"Who uses 'undo' in their editor?\" All say \"Me\". 'Undo' is the simplest" +msgid "" +"* Ask, \"Who uses 'undo' in their editor?\" All say \"Me\". 'Undo' is the " +"simplest" +msgstr "" +"* Ask, \"Who uses 'undo' in their editor?\" All say \"Me\". 'Undo' is the " +"simplest" #: git-novice/_extras/guide.md:86 msgid " form of version control." @@ -9613,28 +10138,46 @@ msgstr " form of version control." # unordered list #: git-novice/_extras/guide.md:88 -msgid "* Give learners a five-minute overview of what version control does for them" -msgstr "* Give learners a five-minute overview of what version control does for them" +msgid "" +"* Give learners a five-minute overview of what version control does for " +"them" +msgstr "" +"* Give learners a five-minute overview of what version control does for " +"them" #: git-novice/_extras/guide.md:89 msgid "" " before diving into the watch-and-do practicals. Most of them will have\n" -" tried to co-author papers by emailing files back and forth, or will have\n" -" biked into the office only to realize that the USB key with last night's\n" -" work is still on the kitchen table. Instructors can also make jokes about\n" -" directories with names like \"final version\", \"final version revised\",\n" -" \"final version with reviewer three's corrections\", \"really final version\",\n" -" and, \"come on this really has to be the last version\" to motivate version\n" -" control as a better way to collaborate and as a better way to back work up." +" tried to co-author papers by emailing files back and forth, or will " +"have\n" +" biked into the office only to realize that the USB key with last " +"night's\n" +" work is still on the kitchen table. Instructors can also make jokes " +"about\n" +" directories with names like \"final version\", \"final version revised" +"\",\n" +" \"final version with reviewer three's corrections\", \"really final " +"version\",\n" +" and, \"come on this really has to be the last version\" to motivate " +"version\n" +" control as a better way to collaborate and as a better way to back work " +"up." msgstr "" " before diving into the watch-and-do practicals. Most of them will have\n" -" tried to co-author papers by emailing files back and forth, or will have\n" -" biked into the office only to realize that the USB key with last night's\n" -" work is still on the kitchen table. Instructors can also make jokes about\n" -" directories with names like \"final version\", \"final version revised\",\n" -" \"final version with reviewer three's corrections\", \"really final version\",\n" -" and, \"come on this really has to be the last version\" to motivate version\n" -" control as a better way to collaborate and as a better way to back work up." +" tried to co-author papers by emailing files back and forth, or will " +"have\n" +" biked into the office only to realize that the USB key with last " +"night's\n" +" work is still on the kitchen table. Instructors can also make jokes " +"about\n" +" directories with names like \"final version\", \"final version revised" +"\",\n" +" \"final version with reviewer three's corrections\", \"really final " +"version\",\n" +" and, \"come on this really has to be the last version\" to motivate " +"version\n" +" control as a better way to collaborate and as a better way to back work " +"up." # header #: git-novice/_extras/guide.md:98 @@ -9643,8 +10186,12 @@ msgstr "## [Setting Up Git]({{ page.root }}/02-setup/)" # unordered list #: git-novice/_extras/guide.md:100 -msgid "* We suggest instructors and students use `nano` as the text editor for this" -msgstr "* We suggest instructors and students use `nano` as the text editor for this" +msgid "" +"* We suggest instructors and students use `nano` as the text editor for " +"this" +msgstr "" +"* We suggest instructors and students use `nano` as the text editor for " +"this" #: git-novice/_extras/guide.md:101 msgid " lessons because" @@ -9657,8 +10204,12 @@ msgstr " * it runs in all three major operating systems," # unordered list #: git-novice/_extras/guide.md:104 -msgid " * it runs inside the shell (switching windows can be confusing to students), and" -msgstr " * it runs inside the shell (switching windows can be confusing to students), and" +msgid "" +" * it runs inside the shell (switching windows can be confusing to " +"students), and" +msgstr "" +" * it runs inside the shell (switching windows can be confusing to " +"students), and" # unordered list #: git-novice/_extras/guide.md:105 @@ -9675,15 +10226,19 @@ msgstr "" # unordered list #: git-novice/_extras/guide.md:110 -msgid "* When setting up Git, be very clear what learners have to enter: it is" -msgstr "* When setting up Git, be very clear what learners have to enter: it is" +msgid "" +"* When setting up Git, be very clear what learners have to enter: it is" +msgstr "" +"* When setting up Git, be very clear what learners have to enter: it is" #: git-novice/_extras/guide.md:111 msgid "" -" common for them to edit the instructor's details (e.g. email). Check at\n" +" common for them to edit the instructor's details (e.g. email). Check " +"at\n" " the end using `git config --list`." msgstr "" -" common for them to edit the instructor's details (e.g. email). Check at\n" +" common for them to edit the instructor's details (e.g. email). Check " +"at\n" " the end using `git config --list`." # header @@ -9693,8 +10248,10 @@ msgstr "## [Creating a Repository]({{ page.root }}/03-create/)" # unordered list #: git-novice/_extras/guide.md:116 -msgid "* When you do `git status`, Mac users may see a `.DS_Store` file showing as" -msgstr "* When you do `git status`, Mac users may see a `.DS_Store` file showing as" +msgid "" +"* When you do `git status`, Mac users may see a `.DS_Store` file showing as" +msgstr "" +"* When you do `git status`, Mac users may see a `.DS_Store` file showing as" #: git-novice/_extras/guide.md:117 msgid " untracked. This a file that Mac OS creates in each directory." @@ -9702,28 +10259,40 @@ msgstr " untracked. This a file that Mac OS creates in each directory." # unordered list #: git-novice/_extras/guide.md:119 -msgid "* The challenge \"Places to create repositories\" tries to reinforce the idea" -msgstr "* The challenge \"Places to create repositories\" tries to reinforce the idea" +msgid "" +"* The challenge \"Places to create repositories\" tries to reinforce the " +"idea" +msgstr "" +"* The challenge \"Places to create repositories\" tries to reinforce the " +"idea" #: git-novice/_extras/guide.md:120 msgid "" -" that the `.git` folder contains the whole Git repo and deleting this folder\n" -" undoes a `git init`. It also gives the learner the way to fix the common\n" -" mistake of putting unwanted folders (like `Desktop`) under version control." +" that the `.git` folder contains the whole Git repo and deleting this " +"folder\n" +" undoes a `git init`. It also gives the learner the way to fix the " +"common\n" +" mistake of putting unwanted folders (like `Desktop`) under version " +"control." msgstr "" -" that the `.git` folder contains the whole Git repo and deleting this folder\n" -" undoes a `git init`. It also gives the learner the way to fix the common\n" -" mistake of putting unwanted folders (like `Desktop`) under version control." +" that the `.git` folder contains the whole Git repo and deleting this " +"folder\n" +" undoes a `git init`. It also gives the learner the way to fix the " +"common\n" +" mistake of putting unwanted folders (like `Desktop`) under version " +"control." #: git-novice/_extras/guide.md:124 msgid "" -" Instead of removing the `.git` folder directly, you can choose to move it\n" +" Instead of removing the `.git` folder directly, you can choose to move " +"it\n" " first to a safer directory and remove it from there:" msgstr "" -" Instead of removing the `.git` folder directly, you can choose to move it\n" +" Instead of removing the `.git` folder directly, you can choose to move " +"it\n" " first to a safer directory and remove it from there:" -#: git-novice/_extras/guide.md:127 git-novice/_locale/es/_extras/guide.md:101 +#: git-novice/_extras/guide.md:127 msgid "" " ~~~\n" " $ mv .git temp_git\n" @@ -9739,11 +10308,15 @@ msgstr "" #: git-novice/_extras/guide.md:133 msgid "" -" The challenge suggests that it is a bad idea to create a Git repo inside another repo.\n" -" For more discussion on this topic, please see [this issue][repos-in-repos]." +" The challenge suggests that it is a bad idea to create a Git repo inside " +"another repo.\n" +" For more discussion on this topic, please see [this issue][repos-in-" +"repos]." msgstr "" -" The challenge suggests that it is a bad idea to create a Git repo inside another repo.\n" -" For more discussion on this topic, please see [this issue][repos-in-repos]." +" The challenge suggests that it is a bad idea to create a Git repo inside " +"another repo.\n" +" For more discussion on this topic, please see [this issue][repos-in-" +"repos]." # header #: git-novice/_extras/guide.md:136 @@ -9752,21 +10325,27 @@ msgstr "## [Tracking Changes]({{ page.root }}/04-changes/)" # unordered list #: git-novice/_extras/guide.md:138 -msgid "* It's important that learners do a full commit cycle by themselves (make" -msgstr "* It's important that learners do a full commit cycle by themselves (make" +msgid "" +"* It's important that learners do a full commit cycle by themselves (make" +msgstr "" +"* It's important that learners do a full commit cycle by themselves (make" #: git-novice/_extras/guide.md:139 msgid "" -" changes, `git diff`, `git add`, and `git commit`). The \"`bio` repository\"\n" +" changes, `git diff`, `git add`, and `git commit`). The \"`bio` repository" +"\"\n" " challenge does that." msgstr "" -" changes, `git diff`, `git add`, and `git commit`). The \"`bio` repository\"\n" +" changes, `git diff`, `git add`, and `git commit`). The \"`bio` repository" +"\"\n" " challenge does that." # unordered list #: git-novice/_extras/guide.md:142 -msgid "* This is a good moment to show a diff with a graphical diff tool. If you" -msgstr "* This is a good moment to show a diff with a graphical diff tool. If you" +msgid "" +"* This is a good moment to show a diff with a graphical diff tool. If you" +msgstr "" +"* This is a good moment to show a diff with a graphical diff tool. If you" #: git-novice/_extras/guide.md:143 msgid " skip it because you're short on time, show it once in GitHub." @@ -9774,29 +10353,39 @@ msgstr " skip it because you're short on time, show it once in GitHub." # unordered list #: git-novice/_extras/guide.md:145 -msgid "* One thing may cause confusion is recovering old versions. If, instead of" -msgstr "* One thing may cause confusion is recovering old versions. If, instead of" +msgid "" +"* One thing may cause confusion is recovering old versions. If, instead of" +msgstr "" +"* One thing may cause confusion is recovering old versions. If, instead of" #: git-novice/_extras/guide.md:146 msgid "" " doing `$ git checkout f22b25e mars.txt`, someone does `$ git checkout\n" -" f22b25e`, they wind up in the \"detached HEAD\" state and confusion abounds.\n" -" It's then possible to keep on committing, but things like `git push origin\n" -" master` a bit later will not give easily comprehensible results. It also\n" +" f22b25e`, they wind up in the \"detached HEAD\" state and confusion " +"abounds.\n" +" It's then possible to keep on committing, but things like `git push " +"origin\n" +" master` a bit later will not give easily comprehensible results. It " +"also\n" " makes it look like commits can be lost. To \"re-attach\" HEAD, use\n" " `git checkout master`." msgstr "" " doing `$ git checkout f22b25e mars.txt`, someone does `$ git checkout\n" -" f22b25e`, they wind up in the \"detached HEAD\" state and confusion abounds.\n" -" It's then possible to keep on committing, but things like `git push origin\n" -" master` a bit later will not give easily comprehensible results. It also\n" +" f22b25e`, they wind up in the \"detached HEAD\" state and confusion " +"abounds.\n" +" It's then possible to keep on committing, but things like `git push " +"origin\n" +" master` a bit later will not give easily comprehensible results. It " +"also\n" " makes it look like commits can be lost. To \"re-attach\" HEAD, use\n" " `git checkout master`." # unordered list #: git-novice/_extras/guide.md:153 -msgid "* This is a good moment to show a log within a Git GUI. If you skip it" -msgstr "* This is a good moment to show a log within a Git GUI. If you skip it" +msgid "" +"* This is a good moment to show a log within a Git GUI. If you skip it" +msgstr "" +"* This is a good moment to show a log within a Git GUI. If you skip it" #: git-novice/_extras/guide.md:154 msgid " because you're short on time, show it once in GitHub." @@ -9809,10 +10398,12 @@ msgstr "## [Ignoring Things]({{ page.root }}/06-ignore/)" #: git-novice/_extras/guide.md:158 msgid "" -"Just remember that you can use wildcards and regular expressions to ignore a\n" +"Just remember that you can use wildcards and regular expressions to ignore " +"a\n" "particular set of files in `.gitignore`." msgstr "" -"Just remember that you can use wildcards and regular expressions to ignore a\n" +"Just remember that you can use wildcards and regular expressions to ignore " +"a\n" "particular set of files in `.gitignore`." # header @@ -9822,38 +10413,52 @@ msgstr "## [Remotes in GitHub]({{ page.root }}/07-github/)" # unordered list #: git-novice/_extras/guide.md:163 -msgid "* Make it clear that Git and GitHub are not the same thing: Git is an open" -msgstr "* Make it clear that Git and GitHub are not the same thing: Git is an open" +msgid "" +"* Make it clear that Git and GitHub are not the same thing: Git is an open" +msgstr "" +"* Make it clear that Git and GitHub are not the same thing: Git is an open" #: git-novice/_extras/guide.md:164 msgid "" " source version control tool, GitHub is a company that hosts Git\n" -" repositories in the web and provides a web interface to interact with repos\n" +" repositories in the web and provides a web interface to interact with " +"repos\n" " they host." msgstr "" " source version control tool, GitHub is a company that hosts Git\n" -" repositories in the web and provides a web interface to interact with repos\n" +" repositories in the web and provides a web interface to interact with " +"repos\n" " they host." # unordered list #: git-novice/_extras/guide.md:168 -msgid "* If your learners are advanced enough to be comfortable with SSH, tell them" -msgstr "* If your learners are advanced enough to be comfortable with SSH, tell them" +msgid "" +"* If your learners are advanced enough to be comfortable with SSH, tell " +"them" +msgstr "" +"* If your learners are advanced enough to be comfortable with SSH, tell " +"them" #: git-novice/_extras/guide.md:169 msgid "" -" they can use keys to authenticate on GitHub instead of passwords, but don't\n" -" try to set this up during class: it takes too long, and is a distraction\n" +" they can use keys to authenticate on GitHub instead of passwords, but " +"don't\n" +" try to set this up during class: it takes too long, and is a " +"distraction\n" " from the core ideas of the lesson." msgstr "" -" they can use keys to authenticate on GitHub instead of passwords, but don't\n" -" try to set this up during class: it takes too long, and is a distraction\n" +" they can use keys to authenticate on GitHub instead of passwords, but " +"don't\n" +" try to set this up during class: it takes too long, and is a " +"distraction\n" " from the core ideas of the lesson." # unordered list #: git-novice/_extras/guide.md:173 -msgid "* It is very useful to draw a diagram showing the different repositories" -msgstr "* It is very useful to draw a diagram showing the different repositories" +msgid "" +"* It is very useful to draw a diagram showing the different repositories" +msgstr "" +"* It is very useful to draw a diagram showing the different repositories" #: git-novice/_extras/guide.md:174 msgid " involved." @@ -9871,93 +10476,129 @@ msgstr "* Decide in advance whether all the learners will work in one shared" #: git-novice/_extras/guide.md:179 msgid "" -" repository, or whether they will work in pairs (or other small groups) in\n" +" repository, or whether they will work in pairs (or other small groups) " +"in\n" " separate repositories. The former is easier to set up; the latter runs\n" " more smoothly." msgstr "" -" repository, or whether they will work in pairs (or other small groups) in\n" +" repository, or whether they will work in pairs (or other small groups) " +"in\n" " separate repositories. The former is easier to set up; the latter runs\n" " more smoothly." # unordered list #: git-novice/_extras/guide.md:183 -msgid "* Role playing between two instructors can be effective when teaching the" -msgstr "* Role playing between two instructors can be effective when teaching the" +msgid "" +"* Role playing between two instructors can be effective when teaching the" +msgstr "" +"* Role playing between two instructors can be effective when teaching the" #: git-novice/_extras/guide.md:184 msgid "" -" collaboration and conflict sections of the lesson. One instructor can play\n" -" the role of the repository owner, while the second instructor can play the\n" -" role of the collaborator. If it is possible, try to use two projectors so\n" -" that the computer screens of both instructors can be seen. This makes for\n" +" collaboration and conflict sections of the lesson. One instructor can " +"play\n" +" the role of the repository owner, while the second instructor can play " +"the\n" +" role of the collaborator. If it is possible, try to use two projectors " +"so\n" +" that the computer screens of both instructors can be seen. This makes " +"for\n" " a very clear illustration to the students as to who does what." msgstr "" -" collaboration and conflict sections of the lesson. One instructor can play\n" -" the role of the repository owner, while the second instructor can play the\n" -" role of the collaborator. If it is possible, try to use two projectors so\n" -" that the computer screens of both instructors can be seen. This makes for\n" +" collaboration and conflict sections of the lesson. One instructor can " +"play\n" +" the role of the repository owner, while the second instructor can play " +"the\n" +" role of the collaborator. If it is possible, try to use two projectors " +"so\n" +" that the computer screens of both instructors can be seen. This makes " +"for\n" " a very clear illustration to the students as to who does what." # unordered list #: git-novice/_extras/guide.md:190 -msgid "* It is also effective to pair up students during this lesson and assign one" -msgstr "* It is also effective to pair up students during this lesson and assign one" +msgid "" +"* It is also effective to pair up students during this lesson and assign " +"one" +msgstr "" +"* It is also effective to pair up students during this lesson and assign " +"one" #: git-novice/_extras/guide.md:191 msgid "" -" member of the pair to take the role of the owner and the other the role of\n" +" member of the pair to take the role of the owner and the other the role " +"of\n" " the collaborator. In this setup, challenges can include asking the\n" -" collaborator to make a change, commit it, and push the change to the remote\n" +" collaborator to make a change, commit it, and push the change to the " +"remote\n" " repository so that the owner can then retrieve it, and vice-versa. The\n" " role playing between the instructors can get a bit \"dramatic\" in the\n" -" conflicts part of the lesson if the instructors want to inject some humor\n" +" conflicts part of the lesson if the instructors want to inject some " +"humor\n" " into the room." msgstr "" -" member of the pair to take the role of the owner and the other the role of\n" +" member of the pair to take the role of the owner and the other the role " +"of\n" " the collaborator. In this setup, challenges can include asking the\n" -" collaborator to make a change, commit it, and push the change to the remote\n" +" collaborator to make a change, commit it, and push the change to the " +"remote\n" " repository so that the owner can then retrieve it, and vice-versa. The\n" " role playing between the instructors can get a bit \"dramatic\" in the\n" -" conflicts part of the lesson if the instructors want to inject some humor\n" +" conflicts part of the lesson if the instructors want to inject some " +"humor\n" " into the room." # unordered list #: git-novice/_extras/guide.md:199 -msgid "* If you don't have two projectors, have two instructors at the front of the" -msgstr "* If you don't have two projectors, have two instructors at the front of the" +msgid "" +"* If you don't have two projectors, have two instructors at the front of " +"the" +msgstr "" +"* If you don't have two projectors, have two instructors at the front of " +"the" #: git-novice/_extras/guide.md:200 msgid "" -" room. Each instructor does their piece of the collaboration demonstration\n" +" room. Each instructor does their piece of the collaboration " +"demonstration\n" " on their own computer and then passes the projector cord back and forth\n" -" with the other instructor when it's time for them to do the other part of\n" +" with the other instructor when it's time for them to do the other part " +"of\n" " the collaborative workflow. It takes less than 10 seconds for each\n" " switchover, so it doesn't interrupt the flow of the lesson.\n" -" And of course it helps to give each of the instructors a different-colored\n" +" And of course it helps to give each of the instructors a different-" +"colored\n" " hat, or put different-colored sticky notes on their foreheads." msgstr "" -" room. Each instructor does their piece of the collaboration demonstration\n" +" room. Each instructor does their piece of the collaboration " +"demonstration\n" " on their own computer and then passes the projector cord back and forth\n" -" with the other instructor when it's time for them to do the other part of\n" +" with the other instructor when it's time for them to do the other part " +"of\n" " the collaborative workflow. It takes less than 10 seconds for each\n" " switchover, so it doesn't interrupt the flow of the lesson.\n" -" And of course it helps to give each of the instructors a different-colored\n" +" And of course it helps to give each of the instructors a different-" +"colored\n" " hat, or put different-colored sticky notes on their foreheads." # unordered list #: git-novice/_extras/guide.md:208 -msgid "* If you're the only instructor, the best way to create is clone the two" -msgstr "* If you're the only instructor, the best way to create is clone the two" +msgid "" +"* If you're the only instructor, the best way to create is clone the two" +msgstr "" +"* If you're the only instructor, the best way to create is clone the two" #: git-novice/_extras/guide.md:209 msgid "" -" repos in your Desktop, but under different names, e.g., pretend one is your\n" +" repos in your Desktop, but under different names, e.g., pretend one is " +"your\n" " computer at work:" msgstr "" -" repos in your Desktop, but under different names, e.g., pretend one is your\n" +" repos in your Desktop, but under different names, e.g., pretend one is " +"your\n" " computer at work:" -#: git-novice/_extras/guide.md:212 git-novice/_locale/es/_extras/guide.md:157 +#: git-novice/_extras/guide.md:212 msgid "" " ~~~\n" " $ git clone https://github.com/vlad/planets.git planets-at-work\n" @@ -9971,8 +10612,10 @@ msgstr "" # unordered list #: git-novice/_extras/guide.md:217 -msgid "* It's very common that learners mistype the remote alias or the remote URL" -msgstr "* It's very common that learners mistype the remote alias or the remote URL" +msgid "" +"* It's very common that learners mistype the remote alias or the remote URL" +msgstr "" +"* It's very common that learners mistype the remote alias or the remote URL" #: git-novice/_extras/guide.md:218 msgid "" @@ -9988,27 +10631,33 @@ msgstr "" # unordered list #: git-novice/_extras/guide.md:223 -msgid "* Before cloning the repo, be sure that nobody is inside another repo. The" -msgstr "* Before cloning the repo, be sure that nobody is inside another repo. The" +msgid "" +"* Before cloning the repo, be sure that nobody is inside another repo. The" +msgstr "" +"* Before cloning the repo, be sure that nobody is inside another repo. The" #: git-novice/_extras/guide.md:224 msgid "" -" best way to achieve this is moving to the `Desktop` before cloning: `cd &&\n" +" best way to achieve this is moving to the `Desktop` before cloning: `cd " +"&&\n" " cd Desktop`." msgstr "" -" best way to achieve this is moving to the `Desktop` before cloning: `cd &&\n" +" best way to achieve this is moving to the `Desktop` before cloning: `cd " +"&&\n" " cd Desktop`." # unordered list #: git-novice/_extras/guide.md:227 -msgid "* If both repos are in the `Desktop`, have them to clone their collaborator" -msgstr "* If both repos are in the `Desktop`, have them to clone their collaborator" +msgid "" +"* If both repos are in the `Desktop`, have them to clone their collaborator" +msgstr "" +"* If both repos are in the `Desktop`, have them to clone their collaborator" #: git-novice/_extras/guide.md:228 msgid " repo under a given directory using a second argument:" msgstr " repo under a given directory using a second argument:" -#: git-novice/_extras/guide.md:230 git-novice/_locale/es/_extras/guide.md:173 +#: git-novice/_extras/guide.md:230 msgid "" " ~~~\n" " $ git clone https://github.com/vlad/planets.git vlad-planet\n" @@ -10022,8 +10671,10 @@ msgstr "" # unordered list #: git-novice/_extras/guide.md:235 -msgid "* The most common mistake is that learners `push` before `pull`ing. If they" -msgstr "* The most common mistake is that learners `push` before `pull`ing. If they" +msgid "" +"* The most common mistake is that learners `push` before `pull`ing. If they" +msgstr "" +"* The most common mistake is that learners `push` before `pull`ing. If they" #: git-novice/_extras/guide.md:236 msgid " `pull` afterward, they may get a conflict." @@ -10031,8 +10682,12 @@ msgstr " `pull` afterward, they may get a conflict." # unordered list #: git-novice/_extras/guide.md:238 -msgid "* Conflicts, sometimes weird, will start to arise. Stay tight: conflicts are" -msgstr "* Conflicts, sometimes weird, will start to arise. Stay tight: conflicts are" +msgid "" +"* Conflicts, sometimes weird, will start to arise. Stay tight: conflicts " +"are" +msgstr "" +"* Conflicts, sometimes weird, will start to arise. Stay tight: conflicts " +"are" #: git-novice/_extras/guide.md:239 msgid " next." @@ -10045,8 +10700,12 @@ msgstr "## [Conflicts]({{ page.root }}/09-conflict/)" # unordered list #: git-novice/_extras/guide.md:243 -msgid "* Expect the learners to make mistakes. Expect *yourself* to make mistakes. This" -msgstr "* Expect the learners to make mistakes. Expect *yourself* to make mistakes. This" +msgid "" +"* Expect the learners to make mistakes. Expect *yourself* to make " +"mistakes. This" +msgstr "" +"* Expect the learners to make mistakes. Expect *yourself* to make " +"mistakes. This" #: git-novice/_extras/guide.md:244 msgid " happens because it is late in the lesson and everyone is tired." @@ -10054,32 +10713,46 @@ msgstr " happens because it is late in the lesson and everyone is tired." # unordered list #: git-novice/_extras/guide.md:246 -msgid "* If you're the only instructor, the best way to create a conflict is:" -msgstr "* If you're the only instructor, the best way to create a conflict is:" +msgid "" +"* If you're the only instructor, the best way to create a conflict is:" +msgstr "" +"* If you're the only instructor, the best way to create a conflict is:" # unordered list #: git-novice/_extras/guide.md:248 -msgid " * Clone your repo in a different directory, pretending is your computer at" -msgstr " * Clone your repo in a different directory, pretending is your computer at" +msgid "" +" * Clone your repo in a different directory, pretending is your " +"computer at" +msgstr "" +" * Clone your repo in a different directory, pretending is your " +"computer at" #: git-novice/_extras/guide.md:249 msgid "" -" work: `git clone https://github.com/vlad/planets.git planets-at-work`.\n" +" work: `git clone https://github.com/vlad/planets.git planets-at-" +"work`.\n" " * At the office, you make a change, commit and push.\n" -" * At your laptop repo, you (forget to pull and) make a change, commit and\n" +" * At your laptop repo, you (forget to pull and) make a change, commit " +"and\n" " try to push.\n" " * `git pull` now and show the conflict." msgstr "" -" work: `git clone https://github.com/nobita/planets.git planets-at-work`.\n" +" work: `git clone https://github.com/nobita/planets.git planets-at-" +"work`.\n" " * At the office, you make a change, commit and push.\n" -" * At your laptop repo, you (forget to pull and) make a change, commit and\n" +" * At your laptop repo, you (forget to pull and) make a change, commit " +"and\n" " try to push.\n" " * `git pull` now and show the conflict." # unordered list #: git-novice/_extras/guide.md:255 -msgid "* Learners usually forget to `git add` the file after fixing the conflict and" -msgstr "* Learners usually forget to `git add` the file after fixing the conflict and" +msgid "" +"* Learners usually forget to `git add` the file after fixing the conflict " +"and" +msgstr "" +"* Learners usually forget to `git add` the file after fixing the conflict " +"and" #: git-novice/_extras/guide.md:256 msgid " just (try to) commit. You can diagnose this with `git status`." @@ -10092,13 +10765,17 @@ msgstr "* Remember that you can discard one of the two parents of the merge:" # unordered list #: git-novice/_extras/guide.md:260 -msgid " * discard the remote file, `git checkout --ours conflicted_file.txt`" -msgstr " * discard the remote file, `git checkout --ours conflicted_file.txt`" +msgid "" +" * discard the remote file, `git checkout --ours conflicted_file.txt`" +msgstr "" +" * discard the remote file, `git checkout --ours conflicted_file.txt`" # unordered list #: git-novice/_extras/guide.md:261 -msgid " * discard the local file, `git checkout --theirs conflicted_file.txt`" -msgstr " * discard the local file, `git checkout --theirs conflicted_file.txt`" +msgid "" +" * discard the local file, `git checkout --theirs conflicted_file.txt`" +msgstr "" +" * discard the local file, `git checkout --theirs conflicted_file.txt`" #: git-novice/_extras/guide.md:263 msgid "" @@ -10121,17 +10798,21 @@ msgstr "## [Licensing]({{ page.root }}/11-licensing/)" #: git-novice/_extras/guide.md:270 msgid "" "We teach about licensing because questions about who owns what, or can use\n" -"what, arise naturally once we start talking about using public services like\n" -"GitHub to store files. Also, the discussion gives learners a chance to catch\n" +"what, arise naturally once we start talking about using public services " +"like\n" +"GitHub to store files. Also, the discussion gives learners a chance to " +"catch\n" "their breath after what is often a frustrating couple of hours." msgstr "" "We teach about licensing because questions about who owns what, or can use\n" -"what, arise naturally once we start talking about using public services like\n" -"GitHub to store files. Also, the discussion gives learners a chance to catch\n" +"what, arise naturally once we start talking about using public services " +"like\n" +"GitHub to store files. Also, the discussion gives learners a chance to " +"catch\n" "their breath after what is often a frustrating couple of hours." # header -#: git-novice/_extras/guide.md:275 git-novice/_locale/es/_extras/guide.md:214 +#: git-novice/_extras/guide.md:275 msgid "## [Citation]({{ page.root }}/12-citation/)" msgstr "## [Citation]({{ page.root }}/12-citation/)" @@ -10159,11 +10840,14 @@ msgid "" "[drawings]: https://marklodato.github.io/visual-git-guide/index-en.html\n" "[git-it]: https://github.com/jlord/git-it\n" "[git-it-electron]: https://github.com/jlord/git-it-electron\n" -"[git-parable]: http://tom.preston-werner.com/2009/05/19/the-git-parable.html\n" +"[git-parable]: http://tom.preston-werner.com/2009/05/19/the-git-parable." +"html\n" "[github]: https://github.com/\n" "[github-gui]: https://git-scm.com/downloads/guis\n" -"[github-line-endings]: https://help.github.com/articles/dealing-with-line-endings/#platform-all\n" -"[github-privacy]: https://help.github.com/articles/keeping-your-email-address-private/\n" +"[github-line-endings]: https://help.github.com/articles/dealing-with-line-" +"endings/#platform-all\n" +"[github-privacy]: https://help.github.com/articles/keeping-your-email-" +"address-private/\n" "[repos-in-repos]: https://github.com/swcarpentry/git-novice/issues/272\n" "[try-git]: https://try.github.io" msgstr "" @@ -10172,6558 +10856,62 @@ msgstr "" "[drawings]: https://marklodato.github.io/visual-git-guide/index-en.html\n" "[git-it]: https://github.com/jlord/git-it\n" "[git-it-electron]: https://github.com/jlord/git-it-electron\n" -"[git-parable]: http://tom.preston-werner.com/2009/05/19/the-git-parable.html\n" +"[git-parable]: http://tom.preston-werner.com/2009/05/19/the-git-parable." +"html\n" "[github]: https://github.com/\n" "[github-gui]: https://git-scm.com/downloads/guis\n" -"[github-line-endings]: https://help.github.com/articles/dealing-with-line-endings/#platform-all\n" -"[github-privacy]: https://help.github.com/articles/keeping-your-email-address-private/\n" +"[github-line-endings]: https://help.github.com/articles/dealing-with-line-" +"endings/#platform-all\n" +"[github-privacy]: https://help.github.com/articles/keeping-your-email-" +"address-private/\n" "[repos-in-repos]: https://github.com/swcarpentry/git-novice/issues/272\n" "[try-git]: https://try.github.io" # Front Matter -#: git-novice/_locale/es/CODE_OF_CONDUCT.md:1 +#: git-novice/aio.md:1 msgid "" "---\n" -"layout: page\n" -"title: \"Contributor Code of Conduct\"\n" -"permalink: /es/conduct/\n" +"layout: page \n" +"permalink: /aio/\n" "---" msgstr "" "---\n" -"layout: page\n" -"title: \"Contributor Code of Conduct\"\n" -"permalink: /es/conduct/\n" +"layout: page \n" +"permalink: /aio/\n" "---" -# header -#: git-novice/_locale/es/CONTRIBUTING.md:1 -msgid "# Contribuyendo" -msgstr "# Contribuyendo" - -#: git-novice/_locale/es/CONTRIBUTING.md:3 -msgid "" -"[Software Carpentry][swc-site] y [Data Carpentry][dc-site] son ​\n" -"proyectos de código abierto, y damos la bienvenida a contribuciones \n" -"de todo tipo: nuevas lecciones, correcciones al material existente, \n" -"informes de errores, y revisiones de cambios propuestos son todas\n" -"bienvenidas." -msgstr "" -"[Software Carpentry][swc-site] y [Data Carpentry][dc-site] son ​\n" -"proyectos de código abierto, y damos la bienvenida a contribuciones \n" -"de todo tipo: nuevas lecciones, correcciones al material existente, \n" -"informes de errores, y revisiones de cambios propuestos son todas\n" -"bienvenidas." - -# header -#: git-novice/_locale/es/CONTRIBUTING.md:9 -msgid "## Acuerdo de Colaboración" -msgstr "## Acuerdo de Colaboración" - -#: git-novice/_locale/es/CONTRIBUTING.md:11 -msgid "" -"Al contribuir, aceptas que podemos redistribuir tu trabajo bajo\n" -"[nuestra licencia](LICENCIA.md). A cambio, abordaremos tus problemas \n" -"y/o evaluaremos tu propuesta de cambio tan pronto como podamos, y \n" -"te ayudaremos a convertirte en miembro de nuestra comunidad. Todos los \n" -"involucrados en [Software Carpentry][swc-site] y \n" -"[Data Carpentry][dc-site]\n" -"aceptan cumplir con nuestro [código de conducta](CONDUCT.md)." -msgstr "" -"Al contribuir, aceptas que podemos redistribuir tu trabajo bajo\n" -"[nuestra licencia](LICENCIA.md). A cambio, abordaremos tus problemas \n" -"y/o evaluaremos tu propuesta de cambio tan pronto como podamos, y \n" -"te ayudaremos a convertirte en miembro de nuestra comunidad. Todos los \n" -"involucrados en [Software Carpentry][swc-site] y \n" -"[Data Carpentry][dc-site]\n" -"aceptan cumplir con nuestro [código de conducta](CONDUCT.md)." - -# header -#: git-novice/_locale/es/CONTRIBUTING.md:19 -msgid "## Cómo contribuir" -msgstr "## Cómo contribuir" - -#: git-novice/_locale/es/CONTRIBUTING.md:21 +# inline html +#: git-novice/aio.md:5 msgid "" -"La forma más fácil de comenzar es presentar un problema para \n" -"poder corregirlo, como un error ortográfico, algunas palabras no claras,\n" -"o un error fáctico. Contribuir es una buena forma de presentarte \n" -"y conocer a algunos de los miembros de nuestra comunidad." -msgstr "" -"La forma más fácil de comenzar es presentar un problema para \n" -"poder corregirlo, como un error ortográfico, algunas palabras no claras,\n" -"o un error fáctico. Contribuir es una buena forma de presentarte \n" -"y conocer a algunos de los miembros de nuestra comunidad." - -# ordered list -#: git-novice/_locale/es/CONTRIBUTING.md:26 -msgid "1. Si no tienes una cuenta de [GitHub][github]," -msgstr "1. Si no tienes una cuenta de [GitHub][github]," - -#: git-novice/_locale/es/CONTRIBUTING.md:27 -msgid " puedes [enviarnos comentarios por correo electrónico][contacto]. Sin embargo, podremos responder más rápidamente si usas uno de los otros métodos descritos a continuación." -msgstr " puedes [enviarnos comentarios por correo electrónico][contacto]. Sin embargo, podremos responder más rápidamente si usas uno de los otros métodos descritos a continuación." - -# ordered list -#: git-novice/_locale/es/CONTRIBUTING.md:29 -msgid "2. Si tienes una cuenta de[GitHub][github]," -msgstr "2. Si tienes una cuenta de[GitHub][github]," - -#: git-novice/_locale/es/CONTRIBUTING.md:30 -msgid " o estás dispuesto a [crear una][github-join], pero no sabes como usar git, puedes informar de problemas o sugerir mejoras al [crear un problema o **issue**][nuevo-problema]. Esto nos permite asignar la tarea a alguien y responderle en un hilo de discusión." -msgstr " o estás dispuesto a [crear una][github-join], pero no sabes como usar git, puedes informar de problemas o sugerir mejoras al [crear un problema o **issue**][nuevo-problema]. Esto nos permite asignar la tarea a alguien y responderle en un hilo de discusión." - -# ordered list -#: git-novice/_locale/es/CONTRIBUTING.md:32 -msgid "3. Si te sientes cómodo con Git," -msgstr "3. Si te sientes cómodo con Git," - -#: git-novice/_locale/es/CONTRIBUTING.md:33 -msgid " y te gustaría agregar o cambiar material, puedes enviar una solicitud de inclusión o **pull request** (PR). Las instrucciones para hacerlo [se incluyen a continuación](#using-github)." -msgstr " y te gustaría agregar o cambiar material, puedes enviar una solicitud de inclusión o **pull request** (PR). Las instrucciones para hacerlo [se incluyen a continuación](#using-github)." - -# header -#: git-novice/_locale/es/CONTRIBUTING.md:35 -msgid "## Donde Contribuir" -msgstr "## Donde Contribuir" - -# ordered list -#: git-novice/_locale/es/CONTRIBUTING.md:37 -msgid "1. Si deseas cambiar esta lección," -msgstr "1. Si deseas cambiar esta lección," - -#: git-novice/_locale/es/CONTRIBUTING.md:38 -msgid " por favor trabaja en , que se puede ver en ." -msgstr " por favor trabaja en , que se puede ver en ." - -# ordered list -#: git-novice/_locale/es/CONTRIBUTING.md:40 -msgid "2. Si deseas cambiar la lección de ejemplo," -msgstr "2. Si deseas cambiar la lección de ejemplo," - -#: git-novice/_locale/es/CONTRIBUTING.md:41 -msgid " por favor trabaja en , que documenta el formato de nuestras lecciones y se puede ver en ." -msgstr " por favor trabaja en , que documenta el formato de nuestras lecciones y se puede ver en ." - -# ordered list -#: git-novice/_locale/es/CONTRIBUTING.md:43 -msgid "3. Si deseas cambiar la plantilla utilizada para los sitios web del taller," -msgstr "3. Si deseas cambiar la plantilla utilizada para los sitios web del taller," - -#: git-novice/_locale/es/CONTRIBUTING.md:44 -msgid " por favor trabaja en . La página de inicio de ese repositorio explica cómo configurar los sitios web de los talleres, mientras que las páginas adicionales en proporcionan más información sobre nuestros criterios de diseño." -msgstr " por favor trabaja en . La página de inicio de ese repositorio explica cómo configurar los sitios web de los talleres, mientras que las páginas adicionales en proporcionan más información sobre nuestros criterios de diseño." - -# ordered list -#: git-novice/_locale/es/CONTRIBUTING.md:46 -msgid "4. Si deseas cambiar los archivos de estilo CSS, herramientas," -msgstr "4. Si deseas cambiar los archivos de estilo CSS, herramientas," - -#: git-novice/_locale/es/CONTRIBUTING.md:47 -msgid " o texto estándar HTML para lecciones o talleres almacenados en `_includes` o` _layouts`, por favor trabaja en ." -msgstr " o texto estándar HTML para lecciones o talleres almacenados en `_includes` o` _layouts`, por favor trabaja en ." - -# header -#: git-novice/_locale/es/CONTRIBUTING.md:49 -msgid "## Qué aportar" -msgstr "## Qué aportar" - -#: git-novice/_locale/es/CONTRIBUTING.md:51 -msgid "" -"Hay muchas maneras de contribuir, desde escribir nuevos ejercicios y\n" -"mejorar los existentes hasta actualizar o completar la documentación y\n" -"enviando [informes de error o **issues**][nuevo-problema] sobre cosas que no\n" -"funcionan, no son claras o faltan. Si estás buscando ideas, por favor\n" -"revisa [la lista de problemas para este repositorio][issues], o la de los \n" -"problemas de los proyectos [Data Carpentry][dc-issues] y \n" -"[Software Carpentry][swc-issues]." -msgstr "" -"Hay muchas maneras de contribuir, desde escribir nuevos ejercicios y\n" -"mejorar los existentes hasta actualizar o completar la documentación y\n" -"enviando [informes de error o **issues**][nuevo-problema] sobre cosas que no\n" -"funcionan, no son claras o faltan. Si estás buscando ideas, por favor\n" -"revisa [la lista de problemas para este repositorio][issues], o la de los \n" -"problemas de los proyectos [Data Carpentry][dc-issues] y \n" -"[Software Carpentry][swc-issues]." - -#: git-novice/_locale/es/CONTRIBUTING.md:59 -msgid "" -"Los comentarios sobre problemas y revisiones de solicitudes de\n" -"inclusión son igualmente bienvenidos: somos más inteligentes juntos\n" -"que por nuestra cuenta. Los comentarios de principiantes y recién \n" -"llegados son particularmente valiosos: es fácil para las personas\n" -"que han estado usando estas lecciones por un tiempo, olvidar lo \n" -"impenetrable que puede ser parte de este material, por lo que los \n" -"ojos frescos son siempre bienvenidos." -msgstr "" -"Los comentarios sobre problemas y revisiones de solicitudes de\n" -"inclusión son igualmente bienvenidos: somos más inteligentes juntos\n" -"que por nuestra cuenta. Los comentarios de principiantes y recién \n" -"llegados son particularmente valiosos: es fácil para las personas\n" -"que han estado usando estas lecciones por un tiempo, olvidar lo \n" -"impenetrable que puede ser parte de este material, por lo que los \n" -"ojos frescos son siempre bienvenidos." - -# header -#: git-novice/_locale/es/CONTRIBUTING.md:67 -msgid "## Qué *No* contribuir" -msgstr "## Qué *No* contribuir" - -#: git-novice/_locale/es/CONTRIBUTING.md:69 -msgid "" -"Nuestras lecciones ya contienen más material de lo que podemos cubrir\n" -"en un taller típico, por lo que usualmente *no* buscamos más \n" -"conceptos o herramientas para agregarles. Como regla general, si quieres\n" -"presentar una nueva idea, debes (a) estimar cuánto tiempo tomará \n" -"enseñarla y (b) explicar lo que sacarías para darle espacio. El primero\n" -"anima a los contribuyentes a ser honestos acerca de los requisitos;\n" -"el segundo, pensar bien las prioridades." -msgstr "" -"Nuestras lecciones ya contienen más material de lo que podemos cubrir\n" -"en un taller típico, por lo que usualmente *no* buscamos más \n" -"conceptos o herramientas para agregarles. Como regla general, si quieres\n" -"presentar una nueva idea, debes (a) estimar cuánto tiempo tomará \n" -"enseñarla y (b) explicar lo que sacarías para darle espacio. El primero\n" -"anima a los contribuyentes a ser honestos acerca de los requisitos;\n" -"el segundo, pensar bien las prioridades." - -#: git-novice/_locale/es/CONTRIBUTING.md:77 -msgid "" -"Tampoco buscamos ejercicios u otro material que sólo se ejecute en \n" -"una plataforma. Nuestros talleres suelen contener una mezcla de \n" -"usuarios de Windows, Mac OS X y Linux; para ser utilizable, nuestras \n" -"lecciones deben correr igualmente bien en las tres plataformas." -msgstr "" -"Tampoco buscamos ejercicios u otro material que sólo se ejecute en \n" -"una plataforma. Nuestros talleres suelen contener una mezcla de \n" -"usuarios de Windows, Mac OS X y Linux; para ser utilizable, nuestras \n" -"lecciones deben correr igualmente bien en las tres plataformas." - -# header -#: git-novice/_locale/es/CONTRIBUTING.md:82 -msgid "## Usando GitHub" -msgstr "## Usando GitHub" - -# ordered list -#: git-novice/_locale/es/CONTRIBUTING.md:89 -msgid "1. La copia publicada de la lección está en la rama `gh-pages` del repositorio " -msgstr "1. La copia publicada de la lección está en la rama `gh-pages` del repositorio " - -#: git-novice/_locale/es/CONTRIBUTING.md:90 -msgid "(para que GitHub la regenere automáticamente). Por favor crea todas las ramas de eso, y fusiona la rama `gh-pages` del [repositorio maestro][repo] en la rama` gh-pages` antes de comenzar a trabajar. Por favor, *no* trabajes directamente en su rama `gh-pages`, ya que eso te dificultará trabajar en otras contribuciones." -msgstr "(para que GitHub la regenere automáticamente). Por favor crea todas las ramas de eso, y fusiona la rama `gh-pages` del [repositorio maestro][repo] en la rama` gh-pages` antes de comenzar a trabajar. Por favor, *no* trabajes directamente en su rama `gh-pages`, ya que eso te dificultará trabajar en otras contribuciones." - -# ordered list -#: git-novice/_locale/es/CONTRIBUTING.md:92 -msgid "2. Usamos [GitHub flow] [github-flow] para gestionar los cambios:" -msgstr "2. Usamos [GitHub flow] [github-flow] para gestionar los cambios:" - -#: git-novice/_locale/es/CONTRIBUTING.md:93 -msgid "" -"   1. Crea una nueva rama en tu copia de escritorio de este repositorio para cada cambio significativo.\n" -"   2. Confirma (**commit**) el cambio en esa rama.\n" -"   3. Empuja esa rama a su tenedor de este repositorio en GitHub.\n" -"   4. Envía una solicitud de inserción (**pull request**) desde esa rama al [repositorio principal] [repo].\n" -"   5. Si recibe comentarios,\n" -"      haz cambios en tu escritorio y envíalos (**push**) a tu rama en GitHub:\n" -"      la solicitud de inserción se actualizará automáticamente." -msgstr "" -"   1. Crea una nueva rama en tu copia de escritorio de este repositorio para cada cambio significativo.\n" -"   2. Confirma (**commit**) el cambio en esa rama.\n" -"   3. Empuja esa rama a su tenedor de este repositorio en GitHub.\n" -"   4. Envía una solicitud de inserción (**pull request**) desde esa rama al [repositorio principal] [repo].\n" -"   5. Si recibe comentarios,\n" -"      haz cambios en tu escritorio y envíalos (**push**) a tu rama en GitHub:\n" -"      la solicitud de inserción se actualizará automáticamente." - -#: git-novice/_locale/es/CONTRIBUTING.md:101 -msgid "" -"Cada lección tiene dos mantenedores que revisan problemas y solicitudes \n" -"inserción o animan a otros a hacerlos. Los mantenedores son \n" -"voluntarios de la comunidad, y tener la última palabra sobre lo que \n" -"se incluye en la lección." -msgstr "" -"Cada lección tiene dos mantenedores que revisan problemas y solicitudes \n" -"inserción o animan a otros a hacerlos. Los mantenedores son \n" -"voluntarios de la comunidad, y tener la última palabra sobre lo que \n" -"se incluye en la lección." - -# header -#: git-novice/_locale/es/CONTRIBUTING.md:106 -msgid "## Otros recursos" -msgstr "## Otros recursos" - -#: git-novice/_locale/es/CONTRIBUTING.md:108 -msgid "" -"La discusión general de [Software Carpentry][swc-site] y \n" -"[Data Carpentry][dc-site] ocurre en la \n" -"[lista de distribución de discusiones][lista-de-discusión], \n" -"a la cual todos son bienvenidos. También puedes \n" -"[contactarnos por correo electrónico][contacto]." -msgstr "" -"La discusión general de [Software Carpentry][swc-site] y \n" -"[Data Carpentry][dc-site] ocurre en la \n" -"[lista de distribución de discusiones][lista-de-discusión], \n" -"a la cual todos son bienvenidos. También puedes \n" -"[contactarnos por correo electrónico][contacto]." - -#: git-novice/_locale/es/CONTRIBUTING.md:114 -msgid "" -"[contacto]: mailto:admin@software-carpentry.org\n" -"[dc-issues]: https://github.com/issues?q=user%3Adatacarpentry\n" -"[dc-lessons]: http://datacarpentry.org/lessons/\n" -"[dc-site]: http://datacarpentry.org/\n" -"[lista-de-discusión]: http://lists.software-carpentry.org/listinfo/discuss\n" -"[github]: http://github.com\n" -"[github-flow]: https://guides.github.com/introduction/flow/\n" -"[github-join]: https://github.com/join\n" -"[cómo-contribuir]: https://egghead.io/series/how-to-contribute-to-an-open-source-project-on-github\n" -"[nuevo-problema]: https://github.com/swcarpentry/git-novice/issues/new\n" -"[issues]: https://github.com/swcarpentry/git-novice/issues/\n" -"[repo]: https://github.com/swcarpentry/git-novice/\n" -"[swc-issues]: https://github.com/issues?q=user%3Aswcarpentry\n" -"[swc-lessons]: http://software-carpentry.org/lessons/\n" -"[swc-site]: http://software-carpentry.org/" -msgstr "" -"[contacto]: mailto:admin@software-carpentry.org\n" -"[dc-issues]: https://github.com/issues?q=user%3Adatacarpentry\n" -"[dc-lessons]: http://datacarpentry.org/lessons/\n" -"[dc-site]: http://datacarpentry.org/\n" -"[lista-de-discusión]: http://lists.software-carpentry.org/listinfo/discuss\n" -"[github]: http://github.com\n" -"[github-flow]: https://guides.github.com/introduction/flow/\n" -"[github-join]: https://github.com/join\n" -"[cómo-contribuir]: https://egghead.io/series/how-to-contribute-to-an-open-source-project-on-github\n" -"[nuevo-problema]: https://github.com/swcarpentry/git-novice/issues/new\n" -"[issues]: https://github.com/swcarpentry/git-novice/issues/\n" -"[repo]: https://github.com/swcarpentry/git-novice/\n" -"[swc-issues]: https://github.com/issues?q=user%3Aswcarpentry\n" -"[swc-lessons]: http://software-carpentry.org/lessons/\n" -"[swc-site]: http://software-carpentry.org/" - -# Front Matter -#: git-novice/_locale/es/LICENSE.md:1 -msgid "" -"---\n" -"layout: page\n" -"title: \"Licencias\"\n" -"root: .\n" -"---" -msgstr "" -"---\n" -"layout: page\n" -"title: \"Licencias\"\n" -"root: .\n" -"---" - -# header -#: git-novice/_locale/es/LICENSE.md:6 -msgid "### Material didáctico" -msgstr "### Material didáctico" - -#: git-novice/_locale/es/LICENSE.md:8 -msgid "" -"Todo el material de instrucción de Software Carpentry and Data Carpentry está\n" -"disponible bajo la licencia [Creative Commons Attribution][cc-por-humano]. El siguiente es un resumen de licencia\n" -"(y no un sustituto) del [texto legal completo de CC BY 4.0\n" -"licencia][cc-by-legal]." -msgstr "" -"Todo el material de instrucción de Software Carpentry and Data Carpentry está\n" -"disponible bajo la licencia [Creative Commons Attribution][cc-por-humano]. El siguiente es un resumen de licencia\n" -"(y no un sustituto) del [texto legal completo de CC BY 4.0\n" -"licencia][cc-by-legal]." - -#: git-novice/_locale/es/LICENSE.md:13 -msgid "Puedes libremente:" -msgstr "Puedes libremente:" - -# unordered list -#: git-novice/_locale/es/LICENSE.md:15 -msgid "* **Compartir** --- copiar y redistribuir el material en cualquier medio o formato" -msgstr "* **Compartir** --- copiar y redistribuir el material en cualquier medio o formato" - -# unordered list -#: git-novice/_locale/es/LICENSE.md:16 -msgid "* **Adaptar** --- remezclar, transformar y construir a partir del material" -msgstr "* **Adaptar** --- remezclar, transformar y construir a partir del material" - -#: git-novice/_locale/es/LICENSE.md:18 -msgid "para cualquier propósito, incluso comercialmente." -msgstr "para cualquier propósito, incluso comercialmente." - -#: git-novice/_locale/es/LICENSE.md:20 -msgid "" -"El licenciante no puede revocar estas libertades mientras se siga las\n" -"condiciones de la licencia." -msgstr "" -"El licenciante no puede revocar estas libertades mientras se siga las\n" -"condiciones de la licencia." - -#: git-novice/_locale/es/LICENSE.md:23 -msgid "Bajo los siguientes términos:" -msgstr "Bajo los siguientes términos:" - -# unordered list -#: git-novice/_locale/es/LICENSE.md:25 -msgid "* **Atribución** --- Debes otorgar crédito a éste material de manera adecuada (mencionando que" -msgstr "* **Atribución** --- Debes otorgar crédito a éste material de manera adecuada (mencionando que" - -#: git-novice/_locale/es/LICENSE.md:26 -msgid "" -"  su trabajo se deriva del trabajo que es Copyright de © Software\n" -"  Carpentry y, donde sea práctico, agrega un enlace a\n" -"  http://software-carpentry.org/), proporciona un [enlace a la\n" -"  licencia][cc-por-humano], e indica si se realizaron cambios. Puedes hacerlo en cualquier forma razonable, \n" -" pero no de forma tal que sugiera que tú o el uso del material derivado tienen el respaldo del licenciante. " -msgstr "" -"  su trabajo se deriva del trabajo que es Copyright de © Software\n" -"  Carpentry y, donde sea práctico, agrega un enlace a\n" -"  http://software-carpentry.org/), proporciona un [enlace a la\n" -"  licencia][cc-por-humano], e indica si se realizaron cambios. Puedes hacerlo en cualquier forma razonable, \n" -" pero no de forma tal que sugiera que tú o el uso del material derivado tienen el respaldo del licenciante. " - -#: git-novice/_locale/es/LICENSE.md:32 -msgid "" -"**Sin restricciones adicionales** --- No puedes aplicar términos legales o\n" -"medidas tecnológicas que restrinjan a otros hacer\n" -"todo lo que la licencia permite. " -msgstr "" -"**Sin restricciones adicionales** --- No puedes aplicar términos legales o\n" -"medidas tecnológicas que restrinjan a otros hacer\n" -"todo lo que la licencia permite. " - -#: git-novice/_locale/es/LICENSE.md:36 -msgid "Avisos:" -msgstr "Avisos:" - -# unordered list -#: git-novice/_locale/es/LICENSE.md:38 -msgid "* No tiene que cumplir con la licencia con los materiales que estén en el dominio público " -msgstr "* No tiene que cumplir con la licencia con los materiales que estén en el dominio público " - -#: git-novice/_locale/es/LICENSE.md:39 -msgid "" -" o cuando su uso esté permitido por una excepción o limitación aplicable. \n" -"* No se dan garantías. La licencia puede no darle todos los\n" -"  permisos necesarios para su uso previsto. Por ejemplo, otros\n" -"  derechos como la publicidad, la privacidad, o los derechos morales pueden limitar la forma en que\n" -"  uses el material." -msgstr "" -" o cuando su uso esté permitido por una excepción o limitación aplicable. \n" -"* No se dan garantías. La licencia puede no darle todos los\n" -"  permisos necesarios para su uso previsto. Por ejemplo, otros\n" -"  derechos como la publicidad, la privacidad, o los derechos morales pueden limitar la forma en que\n" -"  uses el material." - -#: git-novice/_locale/es/LICENSE.md:47 -msgid "" -"Salvo que se indique lo contrario, los programas de ejemplo y otro software\n" -"proporcionado por Software Carpentry y Data Carpentry están disponibles bajo el\n" -"[OSI][osi]-aprobado\n" -"[Licencia de MIT][mit-license]." -msgstr "" -"Salvo que se indique lo contrario, los programas de ejemplo y otro software\n" -"proporcionado por Software Carpentry y Data Carpentry están disponibles bajo el\n" -"[OSI][osi]-aprobado\n" -"[Licencia de MIT][mit-license]." - -#: git-novice/_locale/es/LICENSE.md:52 -msgid "" -"Se concede permiso, de forma gratuita, a cualquier persona que obtenga\n" -"una copia de este software y los archivos de documentación asociados (el\n" -"\"Software\"), para tratar el Software sin restricciones, incluyendo\n" -"sin limitación, los derechos de uso, copia, modificación, fusión, publicación,\n" -"distribuir, sublicenciar y / o vender copias del Software, y\n" -"Permitir a las personas a quienes se les proporciona el Software que lo hagan, sujeto a\n" -"las siguientes condiciones:" -msgstr "" -"Se concede permiso, de forma gratuita, a cualquier persona que obtenga\n" -"una copia de este software y los archivos de documentación asociados (el\n" -"\"Software\"), para tratar el Software sin restricciones, incluyendo\n" -"sin limitación, los derechos de uso, copia, modificación, fusión, publicación,\n" -"distribuir, sublicenciar y / o vender copias del Software, y\n" -"Permitir a las personas a quienes se les proporciona el Software que lo hagan, sujeto a\n" -"las siguientes condiciones:" - -#: git-novice/_locale/es/LICENSE.md:60 -msgid "" -"El aviso de copyright anterior y este aviso de permiso serán\n" -"incluido en todas las copias o porciones sustanciales del software." -msgstr "" -"El aviso de copyright anterior y este aviso de permiso serán\n" -"incluido en todas las copias o porciones sustanciales del software." - -#: git-novice/_locale/es/LICENSE.md:63 -msgid "" -"EL SOFTWARE SE PROPORCIONA \"TAL CUAL\", SIN GARANTÍA DE NINGÚN TIPO,\n" -"EXPRESO O IMPLICADO, INCLUIDAS, ENTRE OTRAS, LAS GARANTÍAS DE\n" -"COMERCIABILIDAD, APTITUD PARA UN PROPÓSITO PARTICULAR Y\n" -"NO INFRACCIÓN EN NINGÚN CASO SERÁN LOS AUTORES O LOS TITULARES DE LOS DERECHOS DE AUTOR\n" -"RESPONSABLE POR CUALQUIER RECLAMO, DAÑOS U OTRA RESPONSABILIDAD, YA SEA EN ACCIÓN\n" -"DEL CONTRATO, EXTRACONTRACTUAL O DE OTRO TIPO, DERIVADOS, FUERA DE O EN CONEXIÓN\n" -"CON EL SOFTWARE O EL USO U OTROS TRATOS EN EL SOFTWARE." -msgstr "" -"EL SOFTWARE SE PROPORCIONA \"TAL CUAL\", SIN GARANTÍA DE NINGÚN TIPO,\n" -"EXPRESO O IMPLICADO, INCLUIDAS, ENTRE OTRAS, LAS GARANTÍAS DE\n" -"COMERCIABILIDAD, APTITUD PARA UN PROPÓSITO PARTICULAR Y\n" -"NO INFRACCIÓN EN NINGÚN CASO SERÁN LOS AUTORES O LOS TITULARES DE LOS DERECHOS DE AUTOR\n" -"RESPONSABLE POR CUALQUIER RECLAMO, DAÑOS U OTRA RESPONSABILIDAD, YA SEA EN ACCIÓN\n" -"DEL CONTRATO, EXTRACONTRACTUAL O DE OTRO TIPO, DERIVADOS, FUERA DE O EN CONEXIÓN\n" -"CON EL SOFTWARE O EL USO U OTROS TRATOS EN EL SOFTWARE." - -# header -#: git-novice/_locale/es/LICENSE.md:71 -msgid "## Marca registrada" -msgstr "## Marca registrada" - -#: git-novice/_locale/es/LICENSE.md:73 -msgid "" -"\"Software Carpentry\" y \"Data Carpentry\" y sus respectivos logos\n" -"son marcas registradas de [Community Initiatives][ci]." -msgstr "" -"\"Software Carpentry\" y \"Data Carpentry\" y sus respectivos logos\n" -"son marcas registradas de [Community Initiatives][ci]." - -#: git-novice/_locale/es/LICENSE.md:76 -msgid "" -"[cc-por-humano]: https://creativecommons.org/licenses/by/4.0/\n" -"[cc-by-legal]: https://creativecommons.org/licenses/by/4.0/legalcode\n" -"[mit-license]: https://opensource.org/licenses/mit-license.html\n" -"[ci]: http://communityin.org/\n" -"[osi]: https://opensource.org" -msgstr "" -"[cc-por-humano]: https://creativecommons.org/licenses/by/4.0/\n" -"[cc-by-legal]: https://creativecommons.org/licenses/by/4.0/legalcode\n" -"[mit-license]: https://opensource.org/licenses/mit-license.html\n" -"[ci]: http://communityin.org/\n" -"[osi]: https://opensource.org" - -#: git-novice/_locale/es/README.md:1 -msgid "" -"[![Create a Slack Account with us](https://img.shields.io/badge/Create_Slack_Account-The_Carpentries-071159.svg)](https://swc-slack-invite.herokuapp.com/) \n" -" [![Slack Status](https://img.shields.io/badge/Slack_Channel-swc--git--es-E01563.svg)](https://swcarpentry.slack.com/messages/C9X42NTQC) " -msgstr "" -"[![Create a Slack Account with us](https://img.shields.io/badge/Create_Slack_Account-The_Carpentries-071159.svg)](https://swc-slack-invite.herokuapp.com/) \n" -" [![Slack Status](https://img.shields.io/badge/Slack_Channel-swc--git--es-E01563.svg)](https://swcarpentry.slack.com/messages/C9X42NTQC) " - -#: git-novice/_locale/es/README.md:7 -msgid "" -"Una introdución para principiantes sobre control de versiones usando Git.\n" -"Puedes encontrar la traducción de este material en \n" -"y también puedes ver el [modelo de documentación][lesson-example]\n" -"para las instrucciones de formato y como mejorar el material, \n" -"o también puedes run `make` en este directorio para ver una lista de comandos útiles." -msgstr "" -"Una introdución para principiantes sobre control de versiones usando Git.\n" -"Puedes encontrar la traducción de este material en \n" -"y también puedes ver el [modelo de documentación][lesson-example]\n" -"para las instrucciones de formato y como mejorar el material, \n" -"o también puedes run `make` en este directorio para ver una lista de comandos útiles." - -# unordered list -#: git-novice/_locale/es/README.md:16 -msgid "* [Rayna Harris][harris_rayna]: [@raynamharris](https://github.com/raynamharris)" -msgstr "* [Rayna Harris][harris_rayna]: [@raynamharris](https://github.com/raynamharris)" - -# unordered list -#: git-novice/_locale/es/README.md:17 -msgid "* [Clara Llebot Lorente][llebot_clara]: [@clarallebot](https://github.com/clarallebot)" -msgstr "* [Clara Llebot Lorente][llebot_clara]: [@clarallebot](https://github.com/clarallebot)" - -#: git-novice/_locale/es/README.md:21 -msgid "" -"[llebot_clara]: https://software-carpentry.org/team/#llebot_clara\n" -"[gonzalez_ivan]: https://software-carpentry.org/team/#gonzalez_ivan\n" -"[harris_rayna]: http://software-carpentry.org/team/#harris_rayna\n" -"[lesson-example]: https://carpentries.github.io/lesson-example" -msgstr "" -"[llebot_clara]: https://software-carpentry.org/team/#llebot_clara\n" -"[gonzalez_ivan]: https://software-carpentry.org/team/#gonzalez_ivan\n" -"[harris_rayna]: http://software-carpentry.org/team/#harris_rayna\n" -"[lesson-example]: https://carpentries.github.io/lesson-example" - -# Front Matter -#: git-novice/_locale/es/_episodes/01-basics.md:1 -msgid "" -"---\n" -"title: Control Automatizado de Versiones\n" -"teaching: 5\n" -"exercises: 0\n" -"questions:\n" -"- \"¿Qué es el control de versiones y por qué se deberá usar?\"\n" -"objectives:\n" -"- \"Comprender los beneficios de usar un sistema automático de control de versiones.\"\n" -"- \"Comprender los fundamentos básicos del funcionamiento de Git.\"\n" -"keypoints:\n" -"- \"El control de versiones es como un 'deshacer' sin límites.\"\n" -"- \"El control de versiones permite que mucha gente trabaje en lo mismo en paralelo.\"\n" -"---" -msgstr "" -"---\n" -"title: Control Automatizado de Versiones\n" -"teaching: 5\n" -"exercises: 0\n" -"questions:\n" -"- \"¿Qué es el control de versiones y por qué se deberá usar?\"\n" -"objectives:\n" -"- \"Comprender los beneficios de usar un sistema automático de control de versiones.\"\n" -"- \"Comprender los fundamentos básicos del funcionamiento de Git.\"\n" -"keypoints:\n" -"- \"El control de versiones es como un 'deshacer' sin límites.\"\n" -"- \"El control de versiones permite que mucha gente trabaje en lo mismo en paralelo.\"\n" -"---" - -#: git-novice/_locale/es/_episodes/01-basics.md:15 -msgid "" -"Empezaremos por explorar cómo el control de versiones puede ser usado\n" -"para hacer un seguimiento de lo que hizo una persona y cuándo.\n" -"Incluso si no se está colaborando con otras personas, \n" -"el control automatizado de versiones es mucho mejor que la siguiente situación:" -msgstr "" -"Empezaremos por explorar cómo el control de versiones puede ser usado\n" -"para hacer un seguimiento de lo que hizo una persona y cuándo.\n" -"Incluso si no se está colaborando con otras personas, \n" -"el control automatizado de versiones es mucho mejor que la siguiente situación:" - -#: git-novice/_locale/es/_episodes/01-basics.md:24 -msgid "" -"Todos hemos estado en esta situación alguna vez: parece ridículo tener \n" -"varias versiones casi idénticas del mismo documento. Algunos procesadores de texto \n" -"nos permiten lidiar con esto un poco mejor, como por ejemplo el [*Track Changes* de Microsoft Word](https://support.office.com/en-us/article/Track-changes-in-Word-197ba630-0f5f-4a8e-9a77-3712475e806a), el [historial de versiones de Google](https://support.google.com/docs/answer/190843?hl=en) o la [grabación y visualización de cambios de LibreOffice](https://help.libreoffice.org/Common/Recording_and_Displaying_Changes)." -msgstr "" -"Todos hemos estado en esta situación alguna vez: parece ridículo tener \n" -"varias versiones casi idénticas del mismo documento. Algunos procesadores de texto \n" -"nos permiten lidiar con esto un poco mejor, como por ejemplo el [*Track Changes* de Microsoft Word](https://support.office.com/en-us/article/Track-changes-in-Word-197ba630-0f5f-4a8e-9a77-3712475e806a), el [historial de versiones de Google](https://support.google.com/docs/answer/190843?hl=en) o la [grabación y visualización de cambios de LibreOffice](https://help.libreoffice.org/Common/Recording_and_Displaying_Changes)." - -#: git-novice/_locale/es/_episodes/01-basics.md:28 -msgid "" -"Los sistemas de control de versiones comienzan con una versión básica del documento y \n" -"luego van guardando sólo los cambios que se hicieron en cada paso del proceso. Se puede \n" -"pensar en ello como en una cinta: si se rebobina la cinta y se inicia de nuevo en el documento \n" -"base, se puede reproducir cada cambio y terminar con la versión más reciente." -msgstr "" -"Los sistemas de control de versiones comienzan con una versión básica del documento y \n" -"luego van guardando sólo los cambios que se hicieron en cada paso del proceso. Se puede \n" -"pensar en ello como en una cinta: si se rebobina la cinta y se inicia de nuevo en el documento \n" -"base, se puede reproducir cada cambio y terminar con la versión más reciente." - -#: git-novice/_locale/es/_episodes/01-basics.md:35 -msgid "Una vez que piensas en los cambios como separados del documento en sí, entonces se puede pensar en \"deshacer\" diferentes conjuntos de cambios en el documento base y obtener así diferentes versiones del documento. Por ejemplo, dos usuarios pueden hacer conjuntos independientes de cambios basados en el mismo documento." -msgstr "Una vez que piensas en los cambios como separados del documento en sí, entonces se puede pensar en \"deshacer\" diferentes conjuntos de cambios en el documento base y obtener así diferentes versiones del documento. Por ejemplo, dos usuarios pueden hacer conjuntos independientes de cambios basados en el mismo documento." - -#: git-novice/_locale/es/_episodes/01-basics.md:39 -msgid "A menos que haya conflictos, se puede incluso tener dos conjuntos de cambios en el mismo documento base." -msgstr "A menos que haya conflictos, se puede incluso tener dos conjuntos de cambios en el mismo documento base." - -#: git-novice/_locale/es/_episodes/01-basics.md:43 -msgid "" -"Un sistema de control de versiones es una herramienta que realiza un seguimiento de estos cambios para nosotros y\n" -"nos ayuda a controlar la versión y fusionar nuestros archivos. Nos permite\n" -"decidir qué cambios conforman la siguiente versión, a lo que llamamos hacer un\n" -"[**commit**]({{ page.root }}/reference/#commit), y mantiene metadatos útiles sobre dichos cambios. El\n" -"historial completo de **commits** para un proyecto en particular y sus metadatos forman un\n" -"[repositorio]({{ page.root }}/reference/#repository). Los repositorios pueden mantenerse sincronizados\n" -"en diferentes computadoras, facilitando así la colaboración entre diferentes personas." -msgstr "" -"Un sistema de control de versiones es una herramienta que realiza un seguimiento de estos cambios para nosotros y\n" -"nos ayuda a controlar la versión y fusionar nuestros archivos. Nos permite\n" -"decidir qué cambios conforman la siguiente versión, a lo que llamamos hacer un\n" -"[**commit**]({{ page.root }}/reference/#commit), y mantiene metadatos útiles sobre dichos cambios. El\n" -"historial completo de **commits** para un proyecto en particular y sus metadatos forman un\n" -"[repositorio]({{ page.root }}/reference/#repository). Los repositorios pueden mantenerse sincronizados\n" -"en diferentes computadoras, facilitando así la colaboración entre diferentes personas." - -# blockquote, which can be cascaded -#: git-novice/_locale/es/_episodes/01-basics.md:51 -msgid "> ## La larga historia de los sistemas de control de versiones " -msgstr "> ## La larga historia de los sistemas de control de versiones " - -#: git-novice/_locale/es/_episodes/01-basics.md:52 -msgid "" -">\n" -"> Los sistemas automatizados de control de versiones no son nada nuevo.\n" -"> Herramientas como RCS, CVS o Subversion han existido desde principios de los 1980 y son utilizadas por muchas grandes empresas.\n" -"> Sin embargo, muchos de estos han sido relegados debido a lo limitado de su capacidad.\n" -"> En particular, los sistemas más modernos, como Git y [Mercurial](http://swcarpentry.github.io/hg-novice/) \n" -"> son *distribuidos*, lo que significa que no necesitan un servidor centralizado para alojar el repositorio. \n" -"> Estos sistemas modernos también incluyen potentes herramientas de fusión que hacen posible que múltiples autores trabajen dentro de \n" -"> los mismos archivos simultáneamente." -msgstr "" -">\n" -"> Los sistemas automatizados de control de versiones no son nada nuevo.\n" -"> Herramientas como RCS, CVS o Subversion han existido desde principios de los 1980 y son utilizadas por muchas grandes empresas.\n" -"> Sin embargo, muchos de estos han sido relegados debido a lo limitado de su capacidad.\n" -"> En particular, los sistemas más modernos, como Git y [Mercurial](http://swcarpentry.github.io/hg-novice/) \n" -"> son *distribuidos*, lo que significa que no necesitan un servidor centralizado para alojar el repositorio. \n" -"> Estos sistemas modernos también incluyen potentes herramientas de fusión que hacen posible que múltiples autores trabajen dentro de \n" -"> los mismos archivos simultáneamente." - -# blockquote, which can be cascaded -#: git-novice/_locale/es/_episodes/01-basics.md:62 -msgid "> ## ¿Qué harías en las siguientes situaciones?" -msgstr "> ## ¿Qué harías en las siguientes situaciones?" - -#: git-novice/_locale/es/_episodes/01-basics.md:63 -msgid "" -">\n" -"> * Imagina que has redactado un excelente párrafo para un artículo que estás escribiendo, pero más tarde lo estropeas. ¿Cómo recuperarías \n" -"> aquella *excelente* versión de la conclusión? ¿Es esto posible?\n" -">\n" -"> * Imagina que tienes 5 coautores. ¿Cómo administrarías los cambios y comentarios que ellos hagan en el artículo? \n" -"> Si usas LibreOffice Writer o Microsoft Word, ¿qué sucede si aceptas los cambios realizados con la opción \n" -"> `Track Changes`? ¿Tienes un historial de esos cambios? " -msgstr "" -">\n" -"> * Imagina que has redactado un excelente párrafo para un artículo que estás escribiendo, pero más tarde lo estropeas. ¿Cómo recuperarías \n" -"> aquella *excelente* versión de la conclusión? ¿Es esto posible?\n" -">\n" -"> * Imagina que tienes 5 coautores. ¿Cómo administrarías los cambios y comentarios que ellos hagan en el artículo? \n" -"> Si usas LibreOffice Writer o Microsoft Word, ¿qué sucede si aceptas los cambios realizados con la opción \n" -"> `Track Changes`? ¿Tienes un historial de esos cambios? " - -# Front Matter -#: git-novice/_locale/es/_episodes/02-setup.md:1 -msgid "" -"---\n" -"title: Configurando Git\n" -"teaching: 5\n" -"exercises: 0\n" -"questions:\n" -"- \"¿Cómo me preparo para utilizar Git?\"\n" -"objectives:\n" -"- \"Configurar `git` la primera vez que utilice la computadora.\"\n" -"- \"Comprender el significado del flag de configuración `--global`.\"\n" -"keypoints:\n" -"- \"Use `git config` para configurar un nombre de usuario, email, editor, y otras preferencias.\"\n" -"---" -msgstr "" -"---\n" -"title: Configurando Git\n" -"teaching: 5\n" -"exercises: 0\n" -"questions:\n" -"- \"¿Cómo me preparo para utilizar Git?\"\n" -"objectives:\n" -"- \"Configurar `git` la primera vez que utilice la computadora.\"\n" -"- \"Comprender el significado del flag de configuración `--global`.\"\n" -"keypoints:\n" -"- \"Use `git config` para configurar un nombre de usuario, email, editor, y otras preferencias.\"\n" -"---" - -#: git-novice/_locale/es/_episodes/02-setup.md:14 -msgid "" -"Cuando usamos Git en una computadora por primera vez, \n" -"es necesario configurar algunas cosas. A continuación se presentan algunos ejemplos \n" -"de configuraciones que estableceremos a medida que trabajemos con Git:" -msgstr "" -"Cuando usamos Git en una computadora por primera vez, \n" -"es necesario configurar algunas cosas. A continuación se presentan algunos ejemplos \n" -"de configuraciones que estableceremos a medida que trabajemos con Git:" - -# unordered list -#: git-novice/_locale/es/_episodes/02-setup.md:18 -msgid "* nombre y correo electrónico," -msgstr "* nombre y correo electrónico," - -# unordered list -#: git-novice/_locale/es/_episodes/02-setup.md:19 -msgid "* cuál es nuestro editor de texto preferido," -msgstr "* cuál es nuestro editor de texto preferido," - -# unordered list -#: git-novice/_locale/es/_episodes/02-setup.md:20 -msgid "* y que queremos utilizar estos ajustes globalmente (es decir, para cada proyecto)." -msgstr "* y que queremos utilizar estos ajustes globalmente (es decir, para cada proyecto)." - -#: git-novice/_locale/es/_episodes/02-setup.md:22 -msgid "" -"En la línea de comandos, los comandos de Git se escriben como `git verb`, \n" -"donde` verb` es lo que queremos hacer. Así es como \n" -"Drácula configura su nueva computadora:" -msgstr "" -"En la línea de comandos, los comandos de Git se escriben como `git verb`, \n" -"donde` verb` es lo que queremos hacer. Así es como \n" -"Drácula configura su nueva computadora:" - -#: git-novice/_locale/es/_episodes/02-setup.md:32 -msgid "" -"Utiliza tu propio nombre y dirección de correo electrónico en lugar de los de Drácula. El nombre de usuario y el correo electrónico se asociarán con tu actividad posterior de Git, \n" -"lo que significa que cualquier cambio realizado en\n" -"[GitHub] (http://github.com/), \n" -"[BitBucket] (http://bitbucket.org/), \n" -"[GitLab] (http://gitlab.com/) u\n" -"otro servidor de Git \n" -"en una lección posterior incluirá esta información." -msgstr "" -"Utiliza tu propio nombre y dirección de correo electrónico en lugar de los de Drácula. El nombre de usuario y el correo electrónico se asociarán con tu actividad posterior de Git, \n" -"lo que significa que cualquier cambio realizado en\n" -"[GitHub] (http://github.com/), \n" -"[BitBucket] (http://bitbucket.org/), \n" -"[GitLab] (http://gitlab.com/) u\n" -"otro servidor de Git \n" -"en una lección posterior incluirá esta información." - -# blockquote, which can be cascaded -#: git-novice/_locale/es/_episodes/02-setup.md:40 -msgid "> ## Finales de línea" -msgstr "> ## Finales de línea" - -#: git-novice/_locale/es/_episodes/02-setup.md:41 -msgid "" -">\n" -"> Al igual que con otras teclas, cuando haces click en la tecla 'Enter' de tu teclado,\n" -"> tu computadora codifica este input como un caracter.\n" -"> Por razones que son demasiado largas para explicar aquí, diferentes sistemas operativos \n" -"> usan diferentes caracteres para representar el final de una línea.\n" -"> (También son conocidas como *newlines* o *line breaks*.)\n" -"> Como Git usa éstos caracteres para comparar archivos,\n" -"> esto puede causar problemas inesperados cuando se edita un archivo en máquinas diferentes. \n" -"> \n" -"> Puedes cambiar el modo en que Git reconoce y codifica finales de línea\n" -"> usando el comando `core.autocrlf` con `git config`.\n" -"> Se recomiendan las siguientes configuraciones:\n" -">\n" -"> En OS X y Linux:\n" -">\n" -"> ~~~\n" -"> $ git config --global core.autocrlf input\n" -"> ~~~\n" -"> {: .language-bash}\n" -">\n" -"> Y en Windows:\n" -">\n" -"> ~~~\n" -"> $ git config --global core.autocrlf true\n" -"> ~~~\n" -"> {: .language-bash}\n" -"> \n" -"> Puedes leer más sobre este tema \n" -"> [en esta página de GitHub](https://help.github.com/articles/dealing-with-line-endings/)." -msgstr "" -">\n" -"> Al igual que con otras teclas, cuando haces click en la tecla 'Enter' de tu teclado,\n" -"> tu computadora codifica este input como un caracter.\n" -"> Por razones que son demasiado largas para explicar aquí, diferentes sistemas operativos \n" -"> usan diferentes caracteres para representar el final de una línea.\n" -"> (También son conocidas como *newlines* o *line breaks*.)\n" -"> Como Git usa éstos caracteres para comparar archivos,\n" -"> esto puede causar problemas inesperados cuando se edita un archivo en máquinas diferentes. \n" -"> \n" -"> Puedes cambiar el modo en que Git reconoce y codifica finales de línea\n" -"> usando el comando `core.autocrlf` con `git config`.\n" -"> Se recomiendan las siguientes configuraciones:\n" -">\n" -"> En OS X y Linux:\n" -">\n" -"> ~~~\n" -"> $ git config --global core.autocrlf input\n" -"> ~~~\n" -"> {: .language-bash}\n" -">\n" -"> Y en Windows:\n" -">\n" -"> ~~~\n" -"> $ git config --global core.autocrlf true\n" -"> ~~~\n" -"> {: .language-bash}\n" -"> \n" -"> Puedes leer más sobre este tema \n" -"> [en esta página de GitHub](https://help.github.com/articles/dealing-with-line-endings/)." - -#: git-novice/_locale/es/_episodes/02-setup.md:72 -msgid "" -"Para estas lecciones, estaremos interactuando con [GitHub] (http://github.com/), por lo tanto la dirección de correo electrónico utilizada debe ser la misma que utilizaste al configurar tu cuenta de GitHub. Si te preocupa la privacidad, revisa [las instrucciones de GitHub para mantener tu dirección de correo electrónico privada] [git-privacy].\n" -"Si eliges utilizar una dirección de correo electrónico privada con GitHub, usa la misma dirección de correo electrónico para el valor `user.email`, por ejemplo, `username@users.noreply.github.com` reemplazando` username` con tu nombre de usuario de GitHub. Puedes cambiar la dirección de correo electrónico posteriormente utilizando el comando `git config` nuevamente." -msgstr "" -"Para estas lecciones, estaremos interactuando con [GitHub] (http://github.com/), por lo tanto la dirección de correo electrónico utilizada debe ser la misma que utilizaste al configurar tu cuenta de GitHub. Si te preocupa la privacidad, revisa [las instrucciones de GitHub para mantener tu dirección de correo electrónico privada] [git-privacy].\n" -"Si eliges utilizar una dirección de correo electrónico privada con GitHub, usa la misma dirección de correo electrónico para el valor `user.email`, por ejemplo, `username@users.noreply.github.com` reemplazando` username` con tu nombre de usuario de GitHub. Puedes cambiar la dirección de correo electrónico posteriormente utilizando el comando `git config` nuevamente." - -#: git-novice/_locale/es/_episodes/02-setup.md:75 -msgid "Drácula también tiene que establecer su editor de texto favorito, siguiendo esta tabla:" -msgstr "Drácula también tiene que establecer su editor de texto favorito, siguiendo esta tabla:" - -#: git-novice/_locale/es/_episodes/02-setup.md:93 -msgid "Es posible reconfigurar el editor de texto para Git siempre que quieras." -msgstr "Es posible reconfigurar el editor de texto para Git siempre que quieras." - -# blockquote, which can be cascaded -#: git-novice/_locale/es/_episodes/02-setup.md:95 -msgid "> ## Saliendo de Vim" -msgstr "> ## Saliendo de Vim" - -#: git-novice/_locale/es/_episodes/02-setup.md:96 -msgid "" -">\n" -">Ten en cuenta que `vim` es el editor por defecto para muchos programas, si no has utilizado` vim` antes y deseas salir de una sesión, presiona la tecla `Esc` y posteriormente escribe `: q!` y `Enter`." -msgstr "" -">\n" -">Ten en cuenta que `vim` es el editor por defecto para muchos programas, si no has utilizado` vim` antes y deseas salir de una sesión, presiona la tecla `Esc` y posteriormente escribe `: q!` y `Enter`." - -#: git-novice/_locale/es/_episodes/02-setup.md:100 -msgid "Los cuatro comandos que acabamos de ejecutar sólo se tienen que ejecutar una vez: la flag `--global` le dice a Git que use la configuración para cada proyecto, en tu cuenta de usuario, en esta computadora." -msgstr "Los cuatro comandos que acabamos de ejecutar sólo se tienen que ejecutar una vez: la flag `--global` le dice a Git que use la configuración para cada proyecto, en tu cuenta de usuario, en esta computadora." - -#: git-novice/_locale/es/_episodes/02-setup.md:102 -msgid "Puedes comprobar tu configuración en cualquier momento:" -msgstr "Puedes comprobar tu configuración en cualquier momento:" - -#: git-novice/_locale/es/_episodes/02-setup.md:109 -msgid "Puedes cambiar la configuración tantas veces como quieras: sólo usa los mismos comandos para elegir otro editor o actualizar tu correo electrónico." -msgstr "Puedes cambiar la configuración tantas veces como quieras: sólo usa los mismos comandos para elegir otro editor o actualizar tu correo electrónico." - -#: git-novice/_locale/es/_episodes/02-setup.md:112 -msgid "" -">\n" -"> En algunas redes es necesario usar un\n" -"> [proxy](https://en.wikipedia.org/wiki/Proxy_server). Si este es el caso, es\n" -"> posible que también necesites proporcionarle a Git el proxy:\n" -">\n" -"> ~~~\n" -"> $ git config --global http.proxy proxy-url\n" -"> $ git config --global https.proxy proxy-url\n" -"> ~~~\n" -"> {: .language-bash}\n" -">\n" -"> Para deshabilitar el proxy, utiliza\n" -">\n" -"> ~~~\n" -"> $ git config --global --unset http.proxy\n" -"> $ git config --global --unset https.proxy\n" -"> ~~~\n" -"> {: .language-bash}" -msgstr "" -">\n" -"> En algunas redes es necesario usar un\n" -"> [proxy](https://en.wikipedia.org/wiki/Proxy_server). Si este es el caso, es\n" -"> posible que también necesites proporcionarle a Git el proxy:\n" -">\n" -"> ~~~\n" -"> $ git config --global http.proxy proxy-url\n" -"> $ git config --global https.proxy proxy-url\n" -"> ~~~\n" -"> {: .language-bash}\n" -">\n" -"> Para deshabilitar el proxy, utiliza\n" -">\n" -"> ~~~\n" -"> $ git config --global --unset http.proxy\n" -"> $ git config --global --unset https.proxy\n" -"> ~~~\n" -"> {: .language-bash}" - -# blockquote, which can be cascaded -#: git-novice/_locale/es/_episodes/02-setup.md:132 -msgid "> ## Ayuda y manual de Git" -msgstr "> ## Ayuda y manual de Git" - -#: git-novice/_locale/es/_episodes/02-setup.md:133 -msgid "" -">\n" -"> Ten presente que si no recuerdas algún comando de `git`, puedes acceder a la lista de comandos utilizando la opción `-h` y al manual de Git con la flag `--help` :\n" -">\n" -"> ~~~\n" -"> $ git config -h\n" -"> $ git config --help\n" -"> ~~~\n" -"> {: .language-bash}" -msgstr "" -">\n" -"> Ten presente que si no recuerdas algún comando de `git`, puedes acceder a la lista de comandos utilizando la opción `-h` y al manual de Git con la flag `--help` :\n" -">\n" -"> ~~~\n" -"> $ git config -h\n" -"> $ git config --help\n" -"> ~~~\n" -"> {: .language-bash}" - -# Front Matter -#: git-novice/_locale/es/_episodes/03-create.md:1 -msgid "" -"---\n" -"title: Creando un repositorio\n" -"teaching: 10\n" -"exercises: 0\n" -"questions:\n" -"- \"¿Dónde almacena Git la información?\"\n" -"objectives:\n" -"- \"Crear un repositorio local de Git.\"\n" -"keypoints:\n" -"- \"`git init` inicializa un repositorio.\"\n" -"---" -msgstr "" -"---\n" -"title: Creando un repositorio\n" -"teaching: 10\n" -"exercises: 0\n" -"questions:\n" -"- \"¿Dónde almacena Git la información?\"\n" -"objectives:\n" -"- \"Crear un repositorio local de Git.\"\n" -"keypoints:\n" -"- \"`git init` inicializa un repositorio.\"\n" -"---" - -#: git-novice/_locale/es/_episodes/03-create.md:13 -msgid "" -"Una vez que Git está configurado,\n" -"podemos comenzar a usarlo." -msgstr "" -"Una vez que Git está configurado,\n" -"podemos comenzar a usarlo." - -#: git-novice/_locale/es/_episodes/03-create.md:16 -msgid "Vamos a crear un directorio para nuestro trabajo y nos movemos dentro de ese directorio:" -msgstr "Vamos a crear un directorio para nuestro trabajo y nos movemos dentro de ese directorio:" - -# code block -#: git-novice/_locale/es/_episodes/03-create.md:18 -msgid "" -"~~~\n" -"$ mkdir planets\n" -"$ cd planets\n" -"~~~" -msgstr "" -"~~~\n" -"$ mkdir planets\n" -"$ cd planets\n" -"~~~" - -#: git-novice/_locale/es/_episodes/03-create.md:24 -msgid "" -"Después le indicamos a Git hacer de `planets` un [repository]({{ page.root }}/reference/#repository)— un lugar donde\n" -"Git puede almacenar las versiones de nuestros archivos:" -msgstr "" -"Después le indicamos a Git hacer de `planets` un [repository]({{ page.root }}/reference/#repository)— un lugar donde\n" -"Git puede almacenar las versiones de nuestros archivos:" - -#: git-novice/_locale/es/_episodes/03-create.md:32 -msgid "" -"Si usamos `ls` para mostrar el contenido del directorio,\n" -"parece que nada ha cambiado:" -msgstr "" -"Si usamos `ls` para mostrar el contenido del directorio,\n" -"parece que nada ha cambiado:" - -#: git-novice/_locale/es/_episodes/03-create.md:40 -msgid "" -"Pero si agregamos la flag `-a` para mostrar todo,\n" -"podemos ver que Git ha creado un directorio oculto dentro de `planets` llamado `.git`:" -msgstr "" -"Pero si agregamos la flag `-a` para mostrar todo,\n" -"podemos ver que Git ha creado un directorio oculto dentro de `planets` llamado `.git`:" - -# code block -#: git-novice/_locale/es/_episodes/03-create.md:48 -msgid "" -"~~~\n" -".\\t..\\t.git\n" -"~~~" -msgstr "" -"~~~\n" -".\\t..\\t.git\n" -"~~~" - -#: git-novice/_locale/es/_episodes/03-create.md:53 -msgid "" -"Git utiliza este subdirectorio especial para almacenar toda la información del proyecto, incluyendo todos los archivos y subdirectorios. Si alguna vez borramos el directorio `.git`,\n" -"perderemos la historia del proyecto." -msgstr "" -"Git utiliza este subdirectorio especial para almacenar toda la información del proyecto, incluyendo todos los archivos y subdirectorios. Si alguna vez borramos el directorio `.git`,\n" -"perderemos la historia del proyecto." - -#: git-novice/_locale/es/_episodes/03-create.md:56 -msgid "" -"Podemos revisar que todo esté configurado correctamente\n" -"pidiendo a Git que nos informe el estado de nuestro proyecto:" -msgstr "" -"Podemos revisar que todo esté configurado correctamente\n" -"pidiendo a Git que nos informe el estado de nuestro proyecto:" - -#: git-novice/_locale/es/_episodes/03-create.md:64 -msgid "Si estás utilizando una versión de git distinta a la que yo utilizo, el output puede ser ligeramente distinto. " -msgstr "Si estás utilizando una versión de git distinta a la que yo utilizo, el output puede ser ligeramente distinto. " - -# blockquote, which can be cascaded -#: git-novice/_locale/es/_episodes/03-create.md:75 -msgid "> ## Lugares para crear un repositorio Git" -msgstr "> ## Lugares para crear un repositorio Git" - -# blockquote, which can be cascaded -#: git-novice/_locale/es/_episodes/03-create.md:124 -msgid "> ## Corrigiendo errores de `git init`" -msgstr "> ## Corrigiendo errores de `git init`" - -# blockquote, which can be cascaded -#: git-novice/_locale/es/_episodes/03-create.md:125 -msgid "> Wolfman le explica a Dracula cómo un repositorio anidado es redudante y puede causar problemas ms adelante." -msgstr "> ドラえもん le explica a のび太 cómo un repositorio anidado es redudante y puede causar problemas ms adelante." - -# blockquote, which can be cascaded -#: git-novice/_locale/es/_episodes/03-create.md:126 -msgid "> Dracula quiere eliminar el repositorio anidado." -msgstr "> のび太 quiere eliminar el repositorio anidado." - -# blockquote, which can be cascaded -#: git-novice/_locale/es/_episodes/03-create.md:127 -msgid "> Cómo puede Dracula deshacer el último `git init` en el sub-directorio `moons`?" -msgstr "> Cómo puede のび太 deshacer el último `git init` en el sub-directorio `moons`?" - -#: git-novice/_locale/es/_episodes/03-create.md:128 -msgid "" -">\n" -"> > ## Solución - USAR CON CUIDADO!\n" -"> >\n" -"> > Para deshacerse de este pequeño error, Dracula puede simplemente eliminar el directorio `.git`\n" -"> > del subdirectorio `moons`. Para ello puede ejecutar el siguiente comando desde el interior del directorio `moons`:\n" -"> >\n" -"> > ~~~\n" -"> > $ rm -rf moons/.git\n" -"> > ~~~\n" -"> > {: .language-bash}\n" -"> >\n" -"> > ¡Pero ten cuidado! Ejecutar este comando en el directorio incorrecto eliminará\n" -"> > toda la historia git de un proyecto que podrías querer conservar. \n" -"> > Por lo tanto, revisa siempre tu directorio actual usando el comando `pwd`." -msgstr "" -">\n" -"> > ## Solución - USAR CON CUIDADO!\n" -"> >\n" -"> > Para deshacerse de este pequeño error, のび太 puede simplemente eliminar el directorio `.git`\n" -"> > del subdirectorio `moons`. Para ello puede ejecutar el siguiente comando desde el interior del directorio `moons`:\n" -"> >\n" -"> > ~~~\n" -"> > $ rm -rf moons/.git\n" -"> > ~~~\n" -"> > {: .language-bash}\n" -"> >\n" -"> > ¡Pero ten cuidado! Ejecutar este comando en el directorio incorrecto eliminará\n" -"> > toda la historia git de un proyecto que podrías querer conservar. \n" -"> > Por lo tanto, revisa siempre tu directorio actual usando el comando `pwd`." - -# Front Matter -#: git-novice/_locale/es/_episodes/04-changes.md:1 -msgid "" -"---\n" -"title: Rastreando Cambios\n" -"teaching: 20\n" -"exercises: 0\n" -"questions:\n" -"- \"¿Cómo registro cambios en Git?\"\n" -"- \"¿Cómo reviso el estatus de mi repositorio de control de versiones?\"\n" -"- \"¿Cómo registro notas acerca de los cambios que he hecho y por qué?\"\n" -"objectives:\n" -"- \"Ir a través del ciclo modificar-agregar-commit para uno o más archivos.\"\n" -"- \"Explicar dónde se almacena la información en cada etapa del flujo de trabajo de un **commit** de Git.\"\n" -"- \"Distinguir entre mensajes descriptivos y no-descriptivos de un **commit**.\"\n" -"keypoints:\n" -"- \"`git status` muestra el estatus de un repositorio.\"\n" -"- \"Los archivos pueden ser almacenados en un directorio de trabajo del proyecto (el cual ven los usuarios), el **staging area** (donde el siguiente **commit** está siendo construido) y el repositorio local (donde los **commits** son registrados permanentemente).\"\n" -"- \"`git add` pone archivos en el **staging area**.\"\n" -"- \"`git commit` guarda el contenido del **staging area** como un nuevo **commit** en el repositorio local.\"\n" -"- \"Siempre escribe un mensaje de registro cuando hagas un **commit** con cambios.\"\n" -"---" -msgstr "" -"---\n" -"title: Rastreando Cambios\n" -"teaching: 20\n" -"exercises: 0\n" -"questions:\n" -"- \"¿Cómo registro cambios en Git?\"\n" -"- \"¿Cómo reviso el estatus de mi repositorio de control de versiones?\"\n" -"- \"¿Cómo registro notas acerca de los cambios que he hecho y por qué?\"\n" -"objectives:\n" -"- \"Ir a través del ciclo modificar-agregar-commit para uno o más archivos.\"\n" -"- \"Explicar dónde se almacena la información en cada etapa del flujo de trabajo de un **commit** de Git.\"\n" -"- \"Distinguir entre mensajes descriptivos y no-descriptivos de un **commit**.\"\n" -"keypoints:\n" -"- \"`git status` muestra el estatus de un repositorio.\"\n" -"- \"Los archivos pueden ser almacenados en un directorio de trabajo del proyecto (el cual ven los usuarios), el **staging area** (donde el siguiente **commit** está siendo construido) y el repositorio local (donde los **commits** son registrados permanentemente).\"\n" -"- \"`git add` pone archivos en el **staging area**.\"\n" -"- \"`git commit` guarda el contenido del **staging area** como un nuevo **commit** en el repositorio local.\"\n" -"- \"Siempre escribe un mensaje de registro cuando hagas un **commit** con cambios.\"\n" -"---" - -#: git-novice/_locale/es/_episodes/04-changes.md:21 -msgid "" -"Primero asegúrate que estamos aún en el directorio correcto.\n" -"Deberías estar en el directorio `planets`." -msgstr "" -"Primero asegúrate que estamos aún en el directorio correcto.\n" -"Deberías estar en el directorio `planets`." - -#: git-novice/_locale/es/_episodes/04-changes.md:29 -msgid "Si aún estás en `moons` navega de regreso a `planets`" -msgstr "Si aún estás en `moons` navega de regreso a `planets`" - -#: git-novice/_locale/es/_episodes/04-changes.md:36 -msgid "" -"Vamos a crear un archivo llamado `mars.txt` que contiene algunas notas\n" -"sobre la aptitud del Planeta Rojo como base.\n" -"Usaremos `nano` para editar el archivo;\n" -"puedes usar el editor que prefieras.\n" -"En particular, éste no tiene que ser el `core.editor` que definiste globalmente con anterioridad. Pero recuerda, los comandos **bash** para crear o editar un nuevo archivo van a depender del editor que tú escojas (podría no ser `nano`). Para un repaso sobre editores de texto, echa un vistazo a [\"¿Qué editor usar?\"](https://swcarpentry.github.io/shell-novice-es/03-create/) en la lección [La terminal de Unix](https://swcarpentry.github.io/shell-novice-es) ." -msgstr "" -"Vamos a crear un archivo llamado `mars.txt` que contiene algunas notas\n" -"sobre la aptitud del Planeta Rojo como base.\n" -"Usaremos `nano` para editar el archivo;\n" -"puedes usar el editor que prefieras.\n" -"En particular, éste no tiene que ser el `core.editor` que definiste globalmente con anterioridad. Pero recuerda, los comandos **bash** para crear o editar un nuevo archivo van a depender del editor que tú escojas (podría no ser `nano`). Para un repaso sobre editores de texto, echa un vistazo a [\"¿Qué editor usar?\"](https://swcarpentry.github.io/shell-novice-es/03-create/) en la lección [La terminal de Unix](https://swcarpentry.github.io/shell-novice-es) ." - -#: git-novice/_locale/es/_episodes/04-changes.md:47 -msgid "Ingresa el texto siguiente en el archivo `mars.txt`:" -msgstr "Ingresa el texto siguiente en el archivo `mars.txt`:" - -#: git-novice/_locale/es/_episodes/04-changes.md:53 -msgid "`mars.txt` ahora contiene una sola línea, la cual podemos ver ejecutando:" -msgstr "`mars.txt` ahora contiene una sola línea, la cual podemos ver ejecutando:" - -#: git-novice/_locale/es/_episodes/04-changes.md:75 -msgid "" -"Si revisamos el estatus de nuestro proyecto otra vez,\n" -"Git nos dice que ha reconocido el nuevo archivo:" -msgstr "" -"Si revisamos el estatus de nuestro proyecto otra vez,\n" -"Git nos dice que ha reconocido el nuevo archivo:" - -# code block -#: git-novice/_locale/es/_episodes/04-changes.md:83 -msgid "" -"~~~\n" -"On branch master\n" -"\n" -"Initial commit\n" -"\n" -"Untracked files:\n" -" (use \"git add ...\" to include in what will be committed)\n" -"\n" -"\\tmars.txt\n" -"nothing added to commit but untracked files present (use \"git add\" to track)\n" -"~~~" -msgstr "" -"~~~\n" -"On branch master\n" -"\n" -"Initial commit\n" -"\n" -"Untracked files:\n" -" (use \"git add ...\" to include in what will be committed)\n" -"\n" -"\\tmars.txt\n" -"nothing added to commit but untracked files present (use \"git add\" to track)\n" -"~~~" - -#: git-novice/_locale/es/_episodes/04-changes.md:96 -msgid "" -"El mensaje de \"untracked files\" significa que \n" -"un archivo no está siendo rastreado por Git.\n" -"Podemos poner los archivos en el **staging area** con `git add`." -msgstr "" -"El mensaje de \"untracked files\" significa que \n" -"un archivo no está siendo rastreado por Git.\n" -"Podemos poner los archivos en el **staging area** con `git add`." - -#: git-novice/_locale/es/_episodes/04-changes.md:105 -msgid "y luego verifica que hizo lo correcto:" -msgstr "y luego verifica que hizo lo correcto:" - -# code block -#: git-novice/_locale/es/_episodes/04-changes.md:112 -msgid "" -"~~~\n" -"On branch master\n" -"\n" -"Initial commit\n" -"\n" -"Changes to be committed:\n" -" (use \"git rm --cached ...\" to unstage)\n" -"\n" -"\\tnew file: mars.txt\n" -"\n" -"~~~" -msgstr "" -"~~~\n" -"On branch master\n" -"\n" -"Initial commit\n" -"\n" -"Changes to be committed:\n" -" (use \"git rm --cached ...\" to unstage)\n" -"\n" -"\\tnew file: mars.txt\n" -"\n" -"~~~" - -#: git-novice/_locale/es/_episodes/04-changes.md:125 -msgid "" -"Git ahora sabe que tiene que seguir la pista de `mars.txt`,\n" -"pero no ha registrado los cambios con un **commit** aún.\n" -"Para que lo haga,\n" -"necesitamos ejecutar un comando más:" -msgstr "" -"Git ahora sabe que tiene que seguir la pista de `mars.txt`,\n" -"pero no ha registrado los cambios con un **commit** aún.\n" -"Para que lo haga,\n" -"necesitamos ejecutar un comando más:" - -#: git-novice/_locale/es/_episodes/04-changes.md:142 -msgid "" -"Cuando ejecutamos `git commit`,\n" -"Git toma todo lo que le hemos dicho que salve usando `git add`\n" -"y almacena una copia permanentemente dentro del directorio especial `.git`.\n" -"Esta copia permanente es llamada un [commit]({{ page.root }}/reference/#commit)\n" -"(o [revision]({{ page.root }}/reference/#revision)) y su identificador corto es `f22b25e`\n" -"(Tu **commit** podría tener otro identificador.)" -msgstr "" -"Cuando ejecutamos `git commit`,\n" -"Git toma todo lo que le hemos dicho que salve usando `git add`\n" -"y almacena una copia permanentemente dentro del directorio especial `.git`.\n" -"Esta copia permanente es llamada un [commit]({{ page.root }}/reference/#commit)\n" -"(o [revision]({{ page.root }}/reference/#revision)) y su identificador corto es `f22b25e`\n" -"(Tu **commit** podría tener otro identificador.)" - -#: git-novice/_locale/es/_episodes/04-changes.md:149 -msgid "" -"Usamos la **flag** `-m` (por \"message\")\n" -"para registrar un comentario corto, descriptivo y específico que nos ayudará a recordar más tarde lo que hicimos y por qué.\n" -"Si ejecutamos `git commit` sin la opción `-m`,\n" -"Git ejecutará `nano` (o cualquier otro editor que hayamos configurado como `core.editor`)\n" -"para que podamos escribir un mensaje más largo." -msgstr "" -"Usamos la **flag** `-m` (por \"message\")\n" -"para registrar un comentario corto, descriptivo y específico que nos ayudará a recordar más tarde lo que hicimos y por qué.\n" -"Si ejecutamos `git commit` sin la opción `-m`,\n" -"Git ejecutará `nano` (o cualquier otro editor que hayamos configurado como `core.editor`)\n" -"para que podamos escribir un mensaje más largo." - -#: git-novice/_locale/es/_episodes/04-changes.md:155 -msgid "" -"[Los Buenos mensajes en un **commit**][commit-messages] inician con un breve resumen (<50 caracteres) de los\n" -"cambios hechos en el **commit**. Si quieres entrar en más detalles, agrega\n" -"una línea blanca entre la línea del resumen y tus notas adicionales." -msgstr "" -"[Los Buenos mensajes en un **commit**][commit-messages] inician con un breve resumen (<50 caracteres) de los\n" -"cambios hechos en el **commit**. Si quieres entrar en más detalles, agrega\n" -"una línea blanca entre la línea del resumen y tus notas adicionales." - -#: git-novice/_locale/es/_episodes/04-changes.md:159 -msgid "Si ejecutamos `git status` ahora:" -msgstr "Si ejecutamos `git status` ahora:" - -#: git-novice/_locale/es/_episodes/04-changes.md:172 -msgid "" -"nos dice que todo está actualizado.\n" -"Si queremos saber lo que hemos hecho recientemente,\n" -"podemos pedir a Git que nos muestre la historia del proyecto usando `git log`:" -msgstr "" -"nos dice que todo está actualizado.\n" -"Si queremos saber lo que hemos hecho recientemente,\n" -"podemos pedir a Git que nos muestre la historia del proyecto usando `git log`:" - -#: git-novice/_locale/es/_episodes/04-changes.md:190 -msgid "" -"`git log` lista todos los **commits** hechos a un repositorio en orden cronológico inverso.\n" -"El listado de cada **commit** incluye\n" -"el identificador completo del **commit**\n" -"(el cual comienza con el mismo caracter que\n" -"el identificador corto que imprime el comando `git commit` anterior),\n" -"el autor del **commit**,\n" -"cuándo fue creado,\n" -"y el mensaje de registro que se le dio a Git cuando el **commit** fue creado." -msgstr "" -"`git log` lista todos los **commits** hechos a un repositorio en orden cronológico inverso.\n" -"El listado de cada **commit** incluye\n" -"el identificador completo del **commit**\n" -"(el cual comienza con el mismo caracter que\n" -"el identificador corto que imprime el comando `git commit` anterior),\n" -"el autor del **commit**,\n" -"cuándo fue creado,\n" -"y el mensaje de registro que se le dio a Git cuando el **commit** fue creado." - -# blockquote, which can be cascaded -#: git-novice/_locale/es/_episodes/04-changes.md:199 -msgid "> ## ¿Dónde están mis cambios?" -msgstr "> ## ¿Dónde están mis cambios?" - -#: git-novice/_locale/es/_episodes/04-changes.md:200 -msgid "" -">\n" -"> Si ejecutamos `ls` en este punto, aún veremos un solo archivo llamado `mars.txt`.\n" -"> Esto es porque Git guarda información acerca de la historia de los archivos\n" -"> en el directorio especial `.git` mencionado antes\n" -">para que nuestro sistema de archivos no se abarrote\n" -"> (y para que no podamos editar o borrar accidentalmente una versión anterior)." -msgstr "" -">\n" -"> Si ejecutamos `ls` en este punto, aún veremos un solo archivo llamado `mars.txt`.\n" -"> Esto es porque Git guarda información acerca de la historia de los archivos\n" -"> en el directorio especial `.git` mencionado antes\n" -">para que nuestro sistema de archivos no se abarrote\n" -"> (y para que no podamos editar o borrar accidentalmente una versión anterior)." - -#: git-novice/_locale/es/_episodes/04-changes.md:208 -msgid "" -"Ahora supón que Dracula agrega más información al archivo.\n" -"(Otra vez, editaremos con `nano` y luego con `cat` mostraremos el contenido del archivo;\n" -"podrías usar un editor diferente y no necesitar `cat`.)" -msgstr "" -"Ahora supón que のび太 agrega más información al archivo.\n" -"(Otra vez, editaremos con `nano` y luego con `cat` mostraremos el contenido del archivo;\n" -"podrías usar un editor diferente y no necesitar `cat`.)" - -#: git-novice/_locale/es/_episodes/04-changes.md:224 -msgid "" -"Cuando ejecutamos `git status` ahora\n" -"nos dice que un archivo ya sabe que ha sido modificado:" -msgstr "" -"Cuando ejecutamos `git status` ahora\n" -"nos dice que un archivo ya sabe que ha sido modificado:" - -# code block -#: git-novice/_locale/es/_episodes/04-changes.md:232 -#: git-novice/_locale/es/_episodes/04-changes.md:295 -#: git-novice/_locale/es/_episodes/05-history.md:194 -msgid "" -"~~~\n" -"On branch master\n" -"Changes not staged for commit:\n" -" (use \"git add ...\" to update what will be committed)\n" -" (use \"git checkout -- ...\" to discard changes in working directory)\n" -"\n" -"\\tmodified: mars.txt\n" -"\n" -"no changes added to commit (use \"git add\" and/or \"git commit -a\")\n" -"~~~" -msgstr "" -"~~~\n" -"On branch master\n" -"Changes not staged for commit:\n" -" (use \"git add ...\" to update what will be committed)\n" -" (use \"git checkout -- ...\" to discard changes in working directory)\n" -"\n" -"\\tmodified: mars.txt\n" -"\n" -"no changes added to commit (use \"git add\" and/or \"git commit -a\")\n" -"~~~" - -#: git-novice/_locale/es/_episodes/04-changes.md:244 -msgid "" -"La última línea es la frase clave:\n" -"\"no changes added to commit\".\n" -"Hemos cambiado este archivo,\n" -"pero no le hemos dicho a Git que queremos que guarde los cambios\n" -"(lo cual hacemos con `git add`)\n" -"ni los hemos guardado (lo cual hacemos con `git commit`).\n" -"Así que hagamos eso ahora. Es una buena práctica revisar siempre\n" -"nuestros cambios antes de guardarlos. Hacemos esto usando `git diff`.\n" -"Esto nos muestra las diferencias entre el estado actual\n" -"del archivo y la versión guardada más reciente:" -msgstr "" -"La última línea es la frase clave:\n" -"\"no changes added to commit\".\n" -"Hemos cambiado este archivo,\n" -"pero no le hemos dicho a Git que queremos que guarde los cambios\n" -"(lo cual hacemos con `git add`)\n" -"ni los hemos guardado (lo cual hacemos con `git commit`).\n" -"Así que hagamos eso ahora. Es una buena práctica revisar siempre\n" -"nuestros cambios antes de guardarlos. Hacemos esto usando `git diff`.\n" -"Esto nos muestra las diferencias entre el estado actual\n" -"del archivo y la versión guardada más reciente:" - -#: git-novice/_locale/es/_episodes/04-changes.md:271 -msgid "" -"La salida es críptica porque \n" -"en realidad es una serie de comandos para herramientas como editores y `patch`\n" -"que les dice cómo reconstruir un archivo a partir del otro.\n" -"Si lo dividimos en secciones:" -msgstr "" -"La salida es críptica porque \n" -"en realidad es una serie de comandos para herramientas como editores y `patch`\n" -"que les dice cómo reconstruir un archivo a partir del otro.\n" -"Si lo dividimos en secciones:" - -# ordered list -#: git-novice/_locale/es/_episodes/04-changes.md:276 -msgid "1. La primera línea nos dice que Git está produciendo un **output** similar al del comando Unix `diff`" -msgstr "1. La primera línea nos dice que Git está produciendo un **output** similar al del comando Unix `diff`" - -#: git-novice/_locale/es/_episodes/04-changes.md:277 -msgid "" -" comparando las versiones anterior y nueva del archivo.\n" -"2. La segunda línea dice exactamente qué versiones del archivo\n" -" está comparando Git;\n" -" `df0654a` y `315bf3a` son etiquetas únicas generadas por computadora para esas versiones.\n" -"3. Las líneas tercera y cuarta muestran una vez más el nombre del archivo que se está cambiando.\n" -"4. Las líneas restantes son las más interesantes, ellas nos muestran las diferencias en cuestión\n" -" y las líneas donde ellas ocurren.\n" -" En particular,\n" -" el marcador `+` en la primera columna muestra dónde agregamos una línea." -msgstr "" -" comparando las versiones anterior y nueva del archivo.\n" -"2. La segunda línea dice exactamente qué versiones del archivo\n" -" está comparando Git;\n" -" `df0654a` y `315bf3a` son etiquetas únicas generadas por computadora para esas versiones.\n" -"3. Las líneas tercera y cuarta muestran una vez más el nombre del archivo que se está cambiando.\n" -"4. Las líneas restantes son las más interesantes, ellas nos muestran las diferencias en cuestión\n" -" y las líneas donde ellas ocurren.\n" -" En particular,\n" -" el marcador `+` en la primera columna muestra dónde agregamos una línea." - -#: git-novice/_locale/es/_episodes/04-changes.md:287 -msgid "Después de revisar nuestro cambio, es tiempo de hacer un **commit** de eso:" -msgstr "Después de revisar nuestro cambio, es tiempo de hacer un **commit** de eso:" - -#: git-novice/_locale/es/_episodes/04-changes.md:307 -msgid "" -"¡Vaya!:\n" -"Git no hará **commit** porque no usamos `git add` primero.\n" -"Arreglemos esto:" -msgstr "" -"¡Vaya!:\n" -"Git no hará **commit** porque no usamos `git add` primero.\n" -"Arreglemos esto:" - -#: git-novice/_locale/es/_episodes/04-changes.md:323 -msgid "" -"Git insiste en que agreguemos archivos al conjunto de cambios que queremos hacer\n" -"antes de hacer **commit** de alguna cosa. Esto permite hacer **commit** de nuestros\n" -"cambios en etapas y capturarlos en porciones lógicas en lugar de\n" -"solo lotes grandes.\n" -"Por ejemplo,\n" -"supongamos que agregamos algunas citas a una investigación relevante para nuestra tesis.\n" -"Podríamos querer hacer **commit** a esas adiciones,\n" -"y su correspondiente registro bibliográfico,\n" -"pero *no* hacer **commit** del trabajo que estamos haciendo sobre la conclusión\n" -"(el cual no hemos terminado aún)." -msgstr "" -"Git insiste en que agreguemos archivos al conjunto de cambios que queremos hacer\n" -"antes de hacer **commit** de alguna cosa. Esto permite hacer **commit** de nuestros\n" -"cambios en etapas y capturarlos en porciones lógicas en lugar de\n" -"solo lotes grandes.\n" -"Por ejemplo,\n" -"supongamos que agregamos algunas citas a una investigación relevante para nuestra tesis.\n" -"Podríamos querer hacer **commit** a esas adiciones,\n" -"y su correspondiente registro bibliográfico,\n" -"pero *no* hacer **commit** del trabajo que estamos haciendo sobre la conclusión\n" -"(el cual no hemos terminado aún)." - -#: git-novice/_locale/es/_episodes/04-changes.md:334 -msgid "" -"Para permitir esto,\n" -"Git tiene un *staging area* especial\n" -"donde mantiene registro de cosas que han sido agregadas al actual [changeset]({{ page.root }}/reference/#changeset)\n" -"pero aún no se han vuelto **commit**." -msgstr "" -"Para permitir esto,\n" -"Git tiene un *staging area* especial\n" -"donde mantiene registro de cosas que han sido agregadas al actual [changeset]({{ page.root }}/reference/#changeset)\n" -"pero aún no se han vuelto **commit**." - -#: git-novice/_locale/es/_episodes/04-changes.md:340 -msgid "" -">\n" -"> Si piensas en Git como tomar instantáneas de cambios durante la vida de un proyecto,\n" -"> `git add` especifica *qué* irá en una instantánea\n" -"> (poniendo cosas en el **staging area**),\n" -"> y `git commit` entonces *realmente toma* la instantánea, y\n" -"> genera un registro permanente de esto (como un **commit**).\n" -"> Si no tienes nada en el staging area cuando escribes `git commit`,\n" -"> Git te pedirá que uses `git commit -a` o `git commit --all`,\n" -"> ¡Que es como reunir *a todos* para la foto!\n" -"> Sin embargo, es casi siempre mejor\n" -"> agregar explícitamente cosas al **staging area**, porque podrías\n" -"> hacer **commit** de cambios que habías olvidado. (Volviendo a las instantáneas,\n" -"> podrías capturar al extra con el maquillaje incompleto caminando en el escenario para la toma\n" -"> porque usaste `-a`!)\n" -"> Trata de organizar las cosas manualmente\n" -"> o podrías encontrarte buscando \"deshacer git commit\" más\n" -"> de lo que te gustaría!" -msgstr "" -">\n" -"> Si piensas en Git como tomar instantáneas de cambios durante la vida de un proyecto,\n" -"> `git add` especifica *qué* irá en una instantánea\n" -"> (poniendo cosas en el **staging area**),\n" -"> y `git commit` entonces *realmente toma* la instantánea, y\n" -"> genera un registro permanente de esto (como un **commit**).\n" -"> Si no tienes nada en el staging area cuando escribes `git commit`,\n" -"> Git te pedirá que uses `git commit -a` o `git commit --all`,\n" -"> ¡Que es como reunir *a todos* para la foto!\n" -"> Sin embargo, es casi siempre mejor\n" -"> agregar explícitamente cosas al **staging area**, porque podrías\n" -"> hacer **commit** de cambios que habías olvidado. (Volviendo a las instantáneas,\n" -"> podrías capturar al extra con el maquillaje incompleto caminando en el escenario para la toma\n" -"> porque usaste `-a`!)\n" -"> Trata de organizar las cosas manualmente\n" -"> o podrías encontrarte buscando \"deshacer git commit\" más\n" -"> de lo que te gustaría!" - -#: git-novice/_locale/es/_episodes/04-changes.md:361 -msgid "" -"Veamos cómo nuestros cambios a un archivo se mueven de nuestro editor\n" -"al **staging area**\n" -"y luego al almacenamiento de largo plazo.\n" -"Primero,\n" -"agregamos otra línea al archivo:" -msgstr "" -"Veamos cómo nuestros cambios a un archivo se mueven de nuestro editor\n" -"al **staging area**\n" -"y luego al almacenamiento de largo plazo.\n" -"Primero,\n" -"agregamos otra línea al archivo:" - -#: git-novice/_locale/es/_episodes/04-changes.md:397 -msgid "" -"Hasta aquí, todo bien:\n" -"hemos agregado una línea al final del archivo\n" -"(mostrado con un `+` en la primera columna).\n" -"Ahora pongamos el cambio en el **staging area**\n" -"y veamos lo que reporta `git diff`:" -msgstr "" -"Hasta aquí, todo bien:\n" -"hemos agregado una línea al final del archivo\n" -"(mostrado con un `+` en la primera columna).\n" -"Ahora pongamos el cambio en el **staging area**\n" -"y veamos lo que reporta `git diff`:" - -#: git-novice/_locale/es/_episodes/04-changes.md:409 -msgid "" -"No hay **output**:\n" -"hasta donde Git puede decir,\n" -"no hay diferencias entre lo que se pidió guardar permanentemente\n" -"y lo que actualmente está en el directorio.\n" -"Sin embargo,\n" -"si hacemos esto:" -msgstr "" -"No hay **output**:\n" -"hasta donde Git puede decir,\n" -"no hay diferencias entre lo que se pidió guardar permanentemente\n" -"y lo que actualmente está en el directorio.\n" -"Sin embargo,\n" -"si hacemos esto:" - -#: git-novice/_locale/es/_episodes/04-changes.md:433 -msgid "" -"esto nos muestra la diferencia entre\n" -"el último cambio que sí hizo **commit**\n" -"y lo que está en el **staging area**.\n" -"Guardemos nuestros cambios:" -msgstr "" -"esto nos muestra la diferencia entre\n" -"el último cambio que sí hizo **commit**\n" -"y lo que está en el **staging area**.\n" -"Guardemos nuestros cambios:" - -#: git-novice/_locale/es/_episodes/04-changes.md:449 -msgid "revisa nuestro estatus:" -msgstr "revisa nuestro estatus:" - -#: git-novice/_locale/es/_episodes/04-changes.md:462 -msgid "y mira en la historia lo que hemos hecho hasta aquí:" -msgstr "y mira en la historia lo que hemos hecho hasta aquí:" - -# blockquote, which can be cascaded -#: git-novice/_locale/es/_episodes/04-changes.md:490 -msgid "> ## Diferencias basadas en palabras" -msgstr "> ## Diferencias basadas en palabras" - -#: git-novice/_locale/es/_episodes/04-changes.md:491 -msgid "" -">\n" -"> A veces, por ejemplo en el caso de documentos de texto, un diff por líneas\n" -"> es demasiado caótico. Es en ese caso donde la opción `--color-words` de\n" -"> `git diff` se vuelve muy útil ya que resalta las palabras\n" -"> modificadas usando colores." -msgstr "" -">\n" -"> A veces, por ejemplo en el caso de documentos de texto, un diff por líneas\n" -"> es demasiado caótico. Es en ese caso donde la opción `--color-words` de\n" -"> `git diff` se vuelve muy útil ya que resalta las palabras\n" -"> modificadas usando colores." - -# blockquote, which can be cascaded -#: git-novice/_locale/es/_episodes/04-changes.md:498 -msgid "> ## Paginación del Registro" -msgstr "> ## Paginación del Registro" - -#: git-novice/_locale/es/_episodes/04-changes.md:499 -msgid "" -">\n" -"> Cuando el **output** de `git log` es demasiado largo para caber en tu pantalla,\n" -"> `git` usa un programa para dividirlo en páginas del tamaño de tu pantalla.\n" -"> Cuando este \"paginador\" es llamado, notarás que la última línea de tu\n" -"> pantalla es un `:`, en lugar de tu prompt de siempre.\n" -">\n" -"> * Para salir del paginador, presiona `q`.\n" -"> * Para moverte a la siguiente página, presiona la barra espaciadora.\n" -"> * Para buscar `alguna_palabra` en todas las páginas, escribe `/alguna_palabra`\n" -"> y navega entre las coincidencias presionando `n` (next)." -msgstr "" -">\n" -"> Cuando el **output** de `git log` es demasiado largo para caber en tu pantalla,\n" -"> `git` usa un programa para dividirlo en páginas del tamaño de tu pantalla.\n" -"> Cuando este \"paginador\" es llamado, notarás que la última línea de tu\n" -"> pantalla es un `:`, en lugar de tu prompt de siempre.\n" -">\n" -"> * Para salir del paginador, presiona `q`.\n" -"> * Para moverte a la siguiente página, presiona la barra espaciadora.\n" -"> * Para buscar `alguna_palabra` en todas las páginas, escribe `/alguna_palabra`\n" -"> y navega entre las coincidencias presionando `n` (next)." - -# blockquote, which can be cascaded -#: git-novice/_locale/es/_episodes/04-changes.md:511 -msgid "> ## Tamaño Límite del Registro" -msgstr "> ## Tamaño Límite del Registro" - -#: git-novice/_locale/es/_episodes/04-changes.md:512 -msgid "" -">\n" -"> Para evitar que `git log` cubra toda la pantalla de tu terminal, puedes limitar el\n" -"> número de **commits** que Git lista usando `-N`, donde `N` es el número de\n" -"> **commits** que quieres ver. Por ejemplo, si sólo quieres información de\n" -"> el último **commit**, puedes usar:\n" -">\n" -"> ~~~\n" -"> $ git log -1\n" -"> ~~~\n" -"> {: .language-bash}\n" -">\n" -"> ~~~\n" -"> commit 005937fbe2a98fb83f0ade869025dc2636b4dad5\n" -"> Author: Vlad Dracula \n" -"> Date: Thu Aug 22 10:14:07 2013 -0400\n" -">\n" -"> Discuss concerns about Mars' climate for Mummy\n" -"> ~~~" -msgstr "" -">\n" -"> Para evitar que `git log` cubra toda la pantalla de tu terminal, puedes limitar el\n" -"> número de **commits** que Git lista usando `-N`, donde `N` es el número de\n" -"> **commits** que quieres ver. Por ejemplo, si sólo quieres información de\n" -"> el último **commit**, puedes usar:\n" -">\n" -"> ~~~\n" -"> $ git log -1\n" -"> ~~~\n" -"> {: .language-bash}\n" -">\n" -"> ~~~\n" -"> commit 005937fbe2a98fb83f0ade869025dc2636b4dad5\n" -"> Author: 野比 のび太 \n" -"> Date: Thu Aug 22 10:14:07 2013 -0400\n" -">\n" -"> Discuss concerns about Mars' climate for Mummy\n" -"> ~~~" - -#: git-novice/_locale/es/_episodes/04-changes.md:531 -msgid "" -">\n" -"> Puedes reducir la cantidad de información usando la\n" -"> opción `--oneline`:\n" -">\n" -"> ~~~\n" -"> $ git log --oneline\n" -"> ~~~\n" -"> {: .language-bash}\n" -"> ~~~\n" -"> * 005937f Discuss concerns about Mars' climate for Mummy\n" -"> * 34961b1 Add concerns about effects of Mars' moons on Wolfman\n" -"> * f22b25e Start notes on Mars as a base\n" -"> ~~~" -msgstr "" -">\n" -"> Puedes reducir la cantidad de información usando la\n" -"> opción `--oneline`:\n" -">\n" -"> ~~~\n" -"> $ git log --oneline\n" -"> ~~~\n" -"> {: .language-bash}\n" -"> ~~~\n" -"> * 005937f Discuss concerns about Mars' climate for Mummy\n" -"> * 34961b1 Add concerns about effects of Mars' moons on ドラえもん\n" -"> * f22b25e Start notes on Mars as a base\n" -"> ~~~" - -#: git-novice/_locale/es/_episodes/04-changes.md:545 -msgid "" -">\n" -"> También puedes combinar las opciones `--oneline` con otras. Una combinación\n" -"> útil es:\n" -">\n" -"> ~~~\n" -"> $ git log --oneline --graph --all --decorate\n" -"> ~~~\n" -"> {: .language-bash}\n" -"> ~~~\n" -"> * 005937f Discuss concerns about Mars' climate for Mummy (HEAD, master)\n" -"> * 34961b1 Add concerns about effects of Mars' moons on Wolfman\n" -"> * f22b25e Start notes on Mars as a base\n" -"> ~~~" -msgstr "" -">\n" -"> También puedes combinar las opciones `--oneline` con otras. Una combinación\n" -"> útil es:\n" -">\n" -"> ~~~\n" -"> $ git log --oneline --graph --all --decorate\n" -"> ~~~\n" -"> {: .language-bash}\n" -"> ~~~\n" -"> * 005937f Discuss concerns about Mars' climate for Mummy (HEAD, master)\n" -"> * 34961b1 Add concerns about effects of Mars' moons on ドラえもん\n" -"> * f22b25e Start notes on Mars as a base\n" -"> ~~~" - -# blockquote, which can be cascaded -#: git-novice/_locale/es/_episodes/04-changes.md:561 -msgid "> ## Directorios" -msgstr "> ## Directorios" - -#: git-novice/_locale/es/_episodes/04-changes.md:562 -msgid "" -">\n" -"> Dos hechos importantes que deberías saber acerca de directorios en Git.\n" -">\n" -"> 1. Git no rastrea directorios por sí mismos, sólo los archivos dentro de ellos.\n" -"> Inténtalo tú mismo:\n" -">\n" -"> ~~~\n" -"> $ mkdir directory\n" -"> $ git status\n" -"> $ git add directory\n" -"> $ git status\n" -"> ~~~\n" -"> {: .language-bash}\n" -">\n" -"> Nota que, nuestro nuevo y vació directorio `directory` no aparece en\n" -"> la lista de archivos no rastreados aún si nosotros explícitamente lo agregamos(_via_ `git add`) a nuestro\n" -"> repositorio. Esta es la razón por la que algunas veces verás archivos `.gitkeep`\n" -"> en directorios que si no fuera por ello estarían vacíos. A diferencia de `.gitignore`, \n" -"> estos archivos no son especiales\n" -"> y su único propósito es poblar un directorio para que Git lo agregue\n" -"> al repositorio. En efecto, podrías nombrar estos archivos como quieras.\n" -">\n" -"> {:start=\"2\"}\n" -"> 2. Si creas un directorio en tu repositorio Git y lo llenas con archivos,\n" -"> podrás agregar todos los archivos en el directorio a la vez haciendo:\n" -">\n" -"> ~~~\n" -"> git add \n" -"> ~~~\n" -"> {: .language-bash}" -msgstr "" -">\n" -"> Dos hechos importantes que deberías saber acerca de directorios en Git.\n" -">\n" -"> 1. Git no rastrea directorios por sí mismos, sólo los archivos dentro de ellos.\n" -"> Inténtalo tú mismo:\n" -">\n" -"> ~~~\n" -"> $ mkdir directory\n" -"> $ git status\n" -"> $ git add directory\n" -"> $ git status\n" -"> ~~~\n" -"> {: .language-bash}\n" -">\n" -"> Nota que, nuestro nuevo y vació directorio `directory` no aparece en\n" -"> la lista de archivos no rastreados aún si nosotros explícitamente lo agregamos(_via_ `git add`) a nuestro\n" -"> repositorio. Esta es la razón por la que algunas veces verás archivos `.gitkeep`\n" -"> en directorios que si no fuera por ello estarían vacíos. A diferencia de `.gitignore`, \n" -"> estos archivos no son especiales\n" -"> y su único propósito es poblar un directorio para que Git lo agregue\n" -"> al repositorio. En efecto, podrías nombrar estos archivos como quieras.\n" -">\n" -"> {:start=\"2\"}\n" -"> 2. Si creas un directorio en tu repositorio Git y lo llenas con archivos,\n" -"> podrás agregar todos los archivos en el directorio a la vez haciendo:\n" -">\n" -"> ~~~\n" -"> git add \n" -"> ~~~\n" -"> {: .language-bash}" - -#: git-novice/_locale/es/_episodes/04-changes.md:594 -msgid "" -"Recapitulando, cuando queremos agregar cambios a nuestro repositorio,\n" -"primero necesitamos agregar los archivos cambiados al **staging area**\n" -"(`git add`) y luego hacer un **commit** de los cambios al\n" -"repositorio (`git commit`):" -msgstr "" -"Recapitulando, cuando queremos agregar cambios a nuestro repositorio,\n" -"primero necesitamos agregar los archivos cambiados al **staging area**\n" -"(`git add`) y luego hacer un **commit** de los cambios al\n" -"repositorio (`git commit`):" - -# blockquote, which can be cascaded -#: git-novice/_locale/es/_episodes/04-changes.md:601 -msgid "> ## Escogiendo un Mensaje para el **Commit**" -msgstr "> ## Escogiendo un Mensaje para el **Commit**" - -#: git-novice/_locale/es/_episodes/04-changes.md:602 -msgid "" -">\n" -"> ¿Cuál de los siguientes mensajes de **commit** sería el más apropiado para el\n" -"> último **commit** hecho a `mars.txt`?\n" -">\n" -"> 1. \"Changes\"\n" -"> 2. \"Added line 'But the Mummy will appreciate the lack of humidity' to mars.txt\"\n" -"> 3. \"Discuss effects of Mars' climate on the Mummy\"\n" -">\n" -"> > ## Solución\n" -"> > La respuesta 1 no es suficientemente descriptiva,\n" -"> > y la respuesta 2 es demasiado descriptiva y redundante,\n" -"> > pero la respuesta 3 es buena: corta pero descriptiva." -msgstr "" -">\n" -"> ¿Cuál de los siguientes mensajes de **commit** sería el más apropiado para el\n" -"> último **commit** hecho a `mars.txt`?\n" -">\n" -"> 1. \"Changes\"\n" -"> 2. \"Added line 'But the Mummy will appreciate the lack of humidity' to mars.txt\"\n" -"> 3. \"Discuss effects of Mars' climate on the Mummy\"\n" -">\n" -"> > ## Solución\n" -"> > La respuesta 1 no es suficientemente descriptiva,\n" -"> > y la respuesta 2 es demasiado descriptiva y redundante,\n" -"> > pero la respuesta 3 es buena: corta pero descriptiva." - -# blockquote, which can be cascaded -#: git-novice/_locale/es/_episodes/04-changes.md:617 -msgid "> ## Haciendo Commit de Cambios a Git" -msgstr "> ## Haciendo Commit de Cambios a Git" - -#: git-novice/_locale/es/_episodes/04-changes.md:618 -msgid "" -">\n" -"> ¿Cuál comando(s) de abajo debería guardar los cambios de `myfile.txt`\n" -"> a mi repositorio local Git?\n" -">\n" -"> 1. `$ git commit -m \"my recent changes\"`\n" -">\n" -"> 2. `$ git init myfile.txt`\n" -"> `$ git commit -m \"my recent changes\"`\n" -">\n" -"> 3. `$ git add myfile.txt`\n" -"> `$ git commit -m \"my recent changes\"`\n" -">\n" -"> 4. `$ git commit -m myfile.txt \"my recent changes\"`\n" -">\n" -"> > ## Solución\n" -"> >\n" -"> > 1. Debería crear un **commit** solamente si los archivos ya han sido agregados al **staging area**.\n" -"> > 2. Trataría de crear un nuevo respositorio.\n" -"> > 3. Es correcto: primero agrega el archivo al **staging area**, luego hace **commit**.\n" -"> > 4. Intentaría hacer **commit** al archivo \"my recent changes\" con el mensaje myfile.txt." -msgstr "" -">\n" -"> ¿Cuál comando(s) de abajo debería guardar los cambios de `myfile.txt`\n" -"> a mi repositorio local Git?\n" -">\n" -"> 1. `$ git commit -m \"my recent changes\"`\n" -">\n" -"> 2. `$ git init myfile.txt`\n" -"> `$ git commit -m \"my recent changes\"`\n" -">\n" -"> 3. `$ git add myfile.txt`\n" -"> `$ git commit -m \"my recent changes\"`\n" -">\n" -"> 4. `$ git commit -m myfile.txt \"my recent changes\"`\n" -">\n" -"> > ## Solución\n" -"> >\n" -"> > 1. Debería crear un **commit** solamente si los archivos ya han sido agregados al **staging area**.\n" -"> > 2. Trataría de crear un nuevo respositorio.\n" -"> > 3. Es correcto: primero agrega el archivo al **staging area**, luego hace **commit**.\n" -"> > 4. Intentaría hacer **commit** al archivo \"my recent changes\" con el mensaje myfile.txt." - -# blockquote, which can be cascaded -#: git-novice/_locale/es/_episodes/04-changes.md:641 -msgid "> ## Haciendo **Commit** a Multiples Archivos" -msgstr "> ## Haciendo **Commit** a Multiples Archivos" - -#: git-novice/_locale/es/_episodes/04-changes.md:642 -msgid "" -">\n" -"> El **staging area** puede tener cambios de cualquier número de archivos\n" -"> a los que quieras hacer **commit**, como una sóla instantánea.\n" -">\n" -"> 1. Agrega algún texto a `mars.txt` anotando tu decisión\n" -"> de considerar Venus como base\n" -"> 2. Crea un nuevo archivo `venus.txt` con tus pensamientos iniciales\n" -"> acerca de Venus como base para tí y tus amigos\n" -"> 3. Agrega los cambios de ambos archivos al **staging area**,\n" -"> y haz un **commit** de esos cambios.\n" -">\n" -"> > ## Solución\n" -"> >\n" -"> > Primero haremos nuestros cambios a los archivos `mars.txt` y `venus.txt`:\n" -"> > ~~~\n" -"> > $ nano mars.txt\n" -"> > $ cat mars.txt\n" -"> > ~~~\n" -"> > {: .language-bash}\n" -"> > ~~~\n" -"> > Maybe I should start with a base on Venus.\n" -"> > ~~~\n" -"> > {: .output}\n" -"> > ~~~\n" -"> > $ nano venus.txt\n" -"> > $ cat venus.txt\n" -"> > ~~~\n" -"> > {: .language-bash}\n" -"> > ~~~\n" -"> > Venus is a nice planet and I definitely should consider it as a base.\n" -"> > ~~~\n" -"> > {: .output}\n" -"> > Ahora puedes agregar ambos archivos al **staging area**. Podemos hacer esto en una sóla línea:\n" -"> >\n" -"> > ~~~\n" -"> > $ git add mars.txt venus.txt\n" -"> > ~~~\n" -"> > {: .language-bash}\n" -"> > O con varios comandos:\n" -"> > ~~~\n" -"> > $ git add mars.txt\n" -"> > $ git add venus.txt\n" -"> > ~~~\n" -"> > {: .language-bash}\n" -"> > Ahora los archivos están listos para hacer **commit**. Puedes verificar esto usando `git status`. Si estás lista para hacer **commit** usa:\n" -"> > ~~~\n" -"> > $ git commit -m \"Write plans to start a base on Venus\"\n" -"> > ~~~\n" -"> > {: .language-bash}\n" -"> > ~~~\n" -"> > [master cc127c2]\n" -"> > Write plans to start a base on Venus\n" -"> > 2 files changed, 2 insertions(+)\n" -"> > create mode 100644 venus.txt\n" -"> > ~~~\n" -"> > {: .output}" -msgstr "" -">\n" -"> El **staging area** puede tener cambios de cualquier número de archivos\n" -"> a los que quieras hacer **commit**, como una sóla instantánea.\n" -">\n" -"> 1. Agrega algún texto a `mars.txt` anotando tu decisión\n" -"> de considerar Venus como base\n" -"> 2. Crea un nuevo archivo `venus.txt` con tus pensamientos iniciales\n" -"> acerca de Venus como base para tí y tus amigos\n" -"> 3. Agrega los cambios de ambos archivos al **staging area**,\n" -"> y haz un **commit** de esos cambios.\n" -">\n" -"> > ## Solución\n" -"> >\n" -"> > Primero haremos nuestros cambios a los archivos `mars.txt` y `venus.txt`:\n" -"> > ~~~\n" -"> > $ nano mars.txt\n" -"> > $ cat mars.txt\n" -"> > ~~~\n" -"> > {: .language-bash}\n" -"> > ~~~\n" -"> > Maybe I should start with a base on Venus.\n" -"> > ~~~\n" -"> > {: .output}\n" -"> > ~~~\n" -"> > $ nano venus.txt\n" -"> > $ cat venus.txt\n" -"> > ~~~\n" -"> > {: .language-bash}\n" -"> > ~~~\n" -"> > Venus is a nice planet and I definitely should consider it as a base.\n" -"> > ~~~\n" -"> > {: .output}\n" -"> > Ahora puedes agregar ambos archivos al **staging area**. Podemos hacer esto en una sóla línea:\n" -"> >\n" -"> > ~~~\n" -"> > $ git add mars.txt venus.txt\n" -"> > ~~~\n" -"> > {: .language-bash}\n" -"> > O con varios comandos:\n" -"> > ~~~\n" -"> > $ git add mars.txt\n" -"> > $ git add venus.txt\n" -"> > ~~~\n" -"> > {: .language-bash}\n" -"> > Ahora los archivos están listos para hacer **commit**. Puedes verificar esto usando `git status`. Si estás lista para hacer **commit** usa:\n" -"> > ~~~\n" -"> > $ git commit -m \"Write plans to start a base on Venus\"\n" -"> > ~~~\n" -"> > {: .language-bash}\n" -"> > ~~~\n" -"> > [master cc127c2]\n" -"> > Write plans to start a base on Venus\n" -"> > 2 files changed, 2 insertions(+)\n" -"> > create mode 100644 venus.txt\n" -"> > ~~~\n" -"> > {: .output}" - -# header -#: git-novice/_locale/es/_episodes/04-changes.md:701 -msgid "## Repositorio `bio` " -msgstr "## Repositorio `bio` " - -#: git-novice/_locale/es/_episodes/04-changes.md:702 -msgid "" -">\n" -"> * Crea un nuevo repositorio Git en tu computadora, llamado `bio`.\n" -"> * Escribe una autobiografía de tres líneas en un archivo llamado `me.txt`,\n" -"> haz **commit** de tus cambios\n" -"> * Modifica una línea, agrega una cuarta línea \n" -"> * Muestra las diferencias entre el estado actualizado y el original\n" -">\n" -"> > ## Soluciónn\n" -"> >\n" -"> > Si es necesario, sal de la carpeta `planets`:\n" -"> >\n" -"> > ~~~\n" -"> > $ cd ..\n" -"> > ~~~\n" -"> > {: .language-bash}\n" -"> >\n" -"> > Crea una nueva carpeta llamada `bio` y 'navega' a ella:\n" -"> >\n" -"> > ~~~\n" -"> > $ mkdir bio\n" -"> > $ cd bio\n" -"> > ~~~\n" -"> > {: .language-bash}\n" -"> >\n" -"> > Inicia git:\n" -"> >\n" -"> > ~~~\n" -"> > $ git init\n" -"> > ~~~\n" -"> > {: .language-bash}\n" -"> >\n" -"> > Crea tu archivo de biografía `me.txt` usando `nano` u otro editor de texto.\n" -"> > Una vez hecho, agrega y haz **commit** de tu cambio al repositorio:\n" -"> >\n" -"> > ~~~\n" -"> > $ git add me.txt\n" -"> > $ git commit -m'Adding biography file'\n" -"> > ~~~\n" -"> > {: .language-bash}\n" -"> >\n" -"> > Modifica el archivo como se describe arriba (modifica una línea, agrega una cuarta línea).\n" -"> > Para mostrar las diferencias entre el estado actual y el original, usa `git diff`:\n" -"> >\n" -"> > ~~~\n" -"> > $ git diff me.txt\n" -"> > ~~~\n" -"> > {: .language-bash}\n" -"> >" -msgstr "" -">\n" -"> * Crea un nuevo repositorio Git en tu computadora, llamado `bio`.\n" -"> * Escribe una autobiografía de tres líneas en un archivo llamado `me.txt`,\n" -"> haz **commit** de tus cambios\n" -"> * Modifica una línea, agrega una cuarta línea \n" -"> * Muestra las diferencias entre el estado actualizado y el original\n" -">\n" -"> > ## Soluciónn\n" -"> >\n" -"> > Si es necesario, sal de la carpeta `planets`:\n" -"> >\n" -"> > ~~~\n" -"> > $ cd ..\n" -"> > ~~~\n" -"> > {: .language-bash}\n" -"> >\n" -"> > Crea una nueva carpeta llamada `bio` y 'navega' a ella:\n" -"> >\n" -"> > ~~~\n" -"> > $ mkdir bio\n" -"> > $ cd bio\n" -"> > ~~~\n" -"> > {: .language-bash}\n" -"> >\n" -"> > Inicia git:\n" -"> >\n" -"> > ~~~\n" -"> > $ git init\n" -"> > ~~~\n" -"> > {: .language-bash}\n" -"> >\n" -"> > Crea tu archivo de biografía `me.txt` usando `nano` u otro editor de texto.\n" -"> > Una vez hecho, agrega y haz **commit** de tu cambio al repositorio:\n" -"> >\n" -"> > ~~~\n" -"> > $ git add me.txt\n" -"> > $ git commit -m'Adding biography file'\n" -"> > ~~~\n" -"> > {: .language-bash}\n" -"> >\n" -"> > Modifica el archivo como se describe arriba (modifica una línea, agrega una cuarta línea).\n" -"> > Para mostrar las diferencias entre el estado actual y el original, usa `git diff`:\n" -"> >\n" -"> > ~~~\n" -"> > $ git diff me.txt\n" -"> > ~~~\n" -"> > {: .language-bash}\n" -"> >" - -#: git-novice/_locale/es/_episodes/04-changes.md:754 -msgid "" -">\n" -"> Para cada uno de los **commits** que hayas hecho, Git almacenó tu nombre 2 veces.\n" -"> Tú eres nombrado como el **author** y el **committer**. Puedes observar\n" -"> esto, diciendo a Git que te muestre más información acerca de tus últimos\n" -"> **commits**:\n" -">\n" -"> ~~~\n" -"> $ git log --format=full\n" -"> ~~~\n" -"> {: .language-bash}\n" -">\n" -"> Cuando haces **commit** puedes nombrar a alguien más como el **author**:\n" -">\n" -"> ~~~\n" -"> $ git commit --author=\"Vlad Dracula \"\n" -"> ~~~\n" -"> {: .language-bash}\n" -">\n" -"> Crea un nuevo repositorio y crea dos **commits**: uno sin la\n" -"> opción `--author` y uno nombrando a un colega tuyo como el\n" -"> **author**. Ejecuta `git log` y `git log --format=full`. Piensa acerca de \n" -"> cómo esto puede permitirte colaborar con tus colegas.\n" -">\n" -"> > ## Solución\n" -"> >\n" -"> > ~~~\n" -"> > $ git add me.txt\n" -"> > $ git commit -m \"Update Vlad's bio.\" --author=\"Frank N. Stein \"\n" -"> > ~~~\n" -"> > {: .language-bash}\n" -"> > \n" -"> > ~~~\n" -"> > [master 4162a51] Update Vlad's bio.\n" -"> > Author: Frank N. Stein \n" -"> > 1 file changed, 2 insertions(+), 2 deletions(-)\n" -"> > ~~~\n" -"> > {: .output}\n" -"> >\n" -"> > ~~~\n" -"> > $ git log --format=full\n" -"> > ~~~\n" -"> > {: .language-bash}\n" -"> >\n" -"> > ~~~\n" -"> > commit 4162a51b273ba799a9d395dd70c45d96dba4e2ff\n" -"> > Author: Frank N. Stein \n" -"> > Commit: Vlad Dracula \n" -"> >\n" -"> > Update Vlad's bio.\n" -"> >\n" -"> > commit aaa3271e5e26f75f11892718e83a3e2743fab8ea\n" -"> > Author: Vlad Dracula \n" -"> > Commit: Vlad Dracula \n" -"> >\n" -"> > Vlad's initial bio.\n" -"> > ~~~\n" -"> > {: .output}" -msgstr "" -">\n" -"> Para cada uno de los **commits** que hayas hecho, Git almacenó tu nombre 2 veces.\n" -"> Tú eres nombrado como el **author** y el **committer**. Puedes observar\n" -"> esto, diciendo a Git que te muestre más información acerca de tus últimos\n" -"> **commits**:\n" -">\n" -"> ~~~\n" -"> $ git log --format=full\n" -"> ~~~\n" -"> {: .language-bash}\n" -">\n" -"> Cuando haces **commit** puedes nombrar a alguien más como el **author**:\n" -">\n" -"> ~~~\n" -"> $ git commit --author=\"Vlad のび太 \"\n" -"> ~~~\n" -"> {: .language-bash}\n" -">\n" -"> Crea un nuevo repositorio y crea dos **commits**: uno sin la\n" -"> opción `--author` y uno nombrando a un colega tuyo como el\n" -"> **author**. Ejecuta `git log` y `git log --format=full`. Piensa acerca de \n" -"> cómo esto puede permitirte colaborar con tus colegas.\n" -">\n" -"> > ## Solución\n" -"> >\n" -"> > ~~~\n" -"> > $ git add me.txt\n" -"> > $ git commit -m \"Update Vlad's bio.\" --author=\"Frank N. Stein \"\n" -"> > ~~~\n" -"> > {: .language-bash}\n" -"> > \n" -"> > ~~~\n" -"> > [master 4162a51] Update Vlad's bio.\n" -"> > Author: Frank N. Stein \n" -"> > 1 file changed, 2 insertions(+), 2 deletions(-)\n" -"> > ~~~\n" -"> > {: .output}\n" -"> >\n" -"> > ~~~\n" -"> > $ git log --format=full\n" -"> > ~~~\n" -"> > {: .language-bash}\n" -"> >\n" -"> > ~~~\n" -"> > commit 4162a51b273ba799a9d395dd70c45d96dba4e2ff\n" -"> > Author: Frank N. Stein \n" -"> > Commit: Vlad のび太 \n" -"> >\n" -"> > Update Vlad's bio.\n" -"> >\n" -"> > commit aaa3271e5e26f75f11892718e83a3e2743fab8ea\n" -"> > Author: Vlad のび太 \n" -"> > Commit: Vlad のび太 \n" -"> >\n" -"> > Vlad's initial bio.\n" -"> > ~~~\n" -"> > {: .output}" - -# Front Matter -#: git-novice/_locale/es/_episodes/05-history.md:1 -msgid "" -"---\n" -"title: Explorando el \"History\"\n" -"teaching: 25\n" -"exercises: 0\n" -"questions:\n" -"- \"¿Cómo puedo identificar versiones anteriores de archivos?\"\n" -"- \"¿Cómo puedo revisar mis cambios?\"\n" -"- \"¿Cómo puedo recuperar versiones anteriores de archivos?\"\n" -"objectives:\n" -"- \"Explicar qué es el **HEAD** de un repositorio y cómo usarlo.\"\n" -"- \"Identificar y usar el número de **commit** the Git.\"\n" -"- \"Comparar varias versiones de archivos.\"\n" -"- \"Restaurar versiones anteriores de archivos.\"\n" -"keypoints:\n" -"- \"`git diff` despliega diferencias entre **commits**.\"\n" -"- \"`git checkout` recupera versiones anteriores de archivos.\"\n" -"---" -msgstr "" -"---\n" -"title: Explorando el \"History\"\n" -"teaching: 25\n" -"exercises: 0\n" -"questions:\n" -"- \"¿Cómo puedo identificar versiones anteriores de archivos?\"\n" -"- \"¿Cómo puedo revisar mis cambios?\"\n" -"- \"¿Cómo puedo recuperar versiones anteriores de archivos?\"\n" -"objectives:\n" -"- \"Explicar qué es el **HEAD** de un repositorio y cómo usarlo.\"\n" -"- \"Identificar y usar el número de **commit** the Git.\"\n" -"- \"Comparar varias versiones de archivos.\"\n" -"- \"Restaurar versiones anteriores de archivos.\"\n" -"keypoints:\n" -"- \"`git diff` despliega diferencias entre **commits**.\"\n" -"- \"`git checkout` recupera versiones anteriores de archivos.\"\n" -"---" - -#: git-novice/_locale/es/_episodes/05-history.md:19 -msgid "" -"Como vimos en la lección anterior, podemos referirnos a los **commits** por sus\n" -"identificadores. Puedes referirte al _commit más reciente_ del directorio de trabajo \n" -"usando el identificador `HEAD`." -msgstr "" -"Como vimos en la lección anterior, podemos referirnos a los **commits** por sus\n" -"identificadores. Puedes referirte al _commit más reciente_ del directorio de trabajo \n" -"usando el identificador `HEAD`." - -#: git-novice/_locale/es/_episodes/05-history.md:23 -msgid "" -"Hemos estado agregando una línea a la vez a `mars.txt`, por lo que es fácil rastrear nuestro\n" -"progreso, así que hagamos eso usando `HEAD`. Antes de iniciar,\n" -"hagamos un cambio en `mars.txt`." -msgstr "" -"Hemos estado agregando una línea a la vez a `mars.txt`, por lo que es fácil rastrear nuestro\n" -"progreso, así que hagamos eso usando `HEAD`. Antes de iniciar,\n" -"hagamos un cambio en `mars.txt`." - -#: git-novice/_locale/es/_episodes/05-history.md:40 -msgid "Ahora, veamos lo que tenemos." -msgstr "Ahora, veamos lo que tenemos." - -#: git-novice/_locale/es/_episodes/05-history.md:59 -msgid "" -"Lo mismo obtendrías si omites `HEAD` (intentalo). \n" -"La verdadera ventaja en todo esto es cuando puedes referirte a **commits** previos. Hacemos\n" -"esto agregando `~1` para referirnos al **commit** inmediatamente anterior a `HEAD`." -msgstr "" -"Lo mismo obtendrías si omites `HEAD` (intentalo). \n" -"La verdadera ventaja en todo esto es cuando puedes referirte a **commits** previos. Hacemos\n" -"esto agregando `~1` para referirnos al **commit** inmediatamente anterior a `HEAD`." - -#: git-novice/_locale/es/_episodes/05-history.md:68 -msgid "" -"Si queremos ver las diferencias entre **commits** anteriores podemos usar `git diff`\n" -"nuevamente, pero con la notación `HEAD~1`,`HEAD~2`, y así sucesivamente, para referirse a ellos:" -msgstr "" -"Si queremos ver las diferencias entre **commits** anteriores podemos usar `git diff`\n" -"nuevamente, pero con la notación `HEAD~1`,`HEAD~2`, y así sucesivamente, para referirse a ellos:" - -#: git-novice/_locale/es/_episodes/05-history.md:89 -msgid "También podríamos usar `git show`, que nos muestra qué cambios hemos realizado en un **commit** anterior así como el mensaje del **commit**, en lugar de las _diferencias_ entre un **commit** y nuestro directorio de trabajo, que vemos usando `git diff`." -msgstr "También podríamos usar `git show`, que nos muestra qué cambios hemos realizado en un **commit** anterior así como el mensaje del **commit**, en lugar de las _diferencias_ entre un **commit** y nuestro directorio de trabajo, que vemos usando `git diff`." - -#: git-novice/_locale/es/_episodes/05-history.md:113 -msgid "" -"De este modo,\n" -"podemos construir una cadena de **commits**.\n" -"El más reciente de la cadena es referido como `HEAD`;\n" -"podemos referirnos a **commits** anteriores utilizando la notación `~`,\n" -"así `HEAD~1` (pronunciado \"head minus one\")\n" -"significa \"el commit anterior\",\n" -"mientras que `HEAD~123` va 123 **commits** hacia atrás desde donde estamos ahora." -msgstr "" -"De este modo,\n" -"podemos construir una cadena de **commits**.\n" -"El más reciente de la cadena es referido como `HEAD`;\n" -"podemos referirnos a **commits** anteriores utilizando la notación `~`,\n" -"así `HEAD~1` (pronunciado \"head minus one\")\n" -"significa \"el commit anterior\",\n" -"mientras que `HEAD~123` va 123 **commits** hacia atrás desde donde estamos ahora." - -#: git-novice/_locale/es/_episodes/05-history.md:121 -msgid "" -"También podemos referirnos a los **commits** usando\n" -"esas largas cadenas de dígitos y letras\n" -"que `git log` despliega.\n" -"Estos son IDs únicos para los cambios,\n" -"y aquí \"únicos\" realmente significa únicos:\n" -"cada cambio a cualquier conjunto de archivos en cualquier computadora\n" -"tiene un identificador único de 40 caracteres.\n" -"Nuestro primer **commit** recibió el ID\n" -"`f22b25e3233b4645dabd0d81e651fe074bd8e73b`,\n" -"así que probemos esto:" -msgstr "" -"También podemos referirnos a los **commits** usando\n" -"esas largas cadenas de dígitos y letras\n" -"que `git log` despliega.\n" -"Estos son IDs únicos para los cambios,\n" -"y aquí \"únicos\" realmente significa únicos:\n" -"cada cambio a cualquier conjunto de archivos en cualquier computadora\n" -"tiene un identificador único de 40 caracteres.\n" -"Nuestro primer **commit** recibió el ID\n" -"`f22b25e3233b4645dabd0d81e651fe074bd8e73b`,\n" -"así que probemos esto:" - -#: git-novice/_locale/es/_episodes/05-history.md:149 -msgid "" -"Esa es la respuesta correcta,\n" -"pero escribir cadenas aleatorias de 40 caracteres es molesto,\n" -"entonces Git nos permite usar solo los primeros caracteres:" -msgstr "" -"Esa es la respuesta correcta,\n" -"pero escribir cadenas aleatorias de 40 caracteres es molesto,\n" -"entonces Git nos permite usar solo los primeros caracteres:" - -#: git-novice/_locale/es/_episodes/05-history.md:170 -msgid "" -"¡Todo bien! Asi que\n" -"podemos guardar cambios en los archivos y ver qué hemos cambiado —ahora \n" -"¿Cómo podemos restaurar versiones anteriores de las cosas?\n" -"Supongamos que accidentalmente sobrescribimos nuestro archivo:" -msgstr "" -"¡Todo bien! Asi que\n" -"podemos guardar cambios en los archivos y ver qué hemos cambiado —ahora \n" -"¿Cómo podemos restaurar versiones anteriores de las cosas?\n" -"Supongamos que accidentalmente sobrescribimos nuestro archivo:" - -#: git-novice/_locale/es/_episodes/05-history.md:186 -msgid "" -"`git status` ahora nos dice que el archivo ha sido cambiado,\n" -"pero esos cambios no se han organizado:" -msgstr "" -"`git status` ahora nos dice que el archivo ha sido cambiado,\n" -"pero esos cambios no se han organizado:" - -#: git-novice/_locale/es/_episodes/05-history.md:206 -msgid "" -"Podemos volver a poner las cosas tal como estaban\n" -"usando `git checkout`:" -msgstr "" -"Podemos volver a poner las cosas tal como estaban\n" -"usando `git checkout`:" - -#: git-novice/_locale/es/_episodes/05-history.md:222 -msgid "" -"Como puedes adivinar por su nombre,\n" -"`git checkout` recupera (es decir, restaura) una versión anterior de un archivo.\n" -"En este caso,\n" -"le estamos diciendo a Git que queremos recuperar la versión del archivo grabado en `HEAD`,\n" -"que es el último **commit** guardado.\n" -"Si queremos volver más allá,\n" -"podemos usar un identificador de **commit** en su lugar:" -msgstr "" -"Como puedes adivinar por su nombre,\n" -"`git checkout` recupera (es decir, restaura) una versión anterior de un archivo.\n" -"En este caso,\n" -"le estamos diciendo a Git que queremos recuperar la versión del archivo grabado en `HEAD`,\n" -"que es el último **commit** guardado.\n" -"Si queremos volver más allá,\n" -"podemos usar un identificador de **commit** en su lugar:" - -# code block -#: git-novice/_locale/es/_episodes/05-history.md:250 -msgid "" -"~~~\n" -"# On branch master\n" -"Changes to be committed:\n" -" (use \"git reset HEAD ...\" to unstage)\n" -"# Changes not staged for commit:\n" -"# (use \"git add ...\" to update what will be committed)\n" -"# (use \"git checkout -- ...\" to discard changes in working directory)\n" -"#\n" -"#\\tmodified: mars.txt\n" -"#\n" -"no changes added to commit (use \"git add\" and/or \"git commit -a\")\n" -"~~~" -msgstr "" -"~~~\n" -"# On branch master\n" -"Changes to be committed:\n" -" (use \"git reset HEAD ...\" to unstage)\n" -"# Changes not staged for commit:\n" -"# (use \"git add ...\" to update what will be committed)\n" -"# (use \"git checkout -- ...\" to discard changes in working directory)\n" -"#\n" -"#\\tmodified: mars.txt\n" -"#\n" -"no changes added to commit (use \"git add\" and/or \"git commit -a\")\n" -"~~~" - -#: git-novice/_locale/es/_episodes/05-history.md:264 -msgid "" -"Ten en cuenta que los cambios están en el **staging area** de almacenamiento.\n" -"Nuevamente, podemos volver a poner las cosas tal como estaban\n" -"usando `git checkout`:" -msgstr "" -"Ten en cuenta que los cambios están en el **staging area** de almacenamiento.\n" -"Nuevamente, podemos volver a poner las cosas tal como estaban\n" -"usando `git checkout`:" - -# blockquote, which can be cascaded -#: git-novice/_locale/es/_episodes/05-history.md:273 -msgid "> ## No pierdas tu HEAD" -msgstr "> ## No pierdas tu HEAD" - -#: git-novice/_locale/es/_episodes/05-history.md:274 -msgid "" -">\n" -"> Arriba usamos\n" -">\n" -"> ~~~\n" -"> $ git checkout f22b25e mars.txt\n" -"> ~~~\n" -"> {: .language-bash}\n" -">\n" -"> para revertir `mars.txt` a su estado después del **commit** `f22b25e`.\n" -"> Pero ¡Ten cuidado! El comando `checkout` tiene otras funcionalidades importantes y Git puede malinterpretar tus intenciones si \n" -"> no sos precisa a la hora de tipear. Por ejemplo, \n" -"> si olvidas `mars.txt` en ese comando, Git te dirá que \"You are in\n" -"> 'detached HEAD' state\". En este estado, no deberías hacer ningún cambio.\n" -"> Puedes arreglar esto volviendo a conectar tu **head** usando `git checkout master`" -msgstr "" -">\n" -"> Arriba usamos\n" -">\n" -"> ~~~\n" -"> $ git checkout f22b25e mars.txt\n" -"> ~~~\n" -"> {: .language-bash}\n" -">\n" -"> para revertir `mars.txt` a su estado después del **commit** `f22b25e`.\n" -"> Pero ¡Ten cuidado! El comando `checkout` tiene otras funcionalidades importantes y Git puede malinterpretar tus intenciones si \n" -"> no sos precisa a la hora de tipear. Por ejemplo, \n" -"> si olvidas `mars.txt` en ese comando, Git te dirá que \"You are in\n" -"> 'detached HEAD' state\". En este estado, no deberías hacer ningún cambio.\n" -"> Puedes arreglar esto volviendo a conectar tu **head** usando `git checkout master`" - -#: git-novice/_locale/es/_episodes/05-history.md:290 -msgid "" -"Es importante recordar que\n" -"debemos usar el número de **commit** que identifica el estado del repositorio\n" -"*antes* del cambio que intentamos deshacer.\n" -"Un error común es usar el número de \n" -"**commit** en el cual hicimos el cambio del cual nos estamos tratando de deshacer.\n" -"En el siguiente ejemplo, queremos recuperar el estado antes del más reciente\n" -"**commit** (`HEAD~1`), que es **commit** `f22b25e`:" -msgstr "" -"Es importante recordar que\n" -"debemos usar el número de **commit** que identifica el estado del repositorio\n" -"*antes* del cambio que intentamos deshacer.\n" -"Un error común es usar el número de \n" -"**commit** en el cual hicimos el cambio del cual nos estamos tratando de deshacer.\n" -"En el siguiente ejemplo, queremos recuperar el estado antes del más reciente\n" -"**commit** (`HEAD~1`), que es **commit** `f22b25e`:" - -#: git-novice/_locale/es/_episodes/05-history.md:300 -msgid "" -"Así que, para poner todo junto,\n" -"aqui esta como Git trabaja, en forma de dibujo:" -msgstr "" -"Así que, para poner todo junto,\n" -"aqui esta como Git trabaja, en forma de dibujo:" - -# blockquote, which can be cascaded -#: git-novice/_locale/es/_episodes/05-history.md:305 -msgid "> ## Simplificando el caso común" -msgstr "> ## Simplificando el caso común" - -#: git-novice/_locale/es/_episodes/05-history.md:306 -msgid "" -">\n" -"> Si lees el **output** de `git status` detenidamente,\n" -"> verás que incluye esta sugerencia:\n" -">\n" -"> ~~~\n" -"> (use \"git checkout -- ...\" to discard changes in working directory)\n" -"> ~~~\n" -"> {: .language-bash}\n" -">\n" -"> Como deciamos,\n" -"> `git checkout` sin un identificador de versión restaura los archivos al estado guardado en `HEAD`.\n" -"> El doble guión `--` es necesario para separar los nombres de los archivos que se están recuperando\n" -"> del comando mismo:\n" -"> sin esto,\n" -"> Git intentaría usar el nombre del archivo como el identificador del **commit**." -msgstr "" -">\n" -"> Si lees el **output** de `git status` detenidamente,\n" -"> verás que incluye esta sugerencia:\n" -">\n" -"> ~~~\n" -"> (use \"git checkout -- ...\" to discard changes in working directory)\n" -"> ~~~\n" -"> {: .language-bash}\n" -">\n" -"> Como deciamos,\n" -"> `git checkout` sin un identificador de versión restaura los archivos al estado guardado en `HEAD`.\n" -"> El doble guión `--` es necesario para separar los nombres de los archivos que se están recuperando\n" -"> del comando mismo:\n" -"> sin esto,\n" -"> Git intentaría usar el nombre del archivo como el identificador del **commit**." - -#: git-novice/_locale/es/_episodes/05-history.md:323 -msgid "" -"El hecho de que los archivos puedan revertirse uno por uno\n" -"tiende a cambiar la forma en que las personas organizan su trabajo.\n" -"Si todo está en un documento grande,\n" -"es difícil (pero no imposible) deshacer cambios a la introducción\n" -"sin deshacer los cambios posteriores a la conclusión.\n" -"Si la introducción y la conclusión se almacenan en archivos separados,\n" -"por otra parte,\n" -"retroceder y avanzar en el tiempo se vuelve mucho más fácil." -msgstr "" -"El hecho de que los archivos puedan revertirse uno por uno\n" -"tiende a cambiar la forma en que las personas organizan su trabajo.\n" -"Si todo está en un documento grande,\n" -"es difícil (pero no imposible) deshacer cambios a la introducción\n" -"sin deshacer los cambios posteriores a la conclusión.\n" -"Si la introducción y la conclusión se almacenan en archivos separados,\n" -"por otra parte,\n" -"retroceder y avanzar en el tiempo se vuelve mucho más fácil." - -# blockquote, which can be cascaded -#: git-novice/_locale/es/_episodes/05-history.md:332 -msgid "> ## Recuperando versiones anteriores de un archivo" -msgstr "> ## Recuperando versiones anteriores de un archivo" - -#: git-novice/_locale/es/_episodes/05-history.md:333 -msgid "" -">\n" -"> Jennifer ha realizado cambios en el **script** de Python en el que ha estado trabajando durante semanas, y las\n" -"> modificaciones que hizo esta mañana \"corrompieron\" el **script** y ya no funciona. Ella ha pasado\n" -"> ~ 1hr tratando de solucionarlo, sin tener suerte...\n" -">\n" -"> Por suerte, ¡Ella ha estado haciendo un seguimiento de las versiones de su proyecto usando Git! ¿Cuáles comandos \n" -"> le permitirán recuperar la última versión estable de su **script** Python llamado \n" -"> `data_cruncher.py`?\n" -">\n" -"> 1. `$ git checkout HEAD`\n" -">\n" -"> 2. `$ git checkout HEAD data_cruncher.py`\n" -">\n" -"> 3. `$ git checkout HEAD~1 data_cruncher.py`\n" -">\n" -"> 4. `$ git checkout data_cruncher.py`\n" -">\n" -"> 5. Ambos 2 y 4" -msgstr "" -">\n" -"> Jennifer ha realizado cambios en el **script** de Python en el que ha estado trabajando durante semanas, y las\n" -"> modificaciones que hizo esta mañana \"corrompieron\" el **script** y ya no funciona. Ella ha pasado\n" -"> ~ 1hr tratando de solucionarlo, sin tener suerte...\n" -">\n" -"> Por suerte, ¡Ella ha estado haciendo un seguimiento de las versiones de su proyecto usando Git! ¿Cuáles comandos \n" -"> le permitirán recuperar la última versión estable de su **script** Python llamado \n" -"> `data_cruncher.py`?\n" -">\n" -"> 1. `$ git checkout HEAD`\n" -">\n" -"> 2. `$ git checkout HEAD data_cruncher.py`\n" -">\n" -"> 3. `$ git checkout HEAD~1 data_cruncher.py`\n" -">\n" -"> 4. `$ git checkout data_cruncher.py`\n" -">\n" -"> 5. Ambos 2 y 4" - -# blockquote, which can be cascaded -#: git-novice/_locale/es/_episodes/05-history.md:353 -msgid "> ## Revertir un commit" -msgstr "> ## Revertir un commit" - -#: git-novice/_locale/es/_episodes/05-history.md:354 -msgid "" -">\n" -"> Jennifer está colaborando en su **script** de Python con sus colegas y\n" -"> se da cuenta que su último **commit** en el repositorio del grupo es incorrecto y quiere\n" -"> deshacerlo. Jennifer necesita deshacer correctamente para que todos en el repositorio\n" -"> del grupo tengan el cambio correcto. `git revert [ID de commit incorrecto]`\n" -"> hará un nuevo **commit** que va a deshacer el commit anterior erroneo de Jennifer. \n" -"> Por lo tanto, `git revert` es diferente de `git checkout [commit\n" -"> ID]` porque `checkout` es para cambios locales no comprometidos con el\n" -"> repositorio de grupo. A continuación se encuentran los pasos correctos y explicaciones para\n" -"> que Jennifer use `git revert`, ¿Cuál es el comando que falta?\n" -">\n" -"> 1. ________ # Mira el historial de git del proyecto para encontrar el ID del **commit**\n" -">\n" -"> 2. Copia el ID (los primeros caracteres del ID, por ejemplo 0b1d055).\n" -">\n" -"> 3. `git revert [commit ID]`\n" -">\n" -"> 4. Escriba el nuevo mensaje del **commit**.\n" -">\n" -"> 5. Salva y cierra" -msgstr "" -">\n" -"> Jennifer está colaborando en su **script** de Python con sus colegas y\n" -"> se da cuenta que su último **commit** en el repositorio del grupo es incorrecto y quiere\n" -"> deshacerlo. Jennifer necesita deshacer correctamente para que todos en el repositorio\n" -"> del grupo tengan el cambio correcto. `git revert [ID de commit incorrecto]`\n" -"> hará un nuevo **commit** que va a deshacer el commit anterior erroneo de Jennifer. \n" -"> Por lo tanto, `git revert` es diferente de `git checkout [commit\n" -"> ID]` porque `checkout` es para cambios locales no comprometidos con el\n" -"> repositorio de grupo. A continuación se encuentran los pasos correctos y explicaciones para\n" -"> que Jennifer use `git revert`, ¿Cuál es el comando que falta?\n" -">\n" -"> 1. ________ # Mira el historial de git del proyecto para encontrar el ID del **commit**\n" -">\n" -"> 2. Copia el ID (los primeros caracteres del ID, por ejemplo 0b1d055).\n" -">\n" -"> 3. `git revert [commit ID]`\n" -">\n" -"> 4. Escriba el nuevo mensaje del **commit**.\n" -">\n" -"> 5. Salva y cierra" - -# blockquote, which can be cascaded -#: git-novice/_locale/es/_episodes/05-history.md:376 -msgid "> ## Entendiendo Workflow y History" -msgstr "> ## Entendiendo Workflow y History" - -#: git-novice/_locale/es/_episodes/05-history.md:377 -msgid "" -">\n" -"> ¿Cuál es el **output** de cat venus.txt al final de este conjunto de comandos?\n" -">\n" -"> ~~~\n" -"> $ cd planets\n" -"> $ nano venus.txt #captura el siguiente texto: Venus is beautiful and full of love\n" -"> $ git add venus.txt\n" -"> $ nano venus.txt #agrega el siguiente texto: Venus is too hot to be suitable as a base\n" -"> $ git commit -m \"Comment on Venus as an unsuitable base\"\n" -"> $ git checkout HEAD venus.txt\n" -"> $ cat venus.txt #esto imprimirá el contenido de venus.txt en la pantalla\n" -"> ~~~\n" -"> {: .language-bash}\n" -">\n" -"> 1.\n" -">\n" -"> ~~~\n" -"> Venus is too hot to be suitable as a base\n" -"> ~~~" -msgstr "" -">\n" -"> ¿Cuál es el **output** de cat venus.txt al final de este conjunto de comandos?\n" -">\n" -"> ~~~\n" -"> $ cd planets\n" -"> $ nano venus.txt #captura el siguiente texto: Venus is beautiful and full of love\n" -"> $ git add venus.txt\n" -"> $ nano venus.txt #agrega el siguiente texto: Venus is too hot to be suitable as a base\n" -"> $ git commit -m \"Comment on Venus as an unsuitable base\"\n" -"> $ git checkout HEAD venus.txt\n" -"> $ cat venus.txt #esto imprimirá el contenido de venus.txt en la pantalla\n" -"> ~~~\n" -"> {: .language-bash}\n" -">\n" -"> 1.\n" -">\n" -"> ~~~\n" -"> Venus is too hot to be suitable as a base\n" -"> ~~~" - -#: git-novice/_locale/es/_episodes/05-history.md:419 -msgid "" -">\n" -"> > ## Solución\n" -"> >\n" -"> > The answer is 2 because `git add venus.txt` was used only before add the line\n" -"> > `Venus is too hot to be suitable as a base`\n" -"> > which was lost when `git checkout` was executed.\n" -"> > Using the flag `-a` with `git commit` would have prevented the lost." -msgstr "" -">\n" -"> > ## Solución\n" -"> >\n" -"> > The answer is 2 because `git add venus.txt` was used only before add the line\n" -"> > `Venus is too hot to be suitable as a base`\n" -"> > which was lost when `git checkout` was executed.\n" -"> > Using the flag `-a` with `git commit` would have prevented the lost." - -# blockquote, which can be cascaded -#: git-novice/_locale/es/_episodes/05-history.md:429 -msgid "> ## Comprobando lo que entendiste de `git diff`" -msgstr "> ## Comprobando lo que entendiste de `git diff`" - -#: git-novice/_locale/es/_episodes/05-history.md:430 -msgid "" -">\n" -"> Considera este comando: `git diff HEAD~3 mars.txt`. ¿Qué predices que hará este comando si lo ejecutas? ¿Qué sucede cuando lo ejecutas? ¿Por qué?\n" -">\n" -"> Prueba éste otro comando, `git diff [ID] mars.txt`, donde [ID] es \n" -"> el identificador único para tu commit más reciente. ¿Qué piensas tú que sucederá,\n" -"> y qué es lo que pasa?" -msgstr "" -">\n" -"> Considera este comando: `git diff HEAD~3 mars.txt`. ¿Qué predices que hará este comando si lo ejecutas? ¿Qué sucede cuando lo ejecutas? ¿Por qué?\n" -">\n" -"> Prueba éste otro comando, `git diff [ID] mars.txt`, donde [ID] es \n" -"> el identificador único para tu commit más reciente. ¿Qué piensas tú que sucederá,\n" -"> y qué es lo que pasa?" - -# blockquote, which can be cascaded -#: git-novice/_locale/es/_episodes/05-history.md:438 -msgid "> ## Deshacer los cambios almacenados" -msgstr "> ## Deshacer los cambios almacenados" - -#: git-novice/_locale/es/_episodes/05-history.md:439 -msgid "" -">\n" -"> `git checkout` puede usarse para restaurar un **commit** anterior cuando cambios no marcados se han \n" -"> hecho, pero ¿También funcionará para los cambios que se han marcado pero no se han vuelto **commit**?\n" -"> Haz un cambio a `mars.txt`, agrega el cambio y usa` git checkout` para ver si\n" -"> puedes eliminar tu cambio." -msgstr "" -">\n" -"> `git checkout` puede usarse para restaurar un **commit** anterior cuando cambios no marcados se han \n" -"> hecho, pero ¿También funcionará para los cambios que se han marcado pero no se han vuelto **commit**?\n" -"> Haz un cambio a `mars.txt`, agrega el cambio y usa` git checkout` para ver si\n" -"> puedes eliminar tu cambio." - -# blockquote, which can be cascaded -#: git-novice/_locale/es/_episodes/05-history.md:446 -msgid "> ## Explorar y resumir el History" -msgstr "> ## Explorar y resumir el History" - -#: git-novice/_locale/es/_episodes/05-history.md:447 -msgid "" -">\n" -"> Explorar el **history** es una parte importante de git, a menudo es un desafío encontrar\n" -"> el ID de confirmación correcto, especialmente si el **commit** es de hace varios meses.\n" -">\n" -"> Imagina que el proyecto `planets` tiene más de 50 archivos.\n" -"> Deseas encontrar un **commit** con texto específico en `mars.txt`.\n" -"> Cuando escribes `git log`, aparece una lista muy larga,\n" -"> ¿Cómo puede restringir la búsqueda?\n" -">\n" -"> Recuerda que el comando `git diff` nos permite explorar un archivo específico,\n" -"> por ejemplo `git diff mars.txt`. Podemos aplicar una idea similar aquí.\n" -">\n" -"> ~~~\n" -"> $ git log mars.txt\n" -"> ~~~\n" -"> {: .language-bash}\n" -">\n" -"> Desafortunadamente, algunos de estos mensajes en los **commits** son muy ambiguos, por ejemplo `update files`.\n" -"> ¿Cómo puedes buscar a través de estos archivos?\n" -">\n" -"> Tanto `git diff` como `git log` son muy útiles y resumen una parte diferente del **history** para ti.\n" -"> ¿Es posible combinar ambos? Vamos a intentar lo siguiente:\n" -">\n" -"> ~~~\n" -"> $ git log --patch mars.txt\n" -"> ~~~\n" -"> {: .language-bash}\n" -">\n" -"> Deberías obtener una larga lista de output, y deberías poder ver tanto los dos mensajes del **commit** como la diferencia entre cada \n" -"> **commit**.\n" -">\n" -"> Pregunta: ¿Qué hace el siguiente comando?\n" -">\n" -"> ~~~\n" -"> $ git log --patch HEAD~3 *.txt\n" -"> ~~~\n" -"> {: .language-bash}" -msgstr "" -">\n" -"> Explorar el **history** es una parte importante de git, a menudo es un desafío encontrar\n" -"> el ID de confirmación correcto, especialmente si el **commit** es de hace varios meses.\n" -">\n" -"> Imagina que el proyecto `planets` tiene más de 50 archivos.\n" -"> Deseas encontrar un **commit** con texto específico en `mars.txt`.\n" -"> Cuando escribes `git log`, aparece una lista muy larga,\n" -"> ¿Cómo puede restringir la búsqueda?\n" -">\n" -"> Recuerda que el comando `git diff` nos permite explorar un archivo específico,\n" -"> por ejemplo `git diff mars.txt`. Podemos aplicar una idea similar aquí.\n" -">\n" -"> ~~~\n" -"> $ git log mars.txt\n" -"> ~~~\n" -"> {: .language-bash}\n" -">\n" -"> Desafortunadamente, algunos de estos mensajes en los **commits** son muy ambiguos, por ejemplo `update files`.\n" -"> ¿Cómo puedes buscar a través de estos archivos?\n" -">\n" -"> Tanto `git diff` como `git log` son muy útiles y resumen una parte diferente del **history** para ti.\n" -"> ¿Es posible combinar ambos? Vamos a intentar lo siguiente:\n" -">\n" -"> ~~~\n" -"> $ git log --patch mars.txt\n" -"> ~~~\n" -"> {: .language-bash}\n" -">\n" -"> Deberías obtener una larga lista de output, y deberías poder ver tanto los dos mensajes del **commit** como la diferencia entre cada \n" -"> **commit**.\n" -">\n" -"> Pregunta: ¿Qué hace el siguiente comando?\n" -">\n" -"> ~~~\n" -"> $ git log --patch HEAD~3 *.txt\n" -"> ~~~\n" -"> {: .language-bash}" - -# Front Matter -#: git-novice/_locale/es/_episodes/06-ignore.md:1 -msgid "" -"---\n" -"title: Ignorando cosas\n" -"teaching: 5\n" -"exercises: 0\n" -"questions:\n" -"- \"¿Cómo puedo indicarle a Git que ignore los archivos que no quiero rastrear?\"\n" -"objectives:\n" -"- \"Configure Git para ignorar archivos específicos.\"\n" -"- \"Explica por qué ignorar los archivos puede ser útil.\"\n" -"keypoints:\n" -"- \"El archivo `.gitignore` le dice a Git qué archivos ignorar.\"\n" -"---" -msgstr "" -"---\n" -"title: Ignorando cosas\n" -"teaching: 5\n" -"exercises: 0\n" -"questions:\n" -"- \"¿Cómo puedo indicarle a Git que ignore los archivos que no quiero rastrear?\"\n" -"objectives:\n" -"- \"Configure Git para ignorar archivos específicos.\"\n" -"- \"Explica por qué ignorar los archivos puede ser útil.\"\n" -"keypoints:\n" -"- \"El archivo `.gitignore` le dice a Git qué archivos ignorar.\"\n" -"---" - -#: git-novice/_locale/es/_episodes/06-ignore.md:14 -msgid "" -"¿Qué pasa si tenemos archivos que no queremos que Git rastree,\n" -"como archivos de copia de seguridad creados por nuestro editor\n" -"o archivos intermedios creados durante el análisis de datos?\n" -"Vamos a crear algunos archivos ficticios:" -msgstr "" -"¿Qué pasa si tenemos archivos que no queremos que Git rastree,\n" -"como archivos de copia de seguridad creados por nuestro editor\n" -"o archivos intermedios creados durante el análisis de datos?\n" -"Vamos a crear algunos archivos ficticios:" - -#: git-novice/_locale/es/_episodes/06-ignore.md:25 -msgid "Mira lo que Git dice:" -msgstr "Mira lo que Git dice:" - -# code block -#: git-novice/_locale/es/_episodes/06-ignore.md:32 -msgid "" -"~~~\n" -"On branch master\n" -"Untracked files:\n" -" (use \"git add ...\" to include in what will be committed)\n" -"\n" -"\\ta.dat\n" -"\\tb.dat\n" -"\\tc.dat\n" -"\\tresults/\n" -"nothing added to commit but untracked files present (use \"git add\" to track)\n" -"~~~" -msgstr "" -"~~~\n" -"On branch master\n" -"Untracked files:\n" -" (use \"git add ...\" to include in what will be committed)\n" -"\n" -"\\ta.dat\n" -"\\tb.dat\n" -"\\tc.dat\n" -"\\tresults/\n" -"nothing added to commit but untracked files present (use \"git add\" to track)\n" -"~~~" - -#: git-novice/_locale/es/_episodes/06-ignore.md:45 -msgid "" -"Colocar estos archivos bajo el control de versiones sería un desperdicio de espacio en disco. \n" -"Y lo que es peor, \n" -"al tenerlos todos listados, podría distraernos de los cambios que realmente importan, \n" -"así que vamos a decirle a Git que los ignore." -msgstr "" -"Colocar estos archivos bajo el control de versiones sería un desperdicio de espacio en disco. \n" -"Y lo que es peor, \n" -"al tenerlos todos listados, podría distraernos de los cambios que realmente importan, \n" -"así que vamos a decirle a Git que los ignore." - -#: git-novice/_locale/es/_episodes/06-ignore.md:50 -msgid "Lo hacemos creando un archivo en el directorio raíz de nuestro proyecto llamado `.gitignore`:" -msgstr "Lo hacemos creando un archivo en el directorio raíz de nuestro proyecto llamado `.gitignore`:" - -#: git-novice/_locale/es/_episodes/06-ignore.md:64 -msgid "" -"Estos patrones le dicen a Git que ignore cualquier archivo cuyo nombre termine en `.dat`\n" -"y todo lo que haya en el directorio `results`.\n" -"(Si alguno de estos archivos ya estaba siendo rastreado, \n" -"Git seguirá rastreándolos.)" -msgstr "" -"Estos patrones le dicen a Git que ignore cualquier archivo cuyo nombre termine en `.dat`\n" -"y todo lo que haya en el directorio `results`.\n" -"(Si alguno de estos archivos ya estaba siendo rastreado, \n" -"Git seguirá rastreándolos.)" - -#: git-novice/_locale/es/_episodes/06-ignore.md:69 -msgid "" -"Una vez que hemos creado este archivo, \n" -"la salida de `git status` es mucho más limpia:" -msgstr "" -"Una vez que hemos creado este archivo, \n" -"la salida de `git status` es mucho más limpia:" - -# code block -#: git-novice/_locale/es/_episodes/06-ignore.md:77 -msgid "" -"~~~\n" -"On branch master\n" -"Untracked files:\n" -" (use \"git add ...\" to include in what will be committed)\n" -"\n" -"\\t.gitignore\n" -"nothing added to commit but untracked files present (use \"git add\" to track)\n" -"~~~" -msgstr "" -"~~~\n" -"On branch master\n" -"Untracked files:\n" -" (use \"git add ...\" to include in what will be committed)\n" -"\n" -"\\t.gitignore\n" -"nothing added to commit but untracked files present (use \"git add\" to track)\n" -"~~~" - -#: git-novice/_locale/es/_episodes/06-ignore.md:87 -msgid "" -"Lo único que Git advierte ahora, es el archivo `.gitignore` recién creado.\n" -"Podrías pensar que no queremos rastrearlo, \n" -"pero todos aquellos con los que compartimos nuestro repositorio probablemente desearán\n" -"ignorar las mismas cosas que nosotros.\n" -"Vamos a agregar y hacer \"commit\" de `.gitignore`:" -msgstr "" -"Lo único que Git advierte ahora, es el archivo `.gitignore` recién creado.\n" -"Podrías pensar que no queremos rastrearlo, \n" -"pero todos aquellos con los que compartimos nuestro repositorio probablemente desearán\n" -"ignorar las mismas cosas que nosotros.\n" -"Vamos a agregar y hacer \"commit\" de `.gitignore`:" - -#: git-novice/_locale/es/_episodes/06-ignore.md:106 -msgid "Como ventaja, usar `.gitignore` nos ayuda a evitar agregar accidentalmente al repositorio los archivos que no queremos rastrear:" -msgstr "Como ventaja, usar `.gitignore` nos ayuda a evitar agregar accidentalmente al repositorio los archivos que no queremos rastrear:" - -#: git-novice/_locale/es/_episodes/06-ignore.md:120 -msgid "" -"Si realmente queremos anular la configuración de ignorar, \n" -"podemos usar `git add -f` para obligar a Git a añadir algo. Por ejemplo, \n" -"`git add -f a.dat`.\n" -"También podemos ver siempre el estado de los archivos ignorados si queremos:" -msgstr "" -"Si realmente queremos anular la configuración de ignorar, \n" -"podemos usar `git add -f` para obligar a Git a añadir algo. Por ejemplo, \n" -"`git add -f a.dat`.\n" -"También podemos ver siempre el estado de los archivos ignorados si queremos:" - -# blockquote, which can be cascaded -#: git-novice/_locale/es/_episodes/06-ignore.md:144 -msgid "> ## Ignorar archivos anidados" -msgstr "> ## Ignorar archivos anidados" - -#: git-novice/_locale/es/_episodes/06-ignore.md:145 -msgid "" -">\n" -"> Dado un directorio con la siguiente estructura:\n" -">\n" -"> ~~~\n" -"> results/data\n" -"> results/plots\n" -"> ~~~\n" -"> {: .language-bash}\n" -">\n" -"> ¿Cómo ignorarías sólo `results/plots` y no `results/data`?\n" -">\n" -"> > ## Solución\n" -"> >\n" -"> > Como ocurre con la mayoría de los problemas de programación, hay \n" -"> > varias maneras de resolver esto. Si sólo deseas ignorar el \n" -"> > contenido de `results/plots`, puedes cambiar tu `.gitignore` para \n" -"> > ignorar solamente la subcarpeta `/plots/` añadiendo la siguiente línea a su .gitignore:\n" -"> >\n" -"> > `results/plots/`\n" -"> >\n" -"> > Si, en cambio, deseas ignorar todo en `/results/`, pero deseas realizar el\n" -"> > seguimiento de `results/data`, puedes agregar `results/` a su .gitignore y\n" -"> > crear una excepción para la carpeta `results/data/`.\n" -"> > El siguiente reto cubrirá este tipo de solución.\n" -"> >\n" -"> >\n" -"> > A veces el patrón `**` viene muy bien para referirse a múltiples\n" -"> > niveles de directorio. E.g. `**/results/plots/*` hará que git ignore el\n" -"> > directorio `results/plots` en cualquier directorio raíz." -msgstr "" -">\n" -"> Dado un directorio con la siguiente estructura:\n" -">\n" -"> ~~~\n" -"> results/data\n" -"> results/plots\n" -"> ~~~\n" -"> {: .language-bash}\n" -">\n" -"> ¿Cómo ignorarías sólo `results/plots` y no `results/data`?\n" -">\n" -"> > ## Solución\n" -"> >\n" -"> > Como ocurre con la mayoría de los problemas de programación, hay \n" -"> > varias maneras de resolver esto. Si sólo deseas ignorar el \n" -"> > contenido de `results/plots`, puedes cambiar tu `.gitignore` para \n" -"> > ignorar solamente la subcarpeta `/plots/` añadiendo la siguiente línea a su .gitignore:\n" -"> >\n" -"> > `results/plots/`\n" -"> >\n" -"> > Si, en cambio, deseas ignorar todo en `/results/`, pero deseas realizar el\n" -"> > seguimiento de `results/data`, puedes agregar `results/` a su .gitignore y\n" -"> > crear una excepción para la carpeta `results/data/`.\n" -"> > El siguiente reto cubrirá este tipo de solución.\n" -"> >\n" -"> >\n" -"> > A veces el patrón `**` viene muy bien para referirse a múltiples\n" -"> > niveles de directorio. E.g. `**/results/plots/*` hará que git ignore el\n" -"> > directorio `results/plots` en cualquier directorio raíz." - -# blockquote, which can be cascaded -#: git-novice/_locale/es/_episodes/06-ignore.md:177 -msgid "> ## Incluyendo archivos específicos" -msgstr "> ## Incluyendo archivos específicos" - -#: git-novice/_locale/es/_episodes/06-ignore.md:178 -msgid "" -">\n" -"> ¿Cómo ignorarías todos los archivos `.data` en tu directorio raíz, excepto` final.data`?\n" -"> Sugerencia: Descubre lo que `!` (el signo de exclamación) hace\n" -">\n" -"> > ## Solución\n" -"> >\n" -"> > Agrega las siguientes dos líneas a tu archivo .gitignore:\n" -"> >\n" -"> > ~~~\n" -"> > *.data # ignora todos los archivos .data\n" -"> > !final.data # excepto el archivo final.data\n" -"> > ~~~\n" -"> > {: .language-bash}\n" -"> >\n" -"> > El signo de exclamación incluirá una entrada previamente excluida." -msgstr "" -">\n" -"> ¿Cómo ignorarías todos los archivos `.data` en tu directorio raíz, excepto` final.data`?\n" -"> Sugerencia: Descubre lo que `!` (el signo de exclamación) hace\n" -">\n" -"> > ## Solución\n" -"> >\n" -"> > Agrega las siguientes dos líneas a tu archivo .gitignore:\n" -"> >\n" -"> > ~~~\n" -"> > *.data # ignora todos los archivos .data\n" -"> > !final.data # excepto el archivo final.data\n" -"> > ~~~\n" -"> > {: .language-bash}\n" -"> >\n" -"> > El signo de exclamación incluirá una entrada previamente excluida." - -# blockquote, which can be cascaded -#: git-novice/_locale/es/_episodes/06-ignore.md:196 -msgid "> ## Ignorando todos los archivos de datos en un directorio" -msgstr "> ## Ignorando todos los archivos de datos en un directorio" - -#: git-novice/_locale/es/_episodes/06-ignore.md:197 -msgid "" -">\n" -"> Dado un directorio con la siguiente estructura:\n" -">\n" -"> ~~~\n" -"> results/data/position/gps/a.data\n" -"> results/data/position/gps/b.data\n" -"> results/data/position/gps/c.data\n" -"> results/data/position/gps/info.txt\n" -"> results/plots\n" -"> ~~~\n" -"> {: .language-bash}\n" -">\n" -"> ¿Cuál es la regla más corta en `.gitignore` para ignorar todos los archivos `.data`\n" -"> en `result/data/position/gps`? No ignores el archivo `info.txt`.\n" -">\n" -"> > ## Solución\n" -"> >\n" -"> > Agregando `results/data/position/gps/*.data` coincidirá con cada archivo en\n" -"> > `results/data/position/gps` que termine con `.data`.\n" -"> > El archivo `results/data/position/gps/info.txt` no será ignorado." -msgstr "" -">\n" -"> Dado un directorio con la siguiente estructura:\n" -">\n" -"> ~~~\n" -"> results/data/position/gps/a.data\n" -"> results/data/position/gps/b.data\n" -"> results/data/position/gps/c.data\n" -"> results/data/position/gps/info.txt\n" -"> results/plots\n" -"> ~~~\n" -"> {: .language-bash}\n" -">\n" -"> ¿Cuál es la regla más corta en `.gitignore` para ignorar todos los archivos `.data`\n" -"> en `result/data/position/gps`? No ignores el archivo `info.txt`.\n" -">\n" -"> > ## Solución\n" -"> >\n" -"> > Agregando `results/data/position/gps/*.data` coincidirá con cada archivo en\n" -"> > `results/data/position/gps` que termine con `.data`.\n" -"> > El archivo `results/data/position/gps/info.txt` no será ignorado." - -# blockquote, which can be cascaded -#: git-novice/_locale/es/_episodes/06-ignore.md:220 -msgid "> ## El orden de las reglas" -msgstr "> ## El orden de las reglas" - -#: git-novice/_locale/es/_episodes/06-ignore.md:221 -msgid "" -">\n" -"> Dado un archivo `.gitignore` con el siguiente contenido:\n" -">\n" -"> ~~~\n" -"> *.data\n" -"> !*.data\n" -"> ~~~\n" -"> {: .language-bash}\n" -">\n" -"> ¿Cuál será el resultado?\n" -">\n" -"> > ## Solución\n" -"> >\n" -"> > El modificador `!` anulará algún patrón ignorado previamente definido.\n" -"> > Debido a que la entrada `!*.data` anula todos los archivos` .data` anteriores en `.gitignore`,\n" -"> > ninguno de ellos será ignorado, y todos los archivos` .data` serán rastreados.\n" -"> >" -msgstr "" -">\n" -"> Dado un archivo `.gitignore` con el siguiente contenido:\n" -">\n" -"> ~~~\n" -"> *.data\n" -"> !*.data\n" -"> ~~~\n" -"> {: .language-bash}\n" -">\n" -"> ¿Cuál será el resultado?\n" -">\n" -"> > ## Solución\n" -"> >\n" -"> > El modificador `!` anulará algún patrón ignorado previamente definido.\n" -"> > Debido a que la entrada `!*.data` anula todos los archivos` .data` anteriores en `.gitignore`,\n" -"> > ninguno de ellos será ignorado, y todos los archivos` .data` serán rastreados.\n" -"> >" - -# blockquote, which can be cascaded -#: git-novice/_locale/es/_episodes/06-ignore.md:241 -msgid "> ## Archivos de bitácora" -msgstr "> ## Archivos de bitácora" - -#: git-novice/_locale/es/_episodes/06-ignore.md:242 -msgid "" -">\n" -"> Supón que escribiste un **script** que crea muchos archivos de registro con la estructura `log_01`, `log_02`, `log_03`, etc. Deseas conservarlos pero no rastrearlos a través de `git`.\n" -">\n" -"> 1. Escribe **una entrada** en tu archivo `.gitignore` que excluya los archivos con estructura `log_01`, `log_02`, etc.\n" -">\n" -"> 2. Prueba tu \"patrón de ignorar\" creando algunos archivos ficticios `log_01`, etc.\n" -">\n" -"> 3. Te das cuenta de que el archivo `log_01` es muy importante después de todo, así que lo tienes que agregar a los archivos rastreados sin cambiar el` .gitignore` de nuevo\n" -">\n" -"> 4. Discute con tu compañero de a lado qué otros tipos de archivos podrían residir en tu directorio que no deseas seguir y por tanto excluir a través de `.gitignore`.\n" -">\n" -"> > ## Solución\n" -"> >\n" -"> > 1. Agrega `log_*` o `log*` como nueva entrada en tu archivo .gitignore\n" -"> > 3. Rastrea `log_01` usando `git add -f log_01`" -msgstr "" -">\n" -"> Supón que escribiste un **script** que crea muchos archivos de registro con la estructura `log_01`, `log_02`, `log_03`, etc. Deseas conservarlos pero no rastrearlos a través de `git`.\n" -">\n" -"> 1. Escribe **una entrada** en tu archivo `.gitignore` que excluya los archivos con estructura `log_01`, `log_02`, etc.\n" -">\n" -"> 2. Prueba tu \"patrón de ignorar\" creando algunos archivos ficticios `log_01`, etc.\n" -">\n" -"> 3. Te das cuenta de que el archivo `log_01` es muy importante después de todo, así que lo tienes que agregar a los archivos rastreados sin cambiar el` .gitignore` de nuevo\n" -">\n" -"> 4. Discute con tu compañero de a lado qué otros tipos de archivos podrían residir en tu directorio que no deseas seguir y por tanto excluir a través de `.gitignore`.\n" -">\n" -"> > ## Solución\n" -"> >\n" -"> > 1. Agrega `log_*` o `log*` como nueva entrada en tu archivo .gitignore\n" -"> > 3. Rastrea `log_01` usando `git add -f log_01`" - -# Front Matter -#: git-novice/_locale/es/_episodes/07-github.md:1 -msgid "" -"---\n" -"title: Repositorios remotos en GitHub\n" -"teaching: 30\n" -"exercises: 0\n" -"questions:\n" -"- \"¿Cómo puedo compartir los cambios con otros en la web?\"\n" -"objectives:\n" -"- \"Explica qué es un repositorio remoto y por qué es útil.\"\n" -"- \"Hacer **push** y **pull** en un repositorio remoto\"\n" -"keypoints:\n" -"- \"Un repositorio Git local puede ser conectado a uno o más repositorios remotos.\"\n" -"- \"Usa el protocolo HTTPS para conectarte a un repositorio remoto hasta que hayas aprendido como hacerlo con SSH.\"\n" -"- \"`git push` copia los cambios desde el repositorio local a un repositorio remoto.\"\n" -"- \"`git pull` copia los cambios desde un repositorio remoto a un repositorio local.\"\n" -"---" -msgstr "" -"---\n" -"title: Repositorios remotos en GitHub\n" -"teaching: 30\n" -"exercises: 0\n" -"questions:\n" -"- \"¿Cómo puedo compartir los cambios con otros en la web?\"\n" -"objectives:\n" -"- \"Explica qué es un repositorio remoto y por qué es útil.\"\n" -"- \"Hacer **push** y **pull** en un repositorio remoto\"\n" -"keypoints:\n" -"- \"Un repositorio Git local puede ser conectado a uno o más repositorios remotos.\"\n" -"- \"Usa el protocolo HTTPS para conectarte a un repositorio remoto hasta que hayas aprendido como hacerlo con SSH.\"\n" -"- \"`git push` copia los cambios desde el repositorio local a un repositorio remoto.\"\n" -"- \"`git pull` copia los cambios desde un repositorio remoto a un repositorio local.\"\n" -"---" - -#: git-novice/_locale/es/_episodes/07-github.md:17 -msgid "Cuando se trabaja en colaboración con otras personas es cuando el sistema de control de versiones alcanza su pleno potencial. Ya hemos visto la mayor parte de las herramientas que necesitamos para ello, tan sólo nos falta ver cómo copiar los cambios realizados de un repositorio a otro." -msgstr "Cuando se trabaja en colaboración con otras personas es cuando el sistema de control de versiones alcanza su pleno potencial. Ya hemos visto la mayor parte de las herramientas que necesitamos para ello, tan sólo nos falta ver cómo copiar los cambios realizados de un repositorio a otro." - -#: git-novice/_locale/es/_episodes/07-github.md:19 -msgid "Sistemas como Git ya nos permiten mover el trabajo realizado entre dos repositorios cualesquiera. Sin embargo, en la práctica es más sencillo establecer uno de ellos como repositorio central y tenerlo en la red en lugar de tu computadora particular. La mayoría de desarrolladores usan servicios de alojamiento en la red, tales como [GitHub](http://github.com), [BitBucket](http://bitbucket.org) o [GitLab](http://gitlab.com/), para alojar ese repositorio central; en la última sección de esta lección exploraremos los pros y los contras de cada uno de ellos." -msgstr "Sistemas como Git ya nos permiten mover el trabajo realizado entre dos repositorios cualesquiera. Sin embargo, en la práctica es más sencillo establecer uno de ellos como repositorio central y tenerlo en la red en lugar de tu computadora particular. La mayoría de desarrolladores usan servicios de alojamiento en la red, tales como [GitHub](http://github.com), [BitBucket](http://bitbucket.org) o [GitLab](http://gitlab.com/), para alojar ese repositorio central; en la última sección de esta lección exploraremos los pros y los contras de cada uno de ellos." - -#: git-novice/_locale/es/_episodes/07-github.md:21 -msgid "Empecemos por compartir con todos los demás los cambios que hemos realizado en nuestro proyecto actual. Para ello, ingresa en tu cuenta de GitHub y haz click en el icono que hay en la esquina superior derecha para crear un nuevo repositorio llamado `planets`:" -msgstr "Empecemos por compartir con todos los demás los cambios que hemos realizado en nuestro proyecto actual. Para ello, ingresa en tu cuenta de GitHub y haz click en el icono que hay en la esquina superior derecha para crear un nuevo repositorio llamado `planets`:" - -#: git-novice/_locale/es/_episodes/07-github.md:23 -msgid "![Creando un Repositorio en GitHub (Paso 1)](../fig/github-create-repo-01.png)" -msgstr "![Creando un Repositorio en GitHub (Paso 1)](../fig/github-create-repo-01.png)" - -#: git-novice/_locale/es/_episodes/07-github.md:25 -msgid "Dale a tu repositorio el nombre \"planets\" y haz click en \"Create repository\":" -msgstr "Dale a tu repositorio el nombre \"planets\" y haz click en \"Create repository\":" - -#: git-novice/_locale/es/_episodes/07-github.md:27 -msgid "![Creando un Repositorio en GitHub (Paso 2)](../fig/github-create-repo-02.png)" -msgstr "![Creando un Repositorio en GitHub (Paso 2)](../fig/github-create-repo-02.png)" - -#: git-novice/_locale/es/_episodes/07-github.md:29 -msgid "Tan pronto es creado el repositorio, GitHub muestra una página con una URL y algo de información sobre cómo configurar tu repositorio local." -msgstr "Tan pronto es creado el repositorio, GitHub muestra una página con una URL y algo de información sobre cómo configurar tu repositorio local." - -#: git-novice/_locale/es/_episodes/07-github.md:31 -msgid "![Creando un Repositorio en GitHub (Paso 3)](../fig/github-create-repo-03.png)" -msgstr "![Creando un Repositorio en GitHub (Paso 3)](../fig/github-create-repo-03.png)" - -#: git-novice/_locale/es/_episodes/07-github.md:33 -msgid "Esto en realidad ejecuta lo siguiente en los servidores de GitHub:" -msgstr "Esto en realidad ejecuta lo siguiente en los servidores de GitHub:" - -#: git-novice/_locale/es/_episodes/07-github.md:42 -msgid "Nuestro repositorio local contiene nuestro trabajo previo en `mars.txt`, pero el repositorio remoto en GitHub todavía no contiene ningún archivo:" -msgstr "Nuestro repositorio local contiene nuestro trabajo previo en `mars.txt`, pero el repositorio remoto en GitHub todavía no contiene ningún archivo:" - -#: git-novice/_locale/es/_episodes/07-github.md:44 -msgid "![Repositorio en GitHub recién creado](../fig/git-freshly-made-github-repo.svg)" -msgstr "![Repositorio en GitHub recién creado](../fig/git-freshly-made-github-repo.svg)" - -#: git-novice/_locale/es/_episodes/07-github.md:46 -msgid "El siguiente paso es conectar los dos repositorios. Ello se consigue convirtiendo al repositorio en GitHub en un [repositorio remoto]({{ page.root }}/reference/#remote) del repositorio local. La página de inicio del repositorio en GitHub incluye la secuencia de caracteres que necesitamos para identificarlo:" -msgstr "El siguiente paso es conectar los dos repositorios. Ello se consigue convirtiendo al repositorio en GitHub en un [repositorio remoto]({{ page.root }}/reference/#remote) del repositorio local. La página de inicio del repositorio en GitHub incluye la secuencia de caracteres que necesitamos para identificarlo:" - -#: git-novice/_locale/es/_episodes/07-github.md:48 -msgid "![Dónde encontrar la URL del Repositorio en GitHub](../fig/github-find-repo-string.png)" -msgstr "![Dónde encontrar la URL del Repositorio en GitHub](../fig/github-find-repo-string.png)" - -#: git-novice/_locale/es/_episodes/07-github.md:50 -msgid "Haz click en el enlace 'HTTPS' para cambiar el [protocolo]({{ page.root }}/reference/#protocol) de SSH a HTTPS." -msgstr "Haz click en el enlace 'HTTPS' para cambiar el [protocolo]({{ page.root }}/reference/#protocol) de SSH a HTTPS." - -#: git-novice/_locale/es/_episodes/07-github.md:53 -msgid "" -">\n" -">Usamos aquí HTTPS porque no necesita ninguna configuración adicional.\n" -">Si en el curso quieres configurar el acceso mediante SSH, que es un poco más seguro,\n" -">puedes seguir cualquiera de los excelentes tutoriales que existen en\n" -">[GitHub](https://help.github.com/articles/generating-ssh-keys), \n" -">[Atlassian/BitBucket](https://confluence.atlassian.com/display/BITBUCKET/Set+up+SSH+for+Git) y\n" -">[GitLab](https://about.gitlab.com/2014/03/04/add-ssh-key-screencast/)\n" -">(este último con capturas animadas de pantalla)." -msgstr "" -">\n" -">Usamos aquí HTTPS porque no necesita ninguna configuración adicional.\n" -">Si en el curso quieres configurar el acceso mediante SSH, que es un poco más seguro,\n" -">puedes seguir cualquiera de los excelentes tutoriales que existen en\n" -">[GitHub](https://help.github.com/articles/generating-ssh-keys), \n" -">[Atlassian/BitBucket](https://confluence.atlassian.com/display/BITBUCKET/Set+up+SSH+for+Git) y\n" -">[GitLab](https://about.gitlab.com/2014/03/04/add-ssh-key-screencast/)\n" -">(este último con capturas animadas de pantalla)." - -#: git-novice/_locale/es/_episodes/07-github.md:63 -msgid "![Cambiando la URL del Repositorio en GitHub](../fig/github-change-repo-string.png)" -msgstr "![Cambiando la URL del Repositorio en GitHub](../fig/github-change-repo-string.png)" - -#: git-novice/_locale/es/_episodes/07-github.md:65 -msgid "Copia dicha URL desde el navegador, ve al repositorio local `planets` y ejecuta allí este comando:" -msgstr "Copia dicha URL desde el navegador, ve al repositorio local `planets` y ejecuta allí este comando:" - -#: git-novice/_locale/es/_episodes/07-github.md:72 -msgid "Asegúrate de usar la URL de tu repositorio en lugar de la de vlad: la única diferencia debería ser tu nombre de usuario en lugar de `vlad`." -msgstr "Asegúrate de usar la URL de tu repositorio en lugar de la de vlad: la única diferencia debería ser tu nombre de usuario en lugar de `vlad`." - -#: git-novice/_locale/es/_episodes/07-github.md:74 -msgid "Podemos comprobar que el comando ha funcionado bien ejecutando `git remote -v`:" -msgstr "Podemos comprobar que el comando ha funcionado bien ejecutando `git remote -v`:" - -#: git-novice/_locale/es/_episodes/07-github.md:87 -msgid "El nombre `origin` es un apodo local para tu repositorio remoto. Se puede usar cualquier otro nombre si se desea, pero `origin` es la elección más habitual." -msgstr "El nombre `origin` es un apodo local para tu repositorio remoto. Se puede usar cualquier otro nombre si se desea, pero `origin` es la elección más habitual." - -#: git-novice/_locale/es/_episodes/07-github.md:89 -msgid "Una vez seleccionado el apodo local `origin`, el siguiente comando enviará los cambios realizados en nuestro repositorio local al repositorio en GitHub:" -msgstr "Una vez seleccionado el apodo local `origin`, el siguiente comando enviará los cambios realizados en nuestro repositorio local al repositorio en GitHub:" - -#: git-novice/_locale/es/_episodes/07-github.md:109 -msgid "" -">\n" -"> Si la red a la que estás conectado usa un proxy es posible que tu último\n" -"> comando fallara con el siguiente mensaje de error: \"Could not resolve hostname\".\n" -"> Para solucionarlo es necesario informar a Git sobre el proxy:\n" -">\n" -"> ~~~\n" -"> $ git config --global http.proxy http://user:password@proxy.url\n" -"> $ git config --global https.proxy http://user:password@proxy.url\n" -"> ~~~\n" -"> {: .language-bash}\n" -">\n" -"> Si después te conectas a otra red que no usa un proxy es necesario decirle\n" -"> a Git que deshabilite el proxy:\n" -">\n" -"> ~~~\n" -"> $ git config --global --unset http.proxy\n" -"> $ git config --global --unset https.proxy\n" -"> ~~~\n" -"> {: .language-bash}" -msgstr "" -">\n" -"> Si la red a la que estás conectado usa un proxy es posible que tu último\n" -"> comando fallara con el siguiente mensaje de error: \"Could not resolve hostname\".\n" -"> Para solucionarlo es necesario informar a Git sobre el proxy:\n" -">\n" -"> ~~~\n" -"> $ git config --global http.proxy http://user:password@proxy.url\n" -"> $ git config --global https.proxy http://user:password@proxy.url\n" -"> ~~~\n" -"> {: .language-bash}\n" -">\n" -"> Si después te conectas a otra red que no usa un proxy es necesario decirle\n" -"> a Git que deshabilite el proxy:\n" -">\n" -"> ~~~\n" -"> $ git config --global --unset http.proxy\n" -"> $ git config --global --unset https.proxy\n" -"> ~~~\n" -"> {: .language-bash}" - -# blockquote, which can be cascaded -#: git-novice/_locale/es/_episodes/07-github.md:130 -msgid "> ## Gestores de contraseñas" -msgstr "> ## Gestores de contraseñas" - -#: git-novice/_locale/es/_episodes/07-github.md:131 -msgid "" -">\n" -"> Si tu sistema operativo tiene un gestor de contraseñas configurado, `git push`\n" -"> intentará usarlo cuando necesite un nombre de usuario y contraseña. Al menos\n" -"> ese es el comportamiento por defecto para Git.language-bash en Windows.\n" -"> Si quieres que haya que introducir el nombre de usuario y contraseña en la terminal,\n" -"> en lugar de usar el gestor de contraseñas, hay que ejecutar el siguiente\n" -"> comando en la terminal antes de lanzar `git push`:\n" -">\n" -"> ~~~\n" -"> $ unset SSH_ASKPASS\n" -"> ~~~\n" -"> {: .language-bash}\n" -">\n" -"> A pesar de lo que se podría deducir por el nombre, [git usa `SSH_ASKPASS`\n" -"> para todas las peticiones de credenciales](http://git-scm.com/docs/gitcredentials#_requesting_credentials),\n" -"> tanto si se está usando git vía SSH como si se está usando vía https, por lo\n" -"> que es posible que quieras deshabilitarlo en ambos casos con `unset SSH_ASKPASS` .\n" -">\n" -"> Otra alternativa es añadir `unset SSH_ASKPASS` al final de tu `~/.bashrc` para que\n" -"> git use por defecto la terminal para los nombres de usuario y las contraseñas." -msgstr "" -">\n" -"> Si tu sistema operativo tiene un gestor de contraseñas configurado, `git push`\n" -"> intentará usarlo cuando necesite un nombre de usuario y contraseña. Al menos\n" -"> ese es el comportamiento por defecto para Git.language-bash en Windows.\n" -"> Si quieres que haya que introducir el nombre de usuario y contraseña en la terminal,\n" -"> en lugar de usar el gestor de contraseñas, hay que ejecutar el siguiente\n" -"> comando en la terminal antes de lanzar `git push`:\n" -">\n" -"> ~~~\n" -"> $ unset SSH_ASKPASS\n" -"> ~~~\n" -"> {: .language-bash}\n" -">\n" -"> A pesar de lo que se podría deducir por el nombre, [git usa `SSH_ASKPASS`\n" -"> para todas las peticiones de credenciales](http://git-scm.com/docs/gitcredentials#_requesting_credentials),\n" -"> tanto si se está usando git vía SSH como si se está usando vía https, por lo\n" -"> que es posible que quieras deshabilitarlo en ambos casos con `unset SSH_ASKPASS` .\n" -">\n" -"> Otra alternativa es añadir `unset SSH_ASKPASS` al final de tu `~/.bashrc` para que\n" -"> git use por defecto la terminal para los nombres de usuario y las contraseñas." - -#: git-novice/_locale/es/_episodes/07-github.md:153 -msgid "Nuestros repositorios local y remoto se encuentran ahora en el siguiente estado:" -msgstr "Nuestros repositorios local y remoto se encuentran ahora en el siguiente estado:" - -#: git-novice/_locale/es/_episodes/07-github.md:155 -msgid "![Repositorio en GitHub después del primer envío](../fig/github-repo-after-first-push.svg)" -msgstr "![Repositorio en GitHub después del primer envío](../fig/github-repo-after-first-push.svg)" - -# blockquote, which can be cascaded -#: git-novice/_locale/es/_episodes/07-github.md:157 -msgid "> ## La opción '-u'" -msgstr "> ## La opción '-u'" - -#: git-novice/_locale/es/_episodes/07-github.md:158 -msgid "" -">\n" -"> En la documentación puedes ver que en ocasiones se usa la opción `-u` con el comando `git push`.\n" -"> Esta opción es sinónimo de la opción `--set-upstream-to` para el comando `git branch` y se usa\n" -"> para asociar el **branch** actual con un **branch** remoto, de modo que el comando `git pull`\n" -"> pueda usarse sin argumentos. Para hacer esto simplemente ejecuta `git push -u origin master`\n" -"> una vez que el repositorio remoto haya sido creado." -msgstr "" -">\n" -"> En la documentación puedes ver que en ocasiones se usa la opción `-u` con el comando `git push`.\n" -"> Esta opción es sinónimo de la opción `--set-upstream-to` para el comando `git branch` y se usa\n" -"> para asociar el **branch** actual con un **branch** remoto, de modo que el comando `git pull`\n" -"> pueda usarse sin argumentos. Para hacer esto simplemente ejecuta `git push -u origin master`\n" -"> una vez que el repositorio remoto haya sido creado." - -#: git-novice/_locale/es/_episodes/07-github.md:166 -msgid "También podemos hacer **pull**, es decir, traernos cambios desde el repositorio remoto al repositorio local:" -msgstr "También podemos hacer **pull**, es decir, traernos cambios desde el repositorio remoto al repositorio local:" - -#: git-novice/_locale/es/_episodes/07-github.md:180 -msgid "En este caso, hacer **pull** no ha tenido ningún efecto porque los dos repositorios están ya sincronizados. Por el contrario, si alguien antes hubiera subido con **push** algunos cambios al repositorio en GitHub, este comando los habría incorporado a nuestro repositorio local." -msgstr "En este caso, hacer **pull** no ha tenido ningún efecto porque los dos repositorios están ya sincronizados. Por el contrario, si alguien antes hubiera subido con **push** algunos cambios al repositorio en GitHub, este comando los habría incorporado a nuestro repositorio local." - -# blockquote, which can be cascaded -#: git-novice/_locale/es/_episodes/07-github.md:182 -msgid "> ## Interfaz gráfica de GitHub" -msgstr "> ## Interfaz gráfica de GitHub" - -#: git-novice/_locale/es/_episodes/07-github.md:183 -msgid "" -">\n" -"> Navega hasta tu repositorio `planets` en GitHub.\n" -"> En la pestaña Code, localiza el texto \"XX commits\" (donde \"XX\" es algún número) y haz click en él.\n" -"> Mueve el cursor sobre los tres botones que hay a la derecha de cada **commit**, y haz click en ellos.\n" -"> ¿Qué información puedes obtener/explorar con estos botones?\n" -"> ¿Cómo obtendrías la misma información en la terminal?\n" -">\n" -"> > ## Solución\n" -"> > El botón más a la izquierda (con el dibujo de un portapapeles) sirve para copiar en el portapapeles el identificador completo del **commit** en cuestión. En la terminal, ```git log``` muestra los identificadores completos de cada **commit**.\n" -"> >\n" -"> > Haciendo click en el botón de en medio, se pueden ver todos los cambios efectuados con el **commit** en cuestión. Las líneas verdes sombreadas indican adiciones y las rojas eliminaciones. En la terminal se puede ver lo mismo con ```git diff```. En particular, ```git diff ID1..ID2``` donde ID1 y ID2 son identificadores de **commits** (e.g. ```git diff a3bf1e5..041e637```) mostrará las diferencias entre esos dos **commits**.\n" -"> >\n" -"> > El botón más a la derecha permite ver todos los archivos que existían en el repositorio en el momento del **commit** en cuestión. Para ver lo mismo en la terminal sería necesario hacer **checkout** del repositorio a ese momento del tiempo. Para ello se ejecutaría ```git checkout ID``` donde ID es el identificador del **commit** que queremos investigar. ¡Si se hace esto hay que acordarse luego de poner el repositorio de nuevo en el estado correcto!" -msgstr "" -">\n" -"> Navega hasta tu repositorio `planets` en GitHub.\n" -"> En la pestaña Code, localiza el texto \"XX commits\" (donde \"XX\" es algún número) y haz click en él.\n" -"> Mueve el cursor sobre los tres botones que hay a la derecha de cada **commit**, y haz click en ellos.\n" -"> ¿Qué información puedes obtener/explorar con estos botones?\n" -"> ¿Cómo obtendrías la misma información en la terminal?\n" -">\n" -"> > ## Solución\n" -"> > El botón más a la izquierda (con el dibujo de un portapapeles) sirve para copiar en el portapapeles el identificador completo del **commit** en cuestión. En la terminal, ```git log``` muestra los identificadores completos de cada **commit**.\n" -"> >\n" -"> > Haciendo click en el botón de en medio, se pueden ver todos los cambios efectuados con el **commit** en cuestión. Las líneas verdes sombreadas indican adiciones y las rojas eliminaciones. En la terminal se puede ver lo mismo con ```git diff```. En particular, ```git diff ID1..ID2``` donde ID1 y ID2 son identificadores de **commits** (e.g. ```git diff a3bf1e5..041e637```) mostrará las diferencias entre esos dos **commits**.\n" -"> >\n" -"> > El botón más a la derecha permite ver todos los archivos que existían en el repositorio en el momento del **commit** en cuestión. Para ver lo mismo en la terminal sería necesario hacer **checkout** del repositorio a ese momento del tiempo. Para ello se ejecutaría ```git checkout ID``` donde ID es el identificador del **commit** que queremos investigar. ¡Si se hace esto hay que acordarse luego de poner el repositorio de nuevo en el estado correcto!" - -# blockquote, which can be cascaded -#: git-novice/_locale/es/_episodes/07-github.md:199 -msgid "> ## Fecha y Hora en GitHub" -msgstr "> ## Fecha y Hora en GitHub" - -#: git-novice/_locale/es/_episodes/07-github.md:200 -msgid "" -">\n" -"> Crea un repositorio remoto en GitHub. Haz **push** de los contenidos de tu repositorio local\n" -"> al remoto. Haz cambios en tu repositorio local y haz **push** de dichos cambios.\n" -"> Ve al repo recién creado en GitHub y comprueba las fechas y horas, también llamadas\n" -"> [timestamps]({{ page.root }}/reference/#timestamp) de los ficheros. ¿Cómo registra\n" -"> GitHub los tiempos, y por qué?\n" -">\n" -"> > ## Solución\n" -"> > Github muestra los tiempos en formato relativo legible para los humanos (i.e. \"22 hours ago\" or \"three weeks ago\"). Sin embargo, si mueves el cursor sobre un **timestamp**, podrás ver el tiempo exacto en el que se realizó el último cambio al fichero." -msgstr "" -">\n" -"> Crea un repositorio remoto en GitHub. Haz **push** de los contenidos de tu repositorio local\n" -"> al remoto. Haz cambios en tu repositorio local y haz **push** de dichos cambios.\n" -"> Ve al repo recién creado en GitHub y comprueba las fechas y horas, también llamadas\n" -"> [timestamps]({{ page.root }}/reference/#timestamp) de los ficheros. ¿Cómo registra\n" -"> GitHub los tiempos, y por qué?\n" -">\n" -"> > ## Solución\n" -"> > Github muestra los tiempos en formato relativo legible para los humanos (i.e. \"22 hours ago\" or \"three weeks ago\"). Sin embargo, si mueves el cursor sobre un **timestamp**, podrás ver el tiempo exacto en el que se realizó el último cambio al fichero." - -#: git-novice/_locale/es/_episodes/07-github.md:213 -msgid "" -">\n" -"> En esta lección hemos introducido el comando \"git push\".\n" -"> ¿En qué se diferencia \"git push\" de \"git commit\"?\n" -">\n" -"> > ## Solución\n" -"> > Cuando enviamos cambios con **push**, estamos interaccionando con un repositorio remoto para actualizarlo con los cambios que hemos hecho localmente (a menudo esto supone compartir con otros los cambios realizados). Por el contrario, **commit** únicamente actualiza tu repositorio local." -msgstr "" -">\n" -"> En esta lección hemos introducido el comando \"git push\".\n" -"> ¿En qué se diferencia \"git push\" de \"git commit\"?\n" -">\n" -"> > ## Solución\n" -"> > Cuando enviamos cambios con **push**, estamos interaccionando con un repositorio remoto para actualizarlo con los cambios que hemos hecho localmente (a menudo esto supone compartir con otros los cambios realizados). Por el contrario, **commit** únicamente actualiza tu repositorio local." - -# blockquote, which can be cascaded -#: git-novice/_locale/es/_episodes/07-github.md:222 -msgid "> ## Corrigiendo ajustes en el repositorio remoto" -msgstr "> ## Corrigiendo ajustes en el repositorio remoto" - -#: git-novice/_locale/es/_episodes/07-github.md:223 -msgid "" -">\n" -"> Es muy frecuente cometer un error al especificar la URL del repositorio remoto.\n" -"> Este ejercicio trata de cómo corregir este tipo de errores.\n" -"> Empecemos por añadir un repositorio remoto con una URL inválida:\n" -">\n" -"> ~~~\n" -"> git remote add broken https://github.com/this/url/is/invalid\n" -"> ~~~\n" -"> {: .language-bash}\n" -">\n" -"> ¿Obtienes un error al añadir el repositorio remoto? ¿Se te ocurre algún\n" -"> comando que hiciera obvio que la URL de tu repositorio remoto no es \n" -"> válida? ¿Se te ocurre cómo corregir la URL? (pista: usa `git remote\n" -"> -h`). No olvides eliminar este repositorio remoto una vez que\n" -"> hayas terminado este ejercicio.\n" -">\n" -"> > ## Solución\n" -"> > No aparece ningún error cuando añadimos el repositorio remoto (añadir un repositorio remoto informa a git sobre dicho repositorio, pero no intenta usarlo todavía). Sí veremos un error en cuanto intentemos usarlo con ```git push```. El comando ```git remote set-url``` nos permite cambiar la URL del repositorio remoto para corregirla." -msgstr "" -">\n" -"> Es muy frecuente cometer un error al especificar la URL del repositorio remoto.\n" -"> Este ejercicio trata de cómo corregir este tipo de errores.\n" -"> Empecemos por añadir un repositorio remoto con una URL inválida:\n" -">\n" -"> ~~~\n" -"> git remote add broken https://github.com/this/url/is/invalid\n" -"> ~~~\n" -"> {: .language-bash}\n" -">\n" -"> ¿Obtienes un error al añadir el repositorio remoto? ¿Se te ocurre algún\n" -"> comando que hiciera obvio que la URL de tu repositorio remoto no es \n" -"> válida? ¿Se te ocurre cómo corregir la URL? (pista: usa `git remote\n" -"> -h`). No olvides eliminar este repositorio remoto una vez que\n" -"> hayas terminado este ejercicio.\n" -">\n" -"> > ## Solución\n" -"> > No aparece ningún error cuando añadimos el repositorio remoto (añadir un repositorio remoto informa a git sobre dicho repositorio, pero no intenta usarlo todavía). Sí veremos un error en cuanto intentemos usarlo con ```git push```. El comando ```git remote set-url``` nos permite cambiar la URL del repositorio remoto para corregirla." - -# blockquote, which can be cascaded -#: git-novice/_locale/es/_episodes/07-github.md:244 -msgid "> ## Licencia GitHub y ficheros README" -msgstr "> ## Licencia GitHub y ficheros README" - -#: git-novice/_locale/es/_episodes/07-github.md:245 -msgid "" -">\n" -"> En esta sección hemos aprendido cómo crear un repositorio remoto en GitHub, pero cuando lo hicimos\n" -"> no añadimos ningún fichero README.md ni ningún fichero de licencia. Si lo hubiéramos hecho, ¿qué crees que habría sucedido\n" -"> cuando intentaste enlazar tus repositorios local y remoto?\n" -">\n" -"> > ## Solución\n" -"> > En este caso, puesto que ya teníamos un fichero README en nuestro propio repositorio (local), habríamos visto un conficto de unión, conocido como **merge conflict** (que es cuando git se da cuenta de que hay dos versiones de un mismo fichero y nos pide que resolvamos las diferencias)." -msgstr "" -">\n" -"> En esta sección hemos aprendido cómo crear un repositorio remoto en GitHub, pero cuando lo hicimos\n" -"> no añadimos ningún fichero README.md ni ningún fichero de licencia. Si lo hubiéramos hecho, ¿qué crees que habría sucedido\n" -"> cuando intentaste enlazar tus repositorios local y remoto?\n" -">\n" -"> > ## Solución\n" -"> > En este caso, puesto que ya teníamos un fichero README en nuestro propio repositorio (local), habríamos visto un conficto de unión, conocido como **merge conflict** (que es cuando git se da cuenta de que hay dos versiones de un mismo fichero y nos pide que resolvamos las diferencias)." - -# Front Matter -#: git-novice/_locale/es/_episodes/08-collab.md:1 -msgid "" -"---\n" -"title: Trabajos en colaboración\n" -"teaching: 5\n" -"exercises: 0\n" -"questions:\n" -"- \"¿Cómo puedo usar el control de versiones para colaborar con otras personas?\" \n" -"objectives:\n" -"- Clonar un repositorio remoto.\n" -"- Colaborar en crear un repositorio común.\n" -"keypoints: \n" -"- '`git clone` copia un repositorio remoto para crear un repositorio local llamado `origin` configurado automáticamente.'\n" -"---" -msgstr "" -"---\n" -"title: Trabajos en colaboración\n" -"teaching: 5\n" -"exercises: 0\n" -"questions:\n" -"- \"¿Cómo puedo usar el control de versiones para colaborar con otras personas?\" \n" -"objectives:\n" -"- Clonar un repositorio remoto.\n" -"- Colaborar en crear un repositorio común.\n" -"keypoints: \n" -"- '`git clone` copia un repositorio remoto para crear un repositorio local llamado `origin` configurado automáticamente.'\n" -"---" - -#: git-novice/_locale/es/_episodes/08-collab.md:14 -msgid "Para el siguiente paso, formen parejas. Una persona será el \"dueño\" y la otra el \"colaborador\". El objetivo es que el colaborador agregue cambios al repositorio del dueño. Vamos a cambiar roles al final, de modo que ambas personas puedan participar como dueño y colaborador" -msgstr "Para el siguiente paso, formen parejas. Una persona será el \"dueño\" y la otra el \"colaborador\". El objetivo es que el colaborador agregue cambios al repositorio del dueño. Vamos a cambiar roles al final, de modo que ambas personas puedan participar como dueño y colaborador" - -# blockquote, which can be cascaded -#: git-novice/_locale/es/_episodes/08-collab.md:16 -msgid "> ## Practicando por tu cuenta" -msgstr "> ## Practicando por tu cuenta" - -#: git-novice/_locale/es/_episodes/08-collab.md:17 -msgid "" -">\n" -"> Si estás trabajando en esta lección por tu cuenta, puedes hacerlo abriendo una segunda sesión en la \n" -"> ventana de la terminal. Esta ventana representará a tu compañero trabajando en otra computadora. No necesitas darle acceso a nadie en GitHub, pues tú serás ambos \"compañeros\"." -msgstr "" -">\n" -"> Si estás trabajando en esta lección por tu cuenta, puedes hacerlo abriendo una segunda sesión en la \n" -"> ventana de la terminal. Esta ventana representará a tu compañero trabajando en otra computadora. No necesitas darle acceso a nadie en GitHub, pues tú serás ambos \"compañeros\"." - -#: git-novice/_locale/es/_episodes/08-collab.md:22 -msgid "" -"El dueño debe dar acceso al colaborador. En GitHub, haz clic en el botón de configuración arriba a la derecha,\n" -"luego selecciona \"Collaborators\" e ingresa el nombre de tu colaborador." -msgstr "" -"El dueño debe dar acceso al colaborador. En GitHub, haz clic en el botón de configuración arriba a la derecha,\n" -"luego selecciona \"Collaborators\" e ingresa el nombre de tu colaborador." - -#: git-novice/_locale/es/_episodes/08-collab.md:27 -msgid "" -"Para aceptar la invitación de acceso al repositorio, el colaborador\n" -"debe ingresar a [https://github.com/notifications](https://github.com/notifications).\n" -"Una vez allí, se puede aceptar la invitación a dicho repositorio." -msgstr "" -"Para aceptar la invitación de acceso al repositorio, el colaborador\n" -"debe ingresar a [https://github.com/notifications](https://github.com/notifications).\n" -"Una vez allí, se puede aceptar la invitación a dicho repositorio." - -#: git-novice/_locale/es/_episodes/08-collab.md:31 -msgid "Luego, el colaborador debe descargar una copia del repositorio del dueño a su máquina. Esto se conoce como \"clonar un repositorio\". Para clonar el repositorio del dueño en su carpeta de `Desktop`, el colaborador debe ejecutar las siguientes líneas:" -msgstr "Luego, el colaborador debe descargar una copia del repositorio del dueño a su máquina. Esto se conoce como \"clonar un repositorio\". Para clonar el repositorio del dueño en su carpeta de `Desktop`, el colaborador debe ejecutar las siguientes líneas:" - -#: git-novice/_locale/es/_episodes/08-collab.md:38 -msgid "Reemplaza 'vlad' con el nombre de usuario del dueño." -msgstr "Reemplaza 'vlad' con el nombre de usuario del dueño." - -#: git-novice/_locale/es/_episodes/08-collab.md:42 -msgid "El colaborador puede ahora hacer cambios en la versión clonada del repositorio del dueño, en la misma forma en que se hacían previamente:" -msgstr "El colaborador puede ahora hacer cambios en la versión clonada del repositorio del dueño, en la misma forma en que se hacían previamente:" - -#: git-novice/_locale/es/_episodes/08-collab.md:68 -msgid "Luego enviar los cambios hacia el *repositorio del dueño* en GitHub haciendo **push**:" -msgstr "Luego enviar los cambios hacia el *repositorio del dueño* en GitHub haciendo **push**:" - -#: git-novice/_locale/es/_episodes/08-collab.md:86 -msgid "Nota que no es necesario crear un directorio remoto llamado `origin`: Git utiliza este nombre de manera automática cuando clonamos un repositorio. (Esta es la razón por la cual `origin` era una opción sensata a la hora de configurar directorios remotos a mano)." -msgstr "Nota que no es necesario crear un directorio remoto llamado `origin`: Git utiliza este nombre de manera automática cuando clonamos un repositorio. (Esta es la razón por la cual `origin` era una opción sensata a la hora de configurar directorios remotos a mano)." - -#: git-novice/_locale/es/_episodes/08-collab.md:88 -msgid "Ahora echa un vistazo al repositorio del dueño en su sitio de Github (quizá debas actualizar la página). Deberás ver el nuevo **commit** hecho por el colaborador." -msgstr "Ahora echa un vistazo al repositorio del dueño en su sitio de Github (quizá debas actualizar la página). Deberás ver el nuevo **commit** hecho por el colaborador." - -#: git-novice/_locale/es/_episodes/08-collab.md:90 -msgid "Para descargar los cambios hechos por el colaborador desde GitHub, el dueño debe correr las siguientes líneas:" -msgstr "Para descargar los cambios hechos por el colaborador desde GitHub, el dueño debe correr las siguientes líneas:" - -#: git-novice/_locale/es/_episodes/08-collab.md:112 -msgid "Ahora hay tres repositorios sincronizados (el local del dueño, el local del colaborador y el del dueño en GitHub)." -msgstr "Ahora hay tres repositorios sincronizados (el local del dueño, el local del colaborador y el del dueño en GitHub)." - -# blockquote, which can be cascaded -#: git-novice/_locale/es/_episodes/08-collab.md:114 -msgid "> ## Un flujo de trabajo colaborativo básico" -msgstr "> ## Un flujo de trabajo colaborativo básico" - -# blockquote, which can be cascaded -#: git-novice/_locale/es/_episodes/08-collab.md:115 -#: git-novice/_locale/es/_episodes/08-collab.md:121 -#: git-novice/_locale/es/_episodes/08-collab.md:141 -msgid "> " -msgstr "> " - -# blockquote, which can be cascaded -#: git-novice/_locale/es/_episodes/08-collab.md:116 -msgid "> Es considerado buena práctica estar seguro de que tienes una versión actualizada del repositorio en el que colaboras. Para ello deberías hacer un `git pull` antes de hacer cambios. El enfoque sería:" -msgstr "> Es considerado buena práctica estar seguro de que tienes una versión actualizada del repositorio en el que colaboras. Para ello deberías hacer un `git pull` antes de hacer cambios. El enfoque sería:" - -# blockquote, which can be cascaded -#: git-novice/_locale/es/_episodes/08-collab.md:117 -msgid "> * actualizar el repositorio local `git pull origin master`," -msgstr "> * actualizar el repositorio local `git pull origin master`," - -# blockquote, which can be cascaded -#: git-novice/_locale/es/_episodes/08-collab.md:118 -msgid "> * realizar cambios `git add`," -msgstr "> * realizar cambios `git add`," - -# blockquote, which can be cascaded -#: git-novice/_locale/es/_episodes/08-collab.md:119 -msgid "> * realizar un **commit** `git commit -m`, y" -msgstr "> * realizar un **commit** `git commit -m`, y" - -# blockquote, which can be cascaded -#: git-novice/_locale/es/_episodes/08-collab.md:120 -msgid "> * cargar las actualizaciones a GitHub con `git push origin master`" -msgstr "> * cargar las actualizaciones a GitHub con `git push origin master`" - -# blockquote, which can be cascaded -#: git-novice/_locale/es/_episodes/08-collab.md:122 -msgid "> Es mejor hacer varias actualizaciones pequeñas que un **commit** grande con cambios enormes. **Commits** pequeños son más fáciles de leer y revisar." -msgstr "> Es mejor hacer varias actualizaciones pequeñas que un **commit** grande con cambios enormes. **Commits** pequeños son más fáciles de leer y revisar." - -# blockquote, which can be cascaded -#: git-novice/_locale/es/_episodes/08-collab.md:125 -msgid "> ## Cambiar roles" -msgstr "> ## Cambiar roles" - -#: git-novice/_locale/es/_episodes/08-collab.md:126 -msgid "" -">\n" -"> Cambien los roles y repitan todo el proceso." -msgstr "" -">\n" -"> Cambien los roles y repitan todo el proceso." - -# blockquote, which can be cascaded -#: git-novice/_locale/es/_episodes/08-collab.md:130 -msgid "> ## Revisar Cambios" -msgstr "> ## Revisar Cambios" - -#: git-novice/_locale/es/_episodes/08-collab.md:131 -msgid "" -">\n" -"> El dueño hace un **push** de los **commits** al repositorio sin dar información al colaborador. ¿Cómo puede éste saberlo desde la linea de comandos y desde GitHub?\n" -">\n" -"> > ## Solution\n" -"> > En la linea de comandos, el colaborador puede usar ```git fetch origin master``` para acceder a los cambios remotos en el repositorio local, sin hacer un **merge**. Luego, corriendo ```git diff master origin/master```, el colaborador verá los cambios en la terminal. \n" -"> > En GitHub, el colaborador puede realizar su propio **fork** y hallar la barra gris que indica \"This branch is 1 commit behind Our-Respository:master.\". Lejos, a la derecha de la barra gris, hay un link para comparar. En la página para comparar, el colaborador debe cambiar el **fork** hacia su propio repositorio, luego hacer click en el link para \"comparar entre forks\" y, finalmente, cambiar el **fork** al repositorio principal. Esto mostrará todos los **commits** que sean distintos." -msgstr "" -">\n" -"> El dueño hace un **push** de los **commits** al repositorio sin dar información al colaborador. ¿Cómo puede éste saberlo desde la linea de comandos y desde GitHub?\n" -">\n" -"> > ## Solution\n" -"> > En la linea de comandos, el colaborador puede usar ```git fetch origin master``` para acceder a los cambios remotos en el repositorio local, sin hacer un **merge**. Luego, corriendo ```git diff master origin/master```, el colaborador verá los cambios en la terminal. \n" -"> > En GitHub, el colaborador puede realizar su propio **fork** y hallar la barra gris que indica \"This branch is 1 commit behind Our-Respository:master.\". Lejos, a la derecha de la barra gris, hay un link para comparar. En la página para comparar, el colaborador debe cambiar el **fork** hacia su propio repositorio, luego hacer click en el link para \"comparar entre forks\" y, finalmente, cambiar el **fork** al repositorio principal. Esto mostrará todos los **commits** que sean distintos." - -# blockquote, which can be cascaded -#: git-novice/_locale/es/_episodes/08-collab.md:140 -msgid "> ## Comentar cambios en GitHub" -msgstr "> ## Comentar cambios en GitHub" - -# blockquote, which can be cascaded -#: git-novice/_locale/es/_episodes/08-collab.md:142 -msgid "> El colaborador podría tener algunas preguntas sobre cambios en una línea hechos por el dueño. " -msgstr "> El colaborador podría tener algunas preguntas sobre cambios en una línea hechos por el dueño. " - -#: git-novice/_locale/es/_episodes/08-collab.md:143 -msgid "" -">\n" -"> Con GitHub, es posible comentar la diferencia en un **commit**. Sobre la línea de código a comentar aparece un botón azul para abrir una ventana. \n" -">\n" -"> El colaborador puede escribir sus comentarios y sugerencias usando la interfaz de GitHub." -msgstr "" -">\n" -"> Con GitHub, es posible comentar la diferencia en un **commit**. Sobre la línea de código a comentar aparece un botón azul para abrir una ventana. \n" -">\n" -"> El colaborador puede escribir sus comentarios y sugerencias usando la interfaz de GitHub." - -# blockquote, which can be cascaded -#: git-novice/_locale/es/_episodes/08-collab.md:149 -msgid "> ## Historial de versiones, backup y control de versiones" -msgstr "> ## Historial de versiones, backup y control de versiones" - -# blockquote, which can be cascaded -#: git-novice/_locale/es/_episodes/08-collab.md:150 -msgid "> Algunos softwares que permiten hacer **backups** también permiten guardar un historial de versiones y recuperar versiones específicas. ¿Cómo es esta funcionalidad distinta del control de versiones? ¿Cuáles son los beneficios de usar control de versiones, Git y GitHub? " -msgstr "> Algunos softwares que permiten hacer **backups** también permiten guardar un historial de versiones y recuperar versiones específicas. ¿Cómo es esta funcionalidad distinta del control de versiones? ¿Cuáles son los beneficios de usar control de versiones, Git y GitHub? " - -# Front Matter -#: git-novice/_locale/es/_episodes/09-conflict.md:1 -msgid "" -"---\n" -"title: Conflictos\n" -"teaching: 15\n" -"exercises: 0\n" -"questions:\n" -"- \"¿Qué hago cuando mis cambios entran en conflicto con los de otra persona?\"\n" -"objectives:\n" -"- \"Explicar qué son los conflictos y cuándo pueden ocurrir.\"\n" -"- \"Resolver conflictos que resultan de una fusión.\"\n" -"keypoints:\n" -"- \"Los conflictos ocurren cuando dos o más personas cambian el mismo archivo(s) al mismo tiempo.\"\n" -"- \"El sistema de control de versiones no permite a las personas sobreescribir ciegamente los\n" -"cambios del otro, pero resalta los conflictos para poder resolverlos.\"\n" -"---" -msgstr "" -"---\n" -"title: Conflictos\n" -"teaching: 15\n" -"exercises: 0\n" -"questions:\n" -"- \"¿Qué hago cuando mis cambios entran en conflicto con los de otra persona?\"\n" -"objectives:\n" -"- \"Explicar qué son los conflictos y cuándo pueden ocurrir.\"\n" -"- \"Resolver conflictos que resultan de una fusión.\"\n" -"keypoints:\n" -"- \"Los conflictos ocurren cuando dos o más personas cambian el mismo archivo(s) al mismo tiempo.\"\n" -"- \"El sistema de control de versiones no permite a las personas sobreescribir ciegamente los\n" -"cambios del otro, pero resalta los conflictos para poder resolverlos.\"\n" -"---" - -#: git-novice/_locale/es/_episodes/09-conflict.md:16 -msgid "Tan pronto como podemos trabajar en paralelo, es probable que alquien deshaga lo que otro hizo. Esto incluso es probable con una única persona: si estamos trabajando en un software al mismo tiempo en nuestra computadora portátil y un servidor en el laboratorio, podríamos hacer cambios diferentes a cada copia del trabajo. El control de versiones nos ayuda a manejar estos [confictos]({{ page.root }}/reference/#conflicts) al darnos herramientas para [resolver]({{ page.root }}/reference/#resolve) cambios que se hayan solapado. " -msgstr "Tan pronto como podemos trabajar en paralelo, es probable que alquien deshaga lo que otro hizo. Esto incluso es probable con una única persona: si estamos trabajando en un software al mismo tiempo en nuestra computadora portátil y un servidor en el laboratorio, podríamos hacer cambios diferentes a cada copia del trabajo. El control de versiones nos ayuda a manejar estos [confictos]({{ page.root }}/reference/#conflicts) al darnos herramientas para [resolver]({{ page.root }}/reference/#resolve) cambios que se hayan solapado. " - -#: git-novice/_locale/es/_episodes/09-conflict.md:18 -msgid "Para ver cómo podemos resolver conflictos, primero debemos crear uno. Actualmente, el archivo `mars.txt` se ve de la siguiente manera en dos copias de diferentes compañeros en nuestro repositorio `planetas`:" -msgstr "Para ver cómo podemos resolver conflictos, primero debemos crear uno. Actualmente, el archivo `mars.txt` se ve de la siguiente manera en dos copias de diferentes compañeros en nuestro repositorio `planetas`:" - -#: git-novice/_locale/es/_episodes/09-conflict.md:32 -msgid "Agreguemos una línea únicamente a la copia de uno de los dos compañeros:" -msgstr "Agreguemos una línea únicamente a la copia de uno de los dos compañeros:" - -#: git-novice/_locale/es/_episodes/09-conflict.md:48 -msgid "y luego hacer `push` al cambio en GitHub:" -msgstr "y luego hacer `push` al cambio en GitHub:" - -#: git-novice/_locale/es/_episodes/09-conflict.md:78 -msgid "" -"Ahora haremos que el otro compañero\n" -"haga un cambio diferente a su copia\n" -"*sin* actualizar desde GitHub:" -msgstr "" -"Ahora haremos que el otro compañero\n" -"haga un cambio diferente a su copia\n" -"*sin* actualizar desde GitHub:" - -#: git-novice/_locale/es/_episodes/09-conflict.md:96 -msgid "Podemos hacer **commit** del cambio localmente" -msgstr "Podemos hacer **commit** del cambio localmente" - -#: git-novice/_locale/es/_episodes/09-conflict.md:110 -msgid "pero Git no nos dejará hacer **push** en GitHub:" -msgstr "pero Git no nos dejará hacer **push** en GitHub:" - -#: git-novice/_locale/es/_episodes/09-conflict.md:130 -msgid "" -"Git detecta que los cambios hechos en una copia se solapan con los cambios hechos en la otra\n" -"y nos impide destruir nuestro trabajo previo.\n" -"Lo que debemos hacer es traer -`pull`- los cambios desde GitHub,\n" -"[unirlos]({{ page.root }}/reference/#merge) dentro de la copia en la que estamos trabajando actualmente,\n" -"y luego hacer `push` al resultado.\n" -"Empecemos haciendo `pull` a lo siguiente:" -msgstr "" -"Git detecta que los cambios hechos en una copia se solapan con los cambios hechos en la otra\n" -"y nos impide destruir nuestro trabajo previo.\n" -"Lo que debemos hacer es traer -`pull`- los cambios desde GitHub,\n" -"[unirlos]({{ page.root }}/reference/#merge) dentro de la copia en la que estamos trabajando actualmente,\n" -"y luego hacer `push` al resultado.\n" -"Empecemos haciendo `pull` a lo siguiente:" - -#: git-novice/_locale/es/_episodes/09-conflict.md:155 -msgid "" -"`git pull` nos dice que hay un conflicto,\n" -"y marca ese conflicto en el archivo afectado:" -msgstr "" -"`git pull` nos dice que hay un conflicto,\n" -"y marca ese conflicto en el archivo afectado:" - -#: git-novice/_locale/es/_episodes/09-conflict.md:175 -msgid "" -"Nuestro cambio —señalado en `HEAD`— es precedido por `<<<<<<<`.\n" -"Luego, Git insertó `=======` como un separador entre los cambios conflictivos\n" -"y marcó el fin del contenido descargado desde GitHub con `>>>>>>>`.\n" -"(El código de letras y números luego del marcador\n" -"identifica el **commit** que acabamos de descargar.)" -msgstr "" -"Nuestro cambio —señalado en `HEAD`— es precedido por `<<<<<<<`.\n" -"Luego, Git insertó `=======` como un separador entre los cambios conflictivos\n" -"y marcó el fin del contenido descargado desde GitHub con `>>>>>>>`.\n" -"(El código de letras y números luego del marcador\n" -"identifica el **commit** que acabamos de descargar.)" - -#: git-novice/_locale/es/_episodes/09-conflict.md:181 -msgid "" -"Ahora debemos editar este archivo para eliminar estos marcadores\n" -"y reconciliar los cambios.\n" -"Podemos hacer lo que queramos: mantener el cambio hecho en el repositorio local, mantener\n" -"el cambio hecho en el repositorio remoto, redactar algo nuevo para reemplazar ambos,\n" -"o eliminar el cambio completamente.\n" -"Reemplacemos ambos de manera que el archivo quede así:" -msgstr "" -"Ahora debemos editar este archivo para eliminar estos marcadores\n" -"y reconciliar los cambios.\n" -"Podemos hacer lo que queramos: mantener el cambio hecho en el repositorio local, mantener\n" -"el cambio hecho en el repositorio remoto, redactar algo nuevo para reemplazar ambos,\n" -"o eliminar el cambio completamente.\n" -"Reemplacemos ambos de manera que el archivo quede así:" - -#: git-novice/_locale/es/_episodes/09-conflict.md:201 -msgid "" -"Para finalizar la unión,\n" -"agregamos `mars.txt` a los cambios hechos por el **merge**\n" -"y luego hacemos **commit**:" -msgstr "" -"Para finalizar la unión,\n" -"agregamos `mars.txt` a los cambios hechos por el **merge**\n" -"y luego hacemos **commit**:" - -# code block -#: git-novice/_locale/es/_episodes/09-conflict.md:211 -msgid "" -"~~~\n" -"On branch master\n" -"All conflicts fixed but you are still merging.\n" -" (use \"git commit\" to conclude merge)\n" -"\n" -"Changes to be committed:\n" -"\n" -"\\tmodified: mars.txt\n" -"\n" -"~~~" -msgstr "" -"~~~\n" -"On branch master\n" -"All conflicts fixed but you are still merging.\n" -" (use \"git commit\" to conclude merge)\n" -"\n" -"Changes to be committed:\n" -"\n" -"\\tmodified: mars.txt\n" -"\n" -"~~~" - -#: git-novice/_locale/es/_episodes/09-conflict.md:233 -msgid "Ahora podemos hacer **push** a nuestros cambios en GitHub:" -msgstr "Ahora podemos hacer **push** a nuestros cambios en GitHub:" - -#: git-novice/_locale/es/_episodes/09-conflict.md:251 -msgid "" -"Git lleva el registro de qué hemos unificado con qué,\n" -"de manera que no debemos arreglar las cosas a mano nuevamente\n" -"cuando el colaborador que hizo el primer cambio hace **pull** de nuevo:" -msgstr "" -"Git lleva el registro de qué hemos unificado con qué,\n" -"de manera que no debemos arreglar las cosas a mano nuevamente\n" -"cuando el colaborador que hizo el primer cambio hace **pull** de nuevo:" - -#: git-novice/_locale/es/_episodes/09-conflict.md:274 -msgid "Obtenemos el archivo unificado:" -msgstr "Obtenemos el archivo unificado:" - -#: git-novice/_locale/es/_episodes/09-conflict.md:289 -msgid "No es necesario unificar el contenido nuevamente porque Git sabe que alguien ya ha hecho eso." -msgstr "No es necesario unificar el contenido nuevamente porque Git sabe que alguien ya ha hecho eso." - -#: git-novice/_locale/es/_episodes/09-conflict.md:291 -msgid "" -"La habilidad de Git de resolver conflictos es muy útil, pero la resolución de conflictos\n" -"cuesta tiempo y esfuerzo, y puede introducir errores si los conflictos no son resueltos\n" -"correctamente. Si te encuentras resolviendo muchos conflictos en un proyecto\n" -"ten en cuenta estas aproximaciones técnicas para reducirlas:" -msgstr "" -"La habilidad de Git de resolver conflictos es muy útil, pero la resolución de conflictos\n" -"cuesta tiempo y esfuerzo, y puede introducir errores si los conflictos no son resueltos\n" -"correctamente. Si te encuentras resolviendo muchos conflictos en un proyecto\n" -"ten en cuenta estas aproximaciones técnicas para reducirlas:" - -# unordered list -#: git-novice/_locale/es/_episodes/09-conflict.md:296 -msgid "- Hacer **pull** con mayor frecuencia, especialmente antes de empezar una nueva tarea" -msgstr "- Hacer **pull** con mayor frecuencia, especialmente antes de empezar una nueva tarea" - -# unordered list -#: git-novice/_locale/es/_episodes/09-conflict.md:297 -msgid "- Usar ramas temáticas para separar trabajo, uniéndolas a la rama principal - `master`- cuando estén completas" -msgstr "- Usar ramas temáticas para separar trabajo, uniéndolas a la rama principal - `master`- cuando estén completas" - -# unordered list -#: git-novice/_locale/es/_episodes/09-conflict.md:298 -msgid "- Hacer comentarios mas cortos y concisos" -msgstr "- Hacer comentarios mas cortos y concisos" - -# unordered list -#: git-novice/_locale/es/_episodes/09-conflict.md:299 -msgid "- Cuando sea apropiado, dividir archivos grandes en varios pequeños de manera que sea" -msgstr "- Cuando sea apropiado, dividir archivos grandes en varios pequeños de manera que sea" - -#: git-novice/_locale/es/_episodes/09-conflict.md:300 -msgid " menos probable que dos autores alteren el mismo archivo simultáneamente" -msgstr " menos probable que dos autores alteren el mismo archivo simultáneamente" - -#: git-novice/_locale/es/_episodes/09-conflict.md:302 -msgid "Los conflictos también pueden ser minimizados con estrategias de administración de proyectos:" -msgstr "Los conflictos también pueden ser minimizados con estrategias de administración de proyectos:" - -# unordered list -#: git-novice/_locale/es/_episodes/09-conflict.md:304 -msgid "- Aclarar con tus colaboradores quién es responsable de cada área" -msgstr "- Aclarar con tus colaboradores quién es responsable de cada área" - -# unordered list -#: git-novice/_locale/es/_episodes/09-conflict.md:305 -msgid "- Discutir con tus colaboradores en qué orden deben realizarse las tareas para que " -msgstr "- Discutir con tus colaboradores en qué orden deben realizarse las tareas para que " - -#: git-novice/_locale/es/_episodes/09-conflict.md:306 -msgid "" -" las tareas que puedan cambiar las mismas líneas no se trabajen simultáneamente. \n" -"- Si los conflictos son de estilo (e.g. tabulaciones vs. espacios), establecer una\n" -" convención que rija el proyecto y utilizar herramientas de estilo de código (e.g.\n" -" `htmltidy`, `perltidy`, `rubocop`, etc.) para forzarlas, si es necesario" -msgstr "" -" las tareas que puedan cambiar las mismas líneas no se trabajen simultáneamente. \n" -"- Si los conflictos son de estilo (e.g. tabulaciones vs. espacios), establecer una\n" -" convención que rija el proyecto y utilizar herramientas de estilo de código (e.g.\n" -" `htmltidy`, `perltidy`, `rubocop`, etc.) para forzarlas, si es necesario" - -# blockquote, which can be cascaded -#: git-novice/_locale/es/_episodes/09-conflict.md:311 -msgid "> ## Solucionando conflictos creados por ti" -msgstr "> ## Solucionando conflictos creados por ti" - -#: git-novice/_locale/es/_episodes/09-conflict.md:312 -msgid "" -">\n" -"> Clona el repositorio creado por tu instructor.\n" -"> Agrégale un nuevo archivo \n" -"> y modificar un archivo existente (tu instructor te dirá cuál).\n" -"> Cuando tu instructor te lo pida, \n" -"> trae los cambios -haciendo **pull**- desde el repositorio para crear un conflicto,\n" -"> y luego resuélvelo." -msgstr "" -">\n" -"> Clona el repositorio creado por tu instructor.\n" -"> Agrégale un nuevo archivo \n" -"> y modificar un archivo existente (tu instructor te dirá cuál).\n" -"> Cuando tu instructor te lo pida, \n" -"> trae los cambios -haciendo **pull**- desde el repositorio para crear un conflicto,\n" -"> y luego resuélvelo." - -# blockquote, which can be cascaded -#: git-novice/_locale/es/_episodes/09-conflict.md:321 -msgid "> ## Conflictos en archivos no textuales" -msgstr "> ## Conflictos en archivos no textuales" - -#: git-novice/_locale/es/_episodes/09-conflict.md:322 -msgid "" -">\n" -"> ¿Qué hace Git \n" -"> cuando hay un conflicto en una imagen u otro archivo no de texto \n" -"> que está almacenado con control de versiones?\n" -">\n" -"> > ## Solución\n" -"> >\n" -"> > Intentémoslo. Supón que **Dracula** toma una foto de la superficie de Marte y la llama `mars.jpg`.\n" -"> >\n" -"> > Si no tienes una imagen de Marte, puedes crear un archivo\n" -"> > binario de prueba de la siguiente manera:\n" -"> >\n" -"> > ~~~\n" -"> > $ head --bytes 1024 /dev/urandom > mars.jpg\n" -"> > $ ls -lh mars.jpg\n" -"> > ~~~\n" -"> > {: .language-bash}\n" -"> >\n" -"> > ~~~\n" -"> > -rw-r--r-- 1 vlad 57095 1.0K Mar 8 20:24 mars.jpg\n" -"> > ~~~\n" -"> > {: .output}\n" -"> >\n" -"> > `ls` nos muestra que se creó un archivo de 1-kilobyte. Está lleno de bytes al azar\n" -"> > leídos a partir del archivo especial, `/dev/urandom`.\n" -"> >\n" -"> > Ahora, supón que **Dracula** agrega `mars.jpg` a su repositorio:\n" -"> >\n" -"> > ~~~\n" -"> > $ git add mars.jpg\n" -"> > $ git commit -m \"Add picture of Martian surface\"\n" -"> > ~~~\n" -"> > {: .language-bash}\n" -"> >\n" -"> > ~~~\n" -"> > [master 8e4115c] Add picture of Martian surface\n" -"> > 1 file changed, 0 insertions(+), 0 deletions(-)\n" -"> > create mode 100644 mars.jpg\n" -"> > ~~~\n" -"> > {: .output}\n" -"> >\n" -"> > Supón que Wolfman agregó una imagen similar al mismo tiempo. \n" -"> > La suya es una imagen del cielo de Marte, pero *también* se llama `mars.jpg`.\n" -"> > Cuando **Dracula** intenta hacer push, recibe un mensaje familiar:\n" -"> >\n" -"> > ~~~\n" -"> > $ git push origin master\n" -"> > ~~~\n" -"> > {: .language-bash}\n" -"> >\n" -"> > ~~~\n" -"> > To https://github.com/vlad/planets.git\n" -"> > ! [rejected] master -> master (fetch first)\n" -"> > error: failed to push some refs to 'https://github.com/vlad/planets.git'\n" -"> > hint: Updates were rejected because the remote contains work that you do\n" -"> > hint: not have locally. This is usually caused by another repository pushing\n" -"> > hint: to the same ref. You may want to first integrate the remote changes\n" -"> > hint: (e.g., 'git pull ...') before pushing again.\n" -"> > hint: See the 'Note about fast-forwards' in 'git push --help' for details.\n" -"> > ~~~\n" -"> > {: .output}\n" -"> >\n" -"> > Hemos aprendido que primero debemos hacer **pull** y resolver conflictos:\n" -"> >\n" -"> > ~~~\n" -"> > $ git pull origin master\n" -"> > ~~~\n" -"> > {: .language-bash}\n" -"> >\n" -"> > Cuando hay un conflicto en una imagen u otro archivo binario, git imprime\n" -"> > un mensaje así:\n" -"> >\n" -"> > ~~~\n" -"> > $ git pull origin master\n" -"> > remote: Counting objects: 3, done.\n" -"> > remote: Compressing objects: 100% (3/3), done.\n" -"> > remote: Total 3 (delta 0), reused 0 (delta 0)\n" -"> > Unpacking objects: 100% (3/3), done.\n" -"> > From https://github.com/vlad/planets.git\n" -"> > * branch master -> FETCH_HEAD\n" -"> > 6a67967..439dc8c master -> origin/master\n" -"> > warning: Cannot merge binary files: mars.jpg (HEAD vs. 439dc8c08869c342438f6dc4a2b615b05b93c76e)\n" -"> > Auto-merging mars.jpg\n" -"> > CONFLICT (add/add): Merge conflict in mars.jpg\n" -"> > Automatic merge failed; fix conflicts and then commit the result.\n" -"> > ~~~\n" -"> > {: .output}\n" -"> >\n" -"> > El mensaje informando el conflicto es básicamente el mismo que se imprimió para `mars.txt`, pero\n" -"> > hay una línea adicional:\n" -"> >\n" -"> > ~~~\n" -"> > warning: Cannot merge binary files: mars.jpg (HEAD vs. 439dc8c08869c342438f6dc4a2b615b05b93c76e)\n" -"> > ~~~\n" -"> > {: .output}\n" -"> > \n" -"> > Git no puede insertar indicadores de conflicto en una imagen como lo hace en los\n" -"> > archivos de texto. Por lo tanto, en vez de editar la imagen, debemos revisar la versión que \n" -"> > queremos mantener. Luego podemos agregar y hacer **commit** a esta versión.\n" -"> >\n" -"> > En la línea agregada de arriba, Git convenientemente nos dio identificadores de **commit**\n" -"> > para las dos versiones de `mars.jpg`. Nuestra versión es `HEAD`, y la de Wolfman\n" -"> > es `439dc8c0...`. Si queremos usar nuestra versión, podemos usar\n" -"> > `git checkout`:\n" -"> >\n" -"> > ~~~\n" -"> > $ git checkout HEAD mars.jpg\n" -"> > $ git add mars.jpg\n" -"> > $ git commit -m \"Use image of surface instead of sky\"\n" -"> > ~~~\n" -"> > {: .language-bash}\n" -"> >\n" -"> > ~~~\n" -"> > [master 21032c3] Use image of surface instead of sky\n" -"> > ~~~\n" -"> > {: .output}\n" -"> >\n" -"> > En cambio si queremos usar la versión de Wolfman, podemos usar `git checkout` con\n" -"> > el identificador de **commit** de Wolfman, `439dc8c0`:\n" -"> >\n" -"> > ~~~\n" -"> > $ git checkout 439dc8c0 mars.jpg\n" -"> > $ git add mars.jpg\n" -"> > $ git commit -m \"Use image of sky instead of surface\"\n" -"> > ~~~\n" -"> > {: .language-bash}\n" -"> >\n" -"> > ~~~\n" -"> > [master da21b34] Use image of sky instead of surface\n" -"> > ~~~\n" -"> > {: .output}\n" -"> >\n" -"> > También podemos mantener *ambas* imágenes. La clave es que no podemos mantenerlas con el mismo\n" -"> > nombre. Pero podemos verificar cada versión de forma sucesiva y *renombrarla*, y luego agregar las versiones renombradas.\n" -"> > Primero, revisa cada imagen y renómbrala:\n" -"> >\n" -"> > ~~~\n" -"> > $ git checkout HEAD mars.jpg\n" -"> > $ git mv mars.jpg mars-surface.jpg\n" -"> > $ git checkout 439dc8c0 mars.jpg\n" -"> > $ mv mars.jpg mars-sky.jpg\n" -"> > ~~~\n" -"> > {: .language-bash}\n" -"> >\n" -"> > Luego, elimina la vieja imagen `mars.jpg` y agrega los dos archivos nuevos:\n" -"> >\n" -"> > ~~~\n" -"> > $ git rm mars.jpg\n" -"> > $ git add mars-surface.jpg\n" -"> > $ git add mars-sky.jpg\n" -"> > $ git commit -m \"Use two images: surface and sky\"\n" -"> > ~~~\n" -"> > {: .language-bash}\n" -"> >\n" -"> > ~~~\n" -"> > [master 94ae08c] Use two images: surface and sky\n" -"> > 2 files changed, 0 insertions(+), 0 deletions(-)\n" -"> > create mode 100644 mars-sky.jpg\n" -"> > rename mars.jpg => mars-surface.jpg (100%)\n" -"> > ~~~\n" -"> > {: .output}\n" -"> >\n" -"> > Ahora ambas imágenes de Marte estan ingresadas en el repositorio, y `mars.jpg`\n" -"> > ya no existe." -msgstr "" -">\n" -"> ¿Qué hace Git \n" -"> cuando hay un conflicto en una imagen u otro archivo no de texto \n" -"> que está almacenado con control de versiones?\n" -">\n" -"> > ## Solución\n" -"> >\n" -"> > Intentémoslo. Supón que **のび太** toma una foto de la superficie de Marte y la llama `mars.jpg`.\n" -"> >\n" -"> > Si no tienes una imagen de Marte, puedes crear un archivo\n" -"> > binario de prueba de la siguiente manera:\n" -"> >\n" -"> > ~~~\n" -"> > $ head --bytes 1024 /dev/urandom > mars.jpg\n" -"> > $ ls -lh mars.jpg\n" -"> > ~~~\n" -"> > {: .language-bash}\n" -"> >\n" -"> > ~~~\n" -"> > -rw-r--r-- 1 vlad 57095 1.0K Mar 8 20:24 mars.jpg\n" -"> > ~~~\n" -"> > {: .output}\n" -"> >\n" -"> > `ls` nos muestra que se creó un archivo de 1-kilobyte. Está lleno de bytes al azar\n" -"> > leídos a partir del archivo especial, `/dev/urandom`.\n" -"> >\n" -"> > Ahora, supón que **のび太** agrega `mars.jpg` a su repositorio:\n" -"> >\n" -"> > ~~~\n" -"> > $ git add mars.jpg\n" -"> > $ git commit -m \"Add picture of Martian surface\"\n" -"> > ~~~\n" -"> > {: .language-bash}\n" -"> >\n" -"> > ~~~\n" -"> > [master 8e4115c] Add picture of Martian surface\n" -"> > 1 file changed, 0 insertions(+), 0 deletions(-)\n" -"> > create mode 100644 mars.jpg\n" -"> > ~~~\n" -"> > {: .output}\n" -"> >\n" -"> > Supón que ドラえもん agregó una imagen similar al mismo tiempo. \n" -"> > La suya es una imagen del cielo de Marte, pero *también* se llama `mars.jpg`.\n" -"> > Cuando **のび太** intenta hacer push, recibe un mensaje familiar:\n" -"> >\n" -"> > ~~~\n" -"> > $ git push origin master\n" -"> > ~~~\n" -"> > {: .language-bash}\n" -"> >\n" -"> > ~~~\n" -"> > To https://github.com/vlad/planets.git\n" -"> > ! [rejected] master -> master (fetch first)\n" -"> > error: failed to push some refs to 'https://github.com/vlad/planets.git'\n" -"> > hint: Updates were rejected because the remote contains work that you do\n" -"> > hint: not have locally. This is usually caused by another repository pushing\n" -"> > hint: to the same ref. You may want to first integrate the remote changes\n" -"> > hint: (e.g., 'git pull ...') before pushing again.\n" -"> > hint: See the 'Note about fast-forwards' in 'git push --help' for details.\n" -"> > ~~~\n" -"> > {: .output}\n" -"> >\n" -"> > Hemos aprendido que primero debemos hacer **pull** y resolver conflictos:\n" -"> >\n" -"> > ~~~\n" -"> > $ git pull origin master\n" -"> > ~~~\n" -"> > {: .language-bash}\n" -"> >\n" -"> > Cuando hay un conflicto en una imagen u otro archivo binario, git imprime\n" -"> > un mensaje así:\n" -"> >\n" -"> > ~~~\n" -"> > $ git pull origin master\n" -"> > remote: Counting objects: 3, done.\n" -"> > remote: Compressing objects: 100% (3/3), done.\n" -"> > remote: Total 3 (delta 0), reused 0 (delta 0)\n" -"> > Unpacking objects: 100% (3/3), done.\n" -"> > From https://github.com/vlad/planets.git\n" -"> > * branch master -> FETCH_HEAD\n" -"> > 6a67967..439dc8c master -> origin/master\n" -"> > warning: Cannot merge binary files: mars.jpg (HEAD vs. 439dc8c08869c342438f6dc4a2b615b05b93c76e)\n" -"> > Auto-merging mars.jpg\n" -"> > CONFLICT (add/add): Merge conflict in mars.jpg\n" -"> > Automatic merge failed; fix conflicts and then commit the result.\n" -"> > ~~~\n" -"> > {: .output}\n" -"> >\n" -"> > El mensaje informando el conflicto es básicamente el mismo que se imprimió para `mars.txt`, pero\n" -"> > hay una línea adicional:\n" -"> >\n" -"> > ~~~\n" -"> > warning: Cannot merge binary files: mars.jpg (HEAD vs. 439dc8c08869c342438f6dc4a2b615b05b93c76e)\n" -"> > ~~~\n" -"> > {: .output}\n" -"> > \n" -"> > Git no puede insertar indicadores de conflicto en una imagen como lo hace en los\n" -"> > archivos de texto. Por lo tanto, en vez de editar la imagen, debemos revisar la versión que \n" -"> > queremos mantener. Luego podemos agregar y hacer **commit** a esta versión.\n" -"> >\n" -"> > En la línea agregada de arriba, Git convenientemente nos dio identificadores de **commit**\n" -"> > para las dos versiones de `mars.jpg`. Nuestra versión es `HEAD`, y la de ドラえもん\n" -"> > es `439dc8c0...`. Si queremos usar nuestra versión, podemos usar\n" -"> > `git checkout`:\n" -"> >\n" -"> > ~~~\n" -"> > $ git checkout HEAD mars.jpg\n" -"> > $ git add mars.jpg\n" -"> > $ git commit -m \"Use image of surface instead of sky\"\n" -"> > ~~~\n" -"> > {: .language-bash}\n" -"> >\n" -"> > ~~~\n" -"> > [master 21032c3] Use image of surface instead of sky\n" -"> > ~~~\n" -"> > {: .output}\n" -"> >\n" -"> > En cambio si queremos usar la versión de ドラえもん, podemos usar `git checkout` con\n" -"> > el identificador de **commit** de ドラえもん, `439dc8c0`:\n" -"> >\n" -"> > ~~~\n" -"> > $ git checkout 439dc8c0 mars.jpg\n" -"> > $ git add mars.jpg\n" -"> > $ git commit -m \"Use image of sky instead of surface\"\n" -"> > ~~~\n" -"> > {: .language-bash}\n" -"> >\n" -"> > ~~~\n" -"> > [master da21b34] Use image of sky instead of surface\n" -"> > ~~~\n" -"> > {: .output}\n" -"> >\n" -"> > También podemos mantener *ambas* imágenes. La clave es que no podemos mantenerlas con el mismo\n" -"> > nombre. Pero podemos verificar cada versión de forma sucesiva y *renombrarla*, y luego agregar las versiones renombradas.\n" -"> > Primero, revisa cada imagen y renómbrala:\n" -"> >\n" -"> > ~~~\n" -"> > $ git checkout HEAD mars.jpg\n" -"> > $ git mv mars.jpg mars-surface.jpg\n" -"> > $ git checkout 439dc8c0 mars.jpg\n" -"> > $ mv mars.jpg mars-sky.jpg\n" -"> > ~~~\n" -"> > {: .language-bash}\n" -"> >\n" -"> > Luego, elimina la vieja imagen `mars.jpg` y agrega los dos archivos nuevos:\n" -"> >\n" -"> > ~~~\n" -"> > $ git rm mars.jpg\n" -"> > $ git add mars-surface.jpg\n" -"> > $ git add mars-sky.jpg\n" -"> > $ git commit -m \"Use two images: surface and sky\"\n" -"> > ~~~\n" -"> > {: .language-bash}\n" -"> >\n" -"> > ~~~\n" -"> > [master 94ae08c] Use two images: surface and sky\n" -"> > 2 files changed, 0 insertions(+), 0 deletions(-)\n" -"> > create mode 100644 mars-sky.jpg\n" -"> > rename mars.jpg => mars-surface.jpg (100%)\n" -"> > ~~~\n" -"> > {: .output}\n" -"> >\n" -"> > Ahora ambas imágenes de Marte estan ingresadas en el repositorio, y `mars.jpg`\n" -"> > ya no existe." - -# blockquote, which can be cascaded -#: git-novice/_locale/es/_episodes/09-conflict.md:489 -msgid "> ## Una típica sesión de trabajo" -msgstr "> ## Una típica sesión de trabajo" - -#: git-novice/_locale/es/_episodes/09-conflict.md:490 -msgid "" -">\n" -"> Te sientas en tu computadora para trabajar en un proyecto compartido que es mantenido en un\n" -"> repositorio Git remoto. Durante tu sesión de trabajo, realizas las siguientes acciones, \n" -"> pero no en éste orden:\n" -">\n" -">\n" -"> - *Hacer cambios* agregando el número `100` al archivo de texto `numbers.txt`\n" -"> - *Actualizar repositorio remoto* para actualizar el repositorio local\n" -"> - *Celebrar* tu éxito con cerveza(s)\n" -"> - *Actualizar repositorio local* para actualizar el repositorio remoto\n" -"> - *Realizar cambios* con los cuales voy a hacer commit\n" -"> - *Hacer commit a los cambios* al repositorio local\n" -">\n" -"> ¿En qué orden deberías hacer estas acciones para minimizar la posibilidad de conflictos?\n" -"> Pon los comandos de arriba en orden en la columna *acción* de la tabla de abajo.\n" -"> Cuando tengas el orden correcto, ve si puedes escribir los comandos correspondientes en la columna \n" -"> *comando*. Algunos campos ya están completados para ayudarte a \n" -"> comenzar.\n" -">\n" -"> |orden|acción . . . . . . . . . . |comando . . . . . . . . . . |\n" -"> |-----|---------------------------|----------------------------|\n" -"> |1 | | |\n" -"> |2 | | `echo 100 >> numbers.txt` |\n" -"> |3 | | |\n" -"> |4 | | |\n" -"> |5 | | |\n" -"> |6 | ¡Celebrar! | `AFK` |\n" -">\n" -"> > ## Solución\n" -"> >\n" -"> > |orden|acción . . . . . . . . . . |comando . . . . . . . . . . |\n" -"> > |-----|-------------------|----------------------------------------------|\n" -"> > |1 | Actualizar repositorio local | `git pull origin master` |\n" -"> > |2 | Hacer cambios | `echo 100 >> numbers.txt` |\n" -"> > |3 | Realizar cambios | `git add numbers.txt` |\n" -"> > |4 | Hacer commit a los cambios | `git commit -m \"Agregar 100 a numbers.txt\"` |\n" -"> > |5 | Actualizar repositorio remoto | `git push origin master` |\n" -"> > |6 | ¡Celebrar! | `AFK` |\n" -"> >" -msgstr "" -">\n" -"> Te sientas en tu computadora para trabajar en un proyecto compartido que es mantenido en un\n" -"> repositorio Git remoto. Durante tu sesión de trabajo, realizas las siguientes acciones, \n" -"> pero no en éste orden:\n" -">\n" -">\n" -"> - *Hacer cambios* agregando el número `100` al archivo de texto `numbers.txt`\n" -"> - *Actualizar repositorio remoto* para actualizar el repositorio local\n" -"> - *Celebrar* tu éxito con cerveza(s)\n" -"> - *Actualizar repositorio local* para actualizar el repositorio remoto\n" -"> - *Realizar cambios* con los cuales voy a hacer commit\n" -"> - *Hacer commit a los cambios* al repositorio local\n" -">\n" -"> ¿En qué orden deberías hacer estas acciones para minimizar la posibilidad de conflictos?\n" -"> Pon los comandos de arriba en orden en la columna *acción* de la tabla de abajo.\n" -"> Cuando tengas el orden correcto, ve si puedes escribir los comandos correspondientes en la columna \n" -"> *comando*. Algunos campos ya están completados para ayudarte a \n" -"> comenzar.\n" -">\n" -"> |orden|acción . . . . . . . . . . |comando . . . . . . . . . . |\n" -"> |-----|---------------------------|----------------------------|\n" -"> |1 | | |\n" -"> |2 | | `echo 100 >> numbers.txt` |\n" -"> |3 | | |\n" -"> |4 | | |\n" -"> |5 | | |\n" -"> |6 | ¡Celebrar! | `AFK` |\n" -">\n" -"> > ## Solución\n" -"> >\n" -"> > |orden|acción . . . . . . . . . . |comando . . . . . . . . . . |\n" -"> > |-----|-------------------|----------------------------------------------|\n" -"> > |1 | Actualizar repositorio local | `git pull origin master` |\n" -"> > |2 | Hacer cambios | `echo 100 >> numbers.txt` |\n" -"> > |3 | Realizar cambios | `git add numbers.txt` |\n" -"> > |4 | Hacer commit a los cambios | `git commit -m \"Agregar 100 a numbers.txt\"` |\n" -"> > |5 | Actualizar repositorio remoto | `git push origin master` |\n" -"> > |6 | ¡Celebrar! | `AFK` |\n" -"> >" - -# Front Matter -#: git-novice/_locale/es/_episodes/10-open.md:1 -msgid "" -"---\n" -"title: La ciencia abierta\n" -"teaching: 5\n" -"exercises: 5\n" -"questions:\n" -"- \"¿Cómo un control de versiones me puede ayudar a tener mi trabajo más abierto?\"\n" -"objectives:\n" -"- \"Explica como el control de versiones nos ayuda a tener un cuaderno electrónico para todo nuestro trabajo computacional.\"\n" -"keypoints:\n" -"- \"Trabajo científico abierto es más útil y puede ser citado más que si no lo es.\"\n" -"---" -msgstr "" -"---\n" -"title: La ciencia abierta\n" -"teaching: 5\n" -"exercises: 5\n" -"questions:\n" -"- \"¿Cómo un control de versiones me puede ayudar a tener mi trabajo más abierto?\"\n" -"objectives:\n" -"- \"Explica como el control de versiones nos ayuda a tener un cuaderno electrónico para todo nuestro trabajo computacional.\"\n" -"keypoints:\n" -"- \"Trabajo científico abierto es más útil y puede ser citado más que si no lo es.\"\n" -"---" - -# blockquote, which can be cascaded -#: git-novice/_locale/es/_episodes/10-open.md:13 -msgid "> Lo opuesto a \"abierto\" no es \"cerrado\". " -msgstr "> Lo opuesto a \"abierto\" no es \"cerrado\". " - -# blockquote, which can be cascaded -#: git-novice/_locale/es/_episodes/10-open.md:14 -msgid "> Lo opuesto a \"abierto\" es \"quebrado\"." -msgstr "> Lo opuesto a \"abierto\" es \"quebrado\"." - -#: git-novice/_locale/es/_episodes/10-open.md:19 -msgid "" -"El libre intercambio de información podría ser el ideal en Ciencia. Pero la realidad, a menudo, es mucho más complicada.\n" -"En la práctica cotidiana vemos situaciones como la siguiente: " -msgstr "" -"El libre intercambio de información podría ser el ideal en Ciencia. Pero la realidad, a menudo, es mucho más complicada.\n" -"En la práctica cotidiana vemos situaciones como la siguiente: " - -# unordered list -#: git-novice/_locale/es/_episodes/10-open.md:22 -msgid "* Una científica recoge algunos datos y los almacena en una máquina que seguramente tiene en su oficina." -msgstr "* Una científica recoge algunos datos y los almacena en una máquina que seguramente tiene en su oficina." - -# unordered list -#: git-novice/_locale/es/_episodes/10-open.md:23 -msgid "* Luego ella escribe y modifica unos pocos programas para analizar los datos (los cuales residen en su computadora)." -msgstr "* Luego ella escribe y modifica unos pocos programas para analizar los datos (los cuales residen en su computadora)." - -# unordered list -#: git-novice/_locale/es/_episodes/10-open.md:24 -msgid "* Una vez que tiene algunos resultados, ella escribe y presenta su artículo. Podría incluir sus datos -en varias revistas que los requieran- pero probablemente no incluya su código." -msgstr "* Una vez que tiene algunos resultados, ella escribe y presenta su artículo. Podría incluir sus datos -en varias revistas que los requieran- pero probablemente no incluya su código." - -# unordered list -#: git-novice/_locale/es/_episodes/10-open.md:25 -msgid "* El tiempo pasa." -msgstr "* El tiempo pasa." - -# unordered list -#: git-novice/_locale/es/_episodes/10-open.md:26 -msgid "* La revista envía las revisiones de un puñado de personas anónimas que trabajan en su campo de actividad." -msgstr "* La revista envía las revisiones de un puñado de personas anónimas que trabajan en su campo de actividad." - -#: git-novice/_locale/es/_episodes/10-open.md:27 -msgid "" -" Ella revisa su artículo para satisfacer las revisiones propuestas. Durante ese tiempo ella también podría modificar los **scripts** que escribió anteriormente, y vuelve a enviar.\n" -"* Pasa más tiempo.\n" -"* El artículo finalmente se publica. \n" -"* Se podría incluir un enlace a una copia online de sus datos, pero el mismo artículo está detrás de un sitio web de pago: sólo las personas que tienen acceso personal o institucional serán capaces de leerlo." -msgstr "" -" Ella revisa su artículo para satisfacer las revisiones propuestas. Durante ese tiempo ella también podría modificar los **scripts** que escribió anteriormente, y vuelve a enviar.\n" -"* Pasa más tiempo.\n" -"* El artículo finalmente se publica. \n" -"* Se podría incluir un enlace a una copia online de sus datos, pero el mismo artículo está detrás de un sitio web de pago: sólo las personas que tienen acceso personal o institucional serán capaces de leerlo." - -#: git-novice/_locale/es/_episodes/10-open.md:32 -msgid "Para muchos otros científicos, el proceso abierto se ve así:" -msgstr "Para muchos otros científicos, el proceso abierto se ve así:" - -# unordered list -#: git-novice/_locale/es/_episodes/10-open.md:34 -msgid "* Los datos que obtiene son almacenados, tan pronto como los colecta, en un repositorio de acceso abierto, " -msgstr "* Los datos que obtiene son almacenados, tan pronto como los colecta, en un repositorio de acceso abierto, " - -#: git-novice/_locale/es/_episodes/10-open.md:35 -msgid "" -" como puede ser [figshare](http://figshare.com/) o [Zenodo](http://zenodo.org), obteniendo su propio [Digital Object Identifier] (https://en.wikipedia.org/wiki/Digital_object_identifier) (DOI). O los datos que han sido recientemente publicados, son almacenados en [Dryad](http://datadryad.org/).\n" -"* La científica crea un nuevo repositorio en GitHub para guardar su trabajo.\n" -"* Al hacer su análisis de los datos, guarda los cambios de sus **scripts** (y posiblemente algunos archivos de salida) en ese repositorio. También utiliza el repositorio para su artículo. Entonces ese repositorio es el centro de colaboración con sus colegas.\n" -"* Cuando está satisfecha con el estado de su artículo, publica una versión en [arXiv](http://arxiv.org/) o en algún otro servidor de preimpresión para invitar a sus compañeros a una retroalimentación. \n" -"* Basado en esa retroalimentación, puede escribir varias revisiones antes de enviar finalmente su artículo a la revista. \n" -"* El artículo publicado incluye enlaces a su preimpresión y a sus repositorios de código y datos, lo que hace mucho más fácil para otros científicos utilizar este trabajo como punto de partida para su propia investigación." -msgstr "" -" como puede ser [figshare](http://figshare.com/) o [Zenodo](http://zenodo.org), obteniendo su propio [Digital Object Identifier] (https://en.wikipedia.org/wiki/Digital_object_identifier) (DOI). O los datos que han sido recientemente publicados, son almacenados en [Dryad](http://datadryad.org/).\n" -"* La científica crea un nuevo repositorio en GitHub para guardar su trabajo.\n" -"* Al hacer su análisis de los datos, guarda los cambios de sus **scripts** (y posiblemente algunos archivos de salida) en ese repositorio. También utiliza el repositorio para su artículo. Entonces ese repositorio es el centro de colaboración con sus colegas.\n" -"* Cuando está satisfecha con el estado de su artículo, publica una versión en [arXiv](http://arxiv.org/) o en algún otro servidor de preimpresión para invitar a sus compañeros a una retroalimentación. \n" -"* Basado en esa retroalimentación, puede escribir varias revisiones antes de enviar finalmente su artículo a la revista. \n" -"* El artículo publicado incluye enlaces a su preimpresión y a sus repositorios de código y datos, lo que hace mucho más fácil para otros científicos utilizar este trabajo como punto de partida para su propia investigación." - -#: git-novice/_locale/es/_episodes/10-open.md:42 -msgid "Este modelo abierto acelera la investigación: el trabajo abierto [se cita y se reutiliza](http://dx.doi.org/10.1371/journal.pone.0000308). Sin embargo, las personas que quieren trabajar de esta manera necesitan tomar algunas decisiones sobre qué significa exactamente \"abierto\" y cómo hacerlo. Puedes encontrar más información sobre los diferentes aspectos de la Ciencia Abierta en [el libro](http://link.springer.com/book/10.1007/978-3-319-00026-8)." -msgstr "Este modelo abierto acelera la investigación: el trabajo abierto [se cita y se reutiliza](http://dx.doi.org/10.1371/journal.pone.0000308). Sin embargo, las personas que quieren trabajar de esta manera necesitan tomar algunas decisiones sobre qué significa exactamente \"abierto\" y cómo hacerlo. Puedes encontrar más información sobre los diferentes aspectos de la Ciencia Abierta en [el libro](http://link.springer.com/book/10.1007/978-3-319-00026-8)." - -#: git-novice/_locale/es/_episodes/10-open.md:44 -msgid "Ésta es una de las muchas razones por las que enseñamos el control de versiones. Cuando se utiliza con diligencia, responde a \"cómo\" actúa un cuaderno electrónico compartible:" -msgstr "Ésta es una de las muchas razones por las que enseñamos el control de versiones. Cuando se utiliza con diligencia, responde a \"cómo\" actúa un cuaderno electrónico compartible:" - -# unordered list -#: git-novice/_locale/es/_episodes/10-open.md:46 -msgid "* Las etapas conceptuales del trabajo están documentadas, incluyendo quién hizo" -msgstr "* Las etapas conceptuales del trabajo están documentadas, incluyendo quién hizo" - -#: git-novice/_locale/es/_episodes/10-open.md:47 -msgid "" -" qué y cuándo se hizo. Cada paso está marcado con un identificador (el ID de confirmación) de cada uno de los intentos y propósitos.\n" -"* Puedes vincular tu documentación de ideas y otros trabajos intelectuales directamente con los cambios que surgen de ellos.\n" -"* Puedes referirte a lo que utilizaste en tu investigación para obtener tus resultados computacionales de manera única y recuperable.\n" -"* Con un sistema de control de versiones como Git, todo el historial del repositorio es fácil de archivar para siempre." -msgstr "" -" qué y cuándo se hizo. Cada paso está marcado con un identificador (el ID de confirmación) de cada uno de los intentos y propósitos.\n" -"* Puedes vincular tu documentación de ideas y otros trabajos intelectuales directamente con los cambios que surgen de ellos.\n" -"* Puedes referirte a lo que utilizaste en tu investigación para obtener tus resultados computacionales de manera única y recuperable.\n" -"* Con un sistema de control de versiones como Git, todo el historial del repositorio es fácil de archivar para siempre." - -# blockquote, which can be cascaded -#: git-novice/_locale/es/_episodes/10-open.md:52 -msgid "> ## Haciendo código citable" -msgstr "> ## Haciendo código citable" - -# blockquote, which can be cascaded -#: git-novice/_locale/es/_episodes/10-open.md:59 -msgid "> ## ¿Cuán reproducible es mi trabajo?" -msgstr "> ## ¿Cuán reproducible es mi trabajo?" - -#: git-novice/_locale/es/_episodes/10-open.md:60 -msgid "" -">\n" -"> Pide a un compañero de laboratorio que reproduzca un resultado que obtuviste \n" -"> utilizando sólo lo que está disponible en un documento publicado o en la web.\n" -"> Luego, trata de hacer lo mismo con los resultados de tu labmate.\n" -"> Finalmente, reproducir los resultados de otro laboratorio." -msgstr "" -">\n" -"> Pide a un compañero de laboratorio que reproduzca un resultado que obtuviste \n" -"> utilizando sólo lo que está disponible en un documento publicado o en la web.\n" -"> Luego, trata de hacer lo mismo con los resultados de tu labmate.\n" -"> Finalmente, reproducir los resultados de otro laboratorio." - -# blockquote, which can be cascaded -#: git-novice/_locale/es/_episodes/10-open.md:67 -msgid "> ## ¿Cómo encontrar un repositorio de datos adecuado?" -msgstr "> ## ¿Cómo encontrar un repositorio de datos adecuado?" - -#: git-novice/_locale/es/_episodes/10-open.md:68 -msgid "" -">\n" -"> Navega por Internet durante un par de minutos y echa un vistazo a los repositorios de datos mencionado anteriormente: [Figshare](http://figshare.com/), [Zenodo](http://zenodo.org), [Dryad](http://datadryad.org/). Dependiendo de tu campo de investigación, encuentra repositorios reconocidos por la comunidad en tu campo. También puede ser útil [estos repositorios de datos recomendados por Nature](http://www.nature.com/sdata/data-policies/repositories). Discute con tu vecino qué repositorio de datos deseas abordar para tu proyecto actual y explicale por qué." -msgstr "" -">\n" -"> Navega por Internet durante un par de minutos y echa un vistazo a los repositorios de datos mencionado anteriormente: [Figshare](http://figshare.com/), [Zenodo](http://zenodo.org), [Dryad](http://datadryad.org/). Dependiendo de tu campo de investigación, encuentra repositorios reconocidos por la comunidad en tu campo. También puede ser útil [estos repositorios de datos recomendados por Nature](http://www.nature.com/sdata/data-policies/repositories). Discute con tu vecino qué repositorio de datos deseas abordar para tu proyecto actual y explicale por qué." - -# Front Matter -#: git-novice/_locale/es/_episodes/11-licensing.md:1 -msgid "" -"---\n" -"title: Licencia\n" -"teaching: 5\n" -"exercises: 0\n" -"questions:\n" -"- \"¿Qué información sobre licencias debería incluir en mi trabajo?\"\n" -"objectives:\n" -"- \"Explicar la importancia de agregar información de licencias a nuestro repositorio de código.\"\n" -"- \"Escoger la licencia apropiada.\"\n" -"- \"Explicar las diferencias en licencias y algunas expectativas sociales.\"\n" -"keypoints:\n" -"- \"Las personas que usan la licencia **GPL** en su software tienen que asegurarse de que toda la estructura esté bajo ésta licencia; muchas otras licencias no requieren esto.\"\n" -"- \"La familia de licencias **Creative Commons** permite a las personas adaptarse a varios requerimientos y restricciones de atribución, la creación de trabajo derivado, compartir el trabajo, y comercialización.\"\n" -"- \"Personas sin conocimientos de leyes no deberían tratar de escribir nuevas licencias desde cero.\"\n" -"---" -msgstr "" -"---\n" -"title: Licencia\n" -"teaching: 5\n" -"exercises: 0\n" -"questions:\n" -"- \"¿Qué información sobre licencias debería incluir en mi trabajo?\"\n" -"objectives:\n" -"- \"Explicar la importancia de agregar información de licencias a nuestro repositorio de código.\"\n" -"- \"Escoger la licencia apropiada.\"\n" -"- \"Explicar las diferencias en licencias y algunas expectativas sociales.\"\n" -"keypoints:\n" -"- \"Las personas que usan la licencia **GPL** en su software tienen que asegurarse de que toda la estructura esté bajo ésta licencia; muchas otras licencias no requieren esto.\"\n" -"- \"La familia de licencias **Creative Commons** permite a las personas adaptarse a varios requerimientos y restricciones de atribución, la creación de trabajo derivado, compartir el trabajo, y comercialización.\"\n" -"- \"Personas sin conocimientos de leyes no deberían tratar de escribir nuevas licencias desde cero.\"\n" -"---" - -#: git-novice/_locale/es/_episodes/11-licensing.md:17 -msgid "Cuando un repositorio público contiene código fuente, un manuscrito u otro trabajo creativo, éste debe incluir un archivo con el nombre `LICENCIA` o `LICENCIA.txt` en el directorio base del repositorio, que indique claramente bajo qué licencia se pone a disposición el contenido. Esto se debe a que la protección de propiedad intelectual (y por lo tanto derechos de autor) se aplica automáticamente a las obras creativas. La reutilización de trabajos creativos sin licencia es peligrosa, ya que los titulares de los derechos de autor podrían realizar una demanda por infringir la misma." -msgstr "Cuando un repositorio público contiene código fuente, un manuscrito u otro trabajo creativo, éste debe incluir un archivo con el nombre `LICENCIA` o `LICENCIA.txt` en el directorio base del repositorio, que indique claramente bajo qué licencia se pone a disposición el contenido. Esto se debe a que la protección de propiedad intelectual (y por lo tanto derechos de autor) se aplica automáticamente a las obras creativas. La reutilización de trabajos creativos sin licencia es peligrosa, ya que los titulares de los derechos de autor podrían realizar una demanda por infringir la misma." - -#: git-novice/_locale/es/_episodes/11-licensing.md:19 -msgid "Una licencia resuelve el problema otorgando derechos a otros (los licenciatarios) que de otro modo no tendrían. Los derechos que se otorgan y bajo qué condiciones difieren, a menudo de forma leve, de una licencia a otra. En la práctica, algunas licencias son las más populares, y el sitio [choosealicense.com](http://choosealicense.com/) te ayudará a encontrar una licencia que se adapte a tus necesidades. Las cosas importantes a considerar son:" -msgstr "Una licencia resuelve el problema otorgando derechos a otros (los licenciatarios) que de otro modo no tendrían. Los derechos que se otorgan y bajo qué condiciones difieren, a menudo de forma leve, de una licencia a otra. En la práctica, algunas licencias son las más populares, y el sitio [choosealicense.com](http://choosealicense.com/) te ayudará a encontrar una licencia que se adapte a tus necesidades. Las cosas importantes a considerar son:" - -# unordered list -#: git-novice/_locale/es/_episodes/11-licensing.md:21 -msgid "* Si deseas abordar los derechos de patente." -msgstr "* Si deseas abordar los derechos de patente." - -# unordered list -#: git-novice/_locale/es/_episodes/11-licensing.md:22 -msgid "* Si necesitas personas que distribuyan los trabajos derivados de tu código fuente." -msgstr "* Si necesitas personas que distribuyan los trabajos derivados de tu código fuente." - -# unordered list -#: git-novice/_locale/es/_episodes/11-licensing.md:23 -msgid "* Si el contenido al que estás otorgando la licencia es código fuente." -msgstr "* Si el contenido al que estás otorgando la licencia es código fuente." - -# unordered list -#: git-novice/_locale/es/_episodes/11-licensing.md:24 -msgid "* Si realmente deseas licenciar el código." -msgstr "* Si realmente deseas licenciar el código." - -#: git-novice/_locale/es/_episodes/11-licensing.md:26 -msgid "" -"Elegir una licencia que sea de uso común hace la vida más fácil para los contribuyentes y los usuarios, porque es probable que ya estén familiarizados con la licencia y no tengan que sortear una jerga específica para decidir si están de acuerdo con la licencia.\n" -"La [Iniciativa Open Source](http://opensource.org/licenses) y [Free Software Foundation](http://www.gnu.org/licenses/license-list.html) mantienen listas de licencias que pueden son buenas opciones a considerar." -msgstr "" -"Elegir una licencia que sea de uso común hace la vida más fácil para los contribuyentes y los usuarios, porque es probable que ya estén familiarizados con la licencia y no tengan que sortear una jerga específica para decidir si están de acuerdo con la licencia.\n" -"La [Iniciativa Open Source](http://opensource.org/licenses) y [Free Software Foundation](http://www.gnu.org/licenses/license-list.html) mantienen listas de licencias que pueden son buenas opciones a considerar." - -#: git-novice/_locale/es/_episodes/11-licensing.md:29 -msgid "Este artículo sobre [licencias de software](https://doi.org/10.1371/journal.pcbi.1002598) proporciona una excelente descripción de licencias y de opciones de licencias desde la perspectiva de los científicos que también escriben código." -msgstr "Este artículo sobre [licencias de software](https://doi.org/10.1371/journal.pcbi.1002598) proporciona una excelente descripción de licencias y de opciones de licencias desde la perspectiva de los científicos que también escriben código." - -#: git-novice/_locale/es/_episodes/11-licensing.md:31 -msgid "Al fin de cuentas, lo que importa es que haya información clara sobre cuál es la licencia. Además, es mejor elegir la licencia desde el principio, incluso si se trata de un repositorio que no es público. Retrasar la decisión de sobre qué licencia elegir sólo complica las cosas más adelante, porque cada vez que un nuevo colaborador comienza a contribuir, ellos también tienen derechos de autor y, por lo tanto, se les debe pedir aprobación una vez que se elige una licencia." -msgstr "Al fin de cuentas, lo que importa es que haya información clara sobre cuál es la licencia. Además, es mejor elegir la licencia desde el principio, incluso si se trata de un repositorio que no es público. Retrasar la decisión de sobre qué licencia elegir sólo complica las cosas más adelante, porque cada vez que un nuevo colaborador comienza a contribuir, ellos también tienen derechos de autor y, por lo tanto, se les debe pedir aprobación una vez que se elige una licencia." - -# blockquote, which can be cascaded -#: git-novice/_locale/es/_episodes/11-licensing.md:33 -msgid "> ## ¿Puedo usar una **Open License**?" -msgstr "> ## ¿Puedo usar una **Open License**?" - -#: git-novice/_locale/es/_episodes/11-licensing.md:34 -msgid "" -">\n" -"> Investiga si puedes usar una **Open license** o \"Licencia Abierta\" en tu **software**. ¿Puedes hacer eso por tí mismo?, ¿o necesitas permiso de alguien dentro de tu institución? Si necesitas permiso, ¿de quién?" -msgstr "" -">\n" -"> Investiga si puedes usar una **Open license** o \"Licencia Abierta\" en tu **software**. ¿Puedes hacer eso por tí mismo?, ¿o necesitas permiso de alguien dentro de tu institución? Si necesitas permiso, ¿de quién?" - -# blockquote, which can be cascaded -#: git-novice/_locale/es/_episodes/11-licensing.md:38 -msgid "> ## ¿Qué licencias ya he aceptado?" -msgstr "> ## ¿Qué licencias ya he aceptado?" - -#: git-novice/_locale/es/_episodes/11-licensing.md:39 -msgid "" -">\n" -"> Muchas herramientas de **software** que usamos día a día (incluyendo las herramientas en este **workshop**) son\n" -"> **open-source software**. Escoge uno de los proyectos de GitHub de la lista de abajo, o algún otro que te interese. Encuentra la licencia (usualmente es un archivo que se llama `LICENSE` o `COPYING`) y luego habla con tus compañeros sobre como ésta licencia te permite o te restringe el uso del **software**. ¿Es una de las licencias que hemos visto en esta sesión? ¿Qué tan diferente es ésta licencia?\n" -"> - [Git](https://github.com/git/git), herramientas para el manejo de código fuente.\n" -"> - [CPython](https://github.com/python/cpython), implementación estándar del lenguaje Python.\n" -"> - [Jupyter](https://github.com/jupyter), el proyecto que implementa **notebooks** para correr Python en la **web** que usaremos en este **workshop**.\n" -"> - [EtherPad](https://github.com/ether/etherpad-lite), un editor colaborativo en tiempo real." -msgstr "" -">\n" -"> Muchas herramientas de **software** que usamos día a día (incluyendo las herramientas en este **workshop**) son\n" -"> **open-source software**. Escoge uno de los proyectos de GitHub de la lista de abajo, o algún otro que te interese. Encuentra la licencia (usualmente es un archivo que se llama `LICENSE` o `COPYING`) y luego habla con tus compañeros sobre como ésta licencia te permite o te restringe el uso del **software**. ¿Es una de las licencias que hemos visto en esta sesión? ¿Qué tan diferente es ésta licencia?\n" -"> - [Git](https://github.com/git/git), herramientas para el manejo de código fuente.\n" -"> - [CPython](https://github.com/python/cpython), implementación estándar del lenguaje Python.\n" -"> - [Jupyter](https://github.com/jupyter), el proyecto que implementa **notebooks** para correr Python en la **web** que usaremos en este **workshop**.\n" -"> - [EtherPad](https://github.com/ether/etherpad-lite), un editor colaborativo en tiempo real." - -# Front Matter -#: git-novice/_locale/es/_episodes/12-citation.md:1 -msgid "" -"---\n" -"title: Ejemplo de Referencia o cita\n" -"teaching: 2\n" -"exercises: 0\n" -"questions:\n" -"- \"¿Cómo puedo hacer que mi trabajo sea más fácil de citar?\"\n" -"objectives:\n" -"- \"Haz que tu trabajo sea más fácil de citar\"\n" -"keypoints:\n" -"- \"Agrega un archivo CITATION al repositorio y explica cómo quieres que tu trabajo sea citado.\"\n" -"---" -msgstr "" -"---\n" -"title: Ejemplo de Referencia o cita\n" -"teaching: 2\n" -"exercises: 0\n" -"questions:\n" -"- \"¿Cómo puedo hacer que mi trabajo sea más fácil de citar?\"\n" -"objectives:\n" -"- \"Haz que tu trabajo sea más fácil de citar\"\n" -"keypoints:\n" -"- \"Agrega un archivo CITATION al repositorio y explica cómo quieres que tu trabajo sea citado.\"\n" -"---" - -#: git-novice/_locale/es/_episodes/12-citation.md:13 -msgid "" -"Te recomendamos que incluyas un archivo llamado `CITATION` o `CITATION.txt`\n" -"que describa cómo citar o referenciar tu proyecto.\n" -"La siguiente cita es de \n" -"[Software Carpentry](https://github.com/swcarpentry/website/blob/gh-pages/CITATION):" -msgstr "" -"Te recomendamos que incluyas un archivo llamado `CITATION` o `CITATION.txt`\n" -"que describa cómo citar o referenciar tu proyecto.\n" -"La siguiente cita es de \n" -"[Software Carpentry](https://github.com/swcarpentry/website/blob/gh-pages/CITATION):" - -# Front Matter -#: git-novice/_locale/es/_episodes/13-hosting.md:1 -msgid "" -"---\n" -"title: Hospedaje\n" -"teaching: 10\n" -"exercises: 0\n" -"questions:\n" -"- \"¿Dónde debería alojar mis repositorios de control de versiones?\"\n" -"objectives:\n" -"- \"Explicar diferentes opciones para realizar trabajos científicos.\"\n" -"keypoints:\n" -"- \"Los proyectos pueden alojarse en servidores de la universidad, en dominios personales o públicas.\"\n" -"- \"Las reglas con respecto a la propiedad intelectual y el almacenamiento de información confidencial se aplican sin importar dónde se alojan el código y los datos.\"\n" -"---" -msgstr "" -"---\n" -"title: Hospedaje\n" -"teaching: 10\n" -"exercises: 0\n" -"questions:\n" -"- \"¿Dónde debería alojar mis repositorios de control de versiones?\"\n" -"objectives:\n" -"- \"Explicar diferentes opciones para realizar trabajos científicos.\"\n" -"keypoints:\n" -"- \"Los proyectos pueden alojarse en servidores de la universidad, en dominios personales o públicas.\"\n" -"- \"Las reglas con respecto a la propiedad intelectual y el almacenamiento de información confidencial se aplican sin importar dónde se alojan el código y los datos.\"\n" -"---" - -#: git-novice/_locale/es/_episodes/13-hosting.md:14 -msgid "" -"La segunda gran pregunta para los grupos que quieren liberar su trabajo es dónde\n" -"hospedar su código y datos. Una opción es que el laboratorio, departamento o la\n" -"universidad provean un servidor, gestionen cuentas y respaldos, etc. El principal\n" -"beneficio de esto es que clarifica quién es dueño de qué, lo cual es particularmente\n" -"importante si algún material es sensible (es decir, se relaciona a experimentos\n" -"que involucran sujetos humanos o pueden ser usados en una patente). Las principales\n" -"desventajas son el costo de proveer el servicio y su longevidad: un científico\n" -"que ha pasado diez años colectando datos quisiera asegurarse de que estos estarán\n" -"disponibles en diez años más, pero eso está más allá del tiempo de vida de muchos \n" -"de los subsidios que financian la infraestructura académica." -msgstr "" -"La segunda gran pregunta para los grupos que quieren liberar su trabajo es dónde\n" -"hospedar su código y datos. Una opción es que el laboratorio, departamento o la\n" -"universidad provean un servidor, gestionen cuentas y respaldos, etc. El principal\n" -"beneficio de esto es que clarifica quién es dueño de qué, lo cual es particularmente\n" -"importante si algún material es sensible (es decir, se relaciona a experimentos\n" -"que involucran sujetos humanos o pueden ser usados en una patente). Las principales\n" -"desventajas son el costo de proveer el servicio y su longevidad: un científico\n" -"que ha pasado diez años colectando datos quisiera asegurarse de que estos estarán\n" -"disponibles en diez años más, pero eso está más allá del tiempo de vida de muchos \n" -"de los subsidios que financian la infraestructura académica." - -#: git-novice/_locale/es/_episodes/13-hosting.md:25 -msgid "" -"Otra opción es comprar un dominio y pagar a un Proveedor de Servicios de Internet\n" -"(ISP por sus siglas en inglés) para hospedarlo. Esto da al individuo o grupo mayor\n" -"control, y le da la vuelta a problemas que pueden surgir cuando se cambien de una \n" -"institución a otra, pero requiere más tiempo y esfuerzo para configurar que la\n" -"opción anterior o siguiente." -msgstr "" -"Otra opción es comprar un dominio y pagar a un Proveedor de Servicios de Internet\n" -"(ISP por sus siglas en inglés) para hospedarlo. Esto da al individuo o grupo mayor\n" -"control, y le da la vuelta a problemas que pueden surgir cuando se cambien de una \n" -"institución a otra, pero requiere más tiempo y esfuerzo para configurar que la\n" -"opción anterior o siguiente." - -#: git-novice/_locale/es/_episodes/13-hosting.md:31 -msgid "" -"La tercera opción es utilizar un servicio de hospedaje público como\n" -"[GitHub](http://github.com), [GitLab](http://gitlab.com),\n" -"[BitBucket](http://bitbucket.org) o [SourceForge](http://sourceforge.net).\n" -"Cada uno de estos servicios provee una interfaz web que permite a las personas\n" -"crear, ver y editar sus repositorios de código. Estos servicios también proveen \n" -"herramientas de comunicación y gestión de proyectos que incluyen `seguimiento de problemas`,\n" -"páginas wiki, notificaciones de correo electrónico y revisiones de código. Estos\n" -"servicios se benefician de economías de escalamiento y efectos de redes: es más\n" -"fácil correr un servicio grande bien que correr varios pequeños servicios al\n" -"mismo estándar. También es más fácil para la gente colaborar. Usando un servicio \n" -"popular puede ayudar a conectar tu proyecto con una comunidad que ya está usando el\n" -"mismo servicio." -msgstr "" -"La tercera opción es utilizar un servicio de hospedaje público como\n" -"[GitHub](http://github.com), [GitLab](http://gitlab.com),\n" -"[BitBucket](http://bitbucket.org) o [SourceForge](http://sourceforge.net).\n" -"Cada uno de estos servicios provee una interfaz web que permite a las personas\n" -"crear, ver y editar sus repositorios de código. Estos servicios también proveen \n" -"herramientas de comunicación y gestión de proyectos que incluyen `seguimiento de problemas`,\n" -"páginas wiki, notificaciones de correo electrónico y revisiones de código. Estos\n" -"servicios se benefician de economías de escalamiento y efectos de redes: es más\n" -"fácil correr un servicio grande bien que correr varios pequeños servicios al\n" -"mismo estándar. También es más fácil para la gente colaborar. Usando un servicio \n" -"popular puede ayudar a conectar tu proyecto con una comunidad que ya está usando el\n" -"mismo servicio." - -#: git-novice/_locale/es/_episodes/13-hosting.md:44 -msgid "" -"Como un ejemplo, Software Carpentry [está en \n" -"GitHub]({{ swc_github }}), donde puedes encontrar el [código fuente para esta\n" -"página](https://github.com/swcarpentry/git-novice-es/blob/gh-pages/_episodes/13-hosting.md).\n" -"Cualquiera con una cuenta de GitHub puede sugerir cambios a este texto." -msgstr "" -"Como un ejemplo, Software Carpentry [está en \n" -"GitHub]({{ swc_github }}), donde puedes encontrar el [código fuente para esta\n" -"página](https://github.com/swcarpentry/git-novice-es/blob/gh-pages/_episodes/13-hosting.md).\n" -"Cualquiera con una cuenta de GitHub puede sugerir cambios a este texto." - -#: git-novice/_locale/es/_episodes/13-hosting.md:49 -msgid "" -"Usando servicios grandes y bien establecidos puede también ayudarte a tomar\n" -"ventaja rápidamente de herramientas poderosas tales como la Integración \n" -"Continua (CI por sus siglas en inglés). CI puede automaticamente construir el ejecutable a partir del codigo fuente y probar el \n" -"software automáticamente cada vez que se hace un `commit` o se somete un \n" -"`pull request`. La integración directa de CI con un servicio de hospedaje en \n" -"línea significa que esta información está presente en cualquier `pull request`\n" -"y ayudar a mantener la integridad y estándares de calidad del código. Si bien\n" -"CI está disponible en situaciones de auto-hospedaje, hay menos configuración y\n" -"mantenimiento al usar un servicio en línea. Más aún, estas herramientas son \n" -"proporcionadas sin costo alguno para proyectos de código abierto y están también\n" -"disponibles para repositorios privados por una cuota." -msgstr "" -"Usando servicios grandes y bien establecidos puede también ayudarte a tomar\n" -"ventaja rápidamente de herramientas poderosas tales como la Integración \n" -"Continua (CI por sus siglas en inglés). CI puede automaticamente construir el ejecutable a partir del codigo fuente y probar el \n" -"software automáticamente cada vez que se hace un `commit` o se somete un \n" -"`pull request`. La integración directa de CI con un servicio de hospedaje en \n" -"línea significa que esta información está presente en cualquier `pull request`\n" -"y ayudar a mantener la integridad y estándares de calidad del código. Si bien\n" -"CI está disponible en situaciones de auto-hospedaje, hay menos configuración y\n" -"mantenimiento al usar un servicio en línea. Más aún, estas herramientas son \n" -"proporcionadas sin costo alguno para proyectos de código abierto y están también\n" -"disponibles para repositorios privados por una cuota." - -#: git-novice/_locale/es/_episodes/13-hosting.md:62 -msgid "" -">\n" -"> Compartir es el ideal de la ciencia,\n" -"> pero muchas instituciones imponen restricciones al compartir,\n" -"> por ejemplo para proteger propiedad intelectual potencialmente patentable.\n" -"> Si encuentras tales restricciones,\n" -"> pudiera ser productivo indagar acerca de las motivaciones\n" -"> ya sea para solicitar una excepción para un proyecto específico o dominio,\n" -"> o para impulsar una reforma institucional más amplia para el apoyo de la ciencia abierta." -msgstr "" -">\n" -"> Compartir es el ideal de la ciencia,\n" -"> pero muchas instituciones imponen restricciones al compartir,\n" -"> por ejemplo para proteger propiedad intelectual potencialmente patentable.\n" -"> Si encuentras tales restricciones,\n" -"> pudiera ser productivo indagar acerca de las motivaciones\n" -"> ya sea para solicitar una excepción para un proyecto específico o dominio,\n" -"> o para impulsar una reforma institucional más amplia para el apoyo de la ciencia abierta." - -# blockquote, which can be cascaded -#: git-novice/_locale/es/_episodes/13-hosting.md:72 -msgid "> ## ¿Mi Trabajo Puede Ser Público?" -msgstr "> ## ¿Mi Trabajo Puede Ser Público?" - -#: git-novice/_locale/es/_episodes/13-hosting.md:73 -msgid "" -">\n" -"> Averigua si tienes permitido hospedar tu trabajo abiertamente en un repositorio público.\n" -"> ¿Puedes hacer esto unilateralmente,\n" -"> o necesitas permiso de alguien en tu institución?\n" -"> Si ese es el caso, ¿de quién?" -msgstr "" -">\n" -"> Averigua si tienes permitido hospedar tu trabajo abiertamente en un repositorio público.\n" -"> ¿Puedes hacer esto unilateralmente,\n" -"> o necesitas permiso de alguien en tu institución?\n" -"> Si ese es el caso, ¿de quién?" - -# blockquote, which can be cascaded -#: git-novice/_locale/es/_episodes/13-hosting.md:80 -msgid "> ## ¿Dónde Puedo Compartir Mi Trabajo?" -msgstr "> ## ¿Dónde Puedo Compartir Mi Trabajo?" - -#: git-novice/_locale/es/_episodes/13-hosting.md:81 -msgid "" -">\n" -"> ¿Tu institución tiene un repositorio(s) donde puedas compartir tus \n" -"> artículos, datos y software? ¿Cómo los repositorios institucionales\n" -"> difieren de servicios como [arXiV](http://arxiv.org/), [figshare](http://figshare.com/) y [GitHub](http://github.com/)?" -msgstr "" -">\n" -"> ¿Tu institución tiene un repositorio(s) donde puedas compartir tus \n" -"> artículos, datos y software? ¿Cómo los repositorios institucionales\n" -"> difieren de servicios como [arXiV](http://arxiv.org/), [figshare](http://figshare.com/) y [GitHub](http://github.com/)?" - -# Front Matter -#: git-novice/_locale/es/_episodes/14-supplemental-rstudio.md:1 -msgid "" -"---\n" -"title: Usando Git desde RStudio\n" -"teaching: 10\n" -"exercises: 0\n" -"questions:\n" -"- \"¿Cómo puedo usar Git desde RStudio?\"\n" -"objectives:\n" -"- \"Entender cómo usar Git desde RStudio.\"\n" -"keypoints:\n" -"- \"Crear un proyecto en RStudio\"\n" -"---" -msgstr "" -"---\n" -"title: Usando Git desde RStudio\n" -"teaching: 10\n" -"exercises: 0\n" -"questions:\n" -"- \"¿Cómo puedo usar Git desde RStudio?\"\n" -"objectives:\n" -"- \"Entender cómo usar Git desde RStudio.\"\n" -"keypoints:\n" -"- \"Crear un proyecto en RStudio\"\n" -"---" - -#: git-novice/_locale/es/_episodes/14-supplemental-rstudio.md:13 -msgid "Ya que el uso de control de versiones es muy útil cuando escribimos **scripts**, entonces RStudio esta integrado con Git. Hay algunas otras mas complejas funcionalidades de Git que solamente se pueden usar desde la terminal, pero RStudio tiene una buena interfaz de trabajo para realizar las operaciones más comunes de control de versiones." -msgstr "Ya que el uso de control de versiones es muy útil cuando escribimos **scripts**, entonces RStudio esta integrado con Git. Hay algunas otras mas complejas funcionalidades de Git que solamente se pueden usar desde la terminal, pero RStudio tiene una buena interfaz de trabajo para realizar las operaciones más comunes de control de versiones." - -#: git-novice/_locale/es/_episodes/14-supplemental-rstudio.md:15 -msgid "RStudio te permite crear un proyecto [project][rstudio-projects] asociado a un directorio determinado. Esta es una manera de hacer un seguimiento de los archivos asociados al proyecto. Una manera de tener control de archivos es mediante el uso de un programa de control de versiones. Para empezar a usar RStudio para el control de versiones, comencemos por crear un nuevo proyecto:" -msgstr "RStudio te permite crear un proyecto [project][rstudio-projects] asociado a un directorio determinado. Esta es una manera de hacer un seguimiento de los archivos asociados al proyecto. Una manera de tener control de archivos es mediante el uso de un programa de control de versiones. Para empezar a usar RStudio para el control de versiones, comencemos por crear un nuevo proyecto:" - -#: git-novice/_locale/es/_episodes/14-supplemental-rstudio.md:19 -msgid "" -"Una nueva ventana se abrirá y preguntará cómo queremos crear el proyecto. Tenemos\n" -"aquí varias opciones. Supongamos que queremos usar RStudio con el repositorio de planetas\n" -"que ya hemos creado. Como ese repositorio ya está en una carpeta en tu computadora,\n" -"podemos escoger la opción \"Existing Directory\":" -msgstr "" -"Una nueva ventana se abrirá y preguntará cómo queremos crear el proyecto. Tenemos\n" -"aquí varias opciones. Supongamos que queremos usar RStudio con el repositorio de planetas\n" -"que ya hemos creado. Como ese repositorio ya está en una carpeta en tu computadora,\n" -"podemos escoger la opción \"Existing Directory\":" - -# blockquote, which can be cascaded -#: git-novice/_locale/es/_episodes/14-supplemental-rstudio.md:26 -msgid "> ## ¿Puedes ver la opción de \"Version Control\"?" -msgstr "> ## ¿Puedes ver la opción de \"Version Control\"?" - -#: git-novice/_locale/es/_episodes/14-supplemental-rstudio.md:27 -msgid "" -">\n" -"> Aunque no vamos a usar ésta opción aquí, deberías poder ver una opción en el menú que diga\n" -"> \"Version Control\". Esta es la opción que debes escoger cuando quieras crear\n" -"> un proyecto en tu computadora mediante una clonación de un repositorio de GitHub.\n" -"> Si esta opción no es visible, probablemente significa que RStudio no sabe\n" -"> donde está tu ejecutable de Git. Revisa\n" -"> [esta página](https://stat545-ubc.github.io/git03_rstudio-meet-git.html)\n" -"> para encontrar algunos consejos. Incluso después de instalar Git, si estás usando MacOSX\n" -"> algunas veces puede ser necesario que tengas que aceptar la licencia de XCode" -msgstr "" -">\n" -"> Aunque no vamos a usar ésta opción aquí, deberías poder ver una opción en el menú que diga\n" -"> \"Version Control\". Esta es la opción que debes escoger cuando quieras crear\n" -"> un proyecto en tu computadora mediante una clonación de un repositorio de GitHub.\n" -"> Si esta opción no es visible, probablemente significa que RStudio no sabe\n" -"> donde está tu ejecutable de Git. Revisa\n" -"> [esta página](https://stat545-ubc.github.io/git03_rstudio-meet-git.html)\n" -"> para encontrar algunos consejos. Incluso después de instalar Git, si estás usando MacOSX\n" -"> algunas veces puede ser necesario que tengas que aceptar la licencia de XCode" - -#: git-novice/_locale/es/_episodes/14-supplemental-rstudio.md:38 -msgid "" -"En el siguiente paso, RStudio va a preguntar cuál es la carpeta existente que queremos usar. Haremos\n" -"click en el navegador de archivos para navegar a la carpeta correcta en tu computadora, y luego haremos click en\n" -"\"Create Project\":" -msgstr "" -"En el siguiente paso, RStudio va a preguntar cuál es la carpeta existente que queremos usar. Haremos\n" -"click en el navegador de archivos para navegar a la carpeta correcta en tu computadora, y luego haremos click en\n" -"\"Create Project\":" - -#: git-novice/_locale/es/_episodes/14-supplemental-rstudio.md:44 -msgid "¡Y ya está! Ahora tenemos un proyecto en R que contiene tu propio repositorio. Fíjate que ahora en el menú aparece un botón con \"Git\" en letras verticales. Esto significa que RStudio ha reconocido que ésta carpeta es un repositorio de Git, así que te proporcionará las herramientas para usar Git:" -msgstr "¡Y ya está! Ahora tenemos un proyecto en R que contiene tu propio repositorio. Fíjate que ahora en el menú aparece un botón con \"Git\" en letras verticales. Esto significa que RStudio ha reconocido que ésta carpeta es un repositorio de Git, así que te proporcionará las herramientas para usar Git:" - -#: git-novice/_locale/es/_episodes/14-supplemental-rstudio.md:48 -msgid "Para editar los archivos en tu repositorio, puedes hacer click en el archivo desde el panel inferior izquierdo. Ahora vamos a añadir más información sobre Plutón:" -msgstr "Para editar los archivos en tu repositorio, puedes hacer click en el archivo desde el panel inferior izquierdo. Ahora vamos a añadir más información sobre Plutón:" - -#: git-novice/_locale/es/_episodes/14-supplemental-rstudio.md:52 -msgid "Una vez que hemos guardado nuestros archivos editados, ahora podemos usar RStudio para hacer permanentes los cambios. Usa el botón y haz clik a \"Commit\":" -msgstr "Una vez que hemos guardado nuestros archivos editados, ahora podemos usar RStudio para hacer permanentes los cambios. Usa el botón y haz clik a \"Commit\":" - -#: git-novice/_locale/es/_episodes/14-supplemental-rstudio.md:56 -msgid "" -"Esto abrirá una ventana donde puedes seleccionar qué archivos quieres hacer **commit** (marca\n" -"las casillas en la columna \"Staged\") y luego escribe un mensaje para el **commit** (en el panel\n" -"superior derecho). Los iconos en la columna \"Status\" indican el estado actual de cada\n" -"archivo. También puedes ver los cambios de cada archivo haciendo click en su nombre. Una vez\n" -"que todo esté de la forma que quieres, haz click en \"Commit\":" -msgstr "" -"Esto abrirá una ventana donde puedes seleccionar qué archivos quieres hacer **commit** (marca\n" -"las casillas en la columna \"Staged\") y luego escribe un mensaje para el **commit** (en el panel\n" -"superior derecho). Los iconos en la columna \"Status\" indican el estado actual de cada\n" -"archivo. También puedes ver los cambios de cada archivo haciendo click en su nombre. Una vez\n" -"que todo esté de la forma que quieres, haz click en \"Commit\":" - -#: git-novice/_locale/es/_episodes/14-supplemental-rstudio.md:64 -msgid "" -"Puedes subir los cambios seleccionando \"Push\" en el menú de Git. Allí hay también\n" -"opciones para traer los cambios (hacer **pull**) desde una versión remota de este repositorio, y ver\n" -"el historial de cambios realizados:" -msgstr "" -"Puedes subir los cambios seleccionando \"Push\" en el menú de Git. Allí hay también\n" -"opciones para traer los cambios (hacer **pull**) desde una versión remota de este repositorio, y ver\n" -"el historial de cambios realizados:" - -# blockquote, which can be cascaded -#: git-novice/_locale/es/_episodes/14-supplemental-rstudio.md:70 -msgid "> ¿Están los comandos **Push** y **Pull** en gris?" -msgstr "> ¿Están los comandos **Push** y **Pull** en gris?" - -#: git-novice/_locale/es/_episodes/14-supplemental-rstudio.md:71 -msgid "" -">\n" -"> Si este es el caso, generalmente significa que RStudio no sabe dónde están las\n" -"> otras versiones de tu repositorio (por ejemplo, en GitHub).\n" -"> Para solucionar esto, abre una terminal, sitúate en el repositorio y luego lanza el siguiente comando:\n" -"> `git push -u origin master`. Luego reinicia RStudio." -msgstr "" -">\n" -"> Si este es el caso, generalmente significa que RStudio no sabe dónde están las\n" -"> otras versiones de tu repositorio (por ejemplo, en GitHub).\n" -"> Para solucionar esto, abre una terminal, sitúate en el repositorio y luego lanza el siguiente comando:\n" -"> `git push -u origin master`. Luego reinicia RStudio." - -#: git-novice/_locale/es/_episodes/14-supplemental-rstudio.md:78 -msgid "" -"Si hacemos click en el historial de cambios \"History\", podemos ver una versión gráfica de lo\n" -"que obtendríamos con el comando `git log`:" -msgstr "" -"Si hacemos click en el historial de cambios \"History\", podemos ver una versión gráfica de lo\n" -"que obtendríamos con el comando `git log`:" - -#: git-novice/_locale/es/_episodes/14-supplemental-rstudio.md:83 -msgid "RStudio crea algunos archivos que le ayudan a mantener un control de los cambios en el proyecto. Normalmente no deseamos que Git los incluya en el control de versiones, así que es una buena idea agregar sus nombres al `.gitignore`:" -msgstr "RStudio crea algunos archivos que le ayudan a mantener un control de los cambios en el proyecto. Normalmente no deseamos que Git los incluya en el control de versiones, así que es una buena idea agregar sus nombres al `.gitignore`:" - -# blockquote, which can be cascaded -#: git-novice/_locale/es/_episodes/14-supplemental-rstudio.md:87 -msgid "> ## Tip: Control de versiones del output desechable (versioning disposable output)" -msgstr "> ## Tip: Control de versiones del output desechable (versioning disposable output)" - -#: git-novice/_locale/es/_episodes/14-supplemental-rstudio.md:88 -msgid "" -">\n" -"> Generalmente tu no quieres hacer control de cambios o versiones de tus output desechables (o solo datos de lectura).\n" -"> Entonces, tu debes modificar el archivo `.gitignore` para decirle a Git que ignore estos archivos\n" -"> y directorios. " -msgstr "" -">\n" -"> Generalmente tu no quieres hacer control de cambios o versiones de tus output desechables (o solo datos de lectura).\n" -"> Entonces, tu debes modificar el archivo `.gitignore` para decirle a Git que ignore estos archivos\n" -"> y directorios. " - -#: git-novice/_locale/es/_episodes/14-supplemental-rstudio.md:95 -msgid "" -">\n" -"> 1. Crear un directorio dentro de tu proyecto llamado `graphs`.\n" -"> 2. Modificar el archivo `.gitignore` para que contenga `graphs/`\n" -"> entonces este output desechable no estara **versioned**.\n" -">\n" -"> Agrega el folder recien creado al control de versiones usando la interface de Git.\n" -">\n" -"> > ## Solucion del Challenge\n" -"> >\n" -"> > Esto puede ser realizado con los comandos de linea:\n" -"> > ```\n" -"> > $ mkdir graphs\n" -"> > $ echo \"graphs/\"> > .gitignore\n" -"> > ```\n" -"> > {: . shell}" -msgstr "" -">\n" -"> 1. Crear un directorio dentro de tu proyecto llamado `graphs`.\n" -"> 2. Modificar el archivo `.gitignore` para que contenga `graphs/`\n" -"> entonces este output desechable no estara **versioned**.\n" -">\n" -"> Agrega el folder recien creado al control de versiones usando la interface de Git.\n" -">\n" -"> > ## Solucion del Challenge\n" -"> >\n" -"> > Esto puede ser realizado con los comandos de linea:\n" -"> > ```\n" -"> > $ mkdir graphs\n" -"> > $ echo \"graphs/\"> > .gitignore\n" -"> > ```\n" -"> > {: . shell}" - -#: git-novice/_locale/es/_episodes/14-supplemental-rstudio.md:113 -msgid "" -"Hay muchas más opciones que se pueden encontrar en la interfaz de RStudio,\n" -"pero las que hemos visto son suficientes para comenzar." -msgstr "" -"Hay muchas más opciones que se pueden encontrar en la interfaz de RStudio,\n" -"pero las que hemos visto son suficientes para comenzar." - -# Front Matter -#: git-novice/_locale/es/_extras/about.md:1 -msgid "" -"---\n" -"layout: page\n" -"title: About\n" -"permalink: /es/about/\n" -"---" -msgstr "" -"---\n" -"layout: page\n" -"title: About\n" -"permalink: /es/about/\n" -"---" - -# Front Matter -#: git-novice/_locale/es/_extras/discuss.md:1 -msgid "" -"---\n" -"layout: page\n" -"title: Discussion\n" -"permalink: /es/discuss/\n" -"---" -msgstr "" -"---\n" -"layout: page\n" -"title: Discussion\n" -"permalink: /es/discuss/\n" -"---" - -# header -#: git-novice/_locale/es/_extras/discuss.md:7 -msgid "## Preguntas frecuentes" -msgstr "## Preguntas frecuentes" - -#: git-novice/_locale/es/_extras/discuss.md:9 -msgid "" -"La gente a menudo tiene preguntas sobre Git más allá del alcance del material central.\n" -"Los estudiantes que han completado el resto de las lecciones pueden encontrar valor al examinar los siguientes temas." -msgstr "" -"La gente a menudo tiene preguntas sobre Git más allá del alcance del material central.\n" -"Los estudiantes que han completado el resto de las lecciones pueden encontrar valor al examinar los siguientes temas." - -#: git-novice/_locale/es/_extras/discuss.md:12 -msgid "Tenga en cuenta que dado que este material no es esencial para el uso básico de Git, no será cubierto por el instructor." -msgstr "Tenga en cuenta que dado que este material no es esencial para el uso básico de Git, no será cubierto por el instructor." - -# header -#: git-novice/_locale/es/_extras/discuss.md:14 -msgid "## Más configuración avanzada de Git" -msgstr "## Más configuración avanzada de Git" - -#: git-novice/_locale/es/_extras/discuss.md:16 -msgid "" -"En [Configuración de Git]({{page.root}}/02-setup/),\n" -"usamos `git config --global` para establecer algunas opciones predeterminadas para Git.\n" -"Resulta que estas opciones de configuración se almacenan en su directorio de inicio\n" -"en un archivo de texto sin formato llamado `.gitconfig`." -msgstr "" -"En [Configuración de Git]({{page.root}}/02-setup/),\n" -"usamos `git config --global` para establecer algunas opciones predeterminadas para Git.\n" -"Resulta que estas opciones de configuración se almacenan en su directorio de inicio\n" -"en un archivo de texto sin formato llamado `.gitconfig`." - -# code block -#: git-novice/_locale/es/_extras/discuss.md:26 -msgid "" -"~~~\n" -"[user]\n" -"\\tname = Vlad Dracula\n" -"\\temail = vlad@tran.sylvan.ia\n" -"[color]\n" -"\\tui = true\n" -"[core]\n" -"\\teditor = nano\n" -"~~~" -msgstr "" -"~~~\n" -"[user]\n" -"\\tname = Vlad のび太\n" -"\\temail = vlad@tran.sylvan.ia\n" -"[color]\n" -"\\tui = true\n" -"[core]\n" -"\\teditor = nano\n" -"~~~" - -#: git-novice/_locale/es/_extras/discuss.md:37 -msgid "" -"Este archivo se puede abrir en su editor de texto preferido.\n" -"(Tenga en cuenta que se recomienda continuar usando el comando `git config`,\n" -"ya que esto ayuda a evitar la introducción de errores de sintaxis)." -msgstr "" -"Este archivo se puede abrir en su editor de texto preferido.\n" -"(Tenga en cuenta que se recomienda continuar usando el comando `git config`,\n" -"ya que esto ayuda a evitar la introducción de errores de sintaxis)." - -#: git-novice/_locale/es/_extras/discuss.md:41 -msgid "" -"Eventualmente, querrás comenzar a personalizar el comportamiento de Git.\n" -"Esto se puede hacer agregando más entradas a su `.gitconfig`.\n" -"Las opciones disponibles se describen en el manual:" -msgstr "" -"Eventualmente, querrás comenzar a personalizar el comportamiento de Git.\n" -"Esto se puede hacer agregando más entradas a su `.gitconfig`.\n" -"Las opciones disponibles se describen en el manual:" - -#: git-novice/_locale/es/_extras/discuss.md:50 -msgid "" -"En particular, puede resultarle útil agregar alias.\n" -"Estos son como accesos directos para comandos de git más largos.\n" -"Por ejemplo, si te cansas de escribir `git checkout` todo el tiempo,\n" -"podrías ejecutar el comando:" -msgstr "" -"En particular, puede resultarle útil agregar alias.\n" -"Estos son como accesos directos para comandos de git más largos.\n" -"Por ejemplo, si te cansas de escribir `git checkout` todo el tiempo,\n" -"podrías ejecutar el comando:" - -#: git-novice/_locale/es/_extras/discuss.md:60 -msgid "Ahora, si volvemos al ejemplo de [Explorando el historial]({{ page.root }}/05-history/) where we ran:" -msgstr "Ahora, si volvemos al ejemplo de [Explorando el historial]({{ page.root }}/05-history/) where we ran:" - -#: git-novice/_locale/es/_extras/discuss.md:67 -msgid "ahora podríamos escribir:" -msgstr "ahora podríamos escribir:" - -# header -#: git-novice/_locale/es/_extras/discuss.md:74 -msgid "## Diseñando el registro de Git" -msgstr "## Diseñando el registro de Git" - -#: git-novice/_locale/es/_extras/discuss.md:76 -msgid "" -"Un buen objetivo para la personalización sale del registro.\n" -"El registro predeterminado es bastante detallado pero no da pistas gráficas\n" -"como información sobre qué confirmaciones se realizaron localmente\n" -"y que fueron sacados de controles remotos." -msgstr "" -"Un buen objetivo para la personalización sale del registro.\n" -"El registro predeterminado es bastante detallado pero no da pistas gráficas\n" -"como información sobre qué confirmaciones se realizaron localmente\n" -"y que fueron sacados de controles remotos." - -#: git-novice/_locale/es/_extras/discuss.md:81 -msgid "" -"Puede usar `git log --help` y` git config --help` para buscar diferentes formas de cambiar\n" -"la salida de registro.\n" -"Pruebe los siguientes comandos y vea qué efecto tienen:" -msgstr "" -"Puede usar `git log --help` y` git config --help` para buscar diferentes formas de cambiar\n" -"la salida de registro.\n" -"Pruebe los siguientes comandos y vea qué efecto tienen:" - -#: git-novice/_locale/es/_extras/discuss.md:93 -msgid "" -"Si no te gustan los efectos,\n" -"puedes deshacerlos con:" -msgstr "" -"Si no te gustan los efectos,\n" -"puedes deshacerlos con:" - -# blockquote, which can be cascaded -#: git-novice/_locale/es/_extras/discuss.md:103 -msgid "> ## Deshacer cambios en la configuración de Git" -msgstr "> ## Deshacer cambios en la configuración de Git" - -#: git-novice/_locale/es/_extras/discuss.md:104 -msgid "" -">\n" -"> Puede usar el indicador `--unset` para eliminar las opciones no deseadas de` .gitconfig`.\n" -"> Otra forma de deshacer los cambios es almacenar su `.gitconfig` usando Git.\n" -">\n" -"> Para sugerencias sobre lo que puede querer configurar,\n" -"> vaya a GitHub y busque \"gitconfig\".\n" -"> Encontrará cientos de repositorios en los que las personas han almacenado\n" -"> sus propios archivos de configuración de Git.\n" -"> Ordenarlos por el número de estrellas y echar un vistazo a los mejores.\n" -"> Si encuentras alguno que te guste,\n" -"> compruebe que estén cubiertos por una licencia de código abierto antes de clonarlos." -msgstr "" -">\n" -"> Puede usar el indicador `--unset` para eliminar las opciones no deseadas de` .gitconfig`.\n" -"> Otra forma de deshacer los cambios es almacenar su `.gitconfig` usando Git.\n" -">\n" -"> Para sugerencias sobre lo que puede querer configurar,\n" -"> vaya a GitHub y busque \"gitconfig\".\n" -"> Encontrará cientos de repositorios en los que las personas han almacenado\n" -"> sus propios archivos de configuración de Git.\n" -"> Ordenarlos por el número de estrellas y echar un vistazo a los mejores.\n" -"> Si encuentras alguno que te guste,\n" -"> compruebe que estén cubiertos por una licencia de código abierto antes de clonarlos." - -# header -#: git-novice/_locale/es/_extras/discuss.md:117 -msgid "## Archivos sin texto" -msgstr "## Archivos sin texto" - -#: git-novice/_locale/es/_extras/discuss.md:119 -msgid "" -"Recordar cuando discutimos [Conflictos]({{page.root}}/09-conflict/)\n" -"hubo un desafío que preguntó,\n" -"\"¿Qué hace Git?\n" -"cuando hay un conflicto en una imagen o algún otro archivo no textual\n" -"que está almacenado en el control de la versión?\"" -msgstr "" -"Recordar cuando discutimos [Conflictos]({{page.root}}/09-conflict/)\n" -"hubo un desafío que preguntó,\n" -"\"¿Qué hace Git?\n" -"cuando hay un conflicto en una imagen o algún otro archivo no textual\n" -"que está almacenado en el control de la versión?\"" - -#: git-novice/_locale/es/_extras/discuss.md:125 -msgid "Ahora revisitaremos esto con más detalle." -msgstr "Ahora revisitaremos esto con más detalle." - -#: git-novice/_locale/es/_extras/discuss.md:127 -msgid "" -"Muchas personas desean controlar versiones que no sean archivos de texto, como imágenes, archivos PDF y documentos de Microsoft Office o LibreOffice.\n" -"Es cierto que Git puede manejar estos tipos de archivos (que caen bajo el título de tipos de archivos \"binarios\").\n" -"Sin embargo, solo porque *se puede* hacer no significa que *se deba* hacer." -msgstr "" -"Muchas personas desean controlar versiones que no sean archivos de texto, como imágenes, archivos PDF y documentos de Microsoft Office o LibreOffice.\n" -"Es cierto que Git puede manejar estos tipos de archivos (que caen bajo el título de tipos de archivos \"binarios\").\n" -"Sin embargo, solo porque *se puede* hacer no significa que *se deba* hacer." - -#: git-novice/_locale/es/_extras/discuss.md:131 -msgid "" -"Gran parte de la magia de Git proviene de poder hacer comparaciones línea por línea (\"diffs\") entre archivos.\n" -"Esto es generalmente fácil para programar el código fuente y el texto marcado.\n" -"Para archivos que no son de texto, un diff generalmente solo puede detectar que los archivos han cambiado\n" -"pero no puedo decir cómo o dónde." -msgstr "" -"Gran parte de la magia de Git proviene de poder hacer comparaciones línea por línea (\"diffs\") entre archivos.\n" -"Esto es generalmente fácil para programar el código fuente y el texto marcado.\n" -"Para archivos que no son de texto, un diff generalmente solo puede detectar que los archivos han cambiado\n" -"pero no puedo decir cómo o dónde." - -#: git-novice/_locale/es/_extras/discuss.md:136 -msgid "" -"Esto tiene varios impactos en el rendimiento de Git y hará que sea difícil\n" -"compare diferentes versiones de su proyecto." -msgstr "" -"Esto tiene varios impactos en el rendimiento de Git y hará que sea difícil\n" -"compare diferentes versiones de su proyecto." - -#: git-novice/_locale/es/_extras/discuss.md:139 -msgid "" -"Para un ejemplo básico para mostrar la diferencia que hace,\n" -"vamos a ver qué hubiera pasado si Drácula hubiera intentado\n" -"utilizando salidas de un procesador de texto en lugar de texto sin formato." -msgstr "" -"Para un ejemplo básico para mostrar la diferencia que hace,\n" -"vamos a ver qué hubiera pasado si Drácula hubiera intentado\n" -"utilizando salidas de un procesador de texto en lugar de texto sin formato." - -#: git-novice/_locale/es/_extras/discuss.md:143 -msgid "Crea un nuevo directorio y entra en él:" -msgstr "Crea un nuevo directorio y entra en él:" - -#: git-novice/_locale/es/_extras/discuss.md:151 -msgid "" -"Use un programa como Microsoft Word o LibreOffice Writer para crear un documento nuevo.\n" -"Ingrese el mismo texto con el que comenzamos antes:" -msgstr "" -"Use un programa como Microsoft Word o LibreOffice Writer para crear un documento nuevo.\n" -"Ingrese el mismo texto con el que comenzamos antes:" - -#: git-novice/_locale/es/_extras/discuss.md:159 -msgid "" -"Guarde el documento en el directorio `planets-nontext` con el nombre de `mars.doc`.\n" -"De vuelta en la terminal, ejecute los comandos habituales para configurar un nuevo repositorio de Git:" -msgstr "" -"Guarde el documento en el directorio `planets-nontext` con el nombre de `mars.doc`.\n" -"De vuelta en la terminal, ejecute los comandos habituales para configurar un nuevo repositorio de Git:" - -#: git-novice/_locale/es/_extras/discuss.md:169 -msgid "Luego haga los mismos cambios a `mars.doc` que nosotros (o Vlad) previamente hicimos a `mars.txt`." -msgstr "Luego haga los mismos cambios a `mars.doc` que nosotros (o Vlad) previamente hicimos a `mars.txt`." - -#: git-novice/_locale/es/_extras/discuss.md:177 -msgid "" -"Guarde y cierre el procesador de texto.\n" -"Ahora mira lo que Git piensa de tus cambios:" -msgstr "" -"Guarde y cierre el procesador de texto.\n" -"Ahora mira lo que Git piensa de tus cambios:" - -#: git-novice/_locale/es/_extras/discuss.md:192 -msgid "Compare esto con el anterior `git diff` obtenido al usar archivos de texto:" -msgstr "Compare esto con el anterior `git diff` obtenido al usar archivos de texto:" - -#: git-novice/_locale/es/_extras/discuss.md:205 -msgid "" -"Observe cómo los archivos de texto plano dan una diferencia mucho más informativa.\n" -"Puede ver exactamente qué líneas cambiaron y cuáles fueron los cambios." -msgstr "" -"Observe cómo los archivos de texto plano dan una diferencia mucho más informativa.\n" -"Puede ver exactamente qué líneas cambiaron y cuáles fueron los cambios." - -#: git-novice/_locale/es/_extras/discuss.md:208 -msgid "" -"Un `git diff` no informativo no es la única consecuencia de usar Git en archivos binarios.\n" -"Sin embargo, la mayoría de los otros problemas se reducen a si es posible o no una buena diferencia." -msgstr "" -"Un `git diff` no informativo no es la única consecuencia de usar Git en archivos binarios.\n" -"Sin embargo, la mayoría de los otros problemas se reducen a si es posible o no una buena diferencia." - -#: git-novice/_locale/es/_extras/discuss.md:211 -msgid "" -"Esto no quiere decir que *nunca* debes usar Git en archivos binarios.\n" -"Una regla de oro es que está bien si el archivo binario no cambiará muy a menudo,\n" -"y si cambia, no te importa fusionarte en pequeñas diferencias entre versiones." -msgstr "" -"Esto no quiere decir que *nunca* debes usar Git en archivos binarios.\n" -"Una regla de oro es que está bien si el archivo binario no cambiará muy a menudo,\n" -"y si cambia, no te importa fusionarte en pequeñas diferencias entre versiones." - -#: git-novice/_locale/es/_extras/discuss.md:215 -msgid "" -"Ya hemos visto cómo un informe procesado por palabra no pasará esta prueba.\n" -"Un ejemplo que pasa la prueba es un logotipo para su organización o proyecto.\n" -"Aunque un logotipo se almacenará en un formato binario, como `jpg` o `png`,\n" -"puede esperar que permanezca bastante estático durante la vida útil de su repositorio.\n" -"En la rara ocasión en que la marca cambia,\n" -"probablemente solo quiera reemplazar el logotipo por completo en lugar de combinar pequeñas diferencias." -msgstr "" -"Ya hemos visto cómo un informe procesado por palabra no pasará esta prueba.\n" -"Un ejemplo que pasa la prueba es un logotipo para su organización o proyecto.\n" -"Aunque un logotipo se almacenará en un formato binario, como `jpg` o `png`,\n" -"puede esperar que permanezca bastante estático durante la vida útil de su repositorio.\n" -"En la rara ocasión en que la marca cambia,\n" -"probablemente solo quiera reemplazar el logotipo por completo en lugar de combinar pequeñas diferencias." - -# header -#: git-novice/_locale/es/_extras/discuss.md:222 -msgid "## Eliminar un archivo" -msgstr "## Eliminar un archivo" - -#: git-novice/_locale/es/_extras/discuss.md:224 -msgid "" -"Agregar y modificar archivos no son las únicas acciones que uno podría tomar\n" -"cuando se trabaja en un proyecto. Puede ser necesario para eliminar un archivo\n" -"del repositorio." -msgstr "" -"Agregar y modificar archivos no son las únicas acciones que uno podría tomar\n" -"cuando se trabaja en un proyecto. Puede ser necesario para eliminar un archivo\n" -"del repositorio." - -#: git-novice/_locale/es/_extras/discuss.md:228 -msgid "Crea un nuevo archivo para el planeta Nibiru:" -msgstr "Crea un nuevo archivo para el planeta Nibiru:" - -#: git-novice/_locale/es/_extras/discuss.md:235 -msgid "Ahora agregue al repositorio como lo aprendió anteriormente:" -msgstr "Ahora agregue al repositorio como lo aprendió anteriormente:" - -#: git-novice/_locale/es/_extras/discuss.md:250 -msgid "" -"Nibiru no es un planeta real. Esa fue una idea tonta. Vamos a eliminar\n" -"desde el disco y deja que Git lo sepa:" -msgstr "" -"Nibiru no es un planeta real. Esa fue una idea tonta. Vamos a eliminar\n" -"desde el disco y deja que Git lo sepa:" - -#: git-novice/_locale/es/_extras/discuss.md:269 -msgid "" -"El cambio ha sido organizado. Ahora comprometa la eliminación y elimine\n" -"archivo del propio repositorio. Tenga en cuenta que el archivo se eliminará\n" -"en el nuevo compromiso La confirmación anterior seguirá\n" -"tener el archivo, si fueras a recuperar esa confirmación específica." -msgstr "" -"El cambio ha sido organizado. Ahora comprometa la eliminación y elimine\n" -"archivo del propio repositorio. Tenga en cuenta que el archivo se eliminará\n" -"en el nuevo compromiso La confirmación anterior seguirá\n" -"tener el archivo, si fueras a recuperar esa confirmación específica." - -# header -#: git-novice/_locale/es/_extras/discuss.md:279 -msgid "## Eliminar un archivo con Unix" -msgstr "## Eliminar un archivo con Unix" - -#: git-novice/_locale/es/_extras/discuss.md:281 -msgid "" -"A veces podríamos olvidar eliminar el archivo a través de Git. Si eliminaste el\n" -"archivo con Unix `rm` en lugar de usar` git rm`, sin preocupaciones,\n" -"Git es lo suficientemente inteligente como para notar el archivo perdido. Vamos a recrear el archivo y\n" -"cometerlo de nuevo." -msgstr "" -"A veces podríamos olvidar eliminar el archivo a través de Git. Si eliminaste el\n" -"archivo con Unix `rm` en lugar de usar` git rm`, sin preocupaciones,\n" -"Git es lo suficientemente inteligente como para notar el archivo perdido. Vamos a recrear el archivo y\n" -"cometerlo de nuevo." - -#: git-novice/_locale/es/_extras/discuss.md:293 -msgid "Ahora eliminamos el archivo con Unix `rm`:" -msgstr "Ahora eliminamos el archivo con Unix `rm`:" - -#: git-novice/_locale/es/_extras/discuss.md:313 -msgid "" -"Vea cómo Git ha notado que el archivo `nibiru.txt` ha sido eliminado\n" -"del disco. El siguiente paso es \"escenificar\" la eliminación del archivo\n" -"del repositorio. Esto se hace con el comando `git rm` igual que\n" -"antes de." -msgstr "" -"Vea cómo Git ha notado que el archivo `nibiru.txt` ha sido eliminado\n" -"del disco. El siguiente paso es \"escenificar\" la eliminación del archivo\n" -"del repositorio. Esto se hace con el comando `git rm` igual que\n" -"antes de." - -#: git-novice/_locale/es/_extras/discuss.md:334 -msgid "" -"El cambio que se hizo en Unix ahora se ha organizado y debe ser\n" -"comprometido." -msgstr "" -"El cambio que se hizo en Unix ahora se ha organizado y debe ser\n" -"comprometido." - -# header -#: git-novice/_locale/es/_extras/discuss.md:342 -msgid "## Renombrar un archivo" -msgstr "## Renombrar un archivo" - -#: git-novice/_locale/es/_extras/discuss.md:344 -msgid "Otro cambio común cuando se trabaja en un proyecto es cambiar el nombre de un archivo." -msgstr "Otro cambio común cuando se trabaja en un proyecto es cambiar el nombre de un archivo." - -#: git-novice/_locale/es/_extras/discuss.md:346 -msgid "Crea un archivo para el planeta Krypton:" -msgstr "Crea un archivo para el planeta Krypton:" - -#: git-novice/_locale/es/_extras/discuss.md:353 -msgid "Añádalo al repositorio:" -msgstr "Añádalo al repositorio:" - -#: git-novice/_locale/es/_extras/discuss.md:361 -msgid "" -"Todos sabemos que Superman se mudó a la Tierra. No es que tuviera mucho\n" -"elección. Ahora su planeta de origen es la Tierra." -msgstr "" -"Todos sabemos que Superman se mudó a la Tierra. No es que tuviera mucho\n" -"elección. Ahora su planeta de origen es la Tierra." - -#: git-novice/_locale/es/_extras/discuss.md:364 -msgid "Cambie el nombre del archivo `krypton.txt` a` earth.txt` con Git:" -msgstr "Cambie el nombre del archivo `krypton.txt` a` earth.txt` con Git:" - -# code block -#: git-novice/_locale/es/_extras/discuss.md:372 -msgid "" -"~~~\n" -"# On branch master\n" -"# Changes to be committed:\n" -"# (use \"git reset HEAD ...\" to unstage)\n" -"#\n" -"#\\trenamed: krypton.txt -> earth.txt\n" -"#\n" -"~~~" -msgstr "" -"~~~\n" -"# On branch master\n" -"# Changes to be committed:\n" -"# (use \"git reset HEAD ...\" to unstage)\n" -"#\n" -"#\\trenamed: krypton.txt -> earth.txt\n" -"#\n" -"~~~" - -#: git-novice/_locale/es/_extras/discuss.md:381 -msgid "El último paso es comprometer nuestro cambio al repositorio:" -msgstr "El último paso es comprometer nuestro cambio al repositorio:" - -# header -#: git-novice/_locale/es/_extras/discuss.md:388 -msgid "## Renombrar un archivo con Unix" -msgstr "## Renombrar un archivo con Unix" - -#: git-novice/_locale/es/_extras/discuss.md:390 -msgid "" -"Si olvidó usar Git y usó Unix `mv` en su lugar\n" -"de `git mv`, tendrás un poco más de trabajo que hacer, pero Git lo hará\n" -"ser capaz de lidiar con eso. Intentemos nuevamente cambiar el nombre del archivo,\n" -"esta vez con Unix `mv`. Primero, necesitamos recrear el\n" -"archivo `krypton.txt`:" -msgstr "" -"Si olvidó usar Git y usó Unix `mv` en su lugar\n" -"de `git mv`, tendrás un poco más de trabajo que hacer, pero Git lo hará\n" -"ser capaz de lidiar con eso. Intentemos nuevamente cambiar el nombre del archivo,\n" -"esta vez con Unix `mv`. Primero, necesitamos recrear el\n" -"archivo `krypton.txt`:" - -#: git-novice/_locale/es/_extras/discuss.md:403 -msgid "Vamos a renombrar el archivo y ver lo que Git puede descifrar por sí mismo:" -msgstr "Vamos a renombrar el archivo y ver lo que Git puede descifrar por sí mismo:" - -#: git-novice/_locale/es/_extras/discuss.md:428 -msgid "" -"Git notó que el archivo `krypton.txt` ha desaparecido del\n" -"sistema de archivos y un nuevo archivo `earth.txt` ha aparecido." -msgstr "" -"Git notó que el archivo `krypton.txt` ha desaparecido del\n" -"sistema de archivos y un nuevo archivo `earth.txt` ha aparecido." - -#: git-novice/_locale/es/_extras/discuss.md:431 -msgid "Agregue esos cambios al área de ensayo:" -msgstr "Agregue esos cambios al área de ensayo:" - -#: git-novice/_locale/es/_extras/discuss.md:449 -msgid "" -"Observe cómo Git ahora ha descubierto que el `krypton.txt` no tiene\n" -"desapareció simplemente ha sido renombrado." -msgstr "" -"Observe cómo Git ahora ha descubierto que el `krypton.txt` no tiene\n" -"desapareció simplemente ha sido renombrado." - -#: git-novice/_locale/es/_extras/discuss.md:452 -msgid "El último paso, como antes, es comprometer nuestro cambio al repositorio:" -msgstr "El último paso, como antes, es comprometer nuestro cambio al repositorio:" - -# Front Matter -#: git-novice/_locale/es/_extras/figures.md:1 -msgid "" -"---\n" -"layout: page\n" -"title: Figures\n" -"permalink: /es/figures/\n" -"---" -msgstr "" -"---\n" -"layout: page\n" -"title: Figures\n" -"permalink: /es/figures/\n" -"---" - -# Front Matter -#: git-novice/_locale/es/_extras/guide.md:1 -msgid "" -"---\n" -"layout: page\n" -"title: \"Instructor Notes\"\n" -"permalink: /es/guide/\n" -"---" -msgstr "" -"---\n" -"layout: page\n" -"title: \"Instructor Notes\"\n" -"permalink: /es/guide/\n" -"---" - -#: git-novice/_locale/es/_extras/guide.md:6 -msgid "" -"Usar una herramienta de software para manejar las versiones de tus archivos de proyecto\n" -"le permite enfocarse en los aspectos más interesantes / innovadores de su proyecto." -msgstr "" -"Usar una herramienta de software para manejar las versiones de tus archivos de proyecto\n" -"le permite enfocarse en los aspectos más interesantes / innovadores de su proyecto." - -# unordered list -#: git-novice/_locale/es/_extras/guide.md:9 -msgid "* Ventajas del control de versiones" -msgstr "* Ventajas del control de versiones" - -# unordered list -#: git-novice/_locale/es/_extras/guide.md:10 -msgid " * Es fácil de configurar " -msgstr " * Es fácil de configurar " - -# unordered list -#: git-novice/_locale/es/_extras/guide.md:11 -msgid " * Cada copia de un repositorio de Git es una copia de seguridad completa de un proyecto y su historial" -msgstr " * Cada copia de un repositorio de Git es una copia de seguridad completa de un proyecto y su historial" - -# unordered list -#: git-novice/_locale/es/_extras/guide.md:12 -msgid " * Unos pocos comandos fáciles de recordar son todo lo que necesita para la mayoría de las tareas cotidianas de control de versiones" -msgstr " * Unos pocos comandos fáciles de recordar son todo lo que necesita para la mayoría de las tareas cotidianas de control de versiones" - -# unordered list -#: git-novice/_locale/es/_extras/guide.md:13 -msgid " * El servicio de alojamiento [GitHub][github] proporciona un servicio de colaboración basado en la web" -msgstr " * El servicio de alojamiento [GitHub][github] proporciona un servicio de colaboración basado en la web" - -# unordered list -#: git-novice/_locale/es/_extras/guide.md:14 -msgid "* Dos conceptos principales" -msgstr "* Dos conceptos principales" - -# unordered list -#: git-novice/_locale/es/_extras/guide.md:15 -msgid " * *commit*: un conjunto de cambios registrados en los archivos de su proyecto" -msgstr " * *commit*: un conjunto de cambios registrados en los archivos de su proyecto" - -# unordered list -#: git-novice/_locale/es/_extras/guide.md:16 -msgid " * *repositorio*: el historial de todas las confirmaciones de su proyecto" -msgstr " * *repositorio*: el historial de todas las confirmaciones de su proyecto" - -# unordered list -#: git-novice/_locale/es/_extras/guide.md:17 -msgid "* ¿Por qué usar GitHub?" -msgstr "* ¿Por qué usar GitHub?" - -# unordered list -#: git-novice/_locale/es/_extras/guide.md:18 -msgid " * No es necesario un servidor: fácil de configurar" -msgstr " * No es necesario un servidor: fácil de configurar" - -# unordered list -#: git-novice/_locale/es/_extras/guide.md:19 -msgid " * Comunidad fuerte de GitHub: tus colegas probablemente ya estén allí" -msgstr " * Comunidad fuerte de GitHub: tus colegas probablemente ya estén allí" - -# header -#: git-novice/_locale/es/_extras/guide.md:21 -msgid "## En general" -msgstr "## En general" - -#: git-novice/_locale/es/_extras/guide.md:23 -msgid "" -"El control de versiones podría ser el tema más importante que enseñamos, pero Git es\n" -"Definitivamente la herramienta más complicada. Sin embargo, GitHub actualmente domina el\n" -"abrir el panorama del repositorio de software, por lo que el tiempo y el esfuerzo necesarios para enseñar\n" -"Git fundamental está justificado y vale la pena." -msgstr "" -"El control de versiones podría ser el tema más importante que enseñamos, pero Git es\n" -"Definitivamente la herramienta más complicada. Sin embargo, GitHub actualmente domina el\n" -"abrir el panorama del repositorio de software, por lo que el tiempo y el esfuerzo necesarios para enseñar\n" -"Git fundamental está justificado y vale la pena." - -#: git-novice/_locale/es/_extras/guide.md:28 -msgid "" -"Debido a esta complejidad, no enseñamos a los principiantes acerca de muchos\n" -"temas interesantes, como ramificación, hash y commit de objetos." -msgstr "" -"Debido a esta complejidad, no enseñamos a los principiantes acerca de muchos\n" -"temas interesantes, como ramificación, hash y commit de objetos." - -#: git-novice/_locale/es/_extras/guide.md:31 -msgid "" -"En cambio, tratamos de convencerlos de que el control de versiones es útil para los investigadores\n" -"trabajando en equipo o no, porque es" -msgstr "" -"En cambio, tratamos de convencerlos de que el control de versiones es útil para los investigadores\n" -"trabajando en equipo o no, porque es" - -# unordered list -#: git-novice/_locale/es/_extras/guide.md:34 -msgid "* una mejor forma de \"deshacer\" cambios," -msgstr "* una mejor forma de \"deshacer\" cambios," - -# unordered list -#: git-novice/_locale/es/_extras/guide.md:35 -msgid "* una mejor manera de colaborar que enviar y recibir archivos por correo, y" -msgstr "* una mejor manera de colaborar que enviar y recibir archivos por correo, y" - -# unordered list -#: git-novice/_locale/es/_extras/guide.md:36 -msgid "* una mejor manera de compartir tu código y otro trabajo científico con el mundo." -msgstr "* una mejor manera de compartir tu código y otro trabajo científico con el mundo." - -# header -#: git-novice/_locale/es/_extras/guide.md:38 -msgid "## Notas de enseñanza" -msgstr "## Notas de enseñanza" - -# unordered list -#: git-novice/_locale/es/_extras/guide.md:40 -msgid "* Recursos para \"dividir\" su caparazón para que los comandos recientes permanezcan a la vista: https://github.com/rgaiacs/swc-shell-split-window." -msgstr "* Recursos para \"dividir\" su caparazón para que los comandos recientes permanezcan a la vista: https://github.com/rgaiacs/swc-shell-split-window." - -# unordered list -#: git-novice/_locale/es/_extras/guide.md:42 -msgid "* Asegúrese de que la red esté funcionando *antes* de comenzar esta lección." -msgstr "* Asegúrese de que la red esté funcionando *antes* de comenzar esta lección." - -# unordered list -#: git-novice/_locale/es/_extras/guide.md:44 -msgid "* Los dibujos son particularmente útiles en esta lección: si tiene una pizarra blanca," -msgstr "* Los dibujos son particularmente útiles en esta lección: si tiene una pizarra blanca," - -#: git-novice/_locale/es/_extras/guide.md:45 -msgid " [usarlo][dibujos]!" -msgstr " [usarlo][dibujos]!" - -# unordered list -#: git-novice/_locale/es/_extras/guide.md:47 -msgid "* El control de versiones generalmente no es el primer tema en un taller, " -msgstr "* El control de versiones generalmente no es el primer tema en un taller, " - -#: git-novice/_locale/es/_extras/guide.md:48 -msgid "así que haga que los alumnos creen una cuenta de GitHub después de la sesión anterior. Recuerde a los alumnos que el nombre de usuario y el correo electrónico que usan para GitHub (y configuración durante la configuración de Git) será visible para el público de manera predeterminada. Sin embargo, hay muchas razones por las cuales un alumno puede no querer su personal información visible, y GitHub tiene [recursos para mantener una dirección de correo electrónico privado][github-privacy]." -msgstr "así que haga que los alumnos creen una cuenta de GitHub después de la sesión anterior. Recuerde a los alumnos que el nombre de usuario y el correo electrónico que usan para GitHub (y configuración durante la configuración de Git) será visible para el público de manera predeterminada. Sin embargo, hay muchas razones por las cuales un alumno puede no querer su personal información visible, y GitHub tiene [recursos para mantener una dirección de correo electrónico privado][github-privacy]." - -# unordered list -#: git-novice/_locale/es/_extras/guide.md:50 -msgid "* Si algunos estudiantes usan Windows, inevitablemente habrá problemas" -msgstr "* Si algunos estudiantes usan Windows, inevitablemente habrá problemas" - -#: git-novice/_locale/es/_extras/guide.md:51 -msgid " fusionando archivos con diferentes finales de línea. (Incluso si todos están encendidos un poco de sabor de Unix, diferentes editores pueden o no agregar una nueva línea a la última línea de un archivo.) Tómese un momento para explicar estos problemas, ya que los estudiantes seguramente tropezarán con ellos de nuevo. Si los estudiantes se están encontrando con problemas para terminar la línea, GitHub tiene una [página][github-line-endings] que ayuda a solucionar problemas." -msgstr " fusionando archivos con diferentes finales de línea. (Incluso si todos están encendidos un poco de sabor de Unix, diferentes editores pueden o no agregar una nueva línea a la última línea de un archivo.) Tómese un momento para explicar estos problemas, ya que los estudiantes seguramente tropezarán con ellos de nuevo. Si los estudiantes se están encontrando con problemas para terminar la línea, GitHub tiene una [página][github-line-endings] que ayuda a solucionar problemas." - -# unordered list -#: git-novice/_locale/es/_extras/guide.md:53 -msgid "* No usamos una GUI de Git en estas notas porque no hemos encontrado una que" -msgstr "* No usamos una GUI de Git en estas notas porque no hemos encontrado una que" - -#: git-novice/_locale/es/_extras/guide.md:54 -msgid " se instala fácilmente y funciona confiablemente en los tres principales sistemas operativos, y porque queremos que los alumnos entiendan qué comandos se están ejecutando. Ese dijo, los instructores deberían demo una GUI en su escritorio en algún momento durante esta lección y apunte a los alumnos en [esta página][github-gui]." -msgstr " se instala fácilmente y funciona confiablemente en los tres principales sistemas operativos, y porque queremos que los alumnos entiendan qué comandos se están ejecutando. Ese dijo, los instructores deberían demo una GUI en su escritorio en algún momento durante esta lección y apunte a los alumnos en [esta página][github-gui]." - -# unordered list -#: git-novice/_locale/es/_extras/guide.md:56 -msgid "* Los instructores deben mostrar a los alumnos herramientas gráficas de fusión / fusión como" -msgstr "* Los instructores deben mostrar a los alumnos herramientas gráficas de fusión / fusión como" - -#: git-novice/_locale/es/_extras/guide.md:57 -msgid " [DiffMerge][diffmerge]." -msgstr " [DiffMerge][diffmerge]." - -# unordered list -#: git-novice/_locale/es/_extras/guide.md:59 -msgid "* Cuando sea apropiado, explique que enseñamos a Git en lugar de CVS, Subversion, " -msgstr "* Cuando sea apropiado, explique que enseñamos a Git en lugar de CVS, Subversion, " - -#: git-novice/_locale/es/_extras/guide.md:60 -msgid " o Mercurial principalmente debido a la creciente popularidad de GitHub: CVS y Subversion ahora se ve como sistemas heredados, y Mercurial no es tan ampliamente utilizado en las ciencias en este momento." -msgstr " o Mercurial principalmente debido a la creciente popularidad de GitHub: CVS y Subversion ahora se ve como sistemas heredados, y Mercurial no es tan ampliamente utilizado en las ciencias en este momento." - -# unordered list -#: git-novice/_locale/es/_extras/guide.md:62 -msgid "* Recursos adicionales:" -msgstr "* Recursos adicionales:" - -# unordered list -#: git-novice/_locale/es/_extras/guide.md:63 -msgid " * [git-it][git-it] es una demostración de Git de línea de comandos a tu propio ritmo," -msgstr " * [git-it][git-it] es una demostración de Git de línea de comandos a tu propio ritmo," - -#: git-novice/_locale/es/_extras/guide.md:64 -msgid "" -" con [git-it-electron][git-it-electron] su sucesor de GitHub Desktop.\n" -" * [Code School][code-school] tiene un curso interactivo gratuito, [Try Git][try-git].\n" -" * para instructores, [la parábola de Git][git-parábola] es una lectura de fondo útil" -msgstr "" -" con [git-it-electron][git-it-electron] su sucesor de GitHub Desktop.\n" -" * [Code School][code-school] tiene un curso interactivo gratuito, [Try Git][try-git].\n" -" * para instructores, [la parábola de Git][git-parábola] es una lectura de fondo útil" - -# header -#: git-novice/_locale/es/_extras/guide.md:68 -msgid "## [Control automatizado de versiones]({{page.root}}/01-basics/)" -msgstr "## [Control automatizado de versiones]({{page.root}}/01-basics/)" - -# unordered list -#: git-novice/_locale/es/_extras/guide.md:70 -msgid "* Pregunte, \"¿Quién usa 'deshacer' en su editor?\" Todos dicen \"Yo\". 'Deshacer' es el más simple " -msgstr "* Pregunte, \"¿Quién usa 'deshacer' en su editor?\" Todos dicen \"Yo\". 'Deshacer' es el más simple " - -#: git-novice/_locale/es/_extras/guide.md:71 -msgid "forma de control de versiones." -msgstr "forma de control de versiones." - -# unordered list -#: git-novice/_locale/es/_extras/guide.md:73 -msgid "* Ofrezca a los alumnos una visión general de cinco minutos de lo que el control de versión les hace " -msgstr "* Ofrezca a los alumnos una visión general de cinco minutos de lo que el control de versión les hace " - -#: git-novice/_locale/es/_extras/guide.md:74 -msgid " antes de zambullirte en las prácticas de vigilancia. La mayoría de ellos tendrá intentó coautar documentos enviando archivos por correo electrónico, o tendrá en bicicleta en la oficina solo para darse cuenta de que la llave USB con la última noche el trabajo todavía está en la mesa de la cocina. Los instructores también pueden hacer bromas sobre directorios con nombres como \"versión final\", \"versión final revisada\", \"versión final con las correcciones del revisor tres\", \"versión realmente final\", y, \"vamos, realmente tiene que ser la última versión\" para motivar la versión control como una mejor manera de colaborar y como una mejor manera de respaldar el trabajo." -msgstr " antes de zambullirte en las prácticas de vigilancia. La mayoría de ellos tendrá intentó coautar documentos enviando archivos por correo electrónico, o tendrá en bicicleta en la oficina solo para darse cuenta de que la llave USB con la última noche el trabajo todavía está en la mesa de la cocina. Los instructores también pueden hacer bromas sobre directorios con nombres como \"versión final\", \"versión final revisada\", \"versión final con las correcciones del revisor tres\", \"versión realmente final\", y, \"vamos, realmente tiene que ser la última versión\" para motivar la versión control como una mejor manera de colaborar y como una mejor manera de respaldar el trabajo." - -# header -#: git-novice/_locale/es/_extras/guide.md:76 -msgid "## [Configuración de Git]({{page.root}}/02-setup/)" -msgstr "## [Configuración de Git]({{page.root}}/02-setup/)" - -# unordered list -#: git-novice/_locale/es/_extras/guide.md:78 -msgid "* Sugerimos que los instructores y los estudiantes usen `nano` como editor de texto para este " -msgstr "* Sugerimos que los instructores y los estudiantes usen `nano` como editor de texto para este " - -#: git-novice/_locale/es/_extras/guide.md:79 -msgid " lecciones porque" -msgstr " lecciones porque" - -# unordered list -#: git-novice/_locale/es/_extras/guide.md:81 -msgid " * se ejecuta en los tres principales sistemas operativos," -msgstr " * se ejecuta en los tres principales sistemas operativos," - -# unordered list -#: git-novice/_locale/es/_extras/guide.md:82 -msgid " * se ejecuta dentro del caparazón (las ventanas de conmutación pueden ser confusas para los estudiantes), y" -msgstr " * se ejecuta dentro del caparazón (las ventanas de conmutación pueden ser confusas para los estudiantes), y" - -# unordered list -#: git-novice/_locale/es/_extras/guide.md:83 -msgid " * tiene ayuda contextual en la parte inferior de la ventana." -msgstr " * tiene ayuda contextual en la parte inferior de la ventana." - -#: git-novice/_locale/es/_extras/guide.md:85 -msgid "" -"    Señale a los alumnos durante la configuración que pueden y deben usar\n" -"    otro editor de texto si ya están familiarizados con él." -msgstr "" -"    Señale a los alumnos durante la configuración que pueden y deben usar\n" -"    otro editor de texto si ya están familiarizados con él." - -# unordered list -#: git-novice/_locale/es/_extras/guide.md:88 -msgid "* Al configurar Git, tenga muy claro lo que los alumnos deben ingresar: es " -msgstr "* Al configurar Git, tenga muy claro lo que los alumnos deben ingresar: es " - -#: git-novice/_locale/es/_extras/guide.md:89 -msgid "común que editen los detalles del instructor (por ejemplo, correo electrónico). Verifique en el final usando `git config --list`." -msgstr "común que editen los detalles del instructor (por ejemplo, correo electrónico). Verifique en el final usando `git config --list`." - -# header -#: git-novice/_locale/es/_extras/guide.md:91 -msgid "## [Creación de un repositorio]({{page.root}}/03-create/)" -msgstr "## [Creación de un repositorio]({{page.root}}/03-create/)" - -# unordered list -#: git-novice/_locale/es/_extras/guide.md:93 -msgid "* Cuando haces `git status`, los usuarios de Mac pueden ver un archivo` .DS_Store` mostrando como " -msgstr "* Cuando haces `git status`, los usuarios de Mac pueden ver un archivo` .DS_Store` mostrando como " - -#: git-novice/_locale/es/_extras/guide.md:94 -msgid "sin seguimiento. Este es un archivo que Mac OS crea en cada directorio." -msgstr "sin seguimiento. Este es un archivo que Mac OS crea en cada directorio." - -# unordered list -#: git-novice/_locale/es/_extras/guide.md:96 -msgid "* El desafío \"Lugares para crear repositorios\" intenta reforzar la idea " -msgstr "* El desafío \"Lugares para crear repositorios\" intenta reforzar la idea " - -#: git-novice/_locale/es/_extras/guide.md:97 -msgid "que la carpeta `.git` contiene todo el repositorio de Git y eliminando esta carpeta deshace un `git init`. También le da al alumno la manera de solucionar el problema común error de poner carpetas no deseadas (como `Escritorio`) bajo control de versión." -msgstr "que la carpeta `.git` contiene todo el repositorio de Git y eliminando esta carpeta deshace un `git init`. También le da al alumno la manera de solucionar el problema común error de poner carpetas no deseadas (como `Escritorio`) bajo control de versión." - -#: git-novice/_locale/es/_extras/guide.md:99 -msgid "    En lugar de eliminar la carpeta `.git` directamente, puede elegir moverla primero en un directorio más seguro y eliminarlo de allí:" -msgstr "    En lugar de eliminar la carpeta `.git` directamente, puede elegir moverla primero en un directorio más seguro y eliminarlo de allí:" - -#: git-novice/_locale/es/_extras/guide.md:107 -msgid "" -"    El desafío sugiere que es una mala idea crear un repositorio de Git dentro de otro repositorio.\n" -"    Para obtener más información sobre este tema, consulte [este número][repos-in-repos]." -msgstr "" -"    El desafío sugiere que es una mala idea crear un repositorio de Git dentro de otro repositorio.\n" -"    Para obtener más información sobre este tema, consulte [este número][repos-in-repos]." - -# header -#: git-novice/_locale/es/_extras/guide.md:110 -msgid "## [Cambios de seguimiento]({{page.root}}/04-changes/)" -msgstr "## [Cambios de seguimiento]({{page.root}}/04-changes/)" - -# unordered list -#: git-novice/_locale/es/_extras/guide.md:112 -msgid "* Es importante que los alumnos realicen un ciclo completo de compromiso por sí mismos (hacer" -msgstr "* Es importante que los alumnos realicen un ciclo completo de compromiso por sí mismos (hacer" - -#: git-novice/_locale/es/_extras/guide.md:113 -msgid " cambios, `git diff`,` git add`, y `git commit`). El \"repositorio de `bio`\" desafío hace eso." -msgstr " cambios, `git diff`,` git add`, y `git commit`). El \"repositorio de `bio`\" desafío hace eso." - -# unordered list -#: git-novice/_locale/es/_extras/guide.md:115 -msgid "* Este es un buen momento para mostrar una diferencia con una herramienta gráfica de diferencia. Si tu " -msgstr "* Este es un buen momento para mostrar una diferencia con una herramienta gráfica de diferencia. Si tu " - -#: git-novice/_locale/es/_extras/guide.md:116 -msgid "omítalo porque tiene poco tiempo, muéstrelo una vez en GitHub." -msgstr "omítalo porque tiene poco tiempo, muéstrelo una vez en GitHub." - -# unordered list -#: git-novice/_locale/es/_extras/guide.md:118 -msgid "* Una cosa puede causar confusión es la recuperación de versiones antiguas. Si, en lugar de" -msgstr "* Una cosa puede causar confusión es la recuperación de versiones antiguas. Si, en lugar de" - -#: git-novice/_locale/es/_extras/guide.md:119 -msgid "haciendo `$ git checkout f22b25e mars.txt`, alguien hace `$ git checkout f22b25e`, terminan en el estado \"HEAD separado\" y la confusión abunda. Entonces es posible seguir cometiendo, pero cosas como `git push origen master` un poco más tarde no dará resultados fácilmente comprensibles. También hace que parezca que los commits se pueden perder. Para \"arreglar\" una \"CABEZA separada\", simplemente `git checkout master`." -msgstr "haciendo `$ git checkout f22b25e mars.txt`, alguien hace `$ git checkout f22b25e`, terminan en el estado \"HEAD separado\" y la confusión abunda. Entonces es posible seguir cometiendo, pero cosas como `git push origen master` un poco más tarde no dará resultados fácilmente comprensibles. También hace que parezca que los commits se pueden perder. Para \"arreglar\" una \"CABEZA separada\", simplemente `git checkout master`." - -# unordered list -#: git-novice/_locale/es/_extras/guide.md:121 -msgid "* Este es un buen momento para mostrar un registro dentro de una GUI de Git. Si te lo" -msgstr "* Este es un buen momento para mostrar un registro dentro de una GUI de Git. Si te lo" - -#: git-novice/_locale/es/_extras/guide.md:122 -msgid " saltas porque tienes poco tiempo, muéstralo una vez en GitHub." -msgstr " saltas porque tienes poco tiempo, muéstralo una vez en GitHub." - -# header -#: git-novice/_locale/es/_extras/guide.md:124 -msgid "## [Ignorando cosas]({{page.root}}/06-ignore/)" -msgstr "## [Ignorando cosas]({{page.root}}/06-ignore/)" - -#: git-novice/_locale/es/_extras/guide.md:126 -msgid "Solo recuerda que puedes usar comodines y expresiones regulares para ignorar un un conjunto particular de archivos en `.gitignore`." -msgstr "Solo recuerda que puedes usar comodines y expresiones regulares para ignorar un un conjunto particular de archivos en `.gitignore`." - -# header -#: git-novice/_locale/es/_extras/guide.md:128 -msgid "## [Controles remotos en GitHub]({{page.root}}/07-github/)" -msgstr "## [Controles remotos en GitHub]({{page.root}}/07-github/)" - -# unordered list -#: git-novice/_locale/es/_extras/guide.md:130 -msgid "* Deje en claro que Git y GitHub no son lo mismo: Git es una persona abierta" -msgstr "* Deje en claro que Git y GitHub no son lo mismo: Git es una persona abierta" - -#: git-novice/_locale/es/_extras/guide.md:131 -msgid " herramienta de control de versión fuente, GitHub es una compañía que aloja Git repositorios en la web y proporciona una interfaz web para interactuar con repositorios ellos hospedan" -msgstr " herramienta de control de versión fuente, GitHub es una compañía que aloja Git repositorios en la web y proporciona una interfaz web para interactuar con repositorios ellos hospedan" - -# unordered list -#: git-novice/_locale/es/_extras/guide.md:133 -msgid "* Si tus alumnos están lo suficientemente avanzados como para sentirse cómodos con SSH, cuéntales " -msgstr "* Si tus alumnos están lo suficientemente avanzados como para sentirse cómodos con SSH, cuéntales " - -#: git-novice/_locale/es/_extras/guide.md:134 -msgid " pueden usar claves para autenticarse en GitHub en lugar de contraseñas, pero no intente configurar esto durante la clase: lleva demasiado tiempo y es una distracción de las ideas centrales de la lección." -msgstr " pueden usar claves para autenticarse en GitHub en lugar de contraseñas, pero no intente configurar esto durante la clase: lleva demasiado tiempo y es una distracción de las ideas centrales de la lección." - -# unordered list -#: git-novice/_locale/es/_extras/guide.md:136 -msgid "* Es muy útil dibujar un diagrama que muestre los diferentes repositorios" -msgstr "* Es muy útil dibujar un diagrama que muestre los diferentes repositorios" - -#: git-novice/_locale/es/_extras/guide.md:137 -msgid " involucrado." -msgstr " involucrado." - -# header -#: git-novice/_locale/es/_extras/guide.md:139 -msgid "## [Collaborating]({{page.root}}/08-collab/)" -msgstr "## [Collaborating]({{page.root}}/08-collab/)" - -# unordered list -#: git-novice/_locale/es/_extras/guide.md:141 -msgid "* Decidir por adelantado si todos los alumnos trabajarán en una compartida repositorio," -msgstr "* Decidir por adelantado si todos los alumnos trabajarán en una compartida repositorio," - -#: git-novice/_locale/es/_extras/guide.md:142 -msgid " o si van a trabajar en parejas (u otros grupos pequeños) en repositorios separados. El primero es más fácil de configurar; el último corre más suave." -msgstr " o si van a trabajar en parejas (u otros grupos pequeños) en repositorios separados. El primero es más fácil de configurar; el último corre más suave." - -# unordered list -#: git-novice/_locale/es/_extras/guide.md:144 -msgid "* El juego de roles entre dos instructores puede ser efectivo cuando se enseña " -msgstr "* El juego de roles entre dos instructores puede ser efectivo cuando se enseña " - -#: git-novice/_locale/es/_extras/guide.md:145 -msgid "secciones de colaboración y conflicto de la lección. Un instructor puede jugar el papel del propietario del repositorio, mientras que el segundo instructor puede jugar el papel del colaborador. Si es posible, intente usar dos proyectores para que se pueden ver las pantallas de los dos instructores. Esto hace para una ilustración muy clara para los estudiantes sobre quién hace qué." -msgstr "secciones de colaboración y conflicto de la lección. Un instructor puede jugar el papel del propietario del repositorio, mientras que el segundo instructor puede jugar el papel del colaborador. Si es posible, intente usar dos proyectores para que se pueden ver las pantallas de los dos instructores. Esto hace para una ilustración muy clara para los estudiantes sobre quién hace qué." - -# unordered list -#: git-novice/_locale/es/_extras/guide.md:147 -msgid "* También es efectivo emparejar a los estudiantes durante esta lección y asignar " -msgstr "* También es efectivo emparejar a los estudiantes durante esta lección y asignar " - -#: git-novice/_locale/es/_extras/guide.md:148 -msgid "" -"uno miembro de la pareja para tomar el papel del propietario y el otro el papel de el colaborador En esta configuración, los desafíos pueden incluir preguntar al\n" -"    colaborador para hacer un cambio, comprometerlo y enviar el cambio al control remoto repositorio para que el propietario pueda recuperarlo y viceversa. los el juego de roles entre los instructores puede ser un poco \"dramático\" en el conflictos parte de la lección si los instructores quieren inyectar un poco de humor en la habitación." -msgstr "" -"uno miembro de la pareja para tomar el papel del propietario y el otro el papel de el colaborador En esta configuración, los desafíos pueden incluir preguntar al\n" -"    colaborador para hacer un cambio, comprometerlo y enviar el cambio al control remoto repositorio para que el propietario pueda recuperarlo y viceversa. los el juego de roles entre los instructores puede ser un poco \"dramático\" en el conflictos parte de la lección si los instructores quieren inyectar un poco de humor en la habitación." - -# unordered list -#: git-novice/_locale/es/_extras/guide.md:151 -msgid "* Si no tiene dos proyectores, tenga dos instructores al frente del" -msgstr "* Si no tiene dos proyectores, tenga dos instructores al frente del" - -#: git-novice/_locale/es/_extras/guide.md:152 -msgid "    habitación. Cada instructor hace su parte de la demostración de colaboración en su propia computadora y luego pasa el cable del proyector de un lado a otro con el otro instructor cuando es hora de que hagan la otra parte de el flujo de trabajo colaborativo. Toma menos de 10 segundos para cada cambio, por lo que no interrumpe el flujo de la lección. Y, por supuesto, ayuda a dar a cada uno de los instructores un color diferente sombrero, o poner notas adhesivas de diferentes colores en sus frentes." -msgstr "    habitación. Cada instructor hace su parte de la demostración de colaboración en su propia computadora y luego pasa el cable del proyector de un lado a otro con el otro instructor cuando es hora de que hagan la otra parte de el flujo de trabajo colaborativo. Toma menos de 10 segundos para cada cambio, por lo que no interrumpe el flujo de la lección. Y, por supuesto, ayuda a dar a cada uno de los instructores un color diferente sombrero, o poner notas adhesivas de diferentes colores en sus frentes." - -# unordered list -#: git-novice/_locale/es/_extras/guide.md:154 -msgid "* Si eres el único instructor, la mejor manera de crear es clonar los dos " -msgstr "* Si eres el único instructor, la mejor manera de crear es clonar los dos " - -#: git-novice/_locale/es/_extras/guide.md:155 -msgid "repositorios en su escritorio, pero con diferentes nombres, por ejemplo, pretender uno es su computadora en el trabajo:" -msgstr "repositorios en su escritorio, pero con diferentes nombres, por ejemplo, pretender uno es su computadora en el trabajo:" - -# unordered list -#: git-novice/_locale/es/_extras/guide.md:162 -msgid "* Es muy común que los alumnos escriban mal el alias remoto o la URL remota" -msgstr "* Es muy común que los alumnos escriban mal el alias remoto o la URL remota" - -#: git-novice/_locale/es/_extras/guide.md:163 -msgid "" -" cuando se agrega un control remoto, entonces no pueden 'presionar'. Puedes diagnosticar esto con `git remote -v` y comprobando cuidadosamente si hay errores tipográficos.\n" -" - Para arreglar un alias incorrecto, puedes hacer `git remote rename `.\n" -" - Para arreglar una URL incorrecta, puedes hacer `git remote set-url `." -msgstr "" -" cuando se agrega un control remoto, entonces no pueden 'presionar'. Puedes diagnosticar esto con `git remote -v` y comprobando cuidadosamente si hay errores tipográficos.\n" -" - Para arreglar un alias incorrecto, puedes hacer `git remote rename `.\n" -" - Para arreglar una URL incorrecta, puedes hacer `git remote set-url `." - -# unordered list -#: git-novice/_locale/es/_extras/guide.md:167 -msgid "* Antes de clonar el repositorio, asegúrese de que nadie esté dentro de otro repositorio. los La" -msgstr "* Antes de clonar el repositorio, asegúrese de que nadie esté dentro de otro repositorio. los La" - -#: git-novice/_locale/es/_extras/guide.md:168 -msgid " mejor forma de lograr esto es pasar al `Escritorio` antes de la clonación: `cd && cd Desktop`." -msgstr " mejor forma de lograr esto es pasar al `Escritorio` antes de la clonación: `cd && cd Desktop`." - -# unordered list -#: git-novice/_locale/es/_extras/guide.md:170 -msgid "* Si ambos repos están en `Desktop`, pídales que clonen a su colaborador" -msgstr "* Si ambos repos están en `Desktop`, pídales que clonen a su colaborador" - -#: git-novice/_locale/es/_extras/guide.md:171 -msgid " repo bajo un directorio dado usando un segundo argumento:" -msgstr " repo bajo un directorio dado usando un segundo argumento:" - -# unordered list -#: git-novice/_locale/es/_extras/guide.md:178 -msgid "* El error más común es que los estudiantes \"empujan\" antes de \"tirar\". Si ellos" -msgstr "* El error más común es que los estudiantes \"empujan\" antes de \"tirar\". Si ellos" - -#: git-novice/_locale/es/_extras/guide.md:179 -msgid "`pull` después, pueden tener un conflicto." -msgstr "`pull` después, pueden tener un conflicto." - -# unordered list -#: git-novice/_locale/es/_extras/guide.md:181 -msgid "* Conflictos, a veces extraños, comenzarán a surgir. Mantente apretado: los conflictos son " -msgstr "* Conflictos, a veces extraños, comenzarán a surgir. Mantente apretado: los conflictos son " - -#: git-novice/_locale/es/_extras/guide.md:182 -msgid "siguiente.\"" -msgstr "siguiente.\"" - -# header -#: git-novice/_locale/es/_extras/guide.md:184 -msgid "## [Conflicts]({{page.root}}/09-conflict/)" -msgstr "## [Conflicts]({{page.root}}/09-conflict/)" - -# unordered list -#: git-novice/_locale/es/_extras/guide.md:186 -msgid "* Espere que los alumnos cometan errores. Espere *usted mismo* para cometer errores. Esta " -msgstr "* Espere que los alumnos cometan errores. Espere *usted mismo* para cometer errores. Esta " - -#: git-novice/_locale/es/_extras/guide.md:187 -msgid "sucede porque es tarde en la lección y todos están cansados.\"" -msgstr "sucede porque es tarde en la lección y todos están cansados.\"" - -# unordered list -#: git-novice/_locale/es/_extras/guide.md:189 -msgid "* Si eres el único instructor, la mejor forma de crear un conflicto es:" -msgstr "* Si eres el único instructor, la mejor forma de crear un conflicto es:" - -# unordered list -#: git-novice/_locale/es/_extras/guide.md:191 -msgid " * Clona tu repositorio en un directorio diferente, pretendiendo que es tu computadora en" -msgstr " * Clona tu repositorio en un directorio diferente, pretendiendo que es tu computadora en" - -#: git-novice/_locale/es/_extras/guide.md:192 -msgid "" -"        trabajo: `git clone https://github.com/vlad/planets.git planets-at-work`.\n" -" * En la oficina, usted hace un cambio, se compromete y empuja.\n" -" * En su repositorio de la computadora portátil, usted (olvide tirar y) hacer un cambio, comprometerse y\n" -"        intenta empujar.\n" -" * `git pull` ahora y muestra el conflicto." -msgstr "" -"        trabajo: `git clone https://github.com/vlad/planets.git planets-at-work`.\n" -" * En la oficina, usted hace un cambio, se compromete y empuja.\n" -" * En su repositorio de la computadora portátil, usted (olvide tirar y) hacer un cambio, comprometerse y\n" -"        intenta empujar.\n" -" * `git pull` ahora y muestra el conflicto." - -# unordered list -#: git-novice/_locale/es/_extras/guide.md:198 -msgid "* Los estudiantes generalmente se olvidan de 'agregar' el archivo después de arreglar el conflicto y " -msgstr "* Los estudiantes generalmente se olvidan de 'agregar' el archivo después de arreglar el conflicto y " - -#: git-novice/_locale/es/_extras/guide.md:199 -msgid "solo (intenta) comprometer. Puedes diagnosticar esto con `git status`." -msgstr "solo (intenta) comprometer. Puedes diagnosticar esto con `git status`." - -# unordered list -#: git-novice/_locale/es/_extras/guide.md:201 -msgid "* Recuerde que puede descartar uno de los dos padres de la combinación:" -msgstr "* Recuerde que puede descartar uno de los dos padres de la combinación:" - -# unordered list -#: git-novice/_locale/es/_extras/guide.md:203 -msgid " * descartar el archivo remoto, `git checkout --ours conflicted_file.txt`" -msgstr " * descartar el archivo remoto, `git checkout --ours conflicted_file.txt`" - -# unordered list -#: git-novice/_locale/es/_extras/guide.md:204 -msgid " * descartar el archivo local, `git checkout --the conflictigned_file.txt`" -msgstr " * descartar el archivo local, `git checkout --the conflictigned_file.txt`" - -#: git-novice/_locale/es/_extras/guide.md:206 -msgid "Aún debe `git add` y` git commit` después de esto. Esto esparticularmente útil cuando se trabaja con archivos binarios." -msgstr "Aún debe `git add` y` git commit` después de esto. Esto esparticularmente útil cuando se trabaja con archivos binarios." - -# header -#: git-novice/_locale/es/_extras/guide.md:208 -msgid "## [Ciencia abierta]({{page.root}}/10-open/)" -msgstr "## [Ciencia abierta]({{page.root}}/10-open/)" - -# header -#: git-novice/_locale/es/_extras/guide.md:210 -msgid "## [Licencias]({{page.root}}/11-licensing/)" -msgstr "## [Licencias]({{page.root}}/11-licensing/)" - -#: git-novice/_locale/es/_extras/guide.md:212 -msgid "Enseñamos sobre licencias porque preguntas sobre quién posee qué o qué puede usar qué, surgen naturalmente una vez que comenzamos a hablar sobre el uso de servicios públicos como GitHub para almacenar archivos. Además, la discusión les da a los estudiantes la oportunidad de atrapar su aliento después de lo que a menudo es un par de horas frustrantes." -msgstr "Enseñamos sobre licencias porque preguntas sobre quién posee qué o qué puede usar qué, surgen naturalmente una vez que comenzamos a hablar sobre el uso de servicios públicos como GitHub para almacenar archivos. Además, la discusión les da a los estudiantes la oportunidad de atrapar su aliento después de lo que a menudo es un par de horas frustrantes." - -# header -#: git-novice/_locale/es/_extras/guide.md:216 -msgid "## [Alojamiento]({{page.root}}/13-hosting/)" -msgstr "## [Alojamiento]({{page.root}}/13-hosting/)" - -#: git-novice/_locale/es/_extras/guide.md:218 -msgid "Una preocupación común para los estudiantes es tener su trabajo a disposición del público en GitHub. Si bien fomentamos la ciencia abierta, a veces los repos privados son única opción. Siempre es interesante mencionar las opciones para tener repositorios privados alojados en la web." -msgstr "Una preocupación común para los estudiantes es tener su trabajo a disposición del público en GitHub. Si bien fomentamos la ciencia abierta, a veces los repos privados son única opción. Siempre es interesante mencionar las opciones para tener repositorios privados alojados en la web." - -#: git-novice/_locale/es/_extras/guide.md:220 -msgid "" -"[code-school]: https://www.codeschool.com/\n" -"[diffmerge]: https://sourcegear.com/diffmerge/\n" -"[dibujos]: https://marklodato.github.io/visual-git-guide/index-en.html\n" -"[git-it]: https://github.com/jlord/git-it\n" -"[git-it-electron]: https://github.com/jlord/git-it-electron\n" -"[git-parábola]: http://tom.preston-werner.com/2009/05/19/the-git-parable.html\n" -"[github]: https://github.com/\n" -"[github-gui]: http://git-scm.com/downloads/guis\n" -"[github-line-endings]: https://help.github.com/articles/dealing-with-line-endings/#platform-all\n" -"[github-privacy]: https://help.github.com/articles/ keeping-your-email-address-private/\n" -"[repos-in-repos]: https://github.com/swcarpentry/git-novice/issues/272\n" -"[try-git]: https://try.github.io" -msgstr "" -"[code-school]: https://www.codeschool.com/\n" -"[diffmerge]: https://sourcegear.com/diffmerge/\n" -"[dibujos]: https://marklodato.github.io/visual-git-guide/index-en.html\n" -"[git-it]: https://github.com/jlord/git-it\n" -"[git-it-electron]: https://github.com/jlord/git-it-electron\n" -"[git-parábola]: http://tom.preston-werner.com/2009/05/19/the-git-parable.html\n" -"[github]: https://github.com/\n" -"[github-gui]: http://git-scm.com/downloads/guis\n" -"[github-line-endings]: https://help.github.com/articles/dealing-with-line-endings/#platform-all\n" -"[github-privacy]: https://help.github.com/articles/ keeping-your-email-address-private/\n" -"[repos-in-repos]: https://github.com/swcarpentry/git-novice/issues/272\n" -"[try-git]: https://try.github.io" - -# Front Matter -#: git-novice/_locale/es/aio.md:1 git-novice/aio.md:1 -msgid "" -"---\n" -"layout: page \n" -"permalink: /aio/\n" -"---" -msgstr "" -"---\n" -"layout: page \n" -"permalink: /aio/\n" -"---" - -# inline html -#: git-novice/_locale/es/aio.md:5 git-novice/aio.md:5 -msgid "" -"" +"" msgstr "" "" -#: git-novice/_locale/es/aio.md:31 git-novice/aio.md:31 +#: git-novice/aio.md:31 msgid "" "{% comment %}\n" "Create anchor for each one of the episodes.\n" @@ -16769,7 +10960,7 @@ msgstr "" "{% endfor %}" # Front Matter -#: git-novice/_locale/es/index.md:1 git-novice/index.md:1 +#: git-novice/index.md:1 msgid "" "---\n" "layout: lesson\n" @@ -16781,462 +10972,6 @@ msgstr "" "root: .\n" "---" -#: git-novice/_locale/es/index.md:6 -msgid "" -"Para ilustrar el poder de Git y GitHub, usaremos la siguiente historia \n" -"como un ejemplo motivador a través de esta lección.\n" -"El Hombre Lobo y Drácula han sido contratados por Universal Missions para investigar si es\n" -"posible enviar su próximo explorador planetario a Marte. Ellos quieren\n" -"poder trabajar al mismo tiempo en los planes, pero ya han experimentado\n" -"ciertos problemas anteriormente al hacer algo similar. Si se rotan por\n" -"turnos entonces cada uno gastará mucho tiempo esperando a que el otro\n" -"termine, pero si trabajan en sus propias copias e intercambian los cambios\n" -"por email, las cosas se perderán, se sobreescribirán o se duplicarán." -msgstr "" -"Para ilustrar el poder de Git y GitHub, usaremos la siguiente historia \n" -"como un ejemplo motivador a través de esta lección.\n" -"El Hombre Lobo y Drácula han sido contratados por Universal Missions para investigar si es\n" -"posible enviar su próximo explorador planetario a Marte. Ellos quieren\n" -"poder trabajar al mismo tiempo en los planes, pero ya han experimentado\n" -"ciertos problemas anteriormente al hacer algo similar. Si se rotan por\n" -"turnos entonces cada uno gastará mucho tiempo esperando a que el otro\n" -"termine, pero si trabajan en sus propias copias e intercambian los cambios\n" -"por email, las cosas se perderán, se sobreescribirán o se duplicarán." - -#: git-novice/_locale/es/index.md:16 -msgid "" -"Un colega sugiere utilizar [control de versiones]({{ page.root }}/reference/#version-control)\n" -"para lidiar con el trabajo. El control de versiones es mejor que el intercambio de ficheros por email:" -msgstr "" -"Un colega sugiere utilizar [control de versiones]({{ page.root }}/reference/#version-control)\n" -"para lidiar con el trabajo. El control de versiones es mejor que el intercambio de ficheros por email:" - -# unordered list -#: git-novice/_locale/es/index.md:19 -msgid "* Nada se pierde una vez que se incluye bajo control de versiones," -msgstr "* Nada se pierde una vez que se incluye bajo control de versiones," - -#: git-novice/_locale/es/index.md:20 -msgid "" -" a no ser que se haga un esfuerzo sustancial. Como se van guardando\n" -" todas las versiones precedentes de los ficheros, siempre es posible\n" -" volver atrás en el tiempo y ver exactamente quién escribió qué en\n" -" un día en particular, o qué versión de un programa fue utilizada\n" -" para generar un conjunto de resultados en particular." -msgstr "" -" a no ser que se haga un esfuerzo sustancial. Como se van guardando\n" -" todas las versiones precedentes de los ficheros, siempre es posible\n" -" volver atrás en el tiempo y ver exactamente quién escribió qué en\n" -" un día en particular, o qué versión de un programa fue utilizada\n" -" para generar un conjunto de resultados en particular." - -# unordered list -#: git-novice/_locale/es/index.md:26 -msgid "* Como se tienen estos registros de quién hizo qué y en qué momento," -msgstr "* Como se tienen estos registros de quién hizo qué y en qué momento," - -#: git-novice/_locale/es/index.md:27 -msgid "" -" es posible saber a quién preguntar si se tiene una pregunta en un\n" -" momento posterior y, si es necesario, revertir el contenido a una\n" -" versión anterior, de forma similar a como funciona el comando \"deshacer\"\n" -" de los editores de texto." -msgstr "" -" es posible saber a quién preguntar si se tiene una pregunta en un\n" -" momento posterior y, si es necesario, revertir el contenido a una\n" -" versión anterior, de forma similar a como funciona el comando \"deshacer\"\n" -" de los editores de texto." - -# unordered list -#: git-novice/_locale/es/index.md:32 -msgid "* Cuando varias personas colaboran en el mismo proyecto, es posible" -msgstr "* Cuando varias personas colaboran en el mismo proyecto, es posible" - -#: git-novice/_locale/es/index.md:33 -msgid "" -" pasar por alto o sobreescribir de manera accidental los cambios\n" -" hechos por otra persona. El sistema de control de versiones\n" -" notifica automáticamente a los usuarios cada vez que hay un\n" -" conflicto entre el trabajo de una persona y la otra." -msgstr "" -" pasar por alto o sobreescribir de manera accidental los cambios\n" -" hechos por otra persona. El sistema de control de versiones\n" -" notifica automáticamente a los usuarios cada vez que hay un\n" -" conflicto entre el trabajo de una persona y la otra." - -#: git-novice/_locale/es/index.md:38 -msgid "" -"Los equipos no son los únicos que se benefician del control de\n" -"versiones: los investigadores independientes se pueden beneficiar\n" -"en gran medida. Mantener un registro de qué ha cambiado,\n" -"cuándo y por qué es extremadamente útil para todos los investigadores\n" -"si alguna vez necesitan retomar el proyecto en un momento\n" -"posterior (e.g. un año después, cuando se ha desvanecido el\n" -"recuerdo de los detalles)." -msgstr "" -"Los equipos no son los únicos que se benefician del control de\n" -"versiones: los investigadores independientes se pueden beneficiar\n" -"en gran medida. Mantener un registro de qué ha cambiado,\n" -"cuándo y por qué es extremadamente útil para todos los investigadores\n" -"si alguna vez necesitan retomar el proyecto en un momento\n" -"posterior (e.g. un año después, cuando se ha desvanecido el\n" -"recuerdo de los detalles)." - -#: git-novice/_locale/es/index.md:46 git-novice/index.md:39 -msgid "" -"Version control is the lab notebook of the digital world: it's what\n" -"professionals use to keep track of what they've done and to\n" -"collaborate with other people. Every large software development\n" -"project relies on it, and most programmers use it for their small jobs\n" -"as well. And it isn't just for software: books,\n" -"papers, small data sets, and anything that changes over time or needs\n" -"to be shared can and should be stored in a version control system." -msgstr "" -"Version control is the lab notebook of the digital world: it's what\n" -"professionals use to keep track of what they've done and to\n" -"collaborate with other people. Every large software development\n" -"project relies on it, and most programmers use it for their small jobs\n" -"as well. And it isn't just for software: books,\n" -"papers, small data sets, and anything that changes over time or needs\n" -"to be shared can and should be stored in a version control system." - -# blockquote, which can be cascaded -#: git-novice/_locale/es/index.md:54 -msgid "> ## Pre-requisitos" -msgstr "> ## Pre-requisitos" - -#: git-novice/_locale/es/index.md:55 -msgid "" -">\n" -"> En esta lección utilizamos Git desde el terminal de Unix. \n" -"> Se espera de los participantes alguna experiencia previa,\n" -"> *pero esto no es requisito indispensable*." -msgstr "" -">\n" -"> En esta lección utilizamos Git desde el terminal de Unix. \n" -"> Se espera de los participantes alguna experiencia previa,\n" -"> *pero esto no es requisito indispensable*." - -# SC/DC Template label -#: git-novice/_locale/es/index.md:59 git-novice/index.md:52 -msgid "{: .prereq}" -msgstr "{: .prereq}" - -# Front Matter -#: git-novice/_locale/es/lang.md:1 -msgid "" -"---\n" -"home: Inicio\n" -"CoC: Codigo de Conducta\n" -"setup: Configuración\n" -"episodes: Episodes\n" -"extras: Extras\n" -"license: Licencia\n" -"improve: Mejora esta página\n" -"reference: Referencias\n" -"aio: Todo en uno\n" -"schedule: Horario\n" -"search: Buscar\n" -"edit: Editar en GitHub\n" -"contribute: Contribuir\n" -"source: Fuente\n" -"cite: Citar\n" -"contact: Contacto\n" -"keypoins: Puntos Clave\n" -"overview: Resumen\n" -"break: Pausa\n" -"previous: anterior\n" -"next: siguiente\n" -"episode: episodio\n" -"lessonHome: Inicio de la lección\n" -"teaching: Enseñando\n" -"exercises: Ejercisios\n" -"min: min\n" -"questions: Preguntas\n" -"objectives: Objectivos\n" -"downloadLesson: \"Descarga los ficheros necesarios para la lección\"\n" -"finish: \"Fin\"\n" -"scheduleDisclaimer: El horario durante la lección puede variar a según los temas y preguntas que eliga el instructor.\n" -"---" -msgstr "" -"---\n" -"home: Inicio\n" -"CoC: Codigo de Conducta\n" -"setup: Configuración\n" -"episodes: Episodes\n" -"extras: Extras\n" -"license: Licencia\n" -"improve: Mejora esta página\n" -"reference: Referencias\n" -"aio: Todo en uno\n" -"schedule: Horario\n" -"search: Buscar\n" -"edit: Editar en GitHub\n" -"contribute: Contribuir\n" -"source: Fuente\n" -"cite: Citar\n" -"contact: Contacto\n" -"keypoins: Puntos Clave\n" -"overview: Resumen\n" -"break: Pausa\n" -"previous: anterior\n" -"next: siguiente\n" -"episode: episodio\n" -"lessonHome: Inicio de la lección\n" -"teaching: Enseñando\n" -"exercises: Ejercisios\n" -"min: min\n" -"questions: Preguntas\n" -"objectives: Objectivos\n" -"downloadLesson: \"Descarga los ficheros necesarios para la lección\"\n" -"finish: \"Fin\"\n" -"scheduleDisclaimer: El horario durante la lección puede variar a según los temas y preguntas que eliga el instructor.\n" -"---" - -# Front Matter -#: git-novice/_locale/es/reference.md:1 git-novice/reference.md:1 -msgid "" -"---\n" -"layout: reference\n" -"\n" -"---" -msgstr "" -"---\n" -"layout: reference\n" -"\n" -"---" - -# header -#: git-novice/_locale/es/reference.md:6 -msgid "## Cheatsheets de Git para Referencia Rápida" -msgstr "## Cheatsheets de Git para Referencia Rápida" - -# unordered list -#: git-novice/_locale/es/reference.md:8 -msgid "* Un excelente [cheatsheet de git listo para impresión](https://services.github.com/on-demand/downloads/github-git-cheat-sheet.pdf) está disponible en formato PDF desde" -msgstr "* Un excelente [cheatsheet de git listo para impresión](https://services.github.com/on-demand/downloads/github-git-cheat-sheet.pdf) está disponible en formato PDF desde" - -#: git-novice/_locale/es/reference.md:9 -msgid "" -"[el sitio de preparación de GitHub](https://services.github.com/resources/).\n" -"* Una [visualización interactiva](http://ndpsoftware.com/git-cheatsheet.html)\n" -" sobre las relaciones entre entorno de trabajo, área de staging, repositorio local y remoto, así los comandos asociados con cada caso (y sus explicaciones)\n" -"* Ambos recursos están disponibles en varios lenguajes e.g. español, francés, y muchos más." -msgstr "" -"[el sitio de preparación de GitHub](https://services.github.com/resources/).\n" -"* Una [visualización interactiva](http://ndpsoftware.com/git-cheatsheet.html)\n" -" sobre las relaciones entre entorno de trabajo, área de staging, repositorio local y remoto, así los comandos asociados con cada caso (y sus explicaciones)\n" -"* Ambos recursos están disponibles en varios lenguajes e.g. español, francés, y muchos más." - -# header -#: git-novice/_locale/es/reference.md:14 -msgid "## Glosario" -msgstr "## Glosario" - -#: git-novice/_locale/es/reference.md:16 -msgid "" -"{:auto_ids}\n" -"changeset\n" -": Un grupo de cambios a uno o más ficheros que son o serán añadidos\n" -" en un solo [commit](#commit) en un [repositorio](#repositorio)\n" -" de [control de versiones](#control-de-versiones)." -msgstr "" -"{:auto_ids}\n" -"changeset\n" -": Un grupo de cambios a uno o más ficheros que son o serán añadidos\n" -" en un solo [commit](#commit) en un [repositorio](#repositorio)\n" -" de [control de versiones](#control-de-versiones)." - -#: git-novice/_locale/es/reference.md:22 -msgid "" -"commit\n" -": Como verbo *hacer un commit* es la acción de registrar el estado\n" -" de un conjunto de ficheros en un momento determinado (un [changeset](#changeset))\n" -" en un [repositorio](#repositorio) de [control de versiones](#control-de-versiones). Como sustantivo,\n" -" *un commit* es el resultado de esta acción, i.e. un changeset almacenado en un repositorio.\n" -" Si un commit contiene cambios hechos a múltiples ficheros,\n" -" todos los cambios son almacenados juntos." -msgstr "" -"commit\n" -": Como verbo *hacer un commit* es la acción de registrar el estado\n" -" de un conjunto de ficheros en un momento determinado (un [changeset](#changeset))\n" -" en un [repositorio](#repositorio) de [control de versiones](#control-de-versiones). Como sustantivo,\n" -" *un commit* es el resultado de esta acción, i.e. un changeset almacenado en un repositorio.\n" -" Si un commit contiene cambios hechos a múltiples ficheros,\n" -" todos los cambios son almacenados juntos." - -#: git-novice/_locale/es/reference.md:30 -msgid "" -"conflicto\n" -": Un cambio hecho por un usuario de un [sistema de control de versiones](#control-de-versiones)\n" -" que es incompatible con cambios hechos por otros usuarios.\n" -" Asistir a los usuarios a [resolver](#resolver) conflictos\n" -" es una de las funciones más importantes del control de versiones." -msgstr "" -"conflicto\n" -": Un cambio hecho por un usuario de un [sistema de control de versiones](#control-de-versiones)\n" -" que es incompatible con cambios hechos por otros usuarios.\n" -" Asistir a los usuarios a [resolver](#resolver) conflictos\n" -" es una de las funciones más importantes del control de versiones." - -#: git-novice/_locale/es/reference.md:36 -msgid "" -"HTTP\n" -": Siglas de Hypertext Transfer Protocol, el [protocolo](#protocolo) utilizado para compartir páginas web y otros datos\n" -" en la World Wide Web." -msgstr "" -"HTTP\n" -": Siglas de Hypertext Transfer Protocol, el [protocolo](#protocolo) utilizado para compartir páginas web y otros datos\n" -" en la World Wide Web." - -#: git-novice/_locale/es/reference.md:40 -msgid "" -"mezclar\n" -": (un repositorio): Reconciliar dos conjuntos de cambios en un\n" -" [repositorio](#repositorio)." -msgstr "" -"mezclar\n" -": (un repositorio): Reconciliar dos conjuntos de cambios en un\n" -" [repositorio](#repositorio)." - -#: git-novice/_locale/es/reference.md:44 -msgid "" -"protocolo\n" -": Un conjunto de reglas que definen cómo una computadora se comunica con otra.\n" -" Entre los protocolos más utilizados en la Internet se encuentran [HTTP](#http) y [SSH](#ssh)." -msgstr "" -"protocolo\n" -": Un conjunto de reglas que definen cómo una computadora se comunica con otra.\n" -" Entre los protocolos más utilizados en la Internet se encuentran [HTTP](#http) y [SSH](#ssh)." - -#: git-novice/_locale/es/reference.md:48 -msgid "" -"remote\n" -": (de un repositorio) Un [repositorio](#repositorio) de [control de versiones](#control-de-versiones) conectado con otro\n" -" de forma tal que ambos pueden ser actualizados intercambiando [commits](#commit)." -msgstr "" -"remote\n" -": (de un repositorio) Un [repositorio](#repositorio) de [control de versiones](#control-de-versiones) conectado con otro\n" -" de forma tal que ambos pueden ser actualizados intercambiando [commits](#commit)." - -#: git-novice/_locale/es/reference.md:52 -msgid "" -"repositorio\n" -": Un área de almacenamiento donde un sistema de [control de versiones](#control-de-versiones)\n" -" almacena la historia completa de [commits](#commit) de un proyecto, así como información\n" -" sobre quién cambio qué, cuándo." -msgstr "" -"repositorio\n" -": Un área de almacenamiento donde un sistema de [control de versiones](#control-de-versiones)\n" -" almacena la historia completa de [commits](#commit) de un proyecto, así como información\n" -" sobre quién cambio qué, cuándo." - -#: git-novice/_locale/es/reference.md:57 -msgid "" -"resolver\n" -": Eliminar los [conflictos](#conflicto) entre dos o más cambios incompatibles sobre un fichero o un conjunto de ficheros\n" -" administrados por un sistema de [control de versiones](#control-de-versiones)." -msgstr "" -"resolver\n" -": Eliminar los [conflictos](#conflicto) entre dos o más cambios incompatibles sobre un fichero o un conjunto de ficheros\n" -" administrados por un sistema de [control de versiones](#control-de-versiones)." - -#: git-novice/_locale/es/reference.md:61 -msgid "" -"revisión\n" -": Un sinónimo de [commit](#commit)." -msgstr "" -"revisión\n" -": Un sinónimo de [commit](#commit)." - -#: git-novice/_locale/es/reference.md:64 -msgid "" -"SHA-1\n" -": [SHA-1 hashes](http://en.wikipedia.org/wiki/SHA-1) es lo que Git utiliza para generar identificadores, incluyendo los de los commits.\n" -" Para calcularlos, Git no solamente utiliza los cambios que forman parte de un commit, sino también sus metadatos (tales como fecha, autor,\n" -" mensaje), incluyendo los identificadores de todos los commits hechos para cambios anteriores. Esto hace que los ID de commits de Git san virtualmente únicos.\n" -" I.e., es ínfima la probabilidad de que un mismo ID se refiera a dos commits hechos de forma independiente, incluso si tuvieran los mismos cambios." -msgstr "" -"SHA-1\n" -": [SHA-1 hashes](http://en.wikipedia.org/wiki/SHA-1) es lo que Git utiliza para generar identificadores, incluyendo los de los commits.\n" -" Para calcularlos, Git no solamente utiliza los cambios que forman parte de un commit, sino también sus metadatos (tales como fecha, autor,\n" -" mensaje), incluyendo los identificadores de todos los commits hechos para cambios anteriores. Esto hace que los ID de commits de Git san virtualmente únicos.\n" -" I.e., es ínfima la probabilidad de que un mismo ID se refiera a dos commits hechos de forma independiente, incluso si tuvieran los mismos cambios." - -#: git-novice/_locale/es/reference.md:70 -msgid "" -"SSH\n" -": Abreviatura de Secure Shell, un [protocolo](#protocolo) utilizado para la comunicación de forma segura entre computadoras." -msgstr "" -"SSH\n" -": Abreviatura de Secure Shell, un [protocolo](#protocolo) utilizado para la comunicación de forma segura entre computadoras." - -#: git-novice/_locale/es/reference.md:73 -msgid "" -"timestamp\n" -": Un registro de cuando ocurrió un evento específico." -msgstr "" -"timestamp\n" -": Un registro de cuando ocurrió un evento específico." - -#: git-novice/_locale/es/reference.md:76 -msgid "" -"control de versiones\n" -": Una herramienta para administrar los cambios hechos a un conjunto de ficheros.\n" -" Cada conjunto de cambios crea un nuevo[commit](#commit) de los ficheros;\n" -" el sistema de control de versiones permite a los usuarios recibir de manera fiable los commits precedentes,\n" -" y ayuda a solventar cambios conflictivos hechos por diferentes usuarios." -msgstr "" -"control de versiones\n" -": Una herramienta para administrar los cambios hechos a un conjunto de ficheros.\n" -" Cada conjunto de cambios crea un nuevo[commit](#commit) de los ficheros;\n" -" el sistema de control de versiones permite a los usuarios recibir de manera fiable los commits precedentes,\n" -" y ayuda a solventar cambios conflictivos hechos por diferentes usuarios." - -# Front Matter -#: git-novice/_locale/es/setup.md:1 -msgid "" -"---\n" -"layout: page\n" -"title: Setup\n" -"permalink: /es/setup/\n" -"---" -msgstr "" -"---\n" -"layout: page\n" -"title: Setup\n" -"permalink: /es/setup/\n" -"---" - -#: git-novice/_locale/es/setup.md:7 -msgid "" -"Por favor consulte [esta sección de la plantilla de los talleres][workshop-setup]\n" -"para conocer más instrucciones de instalación de Git." -msgstr "" -"Por favor consulte [esta sección de la plantilla de los talleres][workshop-setup]\n" -"para conocer más instrucciones de instalación de Git." - -#: git-novice/_locale/es/setup.md:10 -msgid "Haremos nuestro trabajo en la carpeta `Desktop`. Por favor asegúrese de cambiar su directorio de trabajo con:" -msgstr "Haremos nuestro trabajo en la carpeta `Desktop`. Por favor asegúrese de cambiar su directorio de trabajo con:" - -# code block -#: git-novice/_locale/es/setup.md:12 git-novice/setup.md:11 -msgid "" -"~~~\n" -"$ cd\n" -"$ cd Desktop\n" -"~~~" -msgstr "" -"~~~\n" -"$ cd\n" -"$ cd Desktop\n" -"~~~" - -#: git-novice/_locale/es/setup.md:18 git-novice/setup.md:17 -msgid "[workshop-setup]: https://carpentries.github.io/workshop-template/#git" -msgstr "[workshop-setup]: https://carpentries.github.io/workshop-template/#git" - #: git-novice/index.md:6 msgid "" "Wolfman and Dracula have been hired by Universal Missions (a space\n" @@ -17258,11 +10993,15 @@ msgstr "" #: git-novice/index.md:15 msgid "" -"A colleague suggests using [version control]({{ page.root }}/reference#version-control) to\n" -"manage their work. Version control is better than mailing files back and forth:" +"A colleague suggests using [version control]({{ page.root }}/" +"reference#version-control) to\n" +"manage their work. Version control is better than mailing files back and " +"forth:" msgstr "" -"同僚は、[バーションの管理は]({{page.root}} / reference#version-control)を使って作業を\n" -"管理することを提案しています。 バーションの管理を使うはファイルを前後にメールするよりも優れています:" +"同僚は、[バーションの管理は]({{page.root}} / reference#version-control)を" +"使って作業を\n" +"管理することを提案しています。 バーションの管理を使うはファイルを前後にメール" +"するよりも優れています:" # unordered list #: git-novice/index.md:18 @@ -17278,12 +11017,14 @@ msgid "" msgstr "" " 失われることはありません。古いバージョンのファイルは\n" " すべて保存されているため、特定の日に誰が何を書き込んだのか、\n" -" 特定の結果を生成するためにどのバージョンのプログラムが使用されたのかなど、\n" +" 特定の結果を生成するためにどのバージョンのプログラムが使用されたのかな" +"ど、\n" " 正確に確認することが可能です。" # unordered list #: git-novice/index.md:24 -msgid "* As we have this record of who made what changes when, we know who to ask" +msgid "" +"* As we have this record of who made what changes when, we know who to ask" msgstr "* 誰が何をいつ変更したのかという記録があるため、後に問題が" #: git-novice/index.md:25 @@ -17296,13 +11037,16 @@ msgstr "" # unordered list #: git-novice/index.md:28 -msgid "* When several people collaborate in the same project, it's possible to" +msgid "" +"* When several people collaborate in the same project, it's possible to" msgstr "* 同じプロジェクトで複数の人が協力し合う場合、" #: git-novice/index.md:29 msgid "" -" accidentally overlook or overwrite someone's changes. The version control\n" -" system automatically notifies users whenever there's a conflict between one\n" +" accidentally overlook or overwrite someone's changes. The version " +"control\n" +" system automatically notifies users whenever there's a conflict between " +"one\n" " person's work and another's." msgstr "" " 間違って誰かの変更を見落としたり上書きしたりする可能性があります。\n" @@ -17317,12 +11061,31 @@ msgid "" "ever need to come back to the project later on (e.g., a year later,\n" "when memory has faded)." msgstr "" -"バージョン管理を使うことによって得をするのはチームだけではありません: 個人で作業をしている\n" +"バージョン管理を使うことによって得をするのはチームだけではありません: 個人で" +"作業をしている\n" "研究者にもメリットがあります。何が、いつ、何故変わったのかを\n" "記録しておくことは、後で昔のプロジェクトを見返すことになった場合などに\n" "(例えば、1年後、プロジェクトの詳細を忘れてしまった時などに)、\n" "非常に便利です。" +#: git-novice/index.md:39 +msgid "" +"Version control is the lab notebook of the digital world: it's what\n" +"professionals use to keep track of what they've done and to\n" +"collaborate with other people. Every large software development\n" +"project relies on it, and most programmers use it for their small jobs\n" +"as well. And it isn't just for software: books,\n" +"papers, small data sets, and anything that changes over time or needs\n" +"to be shared can and should be stored in a version control system." +msgstr "" +"Version control is the lab notebook of the digital world: it's what\n" +"professionals use to keep track of what they've done and to\n" +"collaborate with other people. Every large software development\n" +"project relies on it, and most programmers use it for their small jobs\n" +"as well. And it isn't just for software: books,\n" +"papers, small data sets, and anything that changes over time or needs\n" +"to be shared can and should be stored in a version control system." + # blockquote, which can be cascaded #: git-novice/index.md:47 msgid "> ## Prerequisites" @@ -17340,6 +11103,24 @@ msgstr "" "> Some previous experience with the shell is expected,\n" "> *but isn't mandatory*." +# SC/DC Template label +#: git-novice/index.md:52 +msgid "{: .prereq}" +msgstr "{: .prereq}" + +# Front Matter +#: git-novice/reference.md:1 +msgid "" +"---\n" +"layout: reference\n" +"\n" +"---" +msgstr "" +"---\n" +"layout: reference\n" +"\n" +"---" + # header #: git-novice/reference.md:6 msgid "## Git Cheatsheets for Quick Reference" @@ -17347,22 +11128,40 @@ msgstr "## Git Cheatsheets for Quick Reference" # unordered list #: git-novice/reference.md:8 -msgid "* A great [printable git cheatsheet](https://services.github.com/on-demand/downloads/github-git-cheat-sheet.pdf) is available in PDF from the" -msgstr "* A great [printable git cheatsheet](https://services.github.com/on-demand/downloads/github-git-cheat-sheet.pdf) is available in PDF from the" +msgid "" +"* A great [printable git cheatsheet](https://services.github.com/on-demand/" +"downloads/github-git-cheat-sheet.pdf) is available in PDF from the" +msgstr "" +"* A great [printable git cheatsheet](https://services.github.com/on-demand/" +"downloads/github-git-cheat-sheet.pdf) is available in PDF from the" #: git-novice/reference.md:9 msgid "" "[GitHub training website](https://services.github.com/resources/).\n" -"* An [interactive one-page visualisation](http://ndpsoftware.com/git-cheatsheet.html)\n" -" about the relationships between workspace, staging area, local repository, upstream repository, and the commands associated with each (with explanations).\n" -"* Both resources are also available in other languages (e.g. Spanish, French, and more).\n" -"* \"[Happy Git and GitHub for the useR](http://happygitwithr.com)\" is an accessible, free online book by Jenny Bryan on how to setup and use git and GitHub with specific references on the integration of git with RStudio and working with git in R." +"* An [interactive one-page visualisation](http://ndpsoftware.com/git-" +"cheatsheet.html)\n" +" about the relationships between workspace, staging area, local " +"repository, upstream repository, and the commands associated with each (with " +"explanations).\n" +"* Both resources are also available in other languages (e.g. Spanish, " +"French, and more).\n" +"* \"[Happy Git and GitHub for the useR](http://happygitwithr.com)\" is an " +"accessible, free online book by Jenny Bryan on how to setup and use git and " +"GitHub with specific references on the integration of git with RStudio and " +"working with git in R." msgstr "" "[GitHub training website](https://services.github.com/resources/).\n" -"* An [interactive one-page visualisation](http://ndpsoftware.com/git-cheatsheet.html)\n" -" about the relationships between workspace, staging area, local repository, upstream repository, and the commands associated with each (with explanations).\n" -"* Both resources are also available in other languages (e.g. Spanish, French, and more).\n" -"* \"[Happy Git and GitHub for the useR](http://happygitwithr.com)\" is an accessible, free online book by Jenny Bryan on how to setup and use git and GitHub with specific references on the integration of git with RStudio and working with git in R." +"* An [interactive one-page visualisation](http://ndpsoftware.com/git-" +"cheatsheet.html)\n" +" about the relationships between workspace, staging area, local " +"repository, upstream repository, and the commands associated with each (with " +"explanations).\n" +"* Both resources are also available in other languages (e.g. Spanish, " +"French, and more).\n" +"* \"[Happy Git and GitHub for the useR](http://happygitwithr.com)\" is an " +"accessible, free online book by Jenny Bryan on how to setup and use git and " +"GitHub with specific references on the integration of git with RStudio and " +"working with git in R." # header #: git-novice/reference.md:15 @@ -17386,15 +11185,19 @@ msgstr "" #: git-novice/reference.md:23 msgid "" "commit\n" -": To record the current state of a set of files (a [changeset](#changeset))\n" -" in a [version control](#version-control) [repository](#repository). As a noun,\n" +": To record the current state of a set of files (a [changeset]" +"(#changeset))\n" +" in a [version control](#version-control) [repository](#repository). As a " +"noun,\n" " the result of committing, i.e. a recorded changeset in a repository.\n" " If a commit contains changes to multiple files,\n" " all of the changes are recorded together." msgstr "" "commit\n" -": To record the current state of a set of files (a [changeset](#changeset))\n" -" in a [version control](#version-control) [repository](#repository). As a noun,\n" +": To record the current state of a set of files (a [changeset]" +"(#changeset))\n" +" in a [version control](#version-control) [repository](#repository). As a " +"noun,\n" " the result of committing, i.e. a recorded changeset in a repository.\n" " If a commit contains changes to multiple files,\n" " all of the changes are recorded together." @@ -17402,13 +11205,15 @@ msgstr "" #: git-novice/reference.md:30 msgid "" "conflict\n" -": A change made by one user of a [version control system](#version-control)\n" +": A change made by one user of a [version control system](#version-" +"control)\n" " that is incompatible with changes made by other users.\n" " Helping users [resolve](#resolve) conflicts\n" " is one of version control's major tasks." msgstr "" "conflict\n" -": A change made by one user of a [version control system](#version-control)\n" +": A change made by one user of a [version control system](#version-" +"control)\n" " that is incompatible with changes made by other users.\n" " Helping users [resolve](#resolve) conflicts\n" " is one of version control's major tasks." @@ -17416,11 +11221,13 @@ msgstr "" #: git-novice/reference.md:36 msgid "" "HTTP\n" -": The Hypertext Transfer [Protocol](#protocol) used for sharing web pages and other data\n" +": The Hypertext Transfer [Protocol](#protocol) used for sharing web pages " +"and other data\n" " on the World Wide Web." msgstr "" "HTTP\n" -": The Hypertext Transfer [Protocol](#protocol) used for sharing web pages and other data\n" +": The Hypertext Transfer [Protocol](#protocol) used for sharing web pages " +"and other data\n" " on the World Wide Web." #: git-novice/reference.md:40 @@ -17446,33 +11253,39 @@ msgstr "" #: git-novice/reference.md:48 msgid "" "remote\n" -": (of a repository) A version control [repository](#repository) connected to another,\n" +": (of a repository) A version control [repository](#repository) connected " +"to another,\n" " in such way that both can be kept in sync exchanging [commits](#commit)." msgstr "" "remote\n" -": (of a repository) A version control [repository](#repository) connected to another,\n" +": (of a repository) A version control [repository](#repository) connected " +"to another,\n" " in such way that both can be kept in sync exchanging [commits](#commit)." #: git-novice/reference.md:52 msgid "" "repository\n" ": A storage area where a [version control](#version-control) system\n" -" stores the full history of [commits](#commit) of a project and information\n" +" stores the full history of [commits](#commit) of a project and " +"information\n" " about who changed what, when." msgstr "" "repository\n" ": A storage area where a [version control](#version-control) system\n" -" stores the full history of [commits](#commit) of a project and information\n" +" stores the full history of [commits](#commit) of a project and " +"information\n" " about who changed what, when." #: git-novice/reference.md:57 msgid "" "resolve\n" -": To eliminate the [conflicts](#conflict) between two or more incompatible changes to a file or set of files\n" +": To eliminate the [conflicts](#conflict) between two or more incompatible " +"changes to a file or set of files\n" " being managed by a [version control](#version-control) system." msgstr "" "resolve\n" -": To eliminate the [conflicts](#conflict) between two or more incompatible changes to a file or set of files\n" +": To eliminate the [conflicts](#conflict) between two or more incompatible " +"changes to a file or set of files\n" " being managed by a [version control](#version-control) system." #: git-novice/reference.md:61 @@ -17486,26 +11299,36 @@ msgstr "" #: git-novice/reference.md:64 msgid "" "SHA-1\n" -": [SHA-1 hashes](https://en.wikipedia.org/wiki/SHA-1) is what Git uses to compute identifiers, including for commits.\n" -" To compute these, Git uses not only the actual change of a commit, but also its metadata (such as date, author,\n" -" message), including the identifiers of all commits of preceding changes. This makes Git commit IDs virtually unique.\n" -" I.e., the likelihood that two commits made independently, even of the same change, receive the same ID is exceedingly\n" +": [SHA-1 hashes](https://en.wikipedia.org/wiki/SHA-1) is what Git uses to " +"compute identifiers, including for commits.\n" +" To compute these, Git uses not only the actual change of a commit, but " +"also its metadata (such as date, author,\n" +" message), including the identifiers of all commits of preceding changes. " +"This makes Git commit IDs virtually unique.\n" +" I.e., the likelihood that two commits made independently, even of the " +"same change, receive the same ID is exceedingly\n" " small." msgstr "" "SHA-1\n" -": [SHA-1 hashes](https://en.wikipedia.org/wiki/SHA-1) is what Git uses to compute identifiers, including for commits.\n" -" To compute these, Git uses not only the actual change of a commit, but also its metadata (such as date, author,\n" -" message), including the identifiers of all commits of preceding changes. This makes Git commit IDs virtually unique.\n" -" I.e., the likelihood that two commits made independently, even of the same change, receive the same ID is exceedingly\n" +": [SHA-1 hashes](https://en.wikipedia.org/wiki/SHA-1) is what Git uses to " +"compute identifiers, including for commits.\n" +" To compute these, Git uses not only the actual change of a commit, but " +"also its metadata (such as date, author,\n" +" message), including the identifiers of all commits of preceding changes. " +"This makes Git commit IDs virtually unique.\n" +" I.e., the likelihood that two commits made independently, even of the " +"same change, receive the same ID is exceedingly\n" " small." #: git-novice/reference.md:71 msgid "" "SSH\n" -": The Secure Shell [protocol](#protocol) used for secure communication between computers." +": The Secure Shell [protocol](#protocol) used for secure communication " +"between computers." msgstr "" "SSH\n" -": The Secure Shell [protocol](#protocol) used for secure communication between computers." +": The Secure Shell [protocol](#protocol) used for secure communication " +"between computers." #: git-novice/reference.md:74 msgid "" @@ -17520,13 +11343,15 @@ msgid "" "version control\n" ": A tool for managing changes to a set of files.\n" " Each set of changes creates a new [commit](#commit) of the files;\n" -" the version control system allows users to recover old commits reliably,\n" +" the version control system allows users to recover old commits " +"reliably,\n" " and helps manage conflicting changes made by different users." msgstr "" "version control\n" ": A tool for managing changes to a set of files.\n" " Each set of changes creates a new [commit](#commit) of the files;\n" -" the version control system allows users to recover old commits reliably,\n" +" the version control system allows users to recover old commits " +"reliably,\n" " and helps manage conflicting changes made by different users." # Front Matter @@ -17551,5 +11376,26 @@ msgstr "" "for instructions on installing Git." #: git-novice/setup.md:9 -msgid "We'll do our work in the `Desktop` folder so make sure you change your working directory to it with:" -msgstr "We'll do our work in the `Desktop` folder so make sure you change your working directory to it with:" +msgid "" +"We'll do our work in the `Desktop` folder so make sure you change your " +"working directory to it with:" +msgstr "" +"We'll do our work in the `Desktop` folder so make sure you change your " +"working directory to it with:" + +# code block +#: git-novice/setup.md:11 +msgid "" +"~~~\n" +"$ cd\n" +"$ cd Desktop\n" +"~~~" +msgstr "" +"~~~\n" +"$ cd\n" +"$ cd Desktop\n" +"~~~" + +#: git-novice/setup.md:17 +msgid "[workshop-setup]: https://carpentries.github.io/workshop-template/#git" +msgstr "[workshop-setup]: https://carpentries.github.io/workshop-template/#git" diff --git a/po/make-novice.ja.po b/po/make-novice.ja.po new file mode 100644 index 00000000..a2ebeee9 --- /dev/null +++ b/po/make-novice.ja.po @@ -0,0 +1,5668 @@ + +# Japanese translation of the Software Carpentry Automation and Make Lesson +# Copyright (C) 2019 Software Carpentry Foundation; Japanese Translation Team +# This file is distributed under the same license as the PACKAGE package. +# Software-Carpentry Japanese-Team , 2019, 2020. +# +msgid "" +msgstr "" +"Project-Id-Version: i18n\n" +"Report-Msgid-Bugs-To: https://github.com/haiwen/seafile-docs/issues\n" +"POT-Creation-Date: 2020-01-22 00:16:46+0900\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: ja +" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: make-novice/CODE_OF_CONDUCT.md:1 +#: make-novice/bin/boilerplate/CODE_OF_CONDUCT.md:1 +# Front Matter +msgid "---\n" +"layout: page\n" +"title: \"Contributor Code of Conduct\"\n" +"---" +msgstr "" + +#: make-novice/CODE_OF_CONDUCT.md:5 +#: make-novice/bin/boilerplate/CODE_OF_CONDUCT.md:5 +msgid "As contributors and maintainers of this project,\n" +"we pledge to follow the [Carpentry Code of Conduct][coc]." +msgstr "" + +#: make-novice/CODE_OF_CONDUCT.md:8 +#: make-novice/bin/boilerplate/CODE_OF_CONDUCT.md:8 +msgid "Instances of abusive, harassing, or otherwise unacceptable behavior\n" +"may be reported by following our [reporting guidelines][coc-reporting]." +msgstr "" + +#: make-novice/CODE_OF_CONDUCT.md:11 +#: make-novice/bin/boilerplate/CODE_OF_CONDUCT.md:11 +#: make-novice/bin/boilerplate/_episodes/01-introduction.md:14 +#: make-novice/bin/boilerplate/_extras/discuss.md:6 +#: make-novice/bin/boilerplate/_extras/figures.md:40 +#: make-novice/bin/boilerplate/_extras/guide.md:6 +#: make-novice/bin/boilerplate/index.md:13 +#: make-novice/bin/boilerplate/reference.md:9 +#: make-novice/bin/boilerplate/setup.md:7 +msgid "{% include links.md %}" +msgstr "" + +#: make-novice/CONTRIBUTING.md:1 +#: make-novice/bin/boilerplate/CONTRIBUTING.md:1 +# header +msgid "# Contributing" +msgstr "" + +#: make-novice/CONTRIBUTING.md:3 +#: make-novice/bin/boilerplate/CONTRIBUTING.md:3 +msgid "[Software Carpentry][swc-site] and [Data Carpentry][dc-site] are open source projects,\n" +"and we welcome contributions of all kinds:\n" +"new lessons,\n" +"fixes to existing material,\n" +"bug reports,\n" +"and reviews of proposed changes are all welcome." +msgstr "" + +#: make-novice/CONTRIBUTING.md:10 +#: make-novice/bin/boilerplate/CONTRIBUTING.md:10 +# header +msgid "## Contributor Agreement" +msgstr "" + +#: make-novice/CONTRIBUTING.md:12 +msgid "By contributing,\n" +"you agree that we may redistribute your work under [our license](LICENSE.md).\n" +"In exchange,\n" +"we will address your issues and/or assess your change proposal as promptly as we can,\n" +"and help you become a member of our community.\n" +"Everyone involved in [Software Carpentry][swc-site] and [Data Carpentry][dc-site]\n" +"agrees to abide by our [code of conduct](CONDUCT.md)." +msgstr "" + +#: make-novice/CONTRIBUTING.md:20 +#: make-novice/bin/boilerplate/CONTRIBUTING.md:20 +# header +msgid "## How to Contribute" +msgstr "" + +#: make-novice/CONTRIBUTING.md:22 +#: make-novice/bin/boilerplate/CONTRIBUTING.md:22 +msgid "The easiest way to get started is to file an issue\n" +"to tell us about a spelling mistake,\n" +"some awkward wording,\n" +"or a factual error.\n" +"This is a good way to introduce yourself\n" +"and to meet some of our community members." +msgstr "" + +#: make-novice/CONTRIBUTING.md:29 +#: make-novice/bin/boilerplate/CONTRIBUTING.md:29 +# ordered list +msgid "1. If you do not have a [GitHub][github] account," +msgstr "" + +#: make-novice/CONTRIBUTING.md:30 +msgid " you can [send us comments by email][contact].\n" +" However,\n" +" we will be able to respond more quickly if you use one of the other methods described below." +msgstr "" + +#: make-novice/CONTRIBUTING.md:34 +#: make-novice/bin/boilerplate/CONTRIBUTING.md:34 +# ordered list +msgid "2. If you have a [GitHub][github] account," +msgstr "" + +#: make-novice/CONTRIBUTING.md:35 +#: make-novice/bin/boilerplate/CONTRIBUTING.md:35 +msgid " or are willing to [create one][github-join],\n" +" but do not know how to use Git,\n" +" you can report problems or suggest improvements by [creating an issue][issues].\n" +" This allows us to assign the item to someone\n" +" and to respond to it in a threaded discussion." +msgstr "" + +#: make-novice/CONTRIBUTING.md:41 +#: make-novice/bin/boilerplate/CONTRIBUTING.md:41 +# ordered list +msgid "3. If you are comfortable with Git," +msgstr "" + +#: make-novice/CONTRIBUTING.md:42 +#: make-novice/bin/boilerplate/CONTRIBUTING.md:42 +msgid " and would like to add or change material,\n" +" you can submit a pull request (PR).\n" +" Instructions for doing this are [included below](#using-github)." +msgstr "" + +#: make-novice/CONTRIBUTING.md:46 +#: make-novice/bin/boilerplate/CONTRIBUTING.md:46 +# header +msgid "## Where to Contribute" +msgstr "" + +#: make-novice/CONTRIBUTING.md:48 +#: make-novice/bin/boilerplate/CONTRIBUTING.md:48 +# ordered list +msgid "1. If you wish to change this lesson," +msgstr "" + +#: make-novice/CONTRIBUTING.md:49 +msgid " please work in ,\n" +" which can be viewed at ." +msgstr "" + +#: make-novice/CONTRIBUTING.md:52 +#: make-novice/bin/boilerplate/CONTRIBUTING.md:52 +# ordered list +msgid "2. If you wish to change the example lesson," +msgstr "" + +#: make-novice/CONTRIBUTING.md:53 +#: make-novice/bin/boilerplate/CONTRIBUTING.md:53 +msgid " please work in ,\n" +" which documents the format of our lessons\n" +" and can be viewed at ." +msgstr "" + +#: make-novice/CONTRIBUTING.md:57 +#: make-novice/bin/boilerplate/CONTRIBUTING.md:57 +# ordered list +msgid "3. If you wish to change the template used for workshop websites," +msgstr "" + +#: make-novice/CONTRIBUTING.md:58 +#: make-novice/bin/boilerplate/CONTRIBUTING.md:58 +msgid " please work in .\n" +" The home page of that repository explains how to set up workshop websites,\n" +" while the extra pages in \n" +" provide more background on our design choices." +msgstr "" + +#: make-novice/CONTRIBUTING.md:63 +#: make-novice/bin/boilerplate/CONTRIBUTING.md:63 +# ordered list +msgid "4. If you wish to change CSS style files, tools," +msgstr "" + +#: make-novice/CONTRIBUTING.md:64 +#: make-novice/bin/boilerplate/CONTRIBUTING.md:64 +msgid " or HTML boilerplate for lessons or workshops stored in `_includes` or `_layouts`,\n" +" please work in ." +msgstr "" + +#: make-novice/CONTRIBUTING.md:67 +#: make-novice/bin/boilerplate/CONTRIBUTING.md:67 +# header +msgid "## What to Contribute" +msgstr "" + +#: make-novice/CONTRIBUTING.md:69 +msgid "There are many ways to contribute,\n" +"from writing new exercises and improving existing ones\n" +"to updating or filling in the documentation\n" +"and submitting [bug reports][issues]\n" +"about things that don't work, aren't clear, or are missing.\n" +"If you are looking for ideas,\n" +"please see [the list of issues for this repository][issues],\n" +"or the issues for [Data Carpentry][dc-issues]\n" +"and [Software Carpentry][swc-issues] projects." +msgstr "" + +#: make-novice/CONTRIBUTING.md:79 +#: make-novice/bin/boilerplate/CONTRIBUTING.md:79 +msgid "Comments on issues and reviews of pull requests are just as welcome:\n" +"we are smarter together than we are on our own.\n" +"Reviews from novices and newcomers are particularly valuable:\n" +"it's easy for people who have been using these lessons for a while\n" +"to forget how impenetrable some of this material can be,\n" +"so fresh eyes are always welcome." +msgstr "" + +#: make-novice/CONTRIBUTING.md:86 +#: make-novice/bin/boilerplate/CONTRIBUTING.md:86 +# header +msgid "## What *Not* to Contribute" +msgstr "" + +#: make-novice/CONTRIBUTING.md:88 +#: make-novice/bin/boilerplate/CONTRIBUTING.md:88 +msgid "Our lessons already contain more material than we can cover in a typical workshop,\n" +"so we are usually *not* looking for more concepts or tools to add to them.\n" +"As a rule,\n" +"if you want to introduce a new idea,\n" +"you must (a) estimate how long it will take to teach\n" +"and (b) explain what you would take out to make room for it.\n" +"The first encourages contributors to be honest about requirements;\n" +"the second, to think hard about priorities." +msgstr "" + +#: make-novice/CONTRIBUTING.md:97 +#: make-novice/bin/boilerplate/CONTRIBUTING.md:97 +msgid "We are also not looking for exercises or other material that only run on one platform.\n" +"Our workshops typically contain a mixture of Windows, Mac OS X, and Linux users;\n" +"in order to be usable,\n" +"our lessons must run equally well on all three." +msgstr "" + +#: make-novice/CONTRIBUTING.md:102 +#: make-novice/bin/boilerplate/CONTRIBUTING.md:102 +# header +msgid "## Using GitHub" +msgstr "" + +#: make-novice/CONTRIBUTING.md:104 +msgid "If you choose to contribute via GitHub,\n" +"you may want to look at\n" +"[How to Contribute to an Open Source Project on GitHub][how-contribute].\n" +"In brief:" +msgstr "" + +#: make-novice/CONTRIBUTING.md:109 +# ordered list +msgid "1. The published copy of the lesson is in the `gh-pages` branch of the repository" +msgstr "" + +#: make-novice/CONTRIBUTING.md:110 +msgid " (so that GitHub will regenerate it automatically).\n" +" Please create all branches from that,\n" +" and merge the [master repository][repo]'s `gh-pages` branch into your `gh-pages` branch\n" +" before starting work.\n" +" Please do *not* work directly in your `gh-pages` branch,\n" +" since that will make it difficult for you to work on other contributions." +msgstr "" + +#: make-novice/CONTRIBUTING.md:117 +# ordered list +msgid "2. We use [GitHub flow][github-flow] to manage changes:" +msgstr "" + +#: make-novice/CONTRIBUTING.md:118 +msgid " 1. Create a new branch in your desktop copy of this repository for each significant change.\n" +" 2. Commit the change in that branch.\n" +" 3. Push that branch to your fork of this repository on GitHub.\n" +" 4. Submit a pull request from that branch to the [master repository][repo].\n" +" 5. If you receive feedback,\n" +" make changes on your desktop and push to your branch on GitHub:\n" +" the pull request will update automatically." +msgstr "" + +#: make-novice/CONTRIBUTING.md:126 +msgid "Each lesson has two maintainers who review issues and pull requests\n" +"or encourage others to do so.\n" +"The maintainers are community volunteers,\n" +"and have final say over what gets merged into the lesson." +msgstr "" + +#: make-novice/CONTRIBUTING.md:131 +#: make-novice/bin/boilerplate/CONTRIBUTING.md:129 +# header +msgid "## Other Resources" +msgstr "" + +#: make-novice/CONTRIBUTING.md:133 +msgid "General discussion of [Software Carpentry][swc-site] and [Data Carpentry][dc-site]\n" +"happens on the [discussion mailing list][discuss-list],\n" +"which everyone is welcome to join.\n" +"You can also [reach us by email][contact]." +msgstr "" + +#: make-novice/CONTRIBUTING.md:138 +msgid "[contact]: mailto:admin@software-carpentry.org\n" +"[dc-issues]: https://github.com/issues?q=user%3Adatacarpentry\n" +"[dc-lessons]: http://datacarpentry.org/lessons/\n" +"[dc-site]: http://datacarpentry.org/\n" +"[discuss-list]: http://lists.software-carpentry.org/listinfo/discuss\n" +"[github]: http://github.com\n" +"[github-flow]: https://guides.github.com/introduction/flow/\n" +"[github-join]: https://github.com/join\n" +"[how-contribute]: https://egghead.io/series/how-to-contribute-to-an-open-source-project-on-github\n" +"[issues]: https://github.com/swcarpentry/make-novice/issues/\n" +"[repo]: https://github.com/swcarpentry/make-novice/\n" +"[swc-issues]: https://github.com/issues?q=user%3Aswcarpentry\n" +"[swc-lessons]: http://software-carpentry.org/lessons/\n" +"[swc-site]: http://software-carpentry.org/" +msgstr "" + +#: make-novice/LICENSE.md:1 +# Front Matter +msgid "---\n" +"layout: page\n" +"title: \"Licenses\"\n" +"root: .\n" +"---" +msgstr "" + +#: make-novice/LICENSE.md:6 +# header +msgid "## Instructional Material" +msgstr "" + +#: make-novice/LICENSE.md:8 +msgid "All Software Carpentry and Data Carpentry instructional material is\n" +"made available under the [Creative Commons Attribution\n" +"license][cc-by-human]. The following is a human-readable summary of\n" +"(and not a substitute for) the [full legal text of the CC BY 4.0\n" +"license][cc-by-legal]." +msgstr "" + +#: make-novice/LICENSE.md:14 +msgid "You are free:" +msgstr "" + +#: make-novice/LICENSE.md:16 +# unordered list +msgid "* to **Share**---copy and redistribute the material in any medium or format" +msgstr "" + +#: make-novice/LICENSE.md:17 +# unordered list +msgid "* to **Adapt**---remix, transform, and build upon the material" +msgstr "" + +#: make-novice/LICENSE.md:19 +msgid "for any purpose, even commercially." +msgstr "" + +#: make-novice/LICENSE.md:21 +msgid "The licensor cannot revoke these freedoms as long as you follow the\n" +"license terms." +msgstr "" + +#: make-novice/LICENSE.md:24 +msgid "Under the following terms:" +msgstr "" + +#: make-novice/LICENSE.md:26 +# unordered list +msgid "* **Attribution**---You must give appropriate credit (mentioning that" +msgstr "" + +#: make-novice/LICENSE.md:27 +msgid " your work is derived from work that is Copyright © Software\n" +" Carpentry and, where practical, linking to\n" +" http://software-carpentry.org/), provide a [link to the\n" +" license][cc-by-human], and indicate if changes were made. You may do\n" +" so in any reasonable manner, but not in any way that suggests the\n" +" licensor endorses you or your use." +msgstr "" + +#: make-novice/LICENSE.md:34 +msgid "**No additional restrictions**---You may not apply legal terms or\n" +"technological measures that legally restrict others from doing\n" +"anything the license permits. With the understanding that:" +msgstr "" + +#: make-novice/LICENSE.md:38 +msgid "Notices:" +msgstr "" + +#: make-novice/LICENSE.md:40 +# unordered list +msgid "* You do not have to comply with the license for elements of the" +msgstr "" + +#: make-novice/LICENSE.md:41 +msgid " material in the public domain or where your use is permitted by an\n" +" applicable exception or limitation.\n" +"* No warranties are given. The license may not give you all of the\n" +" permissions necessary for your intended use. For example, other\n" +" rights such as publicity, privacy, or moral rights may limit how you\n" +" use the material." +msgstr "" + +#: make-novice/LICENSE.md:48 +#: make-novice/setup.md:33 +# header +msgid "## Software" +msgstr "" + +#: make-novice/LICENSE.md:50 +msgid "Except where otherwise noted, the example programs and other software\n" +"provided by Software Carpentry and Data Carpentry are made available under the\n" +"[OSI][osi]-approved\n" +"[MIT license][mit-license]." +msgstr "" + +#: make-novice/LICENSE.md:55 +msgid "Permission is hereby granted, free of charge, to any person obtaining\n" +"a copy of this software and associated documentation files (the\n" +"\"Software\"), to deal in the Software without restriction, including\n" +"without limitation the rights to use, copy, modify, merge, publish,\n" +"distribute, sublicense, and/or sell copies of the Software, and to\n" +"permit persons to whom the Software is furnished to do so, subject to\n" +"the following conditions:" +msgstr "" + +#: make-novice/LICENSE.md:63 +msgid "The above copyright notice and this permission notice shall be\n" +"included in all copies or substantial portions of the Software." +msgstr "" + +#: make-novice/LICENSE.md:66 +msgid "THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n" +"EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n" +"MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n" +"NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\n" +"LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\n" +"OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\n" +"WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." +msgstr "" + +#: make-novice/LICENSE.md:74 +# header +msgid "## Trademark" +msgstr "" + +#: make-novice/LICENSE.md:76 +msgid "\"Software Carpentry\" and \"Data Carpentry\" and their respective logos\n" +"are registered trademarks of [Community Initiatives][CI]." +msgstr "" + +#: make-novice/LICENSE.md:79 +msgid "[cc-by-human]: https://creativecommons.org/licenses/by/4.0/\n" +"[cc-by-legal]: https://creativecommons.org/licenses/by/4.0/legalcode\n" +"[mit-license]: https://opensource.org/licenses/mit-license.html\n" +"[ci]: http://communityin.org/\n" +"[osi]: https://opensource.org" +msgstr "" + +#: make-novice/README.md:1 +msgid "[![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.3265286.svg)](https://doi.org/10.5281/zenodo.3265286)\n" +"[![Create a Slack Account with us](https://img.shields.io/badge/Create_Slack_Account-The_Carpentries-071159.svg)](https://swc-slack-invite.herokuapp.com/) \n" +" [![Slack Status](https://img.shields.io/badge/Slack_Channel-swc--make-E01563.svg)](https://swcarpentry.slack.com/messages/C9X2YCPT5) " +msgstr "" + +#: make-novice/README.md:5 +msgid "make-novice\n" +"===========" +msgstr "" + +#: make-novice/README.md:8 +msgid "An introduction to Make using reproducible papers as a motivating example.\n" +"Please see for a rendered version of this material,\n" +"[the lesson template documentation][lesson-example]\n" +"for instructions on formatting, building, and submitting material,\n" +"or run `make` in this directory for a list of helpful commands." +msgstr "" + +#: make-novice/README.md:14 +msgid "Maintainer(s):" +msgstr "" + +#: make-novice/README.md:16 +# unordered list +msgid "* [Gerard Capes][capes-gerard]" +msgstr "" + +#: make-novice/README.md:18 +msgid "[capes-gerard]: http://software-carpentry.org/team/#capes_gerard\n" +"[lesson-example]: https://swcarpentry.github.com/lesson-example/" +msgstr "" + +#: make-novice/_episodes/01-intro.md:1 +# Front Matter +msgid "---\n" +"title: \"Introduction\"\n" +"teaching: 25\n" +"exercises: 0\n" +"questions:\n" +"- \"How can I make my results easier to reproduce?\"\n" +"objectives:\n" +"- \"Explain what Make is for.\"\n" +"- \"Explain why Make differs from shell scripts.\"\n" +"- \"Name other popular build tools.\"\n" +"keypoints:\n" +"- \"Make allows us to specify what depends on what and how to update things that are out of date.\"\n" +"---" +msgstr "" + +#: make-novice/_episodes/01-intro.md:15 +msgid "Let's imagine that we're interested in\n" +"testing Zipf's Law in some of our favorite books." +msgstr "" + +#: make-novice/_episodes/01-intro.md:18 +# blockquote, which can be cascaded +msgid "> ## Zipf's Law" +msgstr "" + +#: make-novice/_episodes/01-intro.md:19 +msgid ">\n" +"> The most frequently-occurring word occurs approximately twice as\n" +"> often as the second most frequent word. This is [Zipf's Law][zipfs-law]." +msgstr "" + +#: make-novice/_episodes/01-intro.md:22 +#: make-novice/_episodes/01-intro.md:302 +#: make-novice/_episodes/02-makefiles.md:120 +#: make-novice/_episodes/02-makefiles.md:183 +#: make-novice/_episodes/02-makefiles.md:255 +#: make-novice/_episodes/02-makefiles.md:361 +#: make-novice/_episodes/03-variables.md:59 +#: make-novice/_episodes/04-dependencies.md:104 +#: make-novice/_episodes/04-dependencies.md:119 +#: make-novice/_episodes/04-dependencies.md:237 +#: make-novice/_episodes/05-patterns.md:73 +#: make-novice/_episodes/05-patterns.md:100 +#: make-novice/_episodes/06-variables.md:117 +#: make-novice/_episodes/07-functions.md:65 +#: make-novice/_episodes/07-functions.md:263 +#: make-novice/_episodes/08-self-doc.md:130 +# SC/DC Template label +msgid "{: .callout}" +msgstr "" + +#: make-novice/_episodes/01-intro.md:24 +msgid "We've compiled our raw data i.e. the books we want to analyze\n" +"and have prepared several Python scripts that together make up our\n" +"analysis pipeline." +msgstr "" + +#: make-novice/_episodes/01-intro.md:28 +msgid "Let's take quick look at one of the books using the command `head books/isles.txt`." +msgstr "" + +#: make-novice/_episodes/01-intro.md:30 +msgid "Our directory has the Python scripts and data files we will be working with:" +msgstr "" + +#: make-novice/_episodes/01-intro.md:32 +# code block +msgid "~~~\n" +"|- books\n" +"| |- abyss.txt\n" +"| |- isles.txt\n" +"| |- last.txt\n" +"| |- LICENSE_TEXTS.md\n" +"| |- sierra.txt\n" +"|- plotcounts.py\n" +"|- countwords.py\n" +"|- testzipf.py\n" +"~~~" +msgstr "" + +#: make-novice/_episodes/01-intro.md:43 +#: make-novice/_episodes/01-intro.md:68 +#: make-novice/_episodes/01-intro.md:90 +#: make-novice/_episodes/01-intro.md:113 +#: make-novice/_episodes/01-intro.md:143 +#: make-novice/_episodes/02-makefiles.md:85 +#: make-novice/_episodes/02-makefiles.md:127 +#: make-novice/_episodes/02-makefiles.md:154 +#: make-novice/_episodes/02-makefiles.md:168 +#: make-novice/_episodes/02-makefiles.md:205 +#: make-novice/_episodes/02-makefiles.md:223 +#: make-novice/_episodes/02-makefiles.md:284 +#: make-novice/_episodes/02-makefiles.md:304 +#: make-novice/_episodes/02-makefiles.md:333 +#: make-novice/_episodes/02-makefiles.md:379 +#: make-novice/_episodes/02-makefiles.md:392 +#: make-novice/_episodes/03-variables.md:113 +#: make-novice/_episodes/04-dependencies.md:90 +#: make-novice/_episodes/04-dependencies.md:140 +#: make-novice/_episodes/05-patterns.md:50 +#: make-novice/_episodes/05-patterns.md:65 +#: make-novice/_episodes/07-functions.md:79 +#: make-novice/_episodes/07-functions.md:118 +#: make-novice/_episodes/07-functions.md:159 +#: make-novice/_episodes/07-functions.md:186 +#: make-novice/_episodes/07-functions.md:202 +#: make-novice/_episodes/08-self-doc.md:32 +#: make-novice/_episodes/08-self-doc.md:117 +#: make-novice/_extras/guide.md:100 +#: make-novice/_extras/guide.md:112 +#: make-novice/_extras/guide.md:129 +#: make-novice/_extras/guide.md:161 +#: make-novice/reference.md:37 +# SC/DC Template label +msgid "{: .output}" +msgstr "" + +#: make-novice/_episodes/01-intro.md:45 +msgid "The first step is to count the frequency of each word in a book." +msgstr "" + +#: make-novice/_episodes/01-intro.md:47 +# code block +msgid "~~~\n" +"$ python countwords.py books/isles.txt isles.dat\n" +"~~~" +msgstr "" + +#: make-novice/_episodes/01-intro.md:50 +#: make-novice/_episodes/01-intro.md:57 +#: make-novice/_episodes/01-intro.md:81 +#: make-novice/_episodes/01-intro.md:99 +#: make-novice/_episodes/01-intro.md:120 +#: make-novice/_episodes/01-intro.md:129 +#: make-novice/_episodes/01-intro.md:136 +#: make-novice/_episodes/01-intro.md:184 +#: make-novice/_episodes/01-intro.md:192 +#: make-novice/_episodes/01-intro.md:228 +#: make-novice/_episodes/01-intro.md:252 +#: make-novice/_episodes/02-makefiles.md:70 +#: make-novice/_episodes/02-makefiles.md:78 +#: make-novice/_episodes/02-makefiles.md:102 +#: make-novice/_episodes/02-makefiles.md:138 +#: make-novice/_episodes/02-makefiles.md:145 +#: make-novice/_episodes/02-makefiles.md:161 +#: make-novice/_episodes/02-makefiles.md:198 +#: make-novice/_episodes/02-makefiles.md:216 +#: make-novice/_episodes/02-makefiles.md:277 +#: make-novice/_episodes/02-makefiles.md:297 +#: make-novice/_episodes/02-makefiles.md:326 +#: make-novice/_episodes/02-makefiles.md:371 +#: make-novice/_episodes/03-variables.md:103 +#: make-novice/_episodes/04-dependencies.md:54 +#: make-novice/_episodes/04-dependencies.md:81 +#: make-novice/_episodes/04-dependencies.md:130 +#: make-novice/_episodes/05-patterns.md:41 +#: make-novice/_episodes/05-patterns.md:58 +#: make-novice/_episodes/06-variables.md:103 +#: make-novice/_episodes/07-functions.md:72 +#: make-novice/_episodes/07-functions.md:110 +#: make-novice/_episodes/07-functions.md:149 +#: make-novice/_episodes/07-functions.md:175 +#: make-novice/_episodes/07-functions.md:193 +#: make-novice/_episodes/08-self-doc.md:25 +#: make-novice/_episodes/08-self-doc.md:107 +msgid "{: .language-bash}" +msgstr "" + +#: make-novice/_episodes/01-intro.md:52 +msgid "Let's take a quick peek at the result." +msgstr "" + +#: make-novice/_episodes/01-intro.md:54 +# code block +msgid "~~~\n" +"$ head -5 isles.dat\n" +"~~~" +msgstr "" + +#: make-novice/_episodes/01-intro.md:59 +msgid "This shows us the top 5 lines in the output file:" +msgstr "" + +#: make-novice/_episodes/01-intro.md:61 +# code block +msgid "~~~\n" +"the 3822 6.7371760973\n" +"of 2460 4.33632998414\n" +"and 1723 3.03719372466\n" +"to 1479 2.60708619778\n" +"a 1308 2.30565838181\n" +"~~~" +msgstr "" + +#: make-novice/_episodes/01-intro.md:70 +msgid "We can see that the file consists of one row per word.\n" +"Each row shows the word itself, the number of occurrences of that\n" +"word, and the number of occurrences as a percentage of the total\n" +"number of words in the text file." +msgstr "" + +#: make-novice/_episodes/01-intro.md:75 +msgid "We can do the same thing for a different book:" +msgstr "" + +#: make-novice/_episodes/01-intro.md:77 +# code block +msgid "~~~\n" +"$ python countwords.py books/abyss.txt abyss.dat\n" +"$ head -5 abyss.dat\n" +"~~~" +msgstr "" + +#: make-novice/_episodes/01-intro.md:83 +# code block +msgid "~~~\n" +"the 4044 6.35449402891\n" +"and 2807 4.41074795726\n" +"of 1907 2.99654305468\n" +"a 1594 2.50471401634\n" +"to 1515 2.38057825267\n" +"~~~" +msgstr "" + +#: make-novice/_episodes/01-intro.md:92 +msgid "Let's visualize the results.\n" +"The script `plotcounts.py` reads in a data file and plots the 10 most\n" +"frequently occurring words as a text-based bar plot:" +msgstr "" + +#: make-novice/_episodes/01-intro.md:96 +# code block +msgid "~~~\n" +"$ python plotcounts.py isles.dat ascii\n" +"~~~" +msgstr "" + +#: make-novice/_episodes/01-intro.md:101 +# code block +msgid "~~~\n" +"the ########################################################################\n" +"of ##############################################\n" +"and ################################\n" +"to ############################\n" +"a #########################\n" +"in ###################\n" +"is #################\n" +"that ############\n" +"by ###########\n" +"it ###########\n" +"~~~" +msgstr "" + +#: make-novice/_episodes/01-intro.md:115 +msgid "`plotcounts.py` can also show the plot graphically:" +msgstr "" + +#: make-novice/_episodes/01-intro.md:117 +# code block +msgid "~~~\n" +"$ python plotcounts.py isles.dat show\n" +"~~~" +msgstr "" + +#: make-novice/_episodes/01-intro.md:122 +msgid "Close the window to exit the plot." +msgstr "" + +#: make-novice/_episodes/01-intro.md:124 +msgid "`plotcounts.py` can also create the plot as an image file (e.g. a PNG file):" +msgstr "" + +#: make-novice/_episodes/01-intro.md:126 +# code block +msgid "~~~\n" +"$ python plotcounts.py isles.dat isles.png\n" +"~~~" +msgstr "" + +#: make-novice/_episodes/01-intro.md:131 +msgid "Finally, let's test Zipf's law for these books:" +msgstr "" + +#: make-novice/_episodes/01-intro.md:133 +# code block +msgid "~~~\n" +"$ python testzipf.py abyss.dat isles.dat\n" +"~~~" +msgstr "" + +#: make-novice/_episodes/01-intro.md:138 +# code block +msgid "~~~\n" +"Book First Second Ratio\n" +"abyss 4044 2807 1.44\n" +"isles 3822 2460 1.55\n" +"~~~" +msgstr "" + +#: make-novice/_episodes/01-intro.md:145 +msgid "So we're not too far off from Zipf's law." +msgstr "" + +#: make-novice/_episodes/01-intro.md:147 +msgid "Together these scripts implement a common workflow:" +msgstr "" + +#: make-novice/_episodes/01-intro.md:149 +# ordered list +msgid "1. Read a data file." +msgstr "" + +#: make-novice/_episodes/01-intro.md:150 +# ordered list +msgid "2. Perform an analysis on this data file." +msgstr "" + +#: make-novice/_episodes/01-intro.md:151 +# ordered list +msgid "3. Write the analysis results to a new file." +msgstr "" + +#: make-novice/_episodes/01-intro.md:152 +# ordered list +msgid "4. Plot a graph of the analysis results." +msgstr "" + +#: make-novice/_episodes/01-intro.md:153 +# ordered list +msgid "5. Save the graph as an image, so we can put it in a paper." +msgstr "" + +#: make-novice/_episodes/01-intro.md:154 +# ordered list +msgid "6. Make a summary table of the analyses" +msgstr "" + +#: make-novice/_episodes/01-intro.md:156 +msgid "Running `countwords.py` and `plotcounts.py` at the shell prompt, as we\n" +"have been doing, is fine for one or two files. If, however, we had 5\n" +"or 10 or 20 text files,\n" +"or if the number of steps in the pipeline were to expand, this could turn into\n" +"a lot of work.\n" +"Plus, no one wants to sit and wait for a command to finish, even just for 30\n" +"seconds." +msgstr "" + +#: make-novice/_episodes/01-intro.md:164 +msgid "The most common solution to the tedium of data processing is to write\n" +"a shell script that runs the whole pipeline from start to finish." +msgstr "" + +#: make-novice/_episodes/01-intro.md:167 +msgid "Using your text editor of choice (e.g. nano), add the following to a new file named\n" +"`run_pipeline.sh`." +msgstr "" + +#: make-novice/_episodes/01-intro.md:170 +# code block +msgid "~~~\n" +"# USAGE: bash run_pipeline.sh\n" +"# to produce plots for isles and abyss\n" +"# and the summary table for the Zipf's law tests\n" +"\n" +"python countwords.py books/isles.txt isles.dat\n" +"python countwords.py books/abyss.txt abyss.dat\n" +"\n" +"python plotcounts.py isles.dat isles.png\n" +"python plotcounts.py abyss.dat abyss.png\n" +"\n" +"# Generate summary table\n" +"python testzipf.py abyss.dat isles.dat > results.txt\n" +"~~~" +msgstr "" + +#: make-novice/_episodes/01-intro.md:186 +msgid "Run the script and check that the output is the same as before:" +msgstr "" + +#: make-novice/_episodes/01-intro.md:188 +# code block +msgid "~~~\n" +"$ bash run_pipeline.sh\n" +"$ cat results.txt\n" +"~~~" +msgstr "" + +#: make-novice/_episodes/01-intro.md:194 +msgid "This shell script solves several problems in computational reproducibility:" +msgstr "" + +#: make-novice/_episodes/01-intro.md:196 +# ordered list +msgid "1. It explicitly documents our pipeline," +msgstr "" + +#: make-novice/_episodes/01-intro.md:197 +msgid " making communication with colleagues (and our future selves) more efficient.\n" +"2. It allows us to type a single command, `bash run_pipeline.sh`, to\n" +" reproduce the full analysis.\n" +"3. It prevents us from _repeating_ typos or mistakes.\n" +" You might not get it right the first time, but once you fix something\n" +" it'll stay fixed." +msgstr "" + +#: make-novice/_episodes/01-intro.md:204 +msgid "Despite these benefits it has a few shortcomings." +msgstr "" + +#: make-novice/_episodes/01-intro.md:206 +msgid "Let's adjust the width of the bars in our plot produced by `plotcounts.py`." +msgstr "" + +#: make-novice/_episodes/01-intro.md:208 +msgid "Edit `plotcounts.py` so that the bars are 0.8 units wide instead of 1 unit.\n" +"(Hint: replace `width = 1.0` with `width = 0.8` in the definition of\n" +"`plot_word_counts`.)" +msgstr "" + +#: make-novice/_episodes/01-intro.md:212 +msgid "Now we want to recreate our figures.\n" +"We _could_ just `bash run_pipeline.sh` again.\n" +"That would work, but it could also be a big pain if counting words takes\n" +"more than a few seconds.\n" +"The word counting routine hasn't changed; we shouldn't need to recreate\n" +"those files." +msgstr "" + +#: make-novice/_episodes/01-intro.md:219 +msgid "Alternatively, we could manually rerun the plotting for each word-count file.\n" +"(Experienced shell scripters can make this easier on themselves using a\n" +"for-loop.)" +msgstr "" + +#: make-novice/_episodes/01-intro.md:223 +# code block +msgid "~~~\n" +"for book in abyss isles; do\n" +" python plotcounts.py $book.dat $book.png\n" +"done\n" +"~~~" +msgstr "" + +#: make-novice/_episodes/01-intro.md:230 +msgid "With this approach, however,\n" +"we don't get many of the benefits of having a shell script in the first place." +msgstr "" + +#: make-novice/_episodes/01-intro.md:233 +msgid "Another popular option is to comment out a subset of the lines in\n" +"`run_pipeline.sh`:" +msgstr "" + +#: make-novice/_episodes/01-intro.md:236 +# code block +msgid "~~~\n" +"# USAGE: bash run_pipeline.sh\n" +"# to produce plots for isles and abyss\n" +"# and the summary table for the Zipf's law tests.\n" +"\n" +"# These lines are commented out because they don't need to be rerun.\n" +"#python countwords.py books/isles.txt isles.dat\n" +"#python countwords.py books/abyss.txt abyss.dat\n" +"\n" +"python plotcounts.py isles.dat isles.png\n" +"python plotcounts.py abyss.dat abyss.png\n" +"\n" +"# Generate summary table\n" +"# This line is also commented out because it doesn't need to be rerun.\n" +"#python testzipf.py abyss.dat isles.dat > results.txt\n" +"~~~" +msgstr "" + +#: make-novice/_episodes/01-intro.md:254 +msgid "Then, we would run our modified shell script using `bash run_pipeline.sh`." +msgstr "" + +#: make-novice/_episodes/01-intro.md:256 +msgid "But commenting out these lines, and subsequently uncommenting them,\n" +"can be a hassle and source of errors in complicated pipelines." +msgstr "" + +#: make-novice/_episodes/01-intro.md:259 +msgid "What we really want is an executable _description_ of our pipeline that\n" +"allows software to do the tricky part for us:\n" +"figuring out what steps need to be rerun." +msgstr "" + +#: make-novice/_episodes/01-intro.md:263 +msgid "Make was developed by\n" +"Stuart Feldman in 1977 as a Bell Labs summer intern, and remains in\n" +"widespread use today. Make can execute the commands needed to run our\n" +"analysis and plot our results. Like shell scripts it allows us to\n" +"execute complex sequences of commands via a single shell\n" +"command. Unlike shell scripts it explicitly records the dependencies\n" +"between files - what files are needed to create what other files -\n" +"and so can determine when to recreate our data files or\n" +"image files, if our text files change. Make can be used for any\n" +"commands that follow the general pattern of processing files to create\n" +"new files, for example:" +msgstr "" + +#: make-novice/_episodes/01-intro.md:275 +# unordered list +msgid "* Run analysis scripts on raw data files to get data files that" +msgstr "" + +#: make-novice/_episodes/01-intro.md:276 +msgid " summarize the raw data (e.g. creating files with word counts from book text).\n" +"* Run visualization scripts on data files to produce plots\n" +" (e.g. creating images of word counts).\n" +"* Parse and combine text files and plots to create papers.\n" +"* Compile source code into executable programs or libraries." +msgstr "" + +#: make-novice/_episodes/01-intro.md:282 +msgid "There are now many build tools available, for example [Apache\n" +"ANT][apache-ant], [doit][doit], and [nmake][nmake] for Windows. There\n" +"are also build tools that build scripts for use with these build tools\n" +"and others e.g. [GNU Autoconf][autoconf] and [CMake][cmake]. Which is\n" +"best for you depends on your requirements, intended usage, and\n" +"operating system. However, they all share the same fundamental\n" +"concepts as Make." +msgstr "" + +#: make-novice/_episodes/01-intro.md:290 +# blockquote, which can be cascaded +msgid "> ## Why Use Make if it is Almost 40 Years Old?" +msgstr "" + +#: make-novice/_episodes/01-intro.md:291 +msgid ">\n" +"> Today, researchers working with legacy codes in C or FORTRAN, which\n" +"> are very common in high-performance computing, will, very likely\n" +"> encounter Make.\n" +">\n" +"> Researchers are also finding Make of use in implementing\n" +"> reproducible research workflows, automating data analysis and\n" +"> visualisation (using Python or R) and combining tables and plots\n" +"> with text to produce reports and papers for publication.\n" +">\n" +"> Make's fundamental concepts are common across build tools." +msgstr "" + +#: make-novice/_episodes/01-intro.md:304 +msgid "[GNU Make][gnu-make] is a free, fast, well-documented, and very popular\n" +"Make implementation. From now on, we will focus on it, and when we say\n" +"Make, we mean GNU Make." +msgstr "" + +#: make-novice/_episodes/01-intro.md:308 +msgid "[autoconf]: http://www.gnu.org/software/autoconf/autoconf.html\n" +"[apache-ant]: http://ant.apache.org/\n" +"[cmake]: http://www.cmake.org/\n" +"[doit]: http://pydoit.org/\n" +"[gnu-make]: http://www.gnu.org/software/make/\n" +"[nmake]: https://msdn.microsoft.com/en-us/library/dd9y37ha.aspx\n" +"[zipfs-law]: http://en.wikipedia.org/wiki/Zipf%27s_law" +msgstr "" + +#: make-novice/_episodes/02-makefiles.md:1 +# Front Matter +msgid "---\n" +"title: \"Makefiles\"\n" +"teaching: 30\n" +"exercises: 10\n" +"questions:\n" +"- \"How do I write a simple Makefile?\"\n" +"objectives:\n" +"- \"Recognize the key parts of a Makefile, rules, targets, dependencies and actions.\"\n" +"- \"Write a simple Makefile.\"\n" +"- \"Run Make from the shell.\"\n" +"- \"Explain when and why to mark targets as `.PHONY`.\"\n" +"- \"Explain constraints on dependencies.\"\n" +"keypoints:\n" +"- \"Use `#` for comments in Makefiles.\"\n" +"- \"Write rules as `target: dependencies`.\"\n" +"- \"Specify update actions in a tab-indented block under the rule.\"\n" +"- \"Use `.PHONY` to mark targets that don't correspond to files.\"\n" +"---" +msgstr "" + +#: make-novice/_episodes/02-makefiles.md:20 +msgid "Create a file, called `Makefile`, with the following content:" +msgstr "" + +#: make-novice/_episodes/02-makefiles.md:22 +# code block +msgid "~~~\n" +"# Count words.\n" +"isles.dat : books/isles.txt\n" +" python countwords.py books/isles.txt isles.dat\n" +"~~~" +msgstr "" + +#: make-novice/_episodes/02-makefiles.md:27 +#: make-novice/_episodes/02-makefiles.md:191 +#: make-novice/_episodes/02-makefiles.md:267 +#: make-novice/_episodes/02-makefiles.md:319 +#: make-novice/_episodes/02-makefiles.md:344 +#: make-novice/_episodes/02-makefiles.md:412 +#: make-novice/_episodes/03-variables.md:41 +#: make-novice/_episodes/03-variables.md:70 +#: make-novice/_episodes/03-variables.md:79 +#: make-novice/_episodes/03-variables.md:91 +#: make-novice/_episodes/04-dependencies.md:40 +#: make-novice/_episodes/04-dependencies.md:73 +#: make-novice/_episodes/04-dependencies.md:231 +#: make-novice/_episodes/05-patterns.md:24 +#: make-novice/_episodes/05-patterns.md:94 +#: make-novice/_episodes/05-patterns.md:112 +#: make-novice/_episodes/06-variables.md:26 +#: make-novice/_episodes/06-variables.md:39 +#: make-novice/_episodes/06-variables.md:87 +#: make-novice/_episodes/06-variables.md:94 +#: make-novice/_episodes/07-functions.md:36 +#: make-novice/_episodes/07-functions.md:48 +#: make-novice/_episodes/07-functions.md:57 +#: make-novice/_episodes/07-functions.md:93 +#: make-novice/_episodes/07-functions.md:103 +#: make-novice/_episodes/07-functions.md:133 +#: make-novice/_episodes/07-functions.md:141 +#: make-novice/_episodes/07-functions.md:167 +#: make-novice/_episodes/07-functions.md:236 +#: make-novice/_episodes/07-functions.md:250 +#: make-novice/_episodes/08-self-doc.md:43 +#: make-novice/_episodes/08-self-doc.md:83 +#: make-novice/_episodes/08-self-doc.md:96 +msgid "{: .language-make}" +msgstr "" + +#: make-novice/_episodes/02-makefiles.md:29 +msgid "This is a [build file]({{ page.root }}/reference#build-file), which for\n" +"Make is called a [Makefile]({{ page.root }}/reference#makefile) - a file executed\n" +"by Make. Note how it resembles one of the lines from our shell script." +msgstr "" + +#: make-novice/_episodes/02-makefiles.md:33 +msgid "Let us go through each line in turn:" +msgstr "" + +#: make-novice/_episodes/02-makefiles.md:35 +# unordered list +msgid "* `#` denotes a *comment*. Any text from `#` to the end of the line is" +msgstr "" + +#: make-novice/_episodes/02-makefiles.md:36 +msgid " ignored by Make.\n" +"* `isles.dat` is a [target]({{ page.root }}/reference#target), a file to be\n" +" created, or built.\n" +"* `books/isles.txt` is a [dependency]({{ page.root }}/reference#dependency), a\n" +" file that is needed to build or update the target. Targets can have\n" +" zero or more dependencies.\n" +"* A colon, `:`, separates targets from dependencies.\n" +"* `python countwords.py books/isles.txt isles.dat` is an\n" +" [action]({{ page.root }}/reference#action), a command to run to build or update\n" +" the target using the dependencies. Targets can have zero or more\n" +" actions. These actions form a recipe to build the target\n" +" from its dependencies and can be considered to be\n" +" a shell script.\n" +"* Actions are indented using a single TAB character, *not* 8 spaces. This\n" +" is a legacy of Make's 1970's origins. If the difference between\n" +" spaces and a TAB character isn’t obvious in your editor, try moving\n" +" your cursor from one side of the TAB to the other. It should jump\n" +" four or more spaces.\n" +"* Together, the target, dependencies, and actions form a\n" +" [rule]({{ page.root }}/reference#rule)." +msgstr "" + +#: make-novice/_episodes/02-makefiles.md:57 +msgid "Our rule above describes how to build the target `isles.dat` using the\n" +"action `python countwords.py` and the dependency `books/isles.txt`." +msgstr "" + +#: make-novice/_episodes/02-makefiles.md:60 +msgid "Information that was implicit in our shell script - that we are\n" +"generating a file called `isles.dat` and that creating this file\n" +"requires `books/isles.txt` - is now made explicit by Make's syntax." +msgstr "" + +#: make-novice/_episodes/02-makefiles.md:64 +msgid "Let's first ensure we start from scratch and delete the `.dat` and `.png`\n" +"files we created earlier:" +msgstr "" + +#: make-novice/_episodes/02-makefiles.md:67 +# code block +msgid "~~~\n" +"$ rm *.dat *.png\n" +"~~~" +msgstr "" + +#: make-novice/_episodes/02-makefiles.md:72 +msgid "By default, Make looks for a Makefile, called `Makefile`, and we can\n" +"run Make as follows:" +msgstr "" + +#: make-novice/_episodes/02-makefiles.md:75 +#: make-novice/_episodes/02-makefiles.md:158 +#: make-novice/_episodes/02-makefiles.md:195 +#: make-novice/reference.md:10 +# code block +msgid "~~~\n" +"$ make\n" +"~~~" +msgstr "" + +#: make-novice/_episodes/02-makefiles.md:80 +msgid "By default, Make prints out the actions it executes:" +msgstr "" + +#: make-novice/_episodes/02-makefiles.md:82 +#: make-novice/_episodes/02-makefiles.md:165 +# code block +msgid "~~~\n" +"python countwords.py books/isles.txt isles.dat\n" +"~~~" +msgstr "" + +#: make-novice/_episodes/02-makefiles.md:87 +msgid "If we see," +msgstr "" + +#: make-novice/_episodes/02-makefiles.md:89 +#: make-novice/reference.md:58 +# code block +msgid "~~~\n" +"Makefile:3: *** missing separator. Stop.\n" +"~~~" +msgstr "" + +#: make-novice/_episodes/02-makefiles.md:92 +#: make-novice/reference.md:61 +#: make-novice/reference.md:72 +# SC/DC Template label +msgid "{: .error}" +msgstr "" + +#: make-novice/_episodes/02-makefiles.md:94 +msgid "then we have used a space instead of a TAB characters to indent one of\n" +"our actions." +msgstr "" + +#: make-novice/_episodes/02-makefiles.md:97 +msgid "Let's see if we got what we expected." +msgstr "" + +#: make-novice/_episodes/02-makefiles.md:99 +# code block +msgid "~~~\n" +"head -5 isles.dat\n" +"~~~" +msgstr "" + +#: make-novice/_episodes/02-makefiles.md:104 +msgid "The first 5 lines of `isles.dat` should look exactly like before." +msgstr "" + +#: make-novice/_episodes/02-makefiles.md:106 +# blockquote, which can be cascaded +msgid "> ## Makefiles Do Not Have to be Called `Makefile`" +msgstr "" + +#: make-novice/_episodes/02-makefiles.md:107 +msgid ">\n" +"> We don't have to call our Makefile `Makefile`. However, if we call it\n" +"> something else we need to tell Make where to find it. This we can do\n" +"> using `-f` flag. For example, if our Makefile is named `MyOtherMakefile`:\n" +">\n" +"> ~~~\n" +"> $ make -f MyOtherMakefile\n" +"> ~~~\n" +"> {: .language-bash}\n" +">\n" +">\n" +"> Sometimes, the suffix `.mk` will be used to identify Makefiles that\n" +"> are not called `Makefile` e.g. `install.mk`, `common.mk` etc." +msgstr "" + +#: make-novice/_episodes/02-makefiles.md:122 +msgid "When we re-run our Makefile, Make now informs us that:" +msgstr "" + +#: make-novice/_episodes/02-makefiles.md:124 +#: make-novice/_episodes/02-makefiles.md:202 +#: make-novice/reference.md:34 +# code block +msgid "~~~\n" +"make: `isles.dat' is up to date.\n" +"~~~" +msgstr "" + +#: make-novice/_episodes/02-makefiles.md:129 +msgid "This is because our target, `isles.dat`, has now been created, and\n" +"Make will not create it again. To see how this works, let's pretend to\n" +"update one of the text files. Rather than opening the file in an\n" +"editor, we can use the shell `touch` command to update its timestamp\n" +"(which would happen if we did edit the file):" +msgstr "" + +#: make-novice/_episodes/02-makefiles.md:135 +# code block +msgid "~~~\n" +"$ touch books/isles.txt\n" +"~~~" +msgstr "" + +#: make-novice/_episodes/02-makefiles.md:140 +msgid "If we compare the timestamps of `books/isles.txt` and `isles.dat`," +msgstr "" + +#: make-novice/_episodes/02-makefiles.md:142 +# code block +msgid "~~~\n" +"$ ls -l books/isles.txt isles.dat\n" +"~~~" +msgstr "" + +#: make-novice/_episodes/02-makefiles.md:147 +msgid "then we see that `isles.dat`, the target, is now older\n" +"than`books/isles.txt`, its dependency:" +msgstr "" + +#: make-novice/_episodes/02-makefiles.md:150 +# code block +msgid "~~~\n" +"-rw-r--r-- 1 mjj Administ 323972 Jun 12 10:35 books/isles.txt\n" +"-rw-r--r-- 1 mjj Administ 182273 Jun 12 09:58 isles.dat\n" +"~~~" +msgstr "" + +#: make-novice/_episodes/02-makefiles.md:156 +msgid "If we run Make again," +msgstr "" + +#: make-novice/_episodes/02-makefiles.md:163 +msgid "then it recreates `isles.dat`:" +msgstr "" + +#: make-novice/_episodes/02-makefiles.md:170 +msgid "When it is asked to build a target, Make checks the 'last modification\n" +"time' of both the target and its dependencies. If any dependency has\n" +"been updated since the target, then the actions are re-run to update\n" +"the target. Using this approach, Make knows to only rebuild the files\n" +"that, either directly or indirectly, depend on the file that\n" +"changed. This is called an [incremental\n" +"build]({{ page.root }}/reference#incremental-build)." +msgstr "" + +#: make-novice/_episodes/02-makefiles.md:178 +# blockquote, which can be cascaded +msgid "> ## Makefiles as Documentation" +msgstr "" + +#: make-novice/_episodes/02-makefiles.md:179 +msgid ">\n" +"> By explicitly recording the inputs to and outputs from steps in our\n" +"> analysis and the dependencies between files, Makefiles act as a type\n" +"> of documentation, reducing the number of things we have to remember." +msgstr "" + +#: make-novice/_episodes/02-makefiles.md:185 +msgid "Let's add another rule to the end of `Makefile`:" +msgstr "" + +#: make-novice/_episodes/02-makefiles.md:187 +# code block +msgid "~~~\n" +"abyss.dat : books/abyss.txt\n" +" python countwords.py books/abyss.txt abyss.dat\n" +"~~~" +msgstr "" + +#: make-novice/_episodes/02-makefiles.md:193 +#: make-novice/_episodes/02-makefiles.md:321 +#: make-novice/_episodes/07-functions.md:105 +msgid "If we run Make," +msgstr "" + +#: make-novice/_episodes/02-makefiles.md:200 +#: make-novice/_episodes/02-makefiles.md:279 +#: make-novice/_episodes/02-makefiles.md:328 +#: make-novice/_episodes/04-dependencies.md:83 +#: make-novice/_episodes/04-dependencies.md:132 +#: make-novice/_episodes/05-patterns.md:43 +#: make-novice/_episodes/07-functions.md:112 +msgid "then we get:" +msgstr "" + +#: make-novice/_episodes/02-makefiles.md:207 +msgid "Nothing happens because Make attempts to build the first target it\n" +"finds in the Makefile, the [default\n" +"target]({{ page.root }}/reference#default-target), which is `isles.dat` which is\n" +"already up-to-date. We need to explicitly tell Make we want to build\n" +"`abyss.dat`:" +msgstr "" + +#: make-novice/_episodes/02-makefiles.md:213 +# code block +msgid "~~~\n" +"$ make abyss.dat\n" +"~~~" +msgstr "" + +#: make-novice/_episodes/02-makefiles.md:218 +msgid "Now, we get:" +msgstr "" + +#: make-novice/_episodes/02-makefiles.md:220 +# code block +msgid "~~~\n" +"python countwords.py books/abyss.txt abyss.dat\n" +"~~~" +msgstr "" + +#: make-novice/_episodes/02-makefiles.md:225 +# blockquote, which can be cascaded +msgid "> ## \"Up to Date\" Versus \"Nothing to be Done\"" +msgstr "" + +#: make-novice/_episodes/02-makefiles.md:226 +msgid ">\n" +"> If we ask Make to build a file that already exists and is up to\n" +"> date, then Make informs us that:\n" +">\n" +"> ~~~\n" +"> make: `isles.dat' is up to date.\n" +"> ~~~" +msgstr "" + +#: make-novice/_episodes/02-makefiles.md:233 +#: make-novice/_episodes/02-makefiles.md:246 +# SC/DC Template label +msgid "> {: .output}" +msgstr "" + +#: make-novice/_episodes/02-makefiles.md:234 +msgid ">\n" +"> If we ask Make to build a file that exists but for which there is\n" +"> no rule in our Makefile, then we get message like:\n" +">\n" +"> ~~~\n" +"> $ make countwords.py\n" +"> ~~~\n" +"> {: .language-bash}\n" +">\n" +"> ~~~\n" +"> make: Nothing to be done for `countwords.py'.\n" +"> ~~~" +msgstr "" + +#: make-novice/_episodes/02-makefiles.md:247 +msgid ">\n" +"> `up to date` means that the Makefile has a rule with one or more actions\n" +"> whose target is the name of a file (or directory) and the file is up to date.\n" +">\n" +"> `Nothing to be done` means that\n" +"> the file exists but either :\n" +"> - the Makefile has no rule for it, or\n" +"> - the Makefile has a rule for it, but that rule has no actions" +msgstr "" + +#: make-novice/_episodes/02-makefiles.md:258 +msgid "We may want to remove all our data files so we can explicitly recreate\n" +"them all. We can introduce a new target, and associated rule, to do\n" +"this. We will call it `clean`, as this is a common name for rules that\n" +"delete auto-generated files, like our `.dat` files:" +msgstr "" + +#: make-novice/_episodes/02-makefiles.md:263 +# code block +msgid "~~~\n" +"clean :\n" +" rm -f *.dat\n" +"~~~" +msgstr "" + +#: make-novice/_episodes/02-makefiles.md:269 +msgid "This is an example of a rule that has no dependencies. `clean` has no\n" +"dependencies on any `.dat` file as it makes no sense to create these\n" +"just to remove them. We just want to remove the data files whether or\n" +"not they exist. If we run Make and specify this target," +msgstr "" + +#: make-novice/_episodes/02-makefiles.md:274 +#: make-novice/_episodes/02-makefiles.md:323 +# code block +msgid "~~~\n" +"$ make clean\n" +"~~~" +msgstr "" + +#: make-novice/_episodes/02-makefiles.md:281 +#: make-novice/_episodes/02-makefiles.md:330 +# code block +msgid "~~~\n" +"rm -f *.dat\n" +"~~~" +msgstr "" + +#: make-novice/_episodes/02-makefiles.md:286 +msgid "There is no actual thing built called `clean`. Rather, it is a\n" +"short-hand that we can use to execute a useful sequence of\n" +"actions. Such targets, though very useful, can lead to problems. For\n" +"example, let us recreate our data files, create a directory called\n" +"`clean`, then run Make:" +msgstr "" + +#: make-novice/_episodes/02-makefiles.md:292 +# code block +msgid "~~~\n" +"$ make isles.dat abyss.dat\n" +"$ mkdir clean\n" +"$ make clean\n" +"~~~" +msgstr "" + +#: make-novice/_episodes/02-makefiles.md:299 +#: make-novice/_episodes/03-variables.md:105 +#: make-novice/_episodes/07-functions.md:74 +#: make-novice/_episodes/07-functions.md:151 +#: make-novice/_episodes/07-functions.md:177 +msgid "We get:" +msgstr "" + +#: make-novice/_episodes/02-makefiles.md:301 +# code block +msgid "~~~\n" +"make: `clean' is up to date.\n" +"~~~" +msgstr "" + +#: make-novice/_episodes/02-makefiles.md:306 +msgid "Make finds a file (or directory) called `clean` and, as its `clean`\n" +"rule has no dependencies, assumes that `clean` has been built and is\n" +"up-to-date and so does not execute the rule's actions. As we are using\n" +"`clean` as a short-hand, we need to tell Make to always execute this\n" +"rule if we run `make clean`, by telling Make that this is a\n" +"[phony target]({{ page.root }}/reference#phony-target), that it does not build\n" +"anything. This we do by marking the target as `.PHONY`:" +msgstr "" + +#: make-novice/_episodes/02-makefiles.md:314 +# code block +msgid "~~~\n" +".PHONY : clean\n" +"clean :\n" +" rm -f *.dat\n" +"~~~" +msgstr "" + +#: make-novice/_episodes/02-makefiles.md:335 +msgid "We can add a similar command to create all the data files. We can put\n" +"this at the top of our Makefile so that it is the [default\n" +"target]({{ page.root }}/reference#default-target), which is executed by default\n" +"if no target is given to the `make` command:" +msgstr "" + +#: make-novice/_episodes/02-makefiles.md:340 +# code block +msgid "~~~\n" +".PHONY : dats\n" +"dats : isles.dat abyss.dat\n" +"~~~" +msgstr "" + +#: make-novice/_episodes/02-makefiles.md:346 +msgid "This is an example of a rule that has dependencies that are targets of\n" +"other rules. When Make runs, it will check to see if the dependencies\n" +"exist and, if not, will see if rules are available that will create\n" +"these. If such rules exist it will invoke these first, otherwise\n" +"Make will raise an error." +msgstr "" + +#: make-novice/_episodes/02-makefiles.md:352 +# blockquote, which can be cascaded +msgid "> ## Dependencies" +msgstr "" + +#: make-novice/_episodes/02-makefiles.md:353 +msgid ">\n" +"> The order of rebuilding dependencies is arbitrary. You should not\n" +"> assume that they will be built in the order in which they are\n" +"> listed.\n" +">\n" +"> Dependencies must form a directed acyclic graph. A target cannot\n" +"> depend on a dependency which itself, or one of its dependencies,\n" +"> depends on that target." +msgstr "" + +#: make-novice/_episodes/02-makefiles.md:363 +msgid "This rule is also an example of a rule that has no actions. It is used\n" +"purely to trigger the build of its dependencies, if needed." +msgstr "" + +#: make-novice/_episodes/02-makefiles.md:366 +msgid "If we run," +msgstr "" + +#: make-novice/_episodes/02-makefiles.md:368 +# code block +msgid "~~~\n" +"$ make dats\n" +"~~~" +msgstr "" + +#: make-novice/_episodes/02-makefiles.md:373 +msgid "then Make creates the data files:" +msgstr "" + +#: make-novice/_episodes/02-makefiles.md:375 +# code block +msgid "~~~\n" +"python countwords.py books/isles.txt isles.dat\n" +"python countwords.py books/abyss.txt abyss.dat\n" +"~~~" +msgstr "" + +#: make-novice/_episodes/02-makefiles.md:381 +msgid "If we run `dats` again, then Make will see that the dependencies (isles.dat\n" +"and abyss.dat) are already up to date. \n" +"Given the target `dats` has no actions, there is `nothing to be done`:\n" +"~~~\n" +"$ make dats\n" +"~~~\n" +"{: .language-bash}" +msgstr "" + +#: make-novice/_episodes/02-makefiles.md:389 +# code block +msgid "~~~\n" +"make: Nothing to be done for `dats'.\n" +"~~~" +msgstr "" + +#: make-novice/_episodes/02-makefiles.md:395 +#: make-novice/_episodes/04-dependencies.md:15 +msgid "Our Makefile now looks like this:" +msgstr "" + +#: make-novice/_episodes/02-makefiles.md:397 +# code block +msgid "~~~\n" +"# Count words.\n" +".PHONY : dats\n" +"dats : isles.dat abyss.dat\n" +"\n" +"isles.dat : books/isles.txt\n" +" python countwords.py books/isles.txt isles.dat\n" +"\n" +"abyss.dat : books/abyss.txt\n" +" python countwords.py books/abyss.txt abyss.dat\n" +"\n" +".PHONY : clean\n" +"clean :\n" +" rm -f *.dat\n" +"~~~" +msgstr "" + +#: make-novice/_episodes/02-makefiles.md:414 +msgid "The following figure shows a graph of the dependencies embodied within\n" +"our Makefile, involved in building the `dats` target:" +msgstr "" + +#: make-novice/_episodes/02-makefiles.md:417 +msgid "![Dependencies represented within the Makefile](../fig/02-makefile.png \"Dependencies represented within the Makefile\")" +msgstr "" + +#: make-novice/_episodes/02-makefiles.md:419 +# blockquote, which can be cascaded +msgid "> ## Write Two New Rules" +msgstr "" + +#: make-novice/_episodes/02-makefiles.md:420 +msgid ">\n" +"> 1. Write a new rule for `last.dat`, created from `books/last.txt`.\n" +"> 2. Update the `dats` rule with this target.\n" +"> 3. Write a new rule for `results.txt`, which creates the summary\n" +"> table. The rule needs to:\n" +"> * Depend upon each of the three `.dat` files.\n" +"> * Invoke the action `python testzipf.py abyss.dat isles.dat last.dat > results.txt`.\n" +"> 4. Put this rule at the top of the Makefile so that it is the default target.\n" +"> 5. Update `clean` so that it removes `results.txt`.\n" +">\n" +"> The starting Makefile is [here]({{ page.root }}/code/02-makefile/Makefile).\n" +">\n" +"> > ## Solution\n" +"> > See [this file]({{ page.root }}/code/02-makefile-challenge/Makefile) for a solution." +msgstr "" + +#: make-novice/_episodes/02-makefiles.md:434 +#: make-novice/_episodes/03-variables.md:146 +#: make-novice/_episodes/03-variables.md:174 +#: make-novice/_episodes/04-dependencies.md:171 +#: make-novice/_episodes/04-dependencies.md:216 +#: make-novice/_episodes/06-variables.md:69 +#: make-novice/_episodes/09-conclusion.md:51 +#: make-novice/_episodes/09-conclusion.md:99 +#: make-novice/_episodes/09-conclusion.md:115 +#: make-novice/_episodes/09-conclusion.md:130 +# SC/DC Template label +msgid "> {: .solution}" +msgstr "" + +#: make-novice/_episodes/02-makefiles.md:435 +#: make-novice/_episodes/03-variables.md:147 +#: make-novice/_episodes/03-variables.md:175 +#: make-novice/_episodes/04-dependencies.md:172 +#: make-novice/_episodes/04-dependencies.md:217 +#: make-novice/_episodes/06-variables.md:70 +#: make-novice/_episodes/07-functions.md:282 +#: make-novice/_episodes/09-conclusion.md:52 +#: make-novice/_episodes/09-conclusion.md:100 +#: make-novice/_episodes/09-conclusion.md:116 +#: make-novice/_episodes/09-conclusion.md:131 +# SC/DC Template label +msgid "{: .challenge}" +msgstr "" + +#: make-novice/_episodes/02-makefiles.md:437 +msgid "The following figure shows the dependencies embodied within our\n" +"Makefile, involved in building the `results.txt` target:" +msgstr "" + +#: make-novice/_episodes/02-makefiles.md:440 +msgid "![results.txt dependencies represented within the Makefile](../fig/02-makefile-challenge.png \"results.txt dependencies represented within the Makefile\")" +msgstr "" + +#: make-novice/_episodes/03-variables.md:1 +# Front Matter +msgid "---\n" +"title: \"Automatic Variables\"\n" +"teaching: 10\n" +"exercises: 5\n" +"questions:\n" +"- \"How can I abbreviate the rules in my Makefiles?\"\n" +"objectives:\n" +"- \"Use Make automatic variables to remove duplication in a Makefile.\"\n" +"- \"Explain why shell wildcards in dependencies can cause problems.\"\n" +"keypoints:\n" +"- \"Use `$@` to refer to the target of the current rule.\"\n" +"- \"Use `$^` to refer to the dependencies of the current rule.\"\n" +"- \"Use `$<` to refer to the first dependency of the current rule.\"\n" +"---" +msgstr "" + +#: make-novice/_episodes/03-variables.md:16 +msgid "After the exercise at the end of the previous episode, our Makefile looked like this:" +msgstr "" + +#: make-novice/_episodes/03-variables.md:18 +# code block +msgid "~~~\n" +"# Generate summary table.\n" +"results.txt : isles.dat abyss.dat last.dat\n" +" python testzipf.py abyss.dat isles.dat last.dat > results.txt\n" +"\n" +"# Count words.\n" +".PHONY : dats\n" +"dats : isles.dat abyss.dat last.dat\n" +"\n" +"isles.dat : books/isles.txt\n" +" python countwords.py books/isles.txt isles.dat\n" +"\n" +"abyss.dat : books/abyss.txt\n" +" python countwords.py books/abyss.txt abyss.dat\n" +"\n" +"last.dat : books/last.txt\n" +" python countwords.py books/last.txt last.dat\n" +"\n" +".PHONY : clean\n" +"clean :\n" +" rm -f *.dat\n" +" rm -f results.txt\n" +"~~~" +msgstr "" + +#: make-novice/_episodes/03-variables.md:43 +msgid "Our Makefile has a lot of duplication. For example, the names of text\n" +"files and data files are repeated in many places throughout the\n" +"Makefile. Makefiles are a form of code and, in any code, repeated code\n" +"can lead to problems e.g. we rename a data file in one part of the\n" +"Makefile but forget to rename it elsewhere." +msgstr "" + +#: make-novice/_episodes/03-variables.md:49 +# blockquote, which can be cascaded +msgid "> ## D.R.Y. (Don't Repeat Yourself)" +msgstr "" + +#: make-novice/_episodes/03-variables.md:50 +msgid ">\n" +"> In many programming languages, the bulk of the language features are\n" +"> there to allow the programmer to describe long-winded computational\n" +"> routines as short, expressive, beautiful code. Features in Python\n" +"> or R or Java, such as user-defined variables and functions are useful in\n" +"> part because they mean we don't have to write out (or think about)\n" +"> all of the details over and over again. This good habit of writing\n" +"> things out only once is known as the \"Don't Repeat Yourself\"\n" +"> principle or D.R.Y." +msgstr "" + +#: make-novice/_episodes/03-variables.md:61 +msgid "Let us set about removing some of the repetition from our Makefile." +msgstr "" + +#: make-novice/_episodes/03-variables.md:63 +msgid "In our `results.txt` rule we duplicate the data file names and the\n" +"name of the results file name:" +msgstr "" + +#: make-novice/_episodes/03-variables.md:66 +# code block +msgid "~~~\n" +"results.txt : isles.dat abyss.dat last.dat\n" +" python testzipf.py abyss.dat isles.dat last.dat > results.txt\n" +"~~~" +msgstr "" + +#: make-novice/_episodes/03-variables.md:72 +msgid "Looking at the results file name first, we can replace it in the action\n" +"with `$@`:" +msgstr "" + +#: make-novice/_episodes/03-variables.md:75 +# code block +msgid "~~~\n" +"results.txt : isles.dat abyss.dat last.dat\n" +" python testzipf.py abyss.dat isles.dat last.dat > $@\n" +"~~~" +msgstr "" + +#: make-novice/_episodes/03-variables.md:81 +msgid "`$@` is a Make [automatic variable]({{ page.root }}/reference#automatic-variable)\n" +"which means 'the target of the current rule'. When Make is run it will\n" +"replace this variable with the target name." +msgstr "" + +#: make-novice/_episodes/03-variables.md:85 +msgid "We can replace the dependencies in the action with `$^`:" +msgstr "" + +#: make-novice/_episodes/03-variables.md:87 +# code block +msgid "~~~\n" +"results.txt : isles.dat abyss.dat last.dat\n" +" python testzipf.py $^ > $@\n" +"~~~" +msgstr "" + +#: make-novice/_episodes/03-variables.md:93 +msgid "`$^` is another automatic variable which means 'all the dependencies\n" +"of the current rule'. Again, when Make is run it will replace this\n" +"variable with the dependencies." +msgstr "" + +#: make-novice/_episodes/03-variables.md:97 +msgid "Let's update our text files and re-run our rule:" +msgstr "" + +#: make-novice/_episodes/03-variables.md:99 +# code block +msgid "~~~\n" +"$ touch books/*.txt\n" +"$ make results.txt\n" +"~~~" +msgstr "" + +#: make-novice/_episodes/03-variables.md:107 +# code block +msgid "~~~\n" +"python countwords.py books/isles.txt isles.dat\n" +"python countwords.py books/abyss.txt abyss.dat\n" +"python countwords.py books/last.txt last.dat\n" +"python testzipf.py isles.dat abyss.dat last.dat > results.txt\n" +"~~~" +msgstr "" + +#: make-novice/_episodes/03-variables.md:116 +# blockquote, which can be cascaded +msgid "> ## Update Dependencies" +msgstr "" + +#: make-novice/_episodes/03-variables.md:117 +msgid ">\n" +"> What will happen if you now execute:\n" +">\n" +"> ~~~\n" +"> $ touch *.dat\n" +"> $ make results.txt\n" +"> ~~~\n" +"> {: .language-bash}\n" +">\n" +"> 1. nothing\n" +"> 2. all files recreated\n" +"> 3. only `.dat` files recreated\n" +"> 4. only `results.txt` recreated\n" +">\n" +"> > ## Solution\n" +"> > `4.` Only `results.txt` recreated.\n" +"> >\n" +"> > The rules for `*.dat` are not executed because their corresponding `.txt` files\n" +"> > haven't been modified.\n" +"> >\n" +"> > If you run:\n" +"> >\n" +"> > ~~~\n" +"> > $ touch books/*.txt\n" +"> > $ make results.txt\n" +"> > ~~~\n" +"> > {: .language-bash}\n" +"> >\n" +"> > you will find that the `.dat` files as well as `results.txt` are recreated." +msgstr "" + +#: make-novice/_episodes/03-variables.md:149 +msgid "As we saw, `$^` means 'all the dependencies of the current rule'. This\n" +"works well for `results.txt` as its action treats all the dependencies\n" +"the same - as the input for the `testzipf.py` script." +msgstr "" + +#: make-novice/_episodes/03-variables.md:153 +msgid "However, for some rules, we may want to treat the first dependency\n" +"differently. For example, our rules for `.dat` use their first (and\n" +"only) dependency specifically as the input file to `countwords.py`. If\n" +"we add additional dependencies (as we will soon do) then we don't want\n" +"these being passed as input files to `countwords.py` as it expects only\n" +"one input file to be named when it is invoked." +msgstr "" + +#: make-novice/_episodes/03-variables.md:160 +msgid "Make provides an automatic variable for this, `$<` which means 'the\n" +"first dependency of the current rule'." +msgstr "" + +#: make-novice/_episodes/03-variables.md:163 +# blockquote, which can be cascaded +msgid "> ## Rewrite `.dat` Rules to Use Automatic Variables" +msgstr "" + +#: make-novice/_episodes/03-variables.md:164 +msgid ">\n" +"> Rewrite each `.dat` rule to use the automatic variables `$@` ('the\n" +"> target of the current rule') and `$<` ('the first dependency of the\n" +"> current rule').\n" +"> [This file]({{ page.root }}/code/03-variables/Makefile) contains\n" +"> the Makefile immediately before the challenge.\n" +">\n" +"> > ## Solution\n" +"> > See [this file]({{ page.root }}/code/03-variables-challenge/Makefile)\n" +"> > for a solution to this challenge." +msgstr "" + +#: make-novice/_episodes/04-dependencies.md:1 +# Front Matter +msgid "---\n" +"title: \"Dependencies on Data and Code\"\n" +"teaching: 15\n" +"exercises: 5\n" +"questions:\n" +"- \"How can I write a Makefile to update things when my scripts have changed rather than my input files?\"\n" +"objectives:\n" +"- \"Output files are a product not only of input files but of the scripts or code that created the output files.\"\n" +"- \"Recognize and avoid false dependencies.\"\n" +"keypoints:\n" +"- \"Make results depend on processing scripts as well as data files.\"\n" +"- \"Dependencies are transitive: if A depends on B and B depends on C, a change to C will indirectly trigger an update to A.\"\n" +"---" +msgstr "" + +#: make-novice/_episodes/04-dependencies.md:17 +# code block +msgid "~~~\n" +"# Generate summary table.\n" +"results.txt : isles.dat abyss.dat last.dat\n" +" python testzipf.py $^ > $@\n" +"\n" +"# Count words.\n" +".PHONY : dats\n" +"dats : isles.dat abyss.dat last.dat\n" +"\n" +"isles.dat : books/isles.txt\n" +" python countwords.py $< $@\n" +"\n" +"abyss.dat : books/abyss.txt\n" +" python countwords.py $< $@\n" +"\n" +"last.dat : books/last.txt\n" +" python countwords.py $< $@\n" +"\n" +".PHONY : clean\n" +"clean :\n" +" rm -f *.dat\n" +" rm -f results.txt\n" +"~~~" +msgstr "" + +#: make-novice/_episodes/04-dependencies.md:42 +msgid "Our data files are a product not only of our text files but the\n" +"script, `countwords.py`, that processes the text files and creates the\n" +"data files. A change to `countwords.py` (e.g. to add a new column of\n" +"summary data or remove an existing one) results in changes to the\n" +"`.dat` files it outputs. So, let's pretend to edit `countwords.py`,\n" +"using `touch`, and re-run Make:" +msgstr "" + +#: make-novice/_episodes/04-dependencies.md:49 +# code block +msgid "~~~\n" +"$ make dats\n" +"$ touch countwords.py\n" +"$ make dats\n" +"~~~" +msgstr "" + +#: make-novice/_episodes/04-dependencies.md:56 +msgid "Nothing happens! Though we've updated `countwords.py` our data files\n" +"are not updated because our rules for creating `.dat` files don't\n" +"record any dependencies on `countwords.py`." +msgstr "" + +#: make-novice/_episodes/04-dependencies.md:60 +msgid "We need to add `countwords.py` as a dependency of each of our\n" +"data files also:" +msgstr "" + +#: make-novice/_episodes/04-dependencies.md:63 +# code block +msgid "~~~\n" +"isles.dat : books/isles.txt countwords.py\n" +" python countwords.py $< $@\n" +"\n" +"abyss.dat : books/abyss.txt countwords.py\n" +" python countwords.py $< $@\n" +"\n" +"last.dat : books/last.txt countwords.py\n" +" python countwords.py $< $@\n" +"~~~" +msgstr "" + +#: make-novice/_episodes/04-dependencies.md:75 +msgid "If we pretend to edit `countwords.py` and re-run Make," +msgstr "" + +#: make-novice/_episodes/04-dependencies.md:77 +# code block +msgid "~~~\n" +"$ touch countwords.py\n" +"$ make dats\n" +"~~~" +msgstr "" + +#: make-novice/_episodes/04-dependencies.md:85 +#: make-novice/_episodes/05-patterns.md:45 +# code block +msgid "~~~\n" +"python countwords.py books/isles.txt isles.dat\n" +"python countwords.py books/abyss.txt abyss.dat\n" +"python countwords.py books/last.txt last.dat\n" +"~~~" +msgstr "" + +#: make-novice/_episodes/04-dependencies.md:92 +# blockquote, which can be cascaded +msgid "> ## Dry run" +msgstr "" + +#: make-novice/_episodes/04-dependencies.md:93 +msgid ">\n" +"> `make` can show the commands it will execute without actually running them if we pass the `-n` flag:\n" +">\n" +"> ~~~\n" +"> $ touch countwords.py\n" +"> $ make -n dats\n" +"> ~~~\n" +"> {: .language-bash}\n" +">\n" +"> This gives the same output to the screen as without the `-n` flag, but the commands are not actually run. Using this 'dry-run' mode is a good way to check that you have set up your Makefile properly before actually running the commands in it.\n" +">" +msgstr "" + +#: make-novice/_episodes/04-dependencies.md:106 +msgid "The following figure shows the dependencies embodied within our\n" +"Makefile, involved in building the `results.txt` target, after adding\n" +"`countwords.py` and `testzipf.py` as dependencies to their respective target files\n" +"(i.e. how the Makefile should look after completing the rest of the exercises\n" +"in this episode)." +msgstr "" + +#: make-novice/_episodes/04-dependencies.md:112 +msgid "![results.txt dependencies after adding countwords.py and testzipf.py as dependencies](../fig/04-dependencies.png \"results.txt dependencies after adding countwords.py and testzipf.py as dependencies\")" +msgstr "" + +#: make-novice/_episodes/04-dependencies.md:114 +# blockquote, which can be cascaded +msgid "> ## Why Don't the `.txt` Files Depend on `countwords.py`?" +msgstr "" + +#: make-novice/_episodes/04-dependencies.md:115 +msgid ">\n" +"> `.txt` files are input files and have no dependencies. To make these\n" +"> depend on `countwords.py` would introduce a [false\n" +"> dependency]({{ page.root }}/reference#false-dependency)." +msgstr "" + +#: make-novice/_episodes/04-dependencies.md:121 +msgid "Intuitively, we should also add `countwords.py` as dependency for\n" +"`results.txt`, as the final table should be rebuilt as we remake the\n" +"`.dat` files. However, it turns out we don't have to! Let's see what\n" +"happens to `results.txt` when we update `countwords.py`:" +msgstr "" + +#: make-novice/_episodes/04-dependencies.md:126 +# code block +msgid "~~~\n" +"$ touch countwords.py\n" +"$ make results.txt\n" +"~~~" +msgstr "" + +#: make-novice/_episodes/04-dependencies.md:134 +# code block +msgid "~~~\n" +"python countwords.py books/abyss.txt abyss.dat\n" +"python countwords.py books/isles.txt isles.dat\n" +"python countwords.py books/last.txt last.dat\n" +"python testzipf.py abyss.dat isles.dat last.dat > results.txt\n" +"~~~" +msgstr "" + +#: make-novice/_episodes/04-dependencies.md:142 +msgid "The whole pipeline is triggered, even the creation of the\n" +"`results.txt` file! To understand this, note that according to the\n" +"dependency figure, `results.txt` depends on the `.dat` files. The\n" +"update of `countwords.py` triggers an update of the `*.dat`\n" +"files. Thus, `make` sees that the dependencies (the `.dat` files) are\n" +"newer than the target file (`results.txt`) and thus it recreates\n" +"`results.txt`. This is an example of the power of `make`: updating a\n" +"subset of the files in the pipeline triggers rerunning the appropriate\n" +"downstream steps." +msgstr "" + +#: make-novice/_episodes/04-dependencies.md:152 +# blockquote, which can be cascaded +msgid "> ## Updating One Input File" +msgstr "" + +#: make-novice/_episodes/04-dependencies.md:153 +msgid ">\n" +"> What will happen if you now execute:\n" +">\n" +"> ~~~\n" +"> $ touch books/last.txt\n" +"> $ make results.txt\n" +"> ~~~\n" +"> {: .language-bash}\n" +">\n" +"> 1. only `last.dat` is recreated\n" +"> 2. all `.dat` files are recreated\n" +"> 3. only `last.dat` and `results.txt` are recreated\n" +"> 4. all `.dat` and `results.txt` are recreated\n" +">\n" +"> > ## Solution\n" +"> > `3.` only `last.dat` and `results.txt` are recreated.\n" +"> >\n" +"> > Follow the dependency tree to understand the answer(s)." +msgstr "" + +#: make-novice/_episodes/04-dependencies.md:174 +# blockquote, which can be cascaded +msgid "> ## `testzipf.py` as a Dependency of `results.txt`." +msgstr "" + +#: make-novice/_episodes/04-dependencies.md:175 +msgid ">\n" +"> What would happen if you added `testzipf.py` as dependency of `results.txt`, and why?\n" +">\n" +"> > ## Solution\n" +"> >\n" +"> > If you change the rule for the `results.txt` file like this:\n" +"> >\n" +"> > ~~~\n" +"> > results.txt : isles.dat abyss.dat last.dat testzipf.py\n" +"> > python testzipf.py $^ > $@\n" +"> > ~~~\n" +"> > {: .language-make}\n" +"> >\n" +"> > `testzipf.py` becomes a part of `$^`, thus the command becomes\n" +"> >\n" +"> > ~~~\n" +"> > python testzipf.py abyss.dat isles.dat last.dat testzipf.py > results.txt\n" +"> > ~~~\n" +"> > {: .language-bash}\n" +"> >\n" +"> > This results in an error from `testzipf.py` as it tries to parse the\n" +"> > script as if it were a `.dat` file. Try this by running:\n" +"> >\n" +"> > ~~~\n" +"> > $ make results.txt\n" +"> > ~~~\n" +"> > {: .language-bash}\n" +"> >\n" +"> > You'll get\n" +"> >\n" +"> > ~~~\n" +"> > python testzipf.py abyss.dat isles.dat last.dat testzipf.py > results.txt\n" +"> > Traceback (most recent call last):\n" +"> > File \"testzipf.py\", line 19, in \n" +"> > counts = load_word_counts(input_file)\n" +"> > File \"path/to/testzipf.py\", line 39, in load_word_counts\n" +"> > counts.append((fields[0], int(fields[1]), float(fields[2])))\n" +"> > IndexError: list index out of range\n" +"> > make: *** [results.txt] Error 1\n" +"> > ~~~\n" +"> > {: .error}" +msgstr "" + +#: make-novice/_episodes/04-dependencies.md:219 +msgid "We still have to add the `testzipf.py` script as dependency to\n" +"`results.txt`. Given the answer to the challenge above, we cannot use\n" +"`$^` in the rule. \n" +"We can however move `testzipf.py` to be the\n" +"first dependency and then use `$<` to refer to it. \n" +"In order to refer to the `.dat` files, we can just use `*.dat` for now (we will\n" +"cover a better solution later on)." +msgstr "" + +#: make-novice/_episodes/04-dependencies.md:227 +# code block +msgid "~~~\n" +"results.txt : testzipf.py isles.dat abyss.dat last.dat\n" +" python $< *.dat > $@\n" +"~~~" +msgstr "" + +#: make-novice/_episodes/04-dependencies.md:233 +#: make-novice/_episodes/05-patterns.md:96 +#: make-novice/_episodes/06-variables.md:112 +#: make-novice/_episodes/07-functions.md:258 +#: make-novice/_episodes/08-self-doc.md:125 +# blockquote, which can be cascaded +msgid "> ## Where We Are" +msgstr "" + +#: make-novice/_episodes/04-dependencies.md:234 +msgid ">\n" +"> [This Makefile]({{ page.root }}/code/04-dependencies/Makefile)\n" +"> contains everything done so far in this topic." +msgstr "" + +#: make-novice/_episodes/05-patterns.md:1 +# Front Matter +msgid "---\n" +"title: \"Pattern Rules\"\n" +"teaching: 10\n" +"exercises: 0\n" +"questions:\n" +"- \"How can I define rules to operate on similar files?\"\n" +"objectives:\n" +"- \"Write Make pattern rules.\"\n" +"keypoints:\n" +"- \"Use the wildcard `%` as a placeholder in targets and dependencies.\"\n" +"- \"Use the special variable `$*` to refer to matching sets of files in actions.\"\n" +"---" +msgstr "" + +#: make-novice/_episodes/05-patterns.md:14 +msgid "Our Makefile still has repeated content. The rules for each `.dat`\n" +"file are identical apart from the text and data file names. We can\n" +"replace these rules with a single [pattern\n" +"rule]({{ page.root }}/reference#pattern-rule) which can be used to build any\n" +"`.dat` file from a `.txt` file in `books/`:" +msgstr "" + +#: make-novice/_episodes/05-patterns.md:20 +# code block +msgid "~~~\n" +"%.dat : books/%.txt countwords.py\n" +" python countwords.py $< $*.dat\n" +"~~~" +msgstr "" + +#: make-novice/_episodes/05-patterns.md:26 +msgid "`%` is a Make [wildcard]({{ page.root }}/reference#wildcard). `$*` is a special\n" +"variable which gets replaced by the [stem]({{ page.root }}/reference#stem) with\n" +"which the rule matched." +msgstr "" + +#: make-novice/_episodes/05-patterns.md:30 +msgid "This rule can be interpreted as:\n" +"\"In order to build a file named `[something].dat` (the target)\n" +"find a file named `books/[that same something].txt` (the dependency)\n" +"and run `countwords.py [the dependency] [the target]`.\"" +msgstr "" + +#: make-novice/_episodes/05-patterns.md:35 +msgid "If we re-run Make," +msgstr "" + +#: make-novice/_episodes/05-patterns.md:37 +#: make-novice/_episodes/07-functions.md:145 +# code block +msgid "~~~\n" +"$ make clean\n" +"$ make dats\n" +"~~~" +msgstr "" + +#: make-novice/_episodes/05-patterns.md:52 +msgid "Note that we can still use Make to build individual `.dat` targets as before,\n" +"and that our new rule will work no matter what stem is being matched." +msgstr "" + +#: make-novice/_episodes/05-patterns.md:55 +# code block +msgid "```\n" +"$ make sierra.dat\n" +"```" +msgstr "" + +#: make-novice/_episodes/05-patterns.md:60 +msgid "which gives the output below:" +msgstr "" + +#: make-novice/_episodes/05-patterns.md:62 +# code block +msgid "```\n" +"python countwords.py books/sierra.txt sierra.dat\n" +"```" +msgstr "" + +#: make-novice/_episodes/05-patterns.md:67 +# blockquote, which can be cascaded +msgid "> ## Using Make Wildcards" +msgstr "" + +#: make-novice/_episodes/05-patterns.md:68 +msgid ">\n" +"> The Make `%` wildcard can only be used in a target and in its\n" +"> dependencies. It cannot be used in actions. In actions, you may\n" +"> however use `$*`, which will be replaced by the stem with which\n" +"> the rule matched." +msgstr "" + +#: make-novice/_episodes/05-patterns.md:75 +msgid "Our Makefile is now much shorter and cleaner:" +msgstr "" + +#: make-novice/_episodes/05-patterns.md:77 +# code block +msgid "~~~\n" +"# Generate summary table.\n" +"results.txt : testzipf.py isles.dat abyss.dat last.dat\n" +" python $< *.dat > $@\n" +"\n" +"# Count words.\n" +".PHONY : dats\n" +"dats : isles.dat abyss.dat last.dat\n" +"\n" +"%.dat : books/%.txt countwords.py\n" +" python countwords.py $< $*.dat\n" +"\n" +".PHONY : clean\n" +"clean :\n" +" rm -f *.dat\n" +" rm -f results.txt\n" +"~~~" +msgstr "" + +#: make-novice/_episodes/05-patterns.md:97 +msgid ">\n" +"> [This Makefile]({{ page.root }}/code/05-patterns/Makefile)\n" +"> contains all of our work so far." +msgstr "" + +#: make-novice/_episodes/05-patterns.md:102 +msgid "This episode has introduced pattern rules, and used the `$*` variable\n" +"in the `dat` rule in order to explain how to use it.\n" +"Arguably, a neater solution would have been to use `$@` to refer to\n" +"the target of the current rule (see below),\n" +"but then we wouldn't have learned about `$*`." +msgstr "" + +#: make-novice/_episodes/05-patterns.md:108 +# code block +msgid "```\n" +"%.dat : books/%.txt countwords.py\n" +" python countwords.py $< $@\n" +"```" +msgstr "" + +#: make-novice/_episodes/06-variables.md:1 +# Front Matter +msgid "---\n" +"title: \"Variables\"\n" +"teaching: 15\n" +"exercises: 5\n" +"questions:\n" +"- \"How can I eliminate redundancy in my Makefiles?\"\n" +"objectives:\n" +"- \"Use variables in a Makefile.\"\n" +"- \"Explain the benefits of decoupling configuration from computation.\"\n" +"keypoints:\n" +"- \"Define variables by assigning values to names.\"\n" +"- \"Reference variables using `$(...)`.\"\n" +"---" +msgstr "" + +#: make-novice/_episodes/06-variables.md:15 +msgid "Despite our efforts, our Makefile still has repeated content, i.e.\n" +"the name of our script -- `countwords.py`, and the program we use to run it -- `python`.\n" +"If we renamed our script we'd have to update our Makefile in multiple places." +msgstr "" + +#: make-novice/_episodes/06-variables.md:19 +msgid "We can introduce a Make [variable]({{ page.root }}/reference#variable) (called a\n" +"[macro]({{ page.root }}/reference#macro) in some versions of Make) to hold our\n" +"script name:" +msgstr "" + +#: make-novice/_episodes/06-variables.md:23 +# code block +msgid "~~~\n" +"COUNT_SRC=countwords.py\n" +"~~~" +msgstr "" + +#: make-novice/_episodes/06-variables.md:28 +msgid "This is a variable [assignment]({{ page.root }}/reference#assignment) -\n" +"`COUNT_SRC` is assigned the value `countwords.py`." +msgstr "" + +#: make-novice/_episodes/06-variables.md:31 +msgid "`countwords.py` is our script and it is invoked by passing it to\n" +"`python`. We can introduce another couple of variables to represent this\n" +"execution:" +msgstr "" + +#: make-novice/_episodes/06-variables.md:35 +# code block +msgid "~~~\n" +"LANGUAGE=python\n" +"COUNT_EXE=$(LANGUAGE) $(COUNT_SRC)\n" +"~~~" +msgstr "" + +#: make-novice/_episodes/06-variables.md:41 +msgid "`$(...)` tells Make to replace a variable with its value when Make\n" +"is run. This is a variable [reference]({{ page.root }}/reference#reference). At\n" +"any place where we want to use the value of a variable we have to\n" +"write it, or reference it, in this way." +msgstr "" + +#: make-novice/_episodes/06-variables.md:46 +msgid "Here we reference the variables `LANGUAGE` and `COUNT_SRC`. This tells Make to\n" +"replace the variable `LANGUAGE` with its value `python`,\n" +"and to replace the variable `COUNT_SRC` with its value `countwords.py`. When\n" +"Make is run it will assign to `COUNT_EXE` the value `python\n" +"countwords.py`." +msgstr "" + +#: make-novice/_episodes/06-variables.md:52 +msgid "Defining the variable `COUNT_EXE` in this way avoids repeating `python` in our \n" +"Makefile, and allows us to easily\n" +"change how our script is run (e.g. we might want to use a different\n" +"version of Python and need to change `python` to `python2` -- or we might want to\n" +"rewrite the script using another language (e.g. switch from Python to R))." +msgstr "" + +#: make-novice/_episodes/06-variables.md:58 +# blockquote, which can be cascaded +msgid "> ## Use Variables" +msgstr "" + +#: make-novice/_episodes/06-variables.md:59 +msgid ">\n" +"> Update `Makefile` so that the `%.dat` rule\n" +"> references the variables `COUNT_SRC` and `COUNT_EXE`.\n" +"> Then do the same for the `testzipf.py` script\n" +"> and the `results.txt` rule,\n" +"> using `ZIPF_SRC` and `ZIPF_EXE` as variable names\n" +">\n" +"> > ## Solution\n" +"> > [This Makefile]({{ page.root }}/code/06-variables-challenge/Makefile)\n" +"> > contains a solution to this challenge." +msgstr "" + +#: make-novice/_episodes/06-variables.md:72 +msgid "We place variables at the top of a Makefile so they are easy to\n" +"find and modify. Alternatively, we can pull them out into a new\n" +"file that just holds variable definitions (i.e. delete them from\n" +"the original makefile). Let us create `config.mk`:" +msgstr "" + +#: make-novice/_episodes/06-variables.md:77 +#: make-novice/_episodes/07-functions.md:240 +# code block +msgid "~~~\n" +"# Count words script.\n" +"LANGUAGE=python\n" +"COUNT_SRC=countwords.py\n" +"COUNT_EXE=$(LANGUAGE) $(COUNT_SRC)\n" +"\n" +"# Test Zipf's rule\n" +"ZIPF_SRC=testzipf.py\n" +"ZIPF_EXE=$(LANGUAGE) $(ZIPF_SRC)\n" +"~~~" +msgstr "" + +#: make-novice/_episodes/06-variables.md:89 +msgid "We can then import `config.mk` into `Makefile` using:" +msgstr "" + +#: make-novice/_episodes/06-variables.md:91 +#: make-novice/reference.md:193 +# code block +msgid "~~~\n" +"include config.mk\n" +"~~~" +msgstr "" + +#: make-novice/_episodes/06-variables.md:96 +msgid "We can re-run Make to see that everything still works:" +msgstr "" + +#: make-novice/_episodes/06-variables.md:98 +# code block +msgid "~~~\n" +"$ make clean\n" +"$ make dats\n" +"$ make results.txt\n" +"~~~" +msgstr "" + +#: make-novice/_episodes/06-variables.md:105 +msgid "We have separated the configuration of our Makefile from its rules,\n" +"the parts that do all the work. If we want to change our script name\n" +"or how it is executed we just need to edit our configuration file, not\n" +"our source code in `Makefile`. Decoupling code from configuration in\n" +"this way is good programming practice, as it promotes more modular,\n" +"flexible and reusable code." +msgstr "" + +#: make-novice/_episodes/06-variables.md:113 +msgid ">\n" +"> [This Makefile]({{ page.root }}/code/06-variables/Makefile)\n" +"> and [its accompanying `config.mk`]({{ page.root }}/code/06-variables/config.mk)\n" +"> contain all of our work so far." +msgstr "" + +#: make-novice/_episodes/07-functions.md:1 +# Front Matter +msgid "---\n" +"title: \"Functions\"\n" +"teaching: 20\n" +"exercises: 5\n" +"questions:\n" +"- \"How *else* can I eliminate redundancy in my Makefiles?\"\n" +"objectives:\n" +"- \"Write Makefiles that use functions to match and transform sets of files.\"\n" +"keypoints:\n" +"- \"Make is actually a small programming language with many built-in functions.\"\n" +"- \"Use `wildcard` function to get lists of files matching a pattern.\"\n" +"- \"Use `patsubst` function to rewrite file names.\"\n" +"---" +msgstr "" + +#: make-novice/_episodes/07-functions.md:15 +msgid "At this point, we have the following Makefile:" +msgstr "" + +#: make-novice/_episodes/07-functions.md:17 +# code block +msgid "~~~\n" +"include config.mk\n" +"\n" +"# Generate summary table.\n" +"results.txt : $(ZIPF_SRC) isles.dat abyss.dat last.dat\n" +" $(ZIPF_EXE) *.dat > $@\n" +"\n" +"# Count words.\n" +".PHONY : dats\n" +"dats : isles.dat abyss.dat last.dat\n" +"\n" +"%.dat : books/%.txt $(COUNT_SRC)\n" +" $(COUNT_EXE) $< $*.dat\n" +"\n" +".PHONY : clean\n" +"clean :\n" +" rm -f *.dat\n" +" rm -f results.txt\n" +"~~~" +msgstr "" + +#: make-novice/_episodes/07-functions.md:38 +msgid "Make has many [functions]({{ page.root }}/reference#function) which can be used to\n" +"write more complex rules. One example is `wildcard`. `wildcard` gets a\n" +"list of files matching some pattern, which we can then save in a\n" +"variable. So, for example, we can get a list of all our text files\n" +"(files ending in `.txt`) and save these in a variable by adding this at\n" +"the beginning of our makefile:" +msgstr "" + +#: make-novice/_episodes/07-functions.md:45 +#: make-novice/reference.md:200 +# code block +msgid "~~~\n" +"TXT_FILES=$(wildcard books/*.txt)\n" +"~~~" +msgstr "" + +#: make-novice/_episodes/07-functions.md:50 +msgid "We can add a `.PHONY` target and rule to show the variable's value:" +msgstr "" + +#: make-novice/_episodes/07-functions.md:52 +# code block +msgid "~~~\n" +".PHONY : variables\n" +"variables:\n" +" @echo TXT_FILES: $(TXT_FILES)\n" +"~~~" +msgstr "" + +#: make-novice/_episodes/07-functions.md:59 +# blockquote, which can be cascaded +msgid "> ## @echo" +msgstr "" + +#: make-novice/_episodes/07-functions.md:60 +msgid ">\n" +"> Make prints actions as it executes them. Using `@` at the start of\n" +"> an action tells Make not to print this action. So, by using `@echo`\n" +"> instead of `echo`, we can see the result of `echo` (the variable's\n" +"> value being printed) but not the `echo` command itself." +msgstr "" + +#: make-novice/_episodes/07-functions.md:67 +msgid "If we run Make:" +msgstr "" + +#: make-novice/_episodes/07-functions.md:69 +#: make-novice/_episodes/07-functions.md:107 +# code block +msgid "~~~\n" +"$ make variables\n" +"~~~" +msgstr "" + +#: make-novice/_episodes/07-functions.md:76 +# code block +msgid "~~~\n" +"TXT_FILES: books/abyss.txt books/isles.txt books/last.txt books/sierra.txt\n" +"~~~" +msgstr "" + +#: make-novice/_episodes/07-functions.md:81 +msgid "Note how `sierra.txt` is now included too." +msgstr "" + +#: make-novice/_episodes/07-functions.md:83 +msgid "`patsubst` ('pattern substitution') takes a pattern, a replacement string and a\n" +"list of names in that order; each name in the list that matches the pattern is\n" +"replaced by the replacement string. Again, we can save the result in a\n" +"variable. So, for example, we can rewrite our list of text files into\n" +"a list of data files (files ending in `.dat`) and save these in a\n" +"variable:" +msgstr "" + +#: make-novice/_episodes/07-functions.md:90 +#: make-novice/reference.md:212 +# code block +msgid "~~~\n" +"DAT_FILES=$(patsubst books/%.txt, %.dat, $(TXT_FILES))\n" +"~~~" +msgstr "" + +#: make-novice/_episodes/07-functions.md:95 +msgid "We can extend `variables` to show the value of `DAT_FILES` too:" +msgstr "" + +#: make-novice/_episodes/07-functions.md:97 +# code block +msgid "~~~\n" +".PHONY : variables\n" +"variables:\n" +" @echo TXT_FILES: $(TXT_FILES)\n" +" @echo DAT_FILES: $(DAT_FILES)\n" +"~~~" +msgstr "" + +#: make-novice/_episodes/07-functions.md:114 +# code block +msgid "~~~\n" +"TXT_FILES: books/abyss.txt books/isles.txt books/last.txt books/sierra.txt\n" +"DAT_FILES: abyss.dat isles.dat last.dat sierra.dat\n" +"~~~" +msgstr "" + +#: make-novice/_episodes/07-functions.md:120 +msgid "Now, `sierra.txt` is processed too." +msgstr "" + +#: make-novice/_episodes/07-functions.md:122 +msgid "With these we can rewrite `clean` and `dats`:" +msgstr "" + +#: make-novice/_episodes/07-functions.md:124 +# code block +msgid "~~~\n" +".PHONY : dats\n" +"dats : $(DAT_FILES)\n" +"\n" +".PHONY : clean\n" +"clean :\n" +" rm -f $(DAT_FILES)\n" +" rm -f results.txt\n" +"~~~" +msgstr "" + +#: make-novice/_episodes/07-functions.md:135 +msgid "Let's also tidy up the `%.dat` rule by using the automatic variable `$@` instead of `$*.dat`:" +msgstr "" + +#: make-novice/_episodes/07-functions.md:137 +# code block +msgid "```\n" +"%.dat : books/%.txt $(COUNT_SRC)\n" +" $(COUNT_EXE) $< $@\n" +"```" +msgstr "" + +#: make-novice/_episodes/07-functions.md:143 +msgid "Let's check:" +msgstr "" + +#: make-novice/_episodes/07-functions.md:153 +# code block +msgid "~~~\n" +"python countwords.py books/abyss.txt abyss.dat\n" +"python countwords.py books/isles.txt isles.dat\n" +"python countwords.py books/last.txt last.dat\n" +"python countwords.py books/sierra.txt sierra.dat\n" +"~~~" +msgstr "" + +#: make-novice/_episodes/07-functions.md:161 +msgid "We can also rewrite `results.txt`:" +msgstr "" + +#: make-novice/_episodes/07-functions.md:163 +# code block +msgid "~~~\n" +"results.txt : $(ZIPF_SRC) $(DAT_FILES)\n" +" $(ZIPF_EXE) $(DAT_FILES) > $@\n" +"~~~" +msgstr "" + +#: make-novice/_episodes/07-functions.md:169 +msgid "If we re-run Make:" +msgstr "" + +#: make-novice/_episodes/07-functions.md:171 +# code block +msgid "~~~\n" +"$ make clean\n" +"$ make results.txt\n" +"~~~" +msgstr "" + +#: make-novice/_episodes/07-functions.md:179 +# code block +msgid "~~~\n" +"python countwords.py books/abyss.txt abyss.dat\n" +"python countwords.py books/isles.txt isles.dat\n" +"python countwords.py books/last.txt last.dat\n" +"python countwords.py books/sierra.txt sierra.dat\n" +"python testzipf.py last.dat isles.dat abyss.dat sierra.dat > results.txt\n" +"~~~" +msgstr "" + +#: make-novice/_episodes/07-functions.md:188 +msgid "Let's check the `results.txt` file:" +msgstr "" + +#: make-novice/_episodes/07-functions.md:190 +# code block +msgid "~~~\n" +"$ cat results.txt\n" +"~~~" +msgstr "" + +#: make-novice/_episodes/07-functions.md:195 +# code block +msgid "~~~\n" +"Book First Second Ratio\n" +"abyss 4044 2807 1.44\n" +"isles 3822 2460 1.55\n" +"last 12244 5566 2.20\n" +"sierra 4242 2469 1.72\n" +"~~~" +msgstr "" + +#: make-novice/_episodes/07-functions.md:204 +msgid "So the range of the ratios of occurrences of the two most frequent\n" +"words in our books is indeed around 2, as predicted by Zipf's Law,\n" +"i.e., the most frequently-occurring word occurs approximately twice as\n" +"often as the second most frequent word. Here is our final Makefile:" +msgstr "" + +#: make-novice/_episodes/07-functions.md:209 +# code block +msgid "~~~\n" +"include config.mk\n" +"\n" +"TXT_FILES=$(wildcard books/*.txt)\n" +"DAT_FILES=$(patsubst books/%.txt, %.dat, $(TXT_FILES))\n" +"\n" +"# Generate summary table.\n" +"results.txt : $(ZIPF_SRC) $(DAT_FILES)\n" +" $(ZIPF_EXE) $(DAT_FILES) > $@\n" +"\n" +"# Count words.\n" +".PHONY : dats\n" +"dats : $(DAT_FILES)\n" +"\n" +"%.dat : books/%.txt $(COUNT_SRC)\n" +" $(COUNT_EXE) $< $@\n" +"\n" +".PHONY : clean\n" +"clean :\n" +" rm -f $(DAT_FILES)\n" +" rm -f results.txt\n" +"\n" +".PHONY : variables\n" +"variables:\n" +" @echo TXT_FILES: $(TXT_FILES)\n" +" @echo DAT_FILES: $(DAT_FILES)\n" +"~~~" +msgstr "" + +#: make-novice/_episodes/07-functions.md:238 +msgid "Remember, the `config.mk` file contains:" +msgstr "" + +#: make-novice/_episodes/07-functions.md:252 +msgid "The following figure shows the dependencies embodied within our Makefile,\n" +"involved in building the `results.txt` target,\n" +"now we have introduced our function:" +msgstr "" + +#: make-novice/_episodes/07-functions.md:256 +msgid "![results.txt dependencies after introducing a function](../fig/07-functions.png \"results.txt dependencies after introducing a function\")" +msgstr "" + +#: make-novice/_episodes/07-functions.md:259 +msgid ">\n" +"> [This Makefile]({{ page.root }}/code/07-functions/Makefile)\n" +"> and [its accompanying `config.mk`]({{ page.root }}/code/07-functions/config.mk)\n" +"> contain all of our work so far." +msgstr "" + +#: make-novice/_episodes/07-functions.md:265 +# blockquote, which can be cascaded +msgid "> ## Adding more books" +msgstr "" + +#: make-novice/_episodes/07-functions.md:266 +msgid ">\n" +"> We can now do a better job at testing Zipf's rule by adding more books.\n" +"> The books we have used come from the [Project Gutenberg](http://www.gutenberg.org/) website.\n" +"> Project Gutenberg offers thousands of free ebooks to download.\n" +">\n" +"> **Exercise instructions:**\n" +">\n" +"> * go to [Project Gutenberg](http://www.gutenberg.org/) and use the search box to find another book,\n" +"> for example ['The Picture of Dorian Gray'](https://www.gutenberg.org/ebooks/174) from Oscar Wilde.\n" +"> * download the 'Plain Text UTF-8' version and save it to the `books` folder;\n" +"> choose a short name for the file (**that doesn't include spaces**) e.g. \"dorian_gray.txt\"\n" +"> because the filename is going to be used in the `results.txt` file\n" +"> * optionally, open the file in a text editor and remove extraneous text at the beginning and end\n" +"> (look for the phrase `End of Project Gutenberg's [title], by [author]`)\n" +"> * run `make` and check that the correct commands are run, given the dependency tree\n" +"> * check the results.txt file to see how this book compares to the others" +msgstr "" + +#: make-novice/_episodes/08-self-doc.md:1 +# Front Matter +msgid "---\n" +"title: \"Self-Documenting Makefiles\"\n" +"teaching: 10\n" +"exercises: 0\n" +"questions:\n" +"- \"How should I document a Makefile?\"\n" +"objectives:\n" +"- \"Write self-documenting Makefiles with built-in help.\"\n" +"keypoints:\n" +"- \"Document Makefiles by adding specially-formatted comments and a target to extract and format them.\"\n" +"---" +msgstr "" + +#: make-novice/_episodes/08-self-doc.md:13 +msgid "Many bash commands, and programs that people have written that can be\n" +"run from within bash, support a `--help` flag to display more\n" +"information on how to use the commands or programs. In this spirit, it\n" +"can be useful, both for ourselves and for others, to provide a `help`\n" +"target in our Makefiles. This can provide a summary of the names of\n" +"the key targets and what they do, so we don't need to look at the\n" +"Makefile itself unless we want to. For our Makefile, running a `help`\n" +"target might print:" +msgstr "" + +#: make-novice/_episodes/08-self-doc.md:22 +#: make-novice/_episodes/08-self-doc.md:104 +# code block +msgid "~~~\n" +"$ make help\n" +"~~~" +msgstr "" + +#: make-novice/_episodes/08-self-doc.md:27 +# code block +msgid "~~~\n" +"results.txt : Generate Zipf summary table.\n" +"dats : Count words in text files.\n" +"clean : Remove auto-generated files.\n" +"~~~" +msgstr "" + +#: make-novice/_episodes/08-self-doc.md:34 +msgid "So, how would we implement this? We could write a rule like:" +msgstr "" + +#: make-novice/_episodes/08-self-doc.md:36 +# code block +msgid "~~~\n" +".PHONY : help\n" +"help :\n" +" @echo \"results.txt : Generate Zipf summary table.\"\n" +" @echo \"dats : Count words in text files.\"\n" +" @echo \"clean : Remove auto-generated files.\"\n" +"~~~" +msgstr "" + +#: make-novice/_episodes/08-self-doc.md:45 +msgid "But every time we add or remove a rule, or change the description of a\n" +"rule, we would have to update this rule too. It would be better if we\n" +"could keep the descriptions of the rules by the rules themselves and\n" +"extract these descriptions automatically." +msgstr "" + +#: make-novice/_episodes/08-self-doc.md:50 +msgid "The bash shell can help us here. It provides a command called\n" +"[sed][sed-docs] which stands for 'stream editor'. `sed` reads in some\n" +"text, does some filtering, and writes out the filtered text." +msgstr "" + +#: make-novice/_episodes/08-self-doc.md:54 +msgid "So, we could write comments for our rules, and mark them up in a way\n" +"which `sed` can detect. Since Make uses `#` for comments, we can use\n" +"`##` for comments that describe what a rule does and that we want\n" +"`sed` to detect. For example:" +msgstr "" + +#: make-novice/_episodes/08-self-doc.md:59 +# code block +msgid "~~~\n" +"## results.txt : Generate Zipf summary table.\n" +"results.txt : $(ZIPF_SRC) $(DAT_FILES)\n" +" $(ZIPF_EXE) $(DAT_FILES) > $@\n" +"\n" +"## dats : Count words in text files.\n" +".PHONY : dats\n" +"dats : $(DAT_FILES)\n" +"\n" +"%.dat : books/%.txt $(COUNT_SRC)\n" +" $(COUNT_EXE) $< $@\n" +"\n" +"## clean : Remove auto-generated files.\n" +".PHONY : clean\n" +"clean :\n" +" rm -f $(DAT_FILES)\n" +" rm -f results.txt\n" +"\n" +"## variables : Print variables.\n" +".PHONY : variables\n" +"variables:\n" +" @echo TXT_FILES: $(TXT_FILES)\n" +" @echo DAT_FILES: $(DAT_FILES)\n" +"~~~" +msgstr "" + +#: make-novice/_episodes/08-self-doc.md:85 +msgid "We use `##` so we can distinguish between comments that we want `sed`\n" +"to automatically filter, and other comments that may describe what\n" +"other rules do, or that describe variables." +msgstr "" + +#: make-novice/_episodes/08-self-doc.md:89 +msgid "We can then write a `help` target that applies `sed` to our `Makefile`:" +msgstr "" + +#: make-novice/_episodes/08-self-doc.md:91 +# code block +msgid "~~~\n" +".PHONY : help\n" +"help : Makefile\n" +" @sed -n 's/^##//p' $<\n" +"~~~" +msgstr "" + +#: make-novice/_episodes/08-self-doc.md:98 +msgid "This rule depends upon the Makefile itself. It runs `sed` on the first\n" +"dependency of the rule, which is our Makefile, and tells `sed` to get\n" +"all the lines that begin with `##`, which `sed` then prints for us." +msgstr "" + +#: make-novice/_episodes/08-self-doc.md:102 +msgid "If we now run" +msgstr "" + +#: make-novice/_episodes/08-self-doc.md:109 +msgid "we get:" +msgstr "" + +#: make-novice/_episodes/08-self-doc.md:111 +# code block +msgid "~~~\n" +" results.txt : Generate Zipf summary table.\n" +" dats : Count words in text files.\n" +" clean : Remove auto-generated files.\n" +" variables : Print variables.\n" +"~~~" +msgstr "" + +#: make-novice/_episodes/08-self-doc.md:119 +msgid "If we add, change or remove a target or rule, we now only need to\n" +"remember to add, update or remove a comment next to the rule. So long\n" +"as we respect our convention of using `##` for such comments, then our\n" +"`help` rule will take care of detecting these comments and printing\n" +"them for us." +msgstr "" + +#: make-novice/_episodes/08-self-doc.md:126 +msgid ">\n" +"> [This Makefile]({{ page.root }}/code/08-self-doc/Makefile)\n" +"> and [its accompanying `config.mk`]({{ page.root }}/code/08-self-doc/config.mk)\n" +"> contain all of our work so far." +msgstr "" + +#: make-novice/_episodes/08-self-doc.md:132 +msgid "[sed-docs]: https://www.gnu.org/software/sed/" +msgstr "" + +#: make-novice/_episodes/09-conclusion.md:1 +# Front Matter +msgid "---\n" +"title: \"Conclusion\"\n" +"teaching: 5\n" +"exercises: 30\n" +"questions:\n" +"- \"What are the advantages and disadvantages of using tools like Make?\"\n" +"objectives:\n" +"- \"Understand advantages of automated build tools such as Make.\"\n" +"keypoints:\n" +"- \"Makefiles save time by automating repetitive work, and save thinking by documenting how to reproduce results.\"\n" +"---" +msgstr "" + +#: make-novice/_episodes/09-conclusion.md:13 +msgid "Automated build tools such as Make can help us in a number of\n" +"ways. They help us to automate repetitive commands, hence saving us\n" +"time and reducing the likelihood of errors compared with running\n" +"these commands manually." +msgstr "" + +#: make-novice/_episodes/09-conclusion.md:18 +msgid "They can also save time by ensuring that automatically-generated\n" +"artifacts (such as data files or plots) are only recreated when the\n" +"files that were used to create these have changed in some way." +msgstr "" + +#: make-novice/_episodes/09-conclusion.md:22 +msgid "Through their notion of targets, dependencies, and actions, they serve\n" +"as a form of documentation, recording dependencies between code,\n" +"scripts, tools, configurations, raw data, derived data, plots, and\n" +"papers." +msgstr "" + +#: make-novice/_episodes/09-conclusion.md:27 +# blockquote, which can be cascaded +msgid "> ## Creating PNGs" +msgstr "" + +#: make-novice/_episodes/09-conclusion.md:28 +msgid ">\n" +"> Add new rules, update existing rules, and add new variables to:\n" +">\n" +"> * Create `.png` files from `.dat` files using `plotcounts.py`.\n" +"> * Remove all auto-generated files (`.dat`, `.png`,\n" +"> `results.txt`).\n" +">\n" +"> Finally, many Makefiles define a default [phony\n" +"> target]({{ page.root }}/reference#phony-target) called `all` as first target,\n" +"> that will build what the Makefile has been written to build (e.g. in\n" +"> our case, the `.png` files and the `results.txt` file). As others\n" +"> may assume your Makefile conforms to convention and supports an\n" +"> `all` target, add an `all` target to your Makefile (Hint: this rule\n" +"> has the `results.txt` file and the `.png` files as dependencies, but\n" +"> no actions). With that in place, instead of running `make\n" +"> results.txt`, you should now run `make all`, or just simply\n" +"> `make`. By default, `make` runs the first target it finds in the\n" +"> Makefile, in this case your new `all` target.\n" +">\n" +"> > ## Solution\n" +"> > [This Makefile]({{ page.root }}/code/09-conclusion-challenge-1/Makefile)\n" +"> > and [this `config.mk`]({{ page.root }}/code/09-conclusion-challenge-1/config.mk)\n" +"> > contain a solution to this challenge." +msgstr "" + +#: make-novice/_episodes/09-conclusion.md:54 +msgid "The following figure shows the dependencies involved in building the `all` target, once we've added support for images:" +msgstr "" + +#: make-novice/_episodes/09-conclusion.md:56 +msgid "![results.txt dependencies once images have been added](../fig/09-conclusion-challenge-1.png \"results.txt dependencies once images have been added\")" +msgstr "" + +#: make-novice/_episodes/09-conclusion.md:58 +# blockquote, which can be cascaded +msgid "> ## Creating an Archive" +msgstr "" + +#: make-novice/_episodes/09-conclusion.md:59 +msgid ">\n" +"> Often it is useful to create an archive file of your project that includes all data, code\n" +"> and results. An archive file can package many files into a single file that can easily be\n" +"> downloaded and shared with collaborators. We can add steps to create the archive file inside\n" +"> the Makefile itself so it's easy to update our archive file as the project changes.\n" +">\n" +">\n" +"> Edit the Makefile to create an archive file of your project. Add new rules, update existing\n" +"> rules and add new variables to:\n" +">\n" +"> * Create a new directory called `zipf_analysis` in the project directory.\n" +"> * Copy all our code, data, plots, the Zipf summary table, the Makefile and config.mk\n" +"> to this directory.\n" +"> The `cp -r` command can be used to copy files and directories\n" +"> into the new `zipf_analysis` directory:\n" +">\n" +"> ~~~\n" +"> $ cp -r [files and directories to copy] zipf_analysis/\n" +"> ~~~\n" +"> {: .language-bash}\n" +">\n" +"> * Hint: create a new variable for the `books` directory so that it can be\n" +"> copied to the new `zipf_analysis` directory\n" +"> * Create an archive, `zipf_analysis.tar.gz`, of this directory. The\n" +"> bash command `tar` can be used, as follows:\n" +">\n" +"> ~~~\n" +"> $ tar -czf zipf_analysis.tar.gz zipf_analysis\n" +"> ~~~\n" +"> {: .language-bash}\n" +">\n" +"> * Update the target `all` so that it creates `zipf_analysis.tar.gz`.\n" +"> * Remove `zipf_analysis.tar.gz` when `make clean` is called.\n" +"> * Print the values of any additional variables you have defined when\n" +"> `make variables` is called.\n" +">\n" +"> > ## Solution\n" +"> > [This Makefile]({{ page.root }}/code/09-conclusion-challenge-2/Makefile)\n" +"> > and [this `config.mk`]({{ page.root }}/code/09-conclusion-challenge-2/config.mk)\n" +"> > contain a solution to this challenge." +msgstr "" + +#: make-novice/_episodes/09-conclusion.md:102 +# blockquote, which can be cascaded +msgid "> ## Archiving the Makefile" +msgstr "" + +#: make-novice/_episodes/09-conclusion.md:103 +msgid ">\n" +"> Why does the Makefile rule for the archive directory add the Makefile to our archive of code,\n" +"> data, plots and Zipf summary table?\n" +">\n" +"> > ## Solution\n" +"> > Our code files (`countwords.py`, `plotcounts.py`, `testzipf.py`) implement\n" +"> > the individual parts of our workflow. They allow us to create `.dat`\n" +"> > files from `.txt` files, and `results.txt` and `.png` files from `.dat` files.\n" +"> > Our Makefile, however, documents dependencies between\n" +"> > our code, raw data, derived data, and plots, as well as implementing\n" +"> > our workflow as a whole. `config.mk` contains configuration information\n" +"> > for our Makefile, so it must be archived too." +msgstr "" + +#: make-novice/_episodes/09-conclusion.md:118 +# blockquote, which can be cascaded +msgid "> ## `touch` the Archive Directory" +msgstr "" + +#: make-novice/_episodes/09-conclusion.md:119 +msgid ">\n" +"> Why does the Makefile rule for the archive directory `touch` the archive directory after moving our code, data, plots and summary table into it?\n" +">\n" +"> > ## Solution\n" +"> > A directory's timestamp is not automatically updated when files are copied into it.\n" +"> > If the code, data, plots, and summary table are updated and copied into the\n" +"> > archive directory, the archive directory's timestamp must be updated with `touch`\n" +"> > so that the rule that makes `zipf_analysis.tar.gz` knows to run again;\n" +"> > without this `touch`, `zipf_analysis.tar.gz` will only be created the first time\n" +"> > the rule is run and will not be updated on subsequent runs even if the contents\n" +"> > of the archive directory have changed." +msgstr "" + +#: make-novice/_extras/about.md:1 +# Front Matter +msgid "---\n" +"layout: page\n" +"title: About\n" +"permalink: /about/\n" +"---" +msgstr "" + +#: make-novice/_extras/about.md:6 +msgid "{% include carpentries.html %}" +msgstr "" + +#: make-novice/_extras/discuss.md:1 +# Front Matter +msgid "---\n" +"layout: page\n" +"title: Discussion\n" +"---" +msgstr "" + +#: make-novice/_extras/discuss.md:6 +# header +msgid "## Parallel Execution" +msgstr "" + +#: make-novice/_extras/discuss.md:8 +msgid "Make can build dependencies in _parallel_ sub-processes, via its `--jobs`\n" +"flag (or its `-j` abbreviation) which specifies the number of sub-processes to use e.g." +msgstr "" + +#: make-novice/_extras/discuss.md:11 +# code block +msgid "~~~\n" +"$ make --jobs 4 results.txt\n" +"~~~" +msgstr "" + +#: make-novice/_extras/discuss.md:14 +#: make-novice/_extras/guide.md:75 +#: make-novice/_extras/guide.md:96 +#: make-novice/_extras/guide.md:108 +#: make-novice/_extras/guide.md:125 +#: make-novice/_extras/guide.md:136 +#: make-novice/_extras/guide.md:148 +#: make-novice/_extras/guide.md:171 +#: make-novice/reference.md:13 +#: make-novice/reference.md:23 +#: make-novice/reference.md:30 +#: make-novice/reference.md:45 +#: make-novice/reference.md:52 +# SC/DC Template label +msgid "{: .bash}" +msgstr "" + +#: make-novice/_extras/discuss.md:16 +msgid "If we have independent dependencies then these can be built at the\n" +"same time. For example, `abyss.dat` and `isles.dat` are mutually\n" +"independent and can both be built at the same time. Likewise for\n" +"`abyss.png` and `isles.png`. If you've got a bunch of independent\n" +"branches in your analysis, this can greatly speed up your build\n" +"process." +msgstr "" + +#: make-novice/_extras/discuss.md:23 +msgid "For more information see the GNU Make manual chapter on [Parallel\n" +"Execution][gnu-make-parallel]." +msgstr "" + +#: make-novice/_extras/discuss.md:26 +# header +msgid "## Different Types of Assignment" +msgstr "" + +#: make-novice/_extras/discuss.md:28 +msgid "Some Makefiles may contain `:=` instead of `=`. Your Makefile may\n" +"behave differently depending upon which you use and how you use it:" +msgstr "" + +#: make-novice/_extras/discuss.md:31 +# unordered list +msgid "* A variable defined using `=` is a _recursively expanded" +msgstr "" + +#: make-novice/_extras/discuss.md:32 +msgid " variable_. Its value is calculated only when its value is\n" +" requested. If the value assigned to the variable itself contains\n" +" variables (e.g. `A = $(B)`) then these variables' values are only\n" +" calculated when the variable's value is requested (e.g. the value of\n" +" `B` is only calculated when the value of `A` is requested via\n" +" `$(A)`. This can be termed _lazy setting_." +msgstr "" + +#: make-novice/_extras/discuss.md:39 +# unordered list +msgid "* A variable defined using `:=` is a _simply expanded variable_. Its" +msgstr "" + +#: make-novice/_extras/discuss.md:40 +msgid " value is calculated when it is declared. If the value assigned to\n" +" the variable contains variables (e.g. `A = $(B)`) then these\n" +" variables' values are also calculated when the variable is declared\n" +" (e.g. the value of `B` is calculated when `A` is assigned\n" +" above). This can be termed _immediate setting_." +msgstr "" + +#: make-novice/_extras/discuss.md:46 +msgid "For a detailed explanation, see:" +msgstr "" + +#: make-novice/_extras/discuss.md:48 +# unordered list +msgid "* StackOverflow [Makefile variable assignment][makefile-variable]" +msgstr "" + +#: make-novice/_extras/discuss.md:49 +# unordered list +msgid "* GNU Make [The Two Flavors of Variables][gnu-make-variables]" +msgstr "" + +#: make-novice/_extras/discuss.md:51 +# header +msgid "## Make and Version Control" +msgstr "" + +#: make-novice/_extras/discuss.md:53 +msgid "Imagine that we manage our Makefiles using a version control \n" +"system such as Git." +msgstr "" + +#: make-novice/_extras/discuss.md:56 +msgid "Let's say we'd like to run the workflow developed in this lesson\n" +"for three different word counting scripts, in order to compare their\n" +"speed (e.g. `wordcount.py`, `wordcount2.py`, `wordcount3.py`)." +msgstr "" + +#: make-novice/_extras/discuss.md:60 +msgid "To do this we could edit `config.mk` each time by replacing\n" +"`COUNT_SRC=wordcount.py` with `COUNT_SRC=wordcount2.py` or\n" +"`COUNT_SRC=wordcount3.py`,\n" +"but this would be detected as a change by the version control system.\n" +"This is a minor configuration change, rather than a change to the \n" +"workflow, and so we probably would rather avoid committing this change\n" +"to our repository each time we decide to test a different counting script." +msgstr "" + +#: make-novice/_extras/discuss.md:68 +msgid "An alternative is to leave `config.mk` untouched, by overwriting the value \n" +"of `COUNT_SRC` at the command line instead:" +msgstr "" + +#: make-novice/_extras/discuss.md:71 +# code block +msgid "```\n" +"$ make variables COUNT_SRC=wordcount2.py\n" +"```" +msgstr "" + +#: make-novice/_extras/discuss.md:75 +msgid "The configuration file then simply contains the default values for the \n" +"workflow, and by overwriting the defaults at the command line you can\n" +"maintain a neater and more meaningful version control history." +msgstr "" + +#: make-novice/_extras/discuss.md:79 +# header +msgid "## Make Variables and Shell Variables" +msgstr "" + +#: make-novice/_extras/discuss.md:81 +msgid "Makefiles embed shell scripts within them, as the actions that are\n" +"executed to update an object. More complex actions could well include\n" +"shell variables. There are several ways in which make variables and\n" +"shell variables can be confused and can be in conflict." +msgstr "" + +#: make-novice/_extras/discuss.md:86 +# unordered list +msgid "* Make actually accepts three different syntaxes for variables: `$N`," +msgstr "" + +#: make-novice/_extras/discuss.md:87 +msgid " `$(NAME)`, or `${NAME}`." +msgstr "" + +#: make-novice/_extras/discuss.md:89 +msgid " The single character variable names are most commonly used for\n" +" automatic variables, and there are many of them. But if you happen\n" +" upon a character that isn't pre-defined as an automatic variable,\n" +" make will treat it as a user variable." +msgstr "" + +#: make-novice/_extras/discuss.md:94 +msgid " The `${NAME}` syntax is also used by the unix shell in cases where\n" +" there might be ambiguity in interpreting variable names, or for\n" +" certain pattern substitution operations. Since there are only\n" +" certain situations in which the unix shell requires this syntax,\n" +" instead of the more common `$NAME`, it is not familiar to many users." +msgstr "" + +#: make-novice/_extras/discuss.md:100 +# unordered list +msgid "* Make does variable substitution on actions before they are passed to" +msgstr "" + +#: make-novice/_extras/discuss.md:101 +msgid " the shell for execution. That means that anything that looks like a\n" +" variable to make will get replaced with the appropriate value. (In\n" +" make, an uninitialized variable has a null value.) To protect a\n" +" variable you intend to be interpreted by the shell rather than make,\n" +" you need to \"quote\" the dollar sign by doubling it (`$$`). (This the\n" +" same principle as escaping special characters in the unix shell\n" +" using the backslash (`\\`) character.) In\n" +" short: make variables have a single dollar sign, shell variables\n" +" have a double dollar sign. This applies to anything that looks like\n" +" a variable and needs to be interpreted by the shell rather than\n" +" make, including awk positional parameters (e.g., `awk '{print $$1}'`\n" +" instead of `awk '{print $1}'`) or accessing environment variables\n" +" (e.g., `$$HOME`)." +msgstr "" + +#: make-novice/_extras/discuss.md:115 +# blockquote, which can be cascaded +msgid "> ## Detailed Example of Shell Variable Quoting" +msgstr "" + +#: make-novice/_extras/discuss.md:116 +#: make-novice/_extras/discuss.md:119 +#: make-novice/_extras/discuss.md:122 +#: make-novice/_extras/discuss.md:128 +#: make-novice/_extras/discuss.md:130 +#: make-novice/_extras/discuss.md:135 +#: make-novice/_extras/discuss.md:141 +#: make-novice/_extras/discuss.md:144 +#: make-novice/_extras/discuss.md:147 +#: make-novice/_extras/discuss.md:153 +#: make-novice/_extras/discuss.md:155 +# blockquote, which can be cascaded +msgid "> " +msgstr "" + +#: make-novice/_extras/discuss.md:117 +# blockquote, which can be cascaded +msgid "> Say we had the following `Makefile` (and the .dat files had already" +msgstr "" + +#: make-novice/_extras/discuss.md:118 +# blockquote, which can be cascaded +msgid "> been created):" +msgstr "" + +#: make-novice/_extras/discuss.md:120 +#: make-novice/_extras/discuss.md:131 +#: make-novice/_extras/discuss.md:133 +#: make-novice/_extras/discuss.md:145 +#: make-novice/_extras/discuss.md:156 +#: make-novice/_extras/discuss.md:158 +# blockquote, which can be cascaded +msgid "> ~~~" +msgstr "" + +#: make-novice/_extras/discuss.md:121 +#: make-novice/_extras/discuss.md:146 +# blockquote, which can be cascaded +msgid "> BOOKS = abyss isles" +msgstr "" + +#: make-novice/_extras/discuss.md:123 +#: make-novice/_extras/discuss.md:148 +# blockquote, which can be cascaded +msgid "> .PHONY: plots" +msgstr "" + +#: make-novice/_extras/discuss.md:124 +#: make-novice/_extras/discuss.md:149 +# blockquote, which can be cascaded +msgid "> plots:" +msgstr "" + +#: make-novice/_extras/discuss.md:125 +# blockquote, which can be cascaded +msgid "> for book in $(BOOKS); do python plotcount.py $book.dat $book.png; done" +msgstr "" + +#: make-novice/_extras/discuss.md:126 +#: make-novice/_extras/discuss.md:151 +# blockquote, which can be cascaded +msgid "> ~~~ " +msgstr "" + +#: make-novice/_extras/discuss.md:127 +#: make-novice/_extras/discuss.md:152 +# SC/DC Template label +msgid "> {: .make}" +msgstr "" + +#: make-novice/_extras/discuss.md:129 +# blockquote, which can be cascaded +msgid "> the action that would be passed to the shell to execute would be:" +msgstr "" + +#: make-novice/_extras/discuss.md:132 +# blockquote, which can be cascaded +msgid "> for book in abyss isles; do python plotcount.py ook.dat ook.png; done" +msgstr "" + +#: make-novice/_extras/discuss.md:134 +#: make-novice/_extras/discuss.md:159 +# SC/DC Template label +msgid "> {: .bash}" +msgstr "" + +#: make-novice/_extras/discuss.md:136 +# blockquote, which can be cascaded +msgid "> Notice that make substituted `$(BOOKS)`, as expected, but it also" +msgstr "" + +#: make-novice/_extras/discuss.md:137 +# blockquote, which can be cascaded +msgid "> substituted `$book`, even though we intended it to be a shell variable." +msgstr "" + +#: make-novice/_extras/discuss.md:138 +# blockquote, which can be cascaded +msgid "> Moreover, because we didn't use `$(NAME)` (or `${NAME}`) syntax, make" +msgstr "" + +#: make-novice/_extras/discuss.md:139 +# blockquote, which can be cascaded +msgid "> interpreted it as the single character variable `$b` (which we haven't" +msgstr "" + +#: make-novice/_extras/discuss.md:140 +# blockquote, which can be cascaded +msgid "> defined, so it has a null value) followed by the text \"ook\"." +msgstr "" + +#: make-novice/_extras/discuss.md:142 +# blockquote, which can be cascaded +msgid "> In order to get the desired behavior, we have to write `$$book` instead" +msgstr "" + +#: make-novice/_extras/discuss.md:143 +# blockquote, which can be cascaded +msgid "> of `$book`: " +msgstr "" + +#: make-novice/_extras/discuss.md:150 +# blockquote, which can be cascaded +msgid "> for book in $(BOOKS); do python plotcount.py $$book.dat $$book.png; done" +msgstr "" + +#: make-novice/_extras/discuss.md:154 +# blockquote, which can be cascaded +msgid "> which produces the correct shell command:" +msgstr "" + +#: make-novice/_extras/discuss.md:157 +# blockquote, which can be cascaded +msgid "> for book in abyss isles; do python plotcount.py $book.dat $book.png; done" +msgstr "" + +#: make-novice/_extras/discuss.md:160 +# SC/DC Template label +msgid "{: .discussion}" +msgstr "" + +#: make-novice/_extras/discuss.md:162 +# header +msgid "## Make and Reproducible Research" +msgstr "" + +#: make-novice/_extras/discuss.md:164 +msgid "Blog articles, papers, and tutorials on automating commonly\n" +"occurring research activities using Make:" +msgstr "" + +#: make-novice/_extras/discuss.md:167 +# unordered list +msgid "* [minimal make][minimal-make] by Karl Broman. A minimal tutorial on" +msgstr "" + +#: make-novice/_extras/discuss.md:168 +msgid " using Make with R and LaTeX to automate data analysis, visualization\n" +" and paper preparation. This page has links to Makefiles for many of\n" +" his papers." +msgstr "" + +#: make-novice/_extras/discuss.md:172 +# unordered list +msgid "* [Why Use Make][why-use-make] by Mike Bostock. An example of using" +msgstr "" + +#: make-novice/_extras/discuss.md:173 +msgid " Make to download and convert data." +msgstr "" + +#: make-novice/_extras/discuss.md:175 +# unordered list +msgid "* [Makefiles for R/LaTeX projects][makefiles-for-r-latex] by Rob" +msgstr "" + +#: make-novice/_extras/discuss.md:176 +msgid " Hyndman. Another example of using Make with R and LaTeX." +msgstr "" + +#: make-novice/_extras/discuss.md:178 +# unordered list +msgid "* [GNU Make for Reproducible Data Analysis][make-reproducible-research]" +msgstr "" + +#: make-novice/_extras/discuss.md:179 +msgid " by Zachary Jones. Using Make with Python and LaTeX." +msgstr "" + +#: make-novice/_extras/discuss.md:181 +# unordered list +msgid "* Shaun Jackman's [Using Make to Increase Automation &" +msgstr "" + +#: make-novice/_extras/discuss.md:182 +msgid " Reproducibility][increase-automation] video lesson, and accompanying\n" +" [example][increase-automation-example]." +msgstr "" + +#: make-novice/_extras/discuss.md:185 +# unordered list +msgid "* Lars Yencken's [Driving experiments with" +msgstr "" + +#: make-novice/_extras/discuss.md:186 +msgid " make][driving-experiments]. Using Make to sandbox Python\n" +" dependencies and pull down data sets from Amazon S3." +msgstr "" + +#: make-novice/_extras/discuss.md:189 +# unordered list +msgid "* Askren MK, McAllister-Day TK, Koh N, Mestre Z, Dines JN, Korman BA," +msgstr "" + +#: make-novice/_extras/discuss.md:190 +msgid " Melhorn SJ, Peterson DJ, Peverill M, Qin X, Rane SD, Reilly MA,\n" +" Reiter MA, Sambrook KA, Woelfer KA, Grabowski TJ and Madhyastha TM\n" +" (2016) [Using Make for Reproducible and Parallel Neuroimaging\n" +" Workflow and\n" +" Quality-Assurance][make-neuroscience]. Front. Neuroinform. 10:2. doi:\n" +" 10.3389/fninf.2016.00002" +msgstr "" + +#: make-novice/_extras/discuss.md:197 +# unordered list +msgid "* Li Haoyi's [What's in a Build Tool?][whats-a-build-tool] A review of" +msgstr "" + +#: make-novice/_extras/discuss.md:198 +msgid " popular build tools (including Make) in terms of their strengths and\n" +" weaknesses for common build-related use cases in software\n" +" development." +msgstr "" + +#: make-novice/_extras/discuss.md:202 +msgid "[driving-experiments]: http://lifesum.github.io/posts/2016/01/14/make-experiments/\n" +"[gnu-make-parallel]: https://www.gnu.org/software/make/manual/html_node/Parallel.html\n" +"[gnu-make-variables]: https://www.gnu.org/software/make/manual/html_node/Flavors.html#Flavors\n" +"[increase-automation]: https://www.youtube.com/watch?v=_F5f0qi-aEc\n" +"[increase-automation-example]: https://github.com/sjackman/makefile-example\n" +"[make-neuroscience]: http://journal.frontiersin.org/article/10.3389/fninf.2016.00002/full\n" +"[make-reproducible-research]: http://zmjones.com/make/\n" +"[makefile-variable]: http://stackoverflow.com/questions/448910/makefile-variable-assignment\n" +"[makefiles-for-r-latex]: http://robjhyndman.com/hyndsight/makefiles/\n" +"[minimal-make]: http://kbroman.org/minimal_make/\n" +"[whats-a-build-tool]: http://www.lihaoyi.com/post/WhatsinaBuildTool.html\n" +"[why-use-make]: http://bost.ocks.org/mike/make/" +msgstr "" + +#: make-novice/_extras/discuss.md:215 +# header +msgid "## Return messages and `.PHONY` target behaviour" +msgstr "" + +#: make-novice/_extras/discuss.md:216 +msgid "`Up to date` vs `Nothing to be done` is discussed in [episode 2]({{page.root}}/02-makefiles/)." +msgstr "" + +#: make-novice/_extras/discuss.md:218 +msgid "A more detailed discussion can be read on [issue 98](https://github.com/swcarpentry/make-novice/issues/98#issuecomment-307361751)." +msgstr "" + +#: make-novice/_extras/guide.md:1 +# Front Matter +msgid "---\n" +"layout: page\n" +"title: \"Instructor Notes\"\n" +"permalink: /guide/\n" +"---" +msgstr "" + +#: make-novice/_extras/guide.md:7 +msgid "Make is a popular tool for automating the building of software -\n" +"compiling source code into executable programs." +msgstr "" + +#: make-novice/_extras/guide.md:10 +msgid "Though Make is nearly 40 years old, and there are many other build\n" +"tools available, its fundamental concepts are common across build\n" +"tools." +msgstr "" + +#: make-novice/_extras/guide.md:14 +msgid "Today, researchers working with legacy codes in C or FORTRAN, which\n" +"are very common in high-performance computing, will, very likely\n" +"encounter Make." +msgstr "" + +#: make-novice/_extras/guide.md:18 +msgid "Researchers are also finding Make of use in implementing reproducible\n" +"research workflows, automating data analysis and visualization (using\n" +"Python or R) and combining tables and plots with text to produce\n" +"reports and papers for publication." +msgstr "" + +#: make-novice/_extras/guide.md:23 +# header +msgid "## Overall" +msgstr "" + +#: make-novice/_extras/guide.md:25 +msgid "The overall lesson can be done in 3.5 hours." +msgstr "" + +#: make-novice/_extras/guide.md:27 +msgid "Solutions for challenges are used in subsequent topics." +msgstr "" + +#: make-novice/_extras/guide.md:29 +msgid "A number of example Makefiles, including sample solutions to challenges,\n" +"are in subdirectories of `code` for the corresponding episodes." +msgstr "" + +#: make-novice/_extras/guide.md:32 +msgid "It can be useful to use two windows during the lesson, one with the terminal where you run the `make` commands, the other with the Makefile opened in a text editor all the time. This makes it possible to refer to the Makefile while explaining the output from the commandline, for example. Make sure, though, that the text in both windows is readable from the back of the room." +msgstr "" + +#: make-novice/_extras/guide.md:34 +# header +msgid "## Setting up Make" +msgstr "" + +#: make-novice/_extras/guide.md:36 +msgid "Recommend instructors and students use `nano` as the text editor for\n" +"this lesson because" +msgstr "" + +#: make-novice/_extras/guide.md:39 +# unordered list +msgid "* it runs in all three major operating systems," +msgstr "" + +#: make-novice/_extras/guide.md:40 +# unordered list +msgid "* it runs inside the shell (switching windows can be confusing to" +msgstr "" + +#: make-novice/_extras/guide.md:41 +msgid " students), and\n" +"* it has shortcut help at the bottom of the window." +msgstr "" + +#: make-novice/_extras/guide.md:44 +msgid "Please point out to students during setup that they can and should use\n" +"another text editor if they're already familiar with it." +msgstr "" + +#: make-novice/_extras/guide.md:47 +msgid "Instructors and students should use two shell windows: one for running\n" +"nano, and one for running Make." +msgstr "" + +#: make-novice/_extras/guide.md:50 +msgid "Check that all attendees have Make installed and that it runs\n" +"correctly, before beginning the session." +msgstr "" + +#: make-novice/_extras/guide.md:53 +# header +msgid "## Code and Data Files" +msgstr "" + +#: make-novice/_extras/guide.md:55 +msgid "Python scripts to be invoked by Make are in `code/`." +msgstr "" + +#: make-novice/_extras/guide.md:57 +msgid "Data files are in `data/books`." +msgstr "" + +#: make-novice/_extras/guide.md:59 +msgid "You can either create a simple Git repository for students to clone\n" +"which contains:" +msgstr "" + +#: make-novice/_extras/guide.md:62 +# unordered list +msgid "* `countwords.py`" +msgstr "" + +#: make-novice/_extras/guide.md:63 +# unordered list +msgid "* `plotcounts.py`" +msgstr "" + +#: make-novice/_extras/guide.md:64 +# unordered list +msgid "* `testzipf.py`" +msgstr "" + +#: make-novice/_extras/guide.md:65 +# unordered list +msgid "* `books/`" +msgstr "" + +#: make-novice/_extras/guide.md:67 +msgid "Or, ask students to download\n" +"[make-lesson.zip][zipfile] from this repository." +msgstr "" + +#: make-novice/_extras/guide.md:70 +msgid "To recreate `make-lesson.zip`, run:" +msgstr "" + +#: make-novice/_extras/guide.md:72 +# code block +msgid "~~~\n" +"$ make make-lesson.zip\n" +"~~~" +msgstr "" + +#: make-novice/_extras/guide.md:77 +# header +msgid "## Beware of Spaces!" +msgstr "" + +#: make-novice/_extras/guide.md:79 +msgid "The single most commonly occurring problem will be students using\n" +"spaces instead of TABs when indenting actions." +msgstr "" + +#: make-novice/_extras/guide.md:82 +# header +msgid "## Makefile Dependency Images" +msgstr "" + +#: make-novice/_extras/guide.md:84 +msgid "Some of these pages use images of Makefile dependencies, in the `fig` directory." +msgstr "" + +#: make-novice/_extras/guide.md:86 +msgid "These are created using [makefile2graph][makefile2graph],\n" +"which is assumed to be in the `PATH`.\n" +"This tool, in turn, needs the `dot` tool, part of [GraphViz][graphviz]." +msgstr "" + +#: make-novice/_extras/guide.md:90 +msgid "To install GraphViz on Scientific Linux 6:" +msgstr "" + +#: make-novice/_extras/guide.md:92 +# code block +msgid "~~~\n" +"$ sudo yum install graphviz\n" +"$ dot -V\n" +"~~~" +msgstr "" + +#: make-novice/_extras/guide.md:97 +# code block +msgid "~~~\n" +"dot - graphviz version 2.26.0 (20091210.2329)\n" +"~~~" +msgstr "" + +#: make-novice/_extras/guide.md:102 +msgid "To install GraphViz on Ubuntu 14.04.3 and 15.10:" +msgstr "" + +#: make-novice/_extras/guide.md:104 +# code block +msgid "~~~\n" +"$ sudo apt-get install graphviz\n" +"$ dot -V\n" +"~~~" +msgstr "" + +#: make-novice/_extras/guide.md:109 +# code block +msgid "~~~\n" +"dot - graphviz version 2.38.0 (20140413.2041)\n" +"~~~" +msgstr "" + +#: make-novice/_extras/guide.md:114 +msgid "To download and build makefile2graph on Linux:" +msgstr "" + +#: make-novice/_extras/guide.md:116 +# code block +msgid "~~~\n" +"$ cd\n" +"$ git clone https://github.com/lindenb/makefile2graph\n" +"$ cd makefile2graph/\n" +"$ make\n" +"$ export PATH=~/makefile2graph/:$PATH\n" +"$ cd\n" +"$ which makefile2graph\n" +"~~~" +msgstr "" + +#: make-novice/_extras/guide.md:126 +# code block +msgid "~~~\n" +"/home/ubuntu/makefile2graph/makefile2graph\n" +"~~~" +msgstr "" + +#: make-novice/_extras/guide.md:131 +msgid "To create the image files for the lesson:" +msgstr "" + +#: make-novice/_extras/guide.md:133 +# code block +msgid "~~~\n" +"$ make diagrams\n" +"~~~" +msgstr "" + +#: make-novice/_extras/guide.md:138 +msgid "See `commands.mk`'s `diagrams` target." +msgstr "" + +#: make-novice/_extras/guide.md:140 +# header +msgid "## UnicodeDecodeError troubleshooting" +msgstr "" + +#: make-novice/_extras/guide.md:142 +msgid "When processing `books/last.txt` with Python 3 and vanilla shell environment on Arch Linux\n" +"the following error has appeared:" +msgstr "" + +#: make-novice/_extras/guide.md:145 +# code block +msgid "~~~\n" +"$ python wordcount.py books/last.txt last.dat\n" +"~~~" +msgstr "" + +#: make-novice/_extras/guide.md:149 +# code block +msgid "~~~\n" +"Traceback (most recent call last):\n" +" File \"wordcount.py\", line 131, in \n" +" word_count(input_file, output_file, min_length)\n" +" File \"wordcount.py\", line 118, in word_count\n" +" lines = load_text(input_file)\n" +" File \"wordcount.py\", line 14, in load_text\n" +" lines = input_fd.read().splitlines()\n" +" File \"/usr/lib/python3.6/encodings/ascii.py\", line 26, in decode\n" +" return codecs.ascii_decode(input, self.errors)[0]\n" +"UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 6862: ordinal not in range(128)\n" +"~~~" +msgstr "" + +#: make-novice/_extras/guide.md:163 +msgid "The workaround was to define encoding for the terminal session (this can be either done at the command line\n" +"or placed in the `.bashrc` or equivalent):" +msgstr "" + +#: make-novice/_extras/guide.md:166 +# code block +msgid "~~~\n" +"$ export LC_ALL=en_US.UTF-8\n" +"$ export LANG=en_US.UTF-8\n" +"$ export LANGUAGE=en_US.UTF-8\n" +"~~~" +msgstr "" + +#: make-novice/_extras/guide.md:173 +# header +msgid "## Beware of different Make implementations!" +msgstr "" + +#: make-novice/_extras/guide.md:175 +msgid "The lesson is based on GNU Make. Although it is very rare, on some systems (e.g. AIX) \n" +"you might find `make` not pointing to GNU Make and `gmake` needs to be used instead. " +msgstr "" + +#: make-novice/_extras/guide.md:178 +msgid "[graphviz]: http://www.graphviz.org/\n" +"[lesson-example]: https://github.com/carpentries/lesson-example/\n" +"[makefile2graph]: https://github.com/lindenb/makefile2graph\n" +"[zipfile]: {{ page.root }}/files/make-lesson.zip" +msgstr "" + +#: make-novice/_includes/links.md:1 +msgid "[cc-by-human]: https://creativecommons.org/licenses/by/4.0/\n" +"[cc-by-legal]: https://creativecommons.org/licenses/by/4.0/legalcode\n" +"[ci]: http://communityin.org/\n" +"[coc-reporting]: https://docs.carpentries.org/topic_folders/policies/code-of-conduct.html#reporting-guidelines\n" +"[coc]: https://docs.carpentries.org/topic_folders/policies/code-of-conduct.html\n" +"[concept-maps]: https://carpentries.github.io/instructor-training/05-memory/\n" +"[contrib-covenant]: https://contributor-covenant.org/\n" +"[contributing]: {{ site.github.repository_url }}/blob/gh-pages/CONTRIBUTING.md\n" +"[cran-checkpoint]: https://cran.r-project.org/package=checkpoint\n" +"[cran-knitr]: https://cran.r-project.org/package=knitr\n" +"[cran-stringr]: https://cran.r-project.org/package=stringr\n" +"[email]: mailto:team@carpentries.org\n" +"[github-importer]: https://import.github.com/\n" +"[importer]: https://github.com/new/import\n" +"[jekyll-collection]: https://jekyllrb.com/docs/collections/\n" +"[jekyll-install]: https://jekyllrb.com/docs/installation/\n" +"[jekyll-windows]: http://jekyll-windows.juthilo.com/\n" +"[jekyll]: https://jekyllrb.com/\n" +"[jupyter]: https://jupyter.org/\n" +"[lesson-example]: https://carpentries.github.io/lesson-example/\n" +"[mit-license]: https://opensource.org/licenses/mit-license.html\n" +"[morea]: https://morea-framework.github.io/\n" +"[numfocus]: https://numfocus.org/\n" +"[osi]: https://opensource.org\n" +"[pandoc]: https://pandoc.org/\n" +"[paper-now]: https://github.com/PeerJ/paper-now\n" +"[python-gapminder]: https://swcarpentry.github.io/python-novice-gapminder/\n" +"[pyyaml]: https://pypi.python.org/pypi/PyYAML\n" +"[r-markdown]: https://rmarkdown.rstudio.com/\n" +"[rstudio]: https://www.rstudio.com/\n" +"[ruby-install-guide]: https://www.ruby-lang.org/en/downloads/\n" +"[ruby-installer]: https://rubyinstaller.org/\n" +"[rubygems]: https://rubygems.org/pages/download/\n" +"[styles]: https://github.com/carpentries/styles/\n" +"[swc-releases]: https://github.com/swcarpentry/swc-releases\n" +"[workshop-repo]: {{ site.workshop_repo }}\n" +"[yaml]: http://yaml.org/" +msgstr "" + +#: make-novice/aio.md:1 +# Front Matter +msgid "---\n" +"layout: page \n" +"root: .\n" +"---" +msgstr "" + +#: make-novice/aio.md:5 +#: make-novice/bin/boilerplate/aio.md:3 +# inline html +msgid "" +msgstr "" + +#: make-novice/aio.md:31 +#: make-novice/bin/boilerplate/_extras/figures.md:33 +#: make-novice/bin/boilerplate/aio.md:29 +msgid "{% comment %}\n" +"Create anchor for each one of the episodes.\n" +"{% endcomment %}\n" +"{% for episode in site.episodes %}\n" +"
\n" +"{% endfor %}" +msgstr "" + +#: make-novice/bin/boilerplate/CONTRIBUTING.md:12 +msgid "By contributing,\n" +"you agree that we may redistribute your work under [our license](LICENSE.md).\n" +"In exchange,\n" +"we will address your issues and/or assess your change proposal as promptly as we can,\n" +"and help you become a member of our community.\n" +"Everyone involved in [Software Carpentry][swc-site] and [Data Carpentry][dc-site]\n" +"agrees to abide by our [code of conduct](CODE_OF_CONDUCT.md)." +msgstr "" + +#: make-novice/bin/boilerplate/CONTRIBUTING.md:30 +msgid " you can [send us comments by email][email].\n" +" However,\n" +" we will be able to respond more quickly if you use one of the other methods described below." +msgstr "" + +#: make-novice/bin/boilerplate/CONTRIBUTING.md:49 +msgid " please work in ,\n" +" which can be viewed at ." +msgstr "" + +#: make-novice/bin/boilerplate/CONTRIBUTING.md:69 +msgid "There are many ways to contribute,\n" +"from writing new exercises and improving existing ones\n" +"to updating or filling in the documentation\n" +"and submitting [bug reports][issues]\n" +"about things that don't work, aren't clear, or are missing.\n" +"If you are looking for ideas, please see the 'Issues' tab for\n" +"a list of issues associated with this repository,\n" +"or you may also look at the issues for [Data Carpentry][dc-issues]\n" +"and [Software Carpentry][swc-issues] projects." +msgstr "" + +#: make-novice/bin/boilerplate/CONTRIBUTING.md:104 +msgid "If you choose to contribute via GitHub, you may want to look at\n" +"[How to Contribute to an Open Source Project on GitHub][how-contribute].\n" +"To manage changes, we follow [GitHub flow][github-flow].\n" +"Each lesson has two maintainers who review issues and pull requests or encourage others to do so.\n" +"The maintainers are community volunteers and have final say over what gets merged into the lesson.\n" +"To use the web interface for contributing to a lesson:" +msgstr "" + +#: make-novice/bin/boilerplate/CONTRIBUTING.md:111 +# ordered list +msgid "1. Fork the originating repository to your GitHub profile." +msgstr "" + +#: make-novice/bin/boilerplate/CONTRIBUTING.md:112 +# ordered list +msgid "2. Within your version of the forked repository, move to the `gh-pages` branch and" +msgstr "" + +#: make-novice/bin/boilerplate/CONTRIBUTING.md:113 +msgid "create a new branch for each significant change being made.\n" +"3. Navigate to the file(s) you wish to change within the new branches and make revisions as required.\n" +"4. Commit all changed files within the appropriate branches.\n" +"5. Create individual pull requests from each of your changed branches\n" +"to the `gh-pages` branch within the originating repository.\n" +"6. If you receive feedback, make changes using your issue-specific branches of the forked\n" +"repository and the pull requests will update automatically.\n" +"7. Repeat as needed until all feedback has been addressed." +msgstr "" + +#: make-novice/bin/boilerplate/CONTRIBUTING.md:122 +msgid "When starting work, please make sure your clone of the originating `gh-pages` branch is up-to-date\n" +"before creating your own revision-specific branch(es) from there.\n" +"Additionally, please only work from your newly-created branch(es) and *not*\n" +"your clone of the originating `gh-pages` branch.\n" +"Lastly, published copies of all the lessons are available in the `gh-pages` branch of the originating\n" +"repository for reference while revising." +msgstr "" + +#: make-novice/bin/boilerplate/CONTRIBUTING.md:131 +msgid "General discussion of [Software Carpentry][swc-site] and [Data Carpentry][dc-site]\n" +"happens on the [discussion mailing list][discuss-list],\n" +"which everyone is welcome to join.\n" +"You can also [reach us by email][email]." +msgstr "" + +#: make-novice/bin/boilerplate/CONTRIBUTING.md:136 +msgid "[email]: mailto:admin@software-carpentry.org\n" +"[dc-issues]: https://github.com/issues?q=user%3Adatacarpentry\n" +"[dc-lessons]: http://datacarpentry.org/lessons/\n" +"[dc-site]: http://datacarpentry.org/\n" +"[discuss-list]: http://lists.software-carpentry.org/listinfo/discuss\n" +"[github]: https://github.com\n" +"[github-flow]: https://guides.github.com/introduction/flow/\n" +"[github-join]: https://github.com/join\n" +"[how-contribute]: https://egghead.io/series/how-to-contribute-to-an-open-source-project-on-github\n" +"[issues]: https://guides.github.com/features/issues/\n" +"[swc-issues]: https://github.com/issues?q=user%3Aswcarpentry\n" +"[swc-lessons]: https://software-carpentry.org/lessons/\n" +"[swc-site]: https://software-carpentry.org/" +msgstr "" + +#: make-novice/bin/boilerplate/README.md:1 +# header +msgid "# FIXME Lesson title" +msgstr "" + +#: make-novice/bin/boilerplate/README.md:3 +msgid "[![Create a Slack Account with us](https://img.shields.io/badge/Create_Slack_Account-The_Carpentries-071159.svg)](https://swc-slack-invite.herokuapp.com/)" +msgstr "" + +#: make-novice/bin/boilerplate/README.md:5 +#: make-novice/bin/boilerplate/_episodes/01-introduction.md:12 +#: make-novice/bin/boilerplate/_extras/discuss.md:4 +#: make-novice/bin/boilerplate/_extras/guide.md:4 +#: make-novice/bin/boilerplate/reference.md:7 +#: make-novice/bin/boilerplate/setup.md:4 +msgid "FIXME" +msgstr "" + +#: make-novice/bin/boilerplate/README.md:7 +# header +msgid "## Contributing" +msgstr "" + +#: make-novice/bin/boilerplate/README.md:9 +msgid "We welcome all contributions to improve the lesson! Maintainers will do their best to help you if you have any\n" +"questions, concerns, or experience any difficulties along the way." +msgstr "" + +#: make-novice/bin/boilerplate/README.md:12 +msgid "We'd like to ask you to familiarize yourself with our [Contribution Guide](CONTRIBUTING.md) and have a look at\n" +"the [more detailed guidelines][lesson-example] on proper formatting, ways to render the lesson locally, and even\n" +"how to write new episodes." +msgstr "" + +#: make-novice/bin/boilerplate/README.md:16 +# header +msgid "## Maintainer(s)" +msgstr "" + +#: make-novice/bin/boilerplate/README.md:18 +# unordered list +msgid "* FIXME" +msgstr "" + +#: make-novice/bin/boilerplate/README.md:20 +# header +msgid "## Authors" +msgstr "" + +#: make-novice/bin/boilerplate/README.md:22 +msgid "A list of contributors to the lesson can be found in [AUTHORS](AUTHORS)" +msgstr "" + +#: make-novice/bin/boilerplate/README.md:24 +# header +msgid "## Citation" +msgstr "" + +#: make-novice/bin/boilerplate/README.md:26 +msgid "To cite this lesson, please consult with [CITATION](CITATION)" +msgstr "" + +#: make-novice/bin/boilerplate/README.md:28 +msgid "[lesson-example]: https://carpentries.github.io/lesson-example" +msgstr "" + +#: make-novice/bin/boilerplate/_episodes/01-introduction.md:1 +# Front Matter +msgid "---\n" +"title: \"Introduction\"\n" +"teaching: 0\n" +"exercises: 0\n" +"questions:\n" +"- \"Key question (FIXME)\"\n" +"objectives:\n" +"- \"First objective. (FIXME)\"\n" +"keypoints:\n" +"- \"First key point. (FIXME)\"\n" +"---" +msgstr "" + +#: make-novice/bin/boilerplate/_extras/about.md:1 +# Front Matter +msgid "---\n" +"title: About\n" +"---" +msgstr "" + +#: make-novice/bin/boilerplate/_extras/about.md:4 +msgid "{% include carpentries.html %}\n" +"{% include links.md %}" +msgstr "" + +#: make-novice/bin/boilerplate/_extras/discuss.md:1 +# Front Matter +msgid "---\n" +"title: Discussion\n" +"---" +msgstr "" + +#: make-novice/bin/boilerplate/_extras/figures.md:1 +# Front Matter +msgid "---\n" +"title: Figures\n" +"---" +msgstr "" + +#: make-novice/bin/boilerplate/_extras/figures.md:4 +# inline html +msgid "" +msgstr "" + +#: make-novice/bin/boilerplate/_extras/guide.md:1 +# Front Matter +msgid "---\n" +"title: \"Instructor Notes\"\n" +"---" +msgstr "" + +#: make-novice/bin/boilerplate/aio.md:1 +# Front Matter +msgid "---\n" +"---" +msgstr "" + +#: make-novice/bin/boilerplate/index.md:1 +# Front Matter +msgid "---\n" +"layout: lesson\n" +"root: . # Is the only page that don't follow the partner /:path/index.html\n" +"permalink: index.html # Is the only page that don't follow the partner /:path/index.html\n" +"---" +msgstr "" + +#: make-novice/bin/boilerplate/index.md:6 +msgid "FIXME: home page introduction" +msgstr "" + +#: make-novice/bin/boilerplate/index.md:8 +#: make-novice/index.md:29 +# blockquote, which can be cascaded +msgid "> ## Prerequisites" +msgstr "" + +#: make-novice/bin/boilerplate/index.md:9 +msgid ">\n" +"> FIXME" +msgstr "" + +#: make-novice/bin/boilerplate/index.md:11 +#: make-novice/index.md:35 +#: make-novice/index.md:40 +# SC/DC Template label +msgid "{: .prereq}" +msgstr "" + +#: make-novice/bin/boilerplate/reference.md:1 +# Front Matter +msgid "---\n" +"layout: reference\n" +"---" +msgstr "" + +#: make-novice/bin/boilerplate/reference.md:5 +#: make-novice/reference.md:244 +# header +msgid "## Glossary" +msgstr "" + +#: make-novice/bin/boilerplate/setup.md:1 +# Front Matter +msgid "---\n" +"title: Setup\n" +"---" +msgstr "" + +#: make-novice/data/books/LICENSE_TEXTS.md:1 +msgid "A Note on the Texts' Licensing\n" +"==============================" +msgstr "" + +#: make-novice/data/books/LICENSE_TEXTS.md:4 +msgid "Each text is from [Project Gutenberg](http://www.gutenberg.org/)." +msgstr "" + +#: make-novice/data/books/LICENSE_TEXTS.md:6 +msgid "Headers and footers have been removed for the purposes of this\n" +"exercise. All the texts are governed by The Full Project Gutenberg\n" +"License reproduced below." +msgstr "" + +#: make-novice/data/books/LICENSE_TEXTS.md:10 +msgid "The texts and originating URLs are:" +msgstr "" + +#: make-novice/data/books/LICENSE_TEXTS.md:12 +# unordered list +msgid "* [A Journey to the Western Islands of Scotland by Samuel Johnson](http://www.gutenberg.org/cache/epub/2064/pg2064.txt)" +msgstr "" + +#: make-novice/data/books/LICENSE_TEXTS.md:13 +# unordered list +msgid "* [The People of the Abyss by Jack London](http://www.gutenberg.org/ebooks/1688)" +msgstr "" + +#: make-novice/data/books/LICENSE_TEXTS.md:14 +# unordered list +msgid "* [My First Summer in the Sierra by John Muir](http://www.gutenberg.org/cache/epub/32540/pg32540.txt)" +msgstr "" + +#: make-novice/data/books/LICENSE_TEXTS.md:15 +# unordered list +msgid "* [Scott's Last Expedition Volume I by Robert Falcon Scott](http://www.gutenberg.org/ebooks/11579)" +msgstr "" + +#: make-novice/data/books/LICENSE_TEXTS.md:17 +msgid "*** START: FULL LICENSE ***" +msgstr "" + +#: make-novice/data/books/LICENSE_TEXTS.md:19 +msgid "THE FULL PROJECT GUTENBERG LICENSE\n" +"PLEASE READ THIS BEFORE YOU DISTRIBUTE OR USE THIS WORK" +msgstr "" + +#: make-novice/data/books/LICENSE_TEXTS.md:22 +msgid "To protect the Project Gutenberg-tm mission of promoting the free\n" +"distribution of electronic works, by using or distributing this work\n" +"(or any other work associated in any way with the phrase \"Project\n" +"Gutenberg\"), you agree to comply with all the terms of the Full Project\n" +"Gutenberg-tm License (available with this file or online at\n" +"http://gutenberg.net/license)." +msgstr "" + +#: make-novice/data/books/LICENSE_TEXTS.md:29 +msgid "Section 1. General Terms of Use and Redistributing Project Gutenberg-tm\n" +"electronic works" +msgstr "" + +#: make-novice/data/books/LICENSE_TEXTS.md:32 +msgid "1.A. By reading or using any part of this Project Gutenberg-tm\n" +"electronic work, you indicate that you have read, understand, agree to\n" +"and accept all the terms of this license and intellectual property\n" +"(trademark/copyright) agreement. If you do not agree to abide by all\n" +"the terms of this agreement, you must cease using and return or destroy\n" +"all copies of Project Gutenberg-tm electronic works in your possession.\n" +"If you paid a fee for obtaining a copy of or access to a Project\n" +"Gutenberg-tm electronic work and you do not agree to be bound by the\n" +"terms of this agreement, you may obtain a refund from the person or\n" +"entity to whom you paid the fee as set forth in paragraph 1.E.8." +msgstr "" + +#: make-novice/data/books/LICENSE_TEXTS.md:43 +msgid "1.B. \"Project Gutenberg\" is a registered trademark. It may only be\n" +"used on or associated in any way with an electronic work by people who\n" +"agree to be bound by the terms of this agreement. There are a few\n" +"things that you can do with most Project Gutenberg-tm electronic works\n" +"even without complying with the full terms of this agreement. See\n" +"paragraph 1.C below. There are a lot of things you can do with Project\n" +"Gutenberg-tm electronic works if you follow the terms of this agreement\n" +"and help preserve free future access to Project Gutenberg-tm electronic\n" +"works. See paragraph 1.E below." +msgstr "" + +#: make-novice/data/books/LICENSE_TEXTS.md:53 +msgid "1.C. The Project Gutenberg Literary Archive Foundation (\"the Foundation\"\n" +"or PGLAF), owns a compilation copyright in the collection of Project\n" +"Gutenberg-tm electronic works. Nearly all the individual works in the\n" +"collection are in the public domain in the United States. If an\n" +"individual work is in the public domain in the United States and you are\n" +"located in the United States, we do not claim a right to prevent you from\n" +"copying, distributing, performing, displaying or creating derivative\n" +"works based on the work as long as all references to Project Gutenberg\n" +"are removed. Of course, we hope that you will support the Project\n" +"Gutenberg-tm mission of promoting free access to electronic works by\n" +"freely sharing Project Gutenberg-tm works in compliance with the terms of\n" +"this agreement for keeping the Project Gutenberg-tm name associated with\n" +"the work. You can easily comply with the terms of this agreement by\n" +"keeping this work in the same format with its attached full Project\n" +"Gutenberg-tm License when you share it without charge with others." +msgstr "" + +#: make-novice/data/books/LICENSE_TEXTS.md:69 +msgid "1.D. The copyright laws of the place where you are located also govern\n" +"what you can do with this work. Copyright laws in most countries are in\n" +"a constant state of change. If you are outside the United States, check\n" +"the laws of your country in addition to the terms of this agreement\n" +"before downloading, copying, displaying, performing, distributing or\n" +"creating derivative works based on this work or any other Project\n" +"Gutenberg-tm work. The Foundation makes no representations concerning\n" +"the copyright status of any work in any country outside the United\n" +"States." +msgstr "" + +#: make-novice/data/books/LICENSE_TEXTS.md:79 +msgid "1.E. Unless you have removed all references to Project Gutenberg:" +msgstr "" + +#: make-novice/data/books/LICENSE_TEXTS.md:81 +msgid "1.E.1. The following sentence, with active links to, or other immediate\n" +"access to, the full Project Gutenberg-tm License must appear prominently\n" +"whenever any copy of a Project Gutenberg-tm work (any work on which the\n" +"phrase \"Project Gutenberg\" appears, or with which the phrase \"Project\n" +"Gutenberg\" is associated) is accessed, displayed, performed, viewed,\n" +"copied or distributed:" +msgstr "" + +#: make-novice/data/books/LICENSE_TEXTS.md:88 +msgid "This eBook is for the use of anyone anywhere at no cost and with\n" +"almost no restrictions whatsoever. You may copy it, give it away or\n" +"re-use it under the terms of the Project Gutenberg License included\n" +"with this eBook or online at www.gutenberg.net" +msgstr "" + +#: make-novice/data/books/LICENSE_TEXTS.md:93 +msgid "1.E.2. If an individual Project Gutenberg-tm electronic work is derived\n" +"from the public domain (does not contain a notice indicating that it is\n" +"posted with permission of the copyright holder), the work can be copied\n" +"and distributed to anyone in the United States without paying any fees\n" +"or charges. If you are redistributing or providing access to a work\n" +"with the phrase \"Project Gutenberg\" associated with or appearing on the\n" +"work, you must comply either with the requirements of paragraphs 1.E.1\n" +"through 1.E.7 or obtain permission for the use of the work and the\n" +"Project Gutenberg-tm trademark as set forth in paragraphs 1.E.8 or\n" +"1.E.9." +msgstr "" + +#: make-novice/data/books/LICENSE_TEXTS.md:104 +msgid "1.E.3. If an individual Project Gutenberg-tm electronic work is posted\n" +"with the permission of the copyright holder, your use and distribution\n" +"must comply with both paragraphs 1.E.1 through 1.E.7 and any additional\n" +"terms imposed by the copyright holder. Additional terms will be linked\n" +"to the Project Gutenberg-tm License for all works posted with the\n" +"permission of the copyright holder found at the beginning of this work." +msgstr "" + +#: make-novice/data/books/LICENSE_TEXTS.md:111 +msgid "1.E.4. Do not unlink or detach or remove the full Project Gutenberg-tm\n" +"License terms from this work, or any files containing a part of this\n" +"work or any other work associated with Project Gutenberg-tm." +msgstr "" + +#: make-novice/data/books/LICENSE_TEXTS.md:115 +msgid "1.E.5. Do not copy, display, perform, distribute or redistribute this\n" +"electronic work, or any part of this electronic work, without\n" +"prominently displaying the sentence set forth in paragraph 1.E.1 with\n" +"active links or immediate access to the full terms of the Project\n" +"Gutenberg-tm License." +msgstr "" + +#: make-novice/data/books/LICENSE_TEXTS.md:121 +msgid "1.E.6. You may convert to and distribute this work in any binary,\n" +"compressed, marked up, nonproprietary or proprietary form, including any\n" +"word processing or hypertext form. However, if you provide access to or\n" +"distribute copies of a Project Gutenberg-tm work in a format other than\n" +"\"Plain Vanilla ASCII\" or other format used in the official version\n" +"posted on the official Project Gutenberg-tm web site (www.gutenberg.net),\n" +"you must, at no additional cost, fee or expense to the user, provide a\n" +"copy, a means of exporting a copy, or a means of obtaining a copy upon\n" +"request, of the work in its original \"Plain Vanilla ASCII\" or other\n" +"form. Any alternate format must include the full Project Gutenberg-tm\n" +"License as specified in paragraph 1.E.1." +msgstr "" + +#: make-novice/data/books/LICENSE_TEXTS.md:133 +msgid "1.E.7. Do not charge a fee for access to, viewing, displaying,\n" +"performing, copying or distributing any Project Gutenberg-tm works\n" +"unless you comply with paragraph 1.E.8 or 1.E.9." +msgstr "" + +#: make-novice/data/books/LICENSE_TEXTS.md:137 +msgid "1.E.8. You may charge a reasonable fee for copies of or providing\n" +"access to or distributing Project Gutenberg-tm electronic works provided\n" +"that" +msgstr "" + +#: make-novice/data/books/LICENSE_TEXTS.md:141 +# unordered list +msgid "- You pay a royalty fee of 20% of the gross profits you derive from" +msgstr "" + +#: make-novice/data/books/LICENSE_TEXTS.md:142 +msgid " the use of Project Gutenberg-tm works calculated using the method\n" +" you already use to calculate your applicable taxes. The fee is\n" +" owed to the owner of the Project Gutenberg-tm trademark, but he\n" +" has agreed to donate royalties under this paragraph to the\n" +" Project Gutenberg Literary Archive Foundation. Royalty payments\n" +" must be paid within 60 days following each date on which you\n" +" prepare (or are legally required to prepare) your periodic tax\n" +" returns. Royalty payments should be clearly marked as such and\n" +" sent to the Project Gutenberg Literary Archive Foundation at the\n" +" address specified in Section 4, \"Information about donations to\n" +" the Project Gutenberg Literary Archive Foundation.\"" +msgstr "" + +#: make-novice/data/books/LICENSE_TEXTS.md:154 +# unordered list +msgid "- You provide a full refund of any money paid by a user who notifies" +msgstr "" + +#: make-novice/data/books/LICENSE_TEXTS.md:155 +msgid " you in writing (or by e-mail) within 30 days of receipt that s/he\n" +" does not agree to the terms of the full Project Gutenberg-tm\n" +" License. You must require such a user to return or\n" +" destroy all copies of the works possessed in a physical medium\n" +" and discontinue all use of and all access to other copies of\n" +" Project Gutenberg-tm works." +msgstr "" + +#: make-novice/data/books/LICENSE_TEXTS.md:162 +# unordered list +msgid "- You provide, in accordance with paragraph 1.F.3, a full refund of any" +msgstr "" + +#: make-novice/data/books/LICENSE_TEXTS.md:163 +msgid " money paid for a work or a replacement copy, if a defect in the\n" +" electronic work is discovered and reported to you within 90 days\n" +" of receipt of the work." +msgstr "" + +#: make-novice/data/books/LICENSE_TEXTS.md:167 +# unordered list +msgid "- You comply with all other terms of this agreement for free" +msgstr "" + +#: make-novice/data/books/LICENSE_TEXTS.md:168 +msgid " distribution of Project Gutenberg-tm works." +msgstr "" + +#: make-novice/data/books/LICENSE_TEXTS.md:170 +msgid "1.E.9. If you wish to charge a fee or distribute a Project Gutenberg-tm\n" +"electronic work or group of works on different terms than are set\n" +"forth in this agreement, you must obtain permission in writing from\n" +"both the Project Gutenberg Literary Archive Foundation and Michael\n" +"Hart, the owner of the Project Gutenberg-tm trademark. Contact the\n" +"Foundation as set forth in Section 3 below." +msgstr "" + +#: make-novice/data/books/LICENSE_TEXTS.md:177 +msgid "1.F." +msgstr "" + +#: make-novice/data/books/LICENSE_TEXTS.md:179 +msgid "1.F.1. Project Gutenberg volunteers and employees expend considerable\n" +"effort to identify, do copyright research on, transcribe and proofread\n" +"public domain works in creating the Project Gutenberg-tm\n" +"collection. Despite these efforts, Project Gutenberg-tm electronic\n" +"works, and the medium on which they may be stored, may contain\n" +"\"Defects,\" such as, but not limited to, incomplete, inaccurate or\n" +"corrupt data, transcription errors, a copyright or other intellectual\n" +"property infringement, a defective or damaged disk or other medium, a\n" +"computer virus, or computer codes that damage or cannot be read by\n" +"your equipment." +msgstr "" + +#: make-novice/data/books/LICENSE_TEXTS.md:190 +msgid "1.F.2. LIMITED WARRANTY, DISCLAIMER OF DAMAGES - Except for the \"Right\n" +"of Replacement or Refund\" described in paragraph 1.F.3, the Project\n" +"Gutenberg Literary Archive Foundation, the owner of the Project\n" +"Gutenberg-tm trademark, and any other party distributing a Project\n" +"Gutenberg-tm electronic work under this agreement, disclaim all\n" +"liability to you for damages, costs and expenses, including legal\n" +"fees. YOU AGREE THAT YOU HAVE NO REMEDIES FOR NEGLIGENCE, STRICT\n" +"LIABILITY, BREACH OF WARRANTY OR BREACH OF CONTRACT EXCEPT THOSE\n" +"PROVIDED IN PARAGRAPH F3. YOU AGREE THAT THE FOUNDATION, THE\n" +"TRADEMARK OWNER, AND ANY DISTRIBUTOR UNDER THIS AGREEMENT WILL NOT BE\n" +"LIABLE TO YOU FOR ACTUAL, DIRECT, INDIRECT, CONSEQUENTIAL, PUNITIVE OR\n" +"INCIDENTAL DAMAGES EVEN IF YOU GIVE NOTICE OF THE POSSIBILITY OF SUCH\n" +"DAMAGE." +msgstr "" + +#: make-novice/data/books/LICENSE_TEXTS.md:204 +msgid "1.F.3. LIMITED RIGHT OF REPLACEMENT OR REFUND - If you discover a\n" +"defect in this electronic work within 90 days of receiving it, you can\n" +"receive a refund of the money (if any) you paid for it by sending a\n" +"written explanation to the person you received the work from. If you\n" +"received the work on a physical medium, you must return the medium with\n" +"your written explanation. The person or entity that provided you with\n" +"the defective work may elect to provide a replacement copy in lieu of a\n" +"refund. If you received the work electronically, the person or entity\n" +"providing it to you may choose to give you a second opportunity to\n" +"receive the work electronically in lieu of a refund. If the second copy\n" +"is also defective, you may demand a refund in writing without further\n" +"opportunities to fix the problem." +msgstr "" + +#: make-novice/data/books/LICENSE_TEXTS.md:217 +msgid "1.F.4. Except for the limited right of replacement or refund set forth\n" +"in paragraph 1.F.3, this work is provided to you 'AS-IS' WITH NO OTHER\n" +"WARRANTIES OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO\n" +"WARRANTIES OF MERCHANTIBILITY OR FITNESS FOR ANY PURPOSE." +msgstr "" + +#: make-novice/data/books/LICENSE_TEXTS.md:222 +msgid "1.F.5. Some states do not allow disclaimers of certain implied\n" +"warranties or the exclusion or limitation of certain types of damages.\n" +"If any disclaimer or limitation set forth in this agreement violates the\n" +"law of the state applicable to this agreement, the agreement shall be\n" +"interpreted to make the maximum disclaimer or limitation permitted by\n" +"the applicable state law. The invalidity or unenforceability of any\n" +"provision of this agreement shall not void the remaining provisions." +msgstr "" + +#: make-novice/data/books/LICENSE_TEXTS.md:230 +msgid "1.F.6. INDEMNITY - You agree to indemnify and hold the Foundation, the\n" +"trademark owner, any agent or employee of the Foundation, anyone\n" +"providing copies of Project Gutenberg-tm electronic works in accordance\n" +"with this agreement, and any volunteers associated with the production,\n" +"promotion and distribution of Project Gutenberg-tm electronic works,\n" +"harmless from all liability, costs and expenses, including legal fees,\n" +"that arise directly or indirectly from any of the following which you do\n" +"or cause to occur: (a) distribution of this or any Project Gutenberg-tm\n" +"work, (b) alteration, modification, or additions or deletions to any\n" +"Project Gutenberg-tm work, and (c) any Defect you cause." +msgstr "" + +#: make-novice/data/books/LICENSE_TEXTS.md:241 +msgid "Section 2. Information about the Mission of Project Gutenberg-tm" +msgstr "" + +#: make-novice/data/books/LICENSE_TEXTS.md:243 +msgid "Project Gutenberg-tm is synonymous with the free distribution of\n" +"electronic works in formats readable by the widest variety of computers\n" +"including obsolete, old, middle-aged and new computers. It exists\n" +"because of the efforts of hundreds of volunteers and donations from\n" +"people in all walks of life." +msgstr "" + +#: make-novice/data/books/LICENSE_TEXTS.md:249 +msgid "Volunteers and financial support to provide volunteers with the\n" +"assistance they need, is critical to reaching Project Gutenberg-tm's\n" +"goals and ensuring that the Project Gutenberg-tm collection will\n" +"remain freely available for generations to come. In 2001, the Project\n" +"Gutenberg Literary Archive Foundation was created to provide a secure\n" +"and permanent future for Project Gutenberg-tm and future generations.\n" +"To learn more about the Project Gutenberg Literary Archive Foundation\n" +"and how your efforts and donations can help, see Sections 3 and 4\n" +"and the Foundation web page at http://www.pglaf.org." +msgstr "" + +#: make-novice/data/books/LICENSE_TEXTS.md:259 +msgid "Section 3. Information about the Project Gutenberg Literary Archive\n" +"Foundation" +msgstr "" + +#: make-novice/data/books/LICENSE_TEXTS.md:262 +msgid "The Project Gutenberg Literary Archive Foundation is a non profit\n" +"501(c)(3) educational corporation organized under the laws of the\n" +"state of Mississippi and granted tax exempt status by the Internal\n" +"Revenue Service. The Foundation's EIN or federal tax identification\n" +"number is 64-6221541. Its 501(c)(3) letter is posted at\n" +"http://pglaf.org/fundraising. Contributions to the Project Gutenberg\n" +"Literary Archive Foundation are tax deductible to the full extent\n" +"permitted by U.S. federal laws and your state's laws." +msgstr "" + +#: make-novice/data/books/LICENSE_TEXTS.md:271 +msgid "The Foundation's principal office is located at 4557 Melan Dr. S.\n" +"Fairbanks, AK, 99712., but its volunteers and employees are scattered\n" +"throughout numerous locations. Its business office is located at\n" +"809 North 1500 West, Salt Lake City, UT 84116, (801) 596-1887, email\n" +"business@pglaf.org. Email contact links and up to date contact\n" +"information can be found at the Foundation's web site and official\n" +"page at http://pglaf.org" +msgstr "" + +#: make-novice/data/books/LICENSE_TEXTS.md:279 +msgid "For additional contact information:\n" +" Dr. Gregory B. Newby\n" +" Chief Executive and Director\n" +" gbnewby@pglaf.org" +msgstr "" + +#: make-novice/data/books/LICENSE_TEXTS.md:284 +msgid "Section 4. Information about Donations to the Project Gutenberg\n" +"Literary Archive Foundation" +msgstr "" + +#: make-novice/data/books/LICENSE_TEXTS.md:287 +msgid "Project Gutenberg-tm depends upon and cannot survive without wide\n" +"spread public support and donations to carry out its mission of\n" +"increasing the number of public domain and licensed works that can be\n" +"freely distributed in machine readable form accessible by the widest\n" +"array of equipment including outdated equipment. Many small donations\n" +"($1 to $5,000) are particularly important to maintaining tax exempt\n" +"status with the IRS." +msgstr "" + +#: make-novice/data/books/LICENSE_TEXTS.md:295 +msgid "The Foundation is committed to complying with the laws regulating\n" +"charities and charitable donations in all 50 states of the United\n" +"States. Compliance requirements are not uniform and it takes a\n" +"considerable effort, much paperwork and many fees to meet and keep up\n" +"with these requirements. We do not solicit donations in locations\n" +"where we have not received written confirmation of compliance. To\n" +"SEND DONATIONS or determine the status of compliance for any\n" +"particular state visit http://pglaf.org" +msgstr "" + +#: make-novice/data/books/LICENSE_TEXTS.md:304 +msgid "While we cannot and do not solicit contributions from states where we\n" +"have not met the solicitation requirements, we know of no prohibition\n" +"against accepting unsolicited donations from donors in such states who\n" +"approach us with offers to donate." +msgstr "" + +#: make-novice/data/books/LICENSE_TEXTS.md:309 +msgid "International donations are gratefully accepted, but we cannot make\n" +"any statements concerning tax treatment of donations received from\n" +"outside the United States. U.S. laws alone swamp our small staff." +msgstr "" + +#: make-novice/data/books/LICENSE_TEXTS.md:313 +msgid "Please check the Project Gutenberg Web pages for current donation\n" +"methods and addresses. Donations are accepted in a number of other\n" +"ways including including checks, online payments and credit card\n" +"donations. To donate, please visit: http://pglaf.org/donate" +msgstr "" + +#: make-novice/data/books/LICENSE_TEXTS.md:318 +msgid "Section 5. General Information About Project Gutenberg-tm electronic\n" +"works." +msgstr "" + +#: make-novice/data/books/LICENSE_TEXTS.md:321 +msgid "Professor Michael S. Hart is the originator of the Project Gutenberg-tm\n" +"concept of a library of electronic works that could be freely shared\n" +"with anyone. For thirty years, he produced and distributed Project\n" +"Gutenberg-tm eBooks with only a loose network of volunteer support." +msgstr "" + +#: make-novice/data/books/LICENSE_TEXTS.md:326 +msgid "Project Gutenberg-tm eBooks are often created from several printed\n" +"editions, all of which are confirmed as Public Domain in the U.S.\n" +"unless a copyright notice is included. Thus, we do not necessarily\n" +"keep eBooks in compliance with any particular paper edition." +msgstr "" + +#: make-novice/data/books/LICENSE_TEXTS.md:331 +msgid "Most people start at our Web site which has the main PG search facility:" +msgstr "" + +#: make-novice/data/books/LICENSE_TEXTS.md:333 +msgid " http://www.gutenberg.net" +msgstr "" + +#: make-novice/data/books/LICENSE_TEXTS.md:335 +msgid "This Web site includes information about Project Gutenberg-tm,\n" +"including how to make donations to the Project Gutenberg Literary\n" +"Archive Foundation, how to help produce our new eBooks, and how to\n" +"subscribe to our email newsletter to hear about new eBooks" +msgstr "" + +#: make-novice/index.md:1 +# Front Matter +msgid "---\n" +"layout: lesson\n" +"root: .\n" +"---" +msgstr "" + +#: make-novice/index.md:6 +msgid "Make is a tool which can run commands to read files, process these\n" +"files in some way, and write out the processed files. For example,\n" +"in software development, Make is used to compile source code\n" +"into executable programs or libraries, but Make can also be used\n" +"to:" +msgstr "" + +#: make-novice/index.md:12 +# unordered list +msgid "* run analysis scripts on raw data files to get data files that" +msgstr "" + +#: make-novice/index.md:13 +msgid " summarize the raw data;\n" +"* run visualization scripts on data files to produce plots; and to\n" +"* parse and combine text files and plots to create papers." +msgstr "" + +#: make-novice/index.md:17 +msgid "Make is called a build tool - it builds data files, plots, papers,\n" +"programs or libraries. It can also update existing files if\n" +"desired." +msgstr "" + +#: make-novice/index.md:21 +msgid "Make tracks the dependencies between the files it creates and the\n" +"files used to create these. If one of the original files (e.g. a data\n" +"file) is changed, then Make knows to recreate, or update, the files\n" +"that depend upon this file (e.g. a plot)." +msgstr "" + +#: make-novice/index.md:26 +msgid "There are now many build tools available, all of which are based on\n" +"the same concepts as Make." +msgstr "" + +#: make-novice/index.md:30 +msgid ">\n" +"> In this lesson we use `make` from the Unix Shell. Some previous\n" +"> experience with using the shell to list directories, create, copy,\n" +"> remove and list files and directories, and run simple scripts is\n" +"> necessary." +msgstr "" + +#: make-novice/index.md:37 +# blockquote, which can be cascaded +msgid "> ## Setup" +msgstr "" + +#: make-novice/index.md:38 +# blockquote, which can be cascaded +msgid "> In order to follow this lesson, you will need to download some files." +msgstr "" + +#: make-novice/index.md:39 +# blockquote, which can be cascaded +msgid "> Please follow instructions on the [setup]({{ page.root }}/setup) page." +msgstr "" + +#: make-novice/reference.md:1 +# Front Matter +msgid "---\n" +"layout: reference\n" +"root: .\n" +"---" +msgstr "" + +#: make-novice/reference.md:6 +# header +msgid "## Running Make" +msgstr "" + +#: make-novice/reference.md:8 +msgid "To run Make:" +msgstr "" + +#: make-novice/reference.md:15 +msgid "Make will look for a Makefile called `Makefile` and will build the\n" +"default target, the first target in the Makefile." +msgstr "" + +#: make-novice/reference.md:18 +msgid "To use a Makefile with a different name, use the `-f` flag e.g." +msgstr "" + +#: make-novice/reference.md:20 +# code block +msgid "~~~\n" +"$ make -f build-files/analyze.mk\n" +"~~~" +msgstr "" + +#: make-novice/reference.md:25 +msgid "To build a specific target, provide it as an argument e.g." +msgstr "" + +#: make-novice/reference.md:27 +# code block +msgid "~~~\n" +"$ make isles.dat\n" +"~~~" +msgstr "" + +#: make-novice/reference.md:32 +msgid "If the target is up-to-date, Make will print a message like:" +msgstr "" + +#: make-novice/reference.md:39 +msgid "To see the actions Make will run when building a target, without\n" +"running the actions, use the `--dry-run` flag e.g." +msgstr "" + +#: make-novice/reference.md:42 +# code block +msgid "~~~\n" +"$ make --dry-run isles.dat\n" +"~~~" +msgstr "" + +#: make-novice/reference.md:47 +msgid "Alternatively, use the abbreviation `-n`." +msgstr "" + +#: make-novice/reference.md:49 +# code block +msgid "~~~\n" +"$ make -n isles.dat\n" +"~~~" +msgstr "" + +#: make-novice/reference.md:54 +# header +msgid "## Trouble Shooting" +msgstr "" + +#: make-novice/reference.md:56 +#: make-novice/reference.md:66 +msgid "If Make prints a message like," +msgstr "" + +#: make-novice/reference.md:63 +msgid "then check that all the actions are indented by TAB characters and not\n" +"spaces." +msgstr "" + +#: make-novice/reference.md:68 +# code block +msgid "~~~\n" +"No such file or directory: 'books/%.txt'\n" +"make: *** [isles.dat] Error 1\n" +"~~~" +msgstr "" + +#: make-novice/reference.md:74 +msgid "then you may have used the Make wildcard, `%`, in an action in a\n" +"pattern rule. Make wildcards cannot be used in actions." +msgstr "" + +#: make-novice/reference.md:77 +# header +msgid "## Makefiles" +msgstr "" + +#: make-novice/reference.md:79 +msgid "Rules:" +msgstr "" + +#: make-novice/reference.md:81 +# code block +msgid "~~~\n" +"target : dependency1 dependency2 ...\n" +" action1\n" +" action2\n" +" ...\n" +"~~~" +msgstr "" + +#: make-novice/reference.md:87 +#: make-novice/reference.md:113 +#: make-novice/reference.md:122 +#: make-novice/reference.md:139 +#: make-novice/reference.md:158 +#: make-novice/reference.md:173 +#: make-novice/reference.md:187 +#: make-novice/reference.md:196 +#: make-novice/reference.md:203 +#: make-novice/reference.md:215 +#: make-novice/reference.md:233 +# SC/DC Template label +msgid "{: .make}" +msgstr "" + +#: make-novice/reference.md:89 +# unordered list +msgid "* Each rule has a target, a file to be created, or built." +msgstr "" + +#: make-novice/reference.md:90 +# unordered list +msgid "* Each rule has zero or more dependencies, files that are needed to" +msgstr "" + +#: make-novice/reference.md:91 +msgid " build the target.\n" +"* `:` separates the target and the dependencies.\n" +"* Dependencies are separated by spaces.\n" +"* Each rule has zero or more actions, commands to run to build the\n" +" target using the dependencies.\n" +"* Actions are indented using the TAB character, not 8 spaces." +msgstr "" + +#: make-novice/reference.md:98 +msgid "Dependencies:" +msgstr "" + +#: make-novice/reference.md:100 +# unordered list +msgid "* If any dependency does not exist then Make will look for a rule to" +msgstr "" + +#: make-novice/reference.md:101 +msgid " build it.\n" +"* The order of rebuilding dependencies is arbitrary. You should not\n" +" assume that they will be built in the order in which they are listed.\n" +"* Dependencies must form a directed acyclic graph. A target cannot\n" +" depend on a dependency which, in turn depends upon, or has a\n" +" dependency which depends upon, that target." +msgstr "" + +#: make-novice/reference.md:108 +msgid "Comments:" +msgstr "" + +#: make-novice/reference.md:110 +# code block +msgid "~~~\n" +"# This is a Make comment.\n" +"~~~" +msgstr "" + +#: make-novice/reference.md:115 +msgid "Line continuation character:" +msgstr "" + +#: make-novice/reference.md:117 +# code block +msgid "~~~\n" +"ARCHIVE = isles.dat isles.png \\\n" +" abyss.dat abyss.png \\\n" +" sierra.dat sierra.png\n" +"~~~" +msgstr "" + +#: make-novice/reference.md:124 +# unordered list +msgid "* If a list of dependencies or an action is too long, a Makefile can" +msgstr "" + +#: make-novice/reference.md:125 +msgid " become more difficult to read.\n" +"* Backslash,`\\`, the line continuation character, allows you to split\n" +" up a list of dependencies or an action over multiple lines, to make\n" +" them easier to read.\n" +"* Make will combine the multiple lines into a single list of dependencies\n" +" or action." +msgstr "" + +#: make-novice/reference.md:132 +msgid "Phony targets:" +msgstr "" + +#: make-novice/reference.md:134 +# code block +msgid "~~~\n" +".PHONY : clean\n" +"clean :\n" +" rm -f *.dat\n" +"~~~" +msgstr "" + +#: make-novice/reference.md:141 +# unordered list +msgid "* Phony targets are a short-hand for sequences of actions." +msgstr "" + +#: make-novice/reference.md:142 +# unordered list +msgid "* No file with the target name is built when a rule with a phony" +msgstr "" + +#: make-novice/reference.md:143 +msgid " target is run." +msgstr "" + +#: make-novice/reference.md:145 +msgid "Automatic variables:" +msgstr "" + +#: make-novice/reference.md:147 +# unordered list +msgid "* `$<` denotes 'the first dependency of the current rule'." +msgstr "" + +#: make-novice/reference.md:148 +# unordered list +msgid "* `$@` denotes 'the target of the current rule'." +msgstr "" + +#: make-novice/reference.md:149 +# unordered list +msgid "* `$^` denotes 'the dependencies of the current rule'." +msgstr "" + +#: make-novice/reference.md:150 +# unordered list +msgid "* `$*` denotes 'the stem with which the pattern of the current rule matched'." +msgstr "" + +#: make-novice/reference.md:152 +msgid "Pattern rules:" +msgstr "" + +#: make-novice/reference.md:154 +# code block +msgid "~~~\n" +"%.dat : books/%.txt $(COUNT_SRC)\n" +" $(COUNT_EXE) $< $@\n" +"~~~" +msgstr "" + +#: make-novice/reference.md:160 +# unordered list +msgid "* The Make wildcard, `%`, specifies a pattern." +msgstr "" + +#: make-novice/reference.md:161 +# unordered list +msgid "* If Make finds a dependency matching the pattern, then the pattern is" +msgstr "" + +#: make-novice/reference.md:162 +msgid " substituted into the target.\n" +"* The Make wildcard can only be used in targets and dependencies.\n" +"* e.g. if Make found a file called `books/abyss.txt`, it would set the\n" +" target to be `abyss.dat`." +msgstr "" + +#: make-novice/reference.md:167 +msgid "Defining and using variables:" +msgstr "" + +#: make-novice/reference.md:169 +# code block +msgid "~~~\n" +"COUNT_SRC=wordcount.py\n" +"COUNT_EXE=python $(COUNT_SRC)\n" +"~~~" +msgstr "" + +#: make-novice/reference.md:175 +# unordered list +msgid "* A variable is assigned a value. For example, `COUNT_SRC`" +msgstr "" + +#: make-novice/reference.md:176 +msgid " is assigned the value `wordcount.py`.\n" +"* `$(...)` is a reference to a variable. It requests that\n" +" Make substitutes the name of a variable for its value." +msgstr "" + +#: make-novice/reference.md:180 +msgid "Suppress printing of actions:" +msgstr "" + +#: make-novice/reference.md:182 +# code block +msgid "~~~\n" +".PHONY : variables\n" +"variables:\n" +" @echo TXT_FILES: $(TXT_FILES)\n" +"~~~" +msgstr "" + +#: make-novice/reference.md:189 +# unordered list +msgid "* Prefix an action by `@` to instruct Make not to print that action." +msgstr "" + +#: make-novice/reference.md:191 +msgid "Include the contents of a Makefile in another Makefile:" +msgstr "" + +#: make-novice/reference.md:198 +msgid "wildcard function:" +msgstr "" + +#: make-novice/reference.md:205 +# unordered list +msgid "* Looks for all files matching a pattern e.g. `books/*.txt`, and" +msgstr "" + +#: make-novice/reference.md:206 +msgid " return these in a list.\n" +"* e.g. `TXT_FILES` is set to `books/abyss.txt books/isles.txt\n" +" books/last.txt books/sierra.txt`." +msgstr "" + +#: make-novice/reference.md:210 +msgid "patsubst ('path substitution') function:" +msgstr "" + +#: make-novice/reference.md:217 +# unordered list +msgid "* Every string that matches `books/%.txt` in `$(TXT_FILES)` is" +msgstr "" + +#: make-novice/reference.md:218 +msgid " replaced by `%.dat` and the strings are returned in a list.\n" +"* e.g. if `TXT_FILES` is `books/abyss.txt books/isles.txt\n" +" books/last.txt books/sierra.txt` this sets `DAT_FILES` to `abyss.dat\n" +" isles.dat last.dat sierra.dat`." +msgstr "" + +#: make-novice/reference.md:223 +msgid "Default targets:" +msgstr "" + +#: make-novice/reference.md:225 +# unordered list +msgid "* In Make version 3.79 the default target is the first target in the" +msgstr "" + +#: make-novice/reference.md:226 +msgid " Makefile.\n" +"* In Make 3.81, the default target can be explicitly set using the\n" +" special variable `.DEFAULT_GOAL` e.g." +msgstr "" + +#: make-novice/reference.md:230 +# code block +msgid "~~~\n" +".DEFAULT_GOAL := all\n" +"~~~" +msgstr "" + +#: make-novice/reference.md:235 +# header +msgid "## Manuals" +msgstr "" + +#: make-novice/reference.md:237 +msgid "[GNU Make Manual][gnu-make-manual]. Reference sections include:" +msgstr "" + +#: make-novice/reference.md:239 +# unordered list +msgid "* [Summary of Options][options-summary] for the `make` command." +msgstr "" + +#: make-novice/reference.md:240 +# unordered list +msgid "* [Quick Reference][quick-reference] of Make directives, text manipulation functions, and special variables." +msgstr "" + +#: make-novice/reference.md:241 +# unordered list +msgid "* [Automatic Variables][automatic-variables]." +msgstr "" + +#: make-novice/reference.md:242 +# unordered list +msgid "* [Special Built-in Target Names][special-targets]" +msgstr "" + +#: make-novice/reference.md:246 +msgid "{:auto_ids}\n" +"action\n" +": The steps a [build manager](#build-manager) must take to create or\n" +" update a file or other object." +msgstr "" + +#: make-novice/reference.md:251 +msgid "assignment\n" +": A request that [Make](#make) stores something in a\n" +" [variable](#variable)." +msgstr "" + +#: make-novice/reference.md:255 +msgid "automatic variable\n" +": A variable whose value is automatically redefined for each\n" +" [rule](#rule). [Make](#make)'s automatic variables include `$@`,\n" +" which holds the rule's [target](#target), `$^`, which holds its\n" +" [dependencies](#dependency), and, `$<`, which holds the first of\n" +" its dependencies, and `$*`, which holds the [stem](#stem) with which\n" +" the pattern was matched. Automatic variables are typically used in\n" +" [pattern rules](#pattern-rule)." +msgstr "" + +#: make-novice/reference.md:264 +msgid "build file\n" +": A description of [dependencies](#dependency) and [rules](#rule)\n" +" for a [build manager](#build-manager)." +msgstr "" + +#: make-novice/reference.md:268 +msgid "build manager\n" +": A program, such as [Make](#make), whose main purpose is to build or\n" +" update software, documentation, web sites, data files, images, and\n" +" other things." +msgstr "" + +#: make-novice/reference.md:273 +msgid "default rule\n" +": The [rule](#rule) that is executed if no [target](#target) is\n" +" specified when a [build manager](#build-manager) is run." +msgstr "" + +#: make-novice/reference.md:277 +msgid "default target\n" +": The [target](#target) of the [default rule](#default-rule)." +msgstr "" + +#: make-novice/reference.md:280 +msgid "dependency\n" +": A file that a [target](#target) depends on. If any of a target's\n" +" [dependencies](#dependency) are newer than the target itself, the\n" +" target needs to be updated. A target's dependencies are also\n" +" called its prerequisites. If a target's dependencies do not exist,\n" +" then they need to be built first." +msgstr "" + +#: make-novice/reference.md:287 +msgid "false dependency\n" +": This can refer to a [dependency](#dependency) that is artificial.\n" +" e.g. a false dependency is introduced if a data analysis script\n" +" is added as a dependency to the data files that the script\n" +" analyses." +msgstr "" + +#: make-novice/reference.md:293 +msgid "function\n" +": A built-in [Make](#make) utility that performs some operation, for\n" +" example gets a list of files matching a pattern." +msgstr "" + +#: make-novice/reference.md:297 +msgid "incremental build\n" +": The feature of a [build manager](#build-manager) by\n" +" which it only rebuilds files that, either directory\n" +" or indirectly, depend on a file that was changed." +msgstr "" + +#: make-novice/reference.md:302 +msgid "macro\n" +": Used as a synonym for [variable](#variable) in certain versions of\n" +" [Make](#make)." +msgstr "" + +#: make-novice/reference.md:306 +msgid "Make\n" +": A popular [build manager](#build-manager), from GNU, created in 1977." +msgstr "" + +#: make-novice/reference.md:309 +msgid "Makefile\n" +": A [build file](#build-file) used by [Make](#make), which, by\n" +" default, are named `Makefile`." +msgstr "" + +#: make-novice/reference.md:313 +msgid "pattern rule\n" +": A [rule](#rule) that specifies a general way to build or update an\n" +" entire class of files that can be managed the same way. For\n" +" example, a pattern rule can specify how to compile any C file\n" +" rather than a single, specific C file, or, to analyze any data\n" +" file rather than a single, specific data file. Pattern rules\n" +" typically make use of [automatic variables](#automatic-variable)\n" +" and [wildcards](#wildcard)." +msgstr "" + +#: make-novice/reference.md:322 +msgid "phony target\n" +": A [target](#target) that does not correspond to a file or other\n" +" object. Phony targets are usually symbolic names for sequences of\n" +" [actions](#action)." +msgstr "" + +#: make-novice/reference.md:327 +msgid "prerequisite\n" +": A synonym for [dependency](#dependency)." +msgstr "" + +#: make-novice/reference.md:330 +msgid "reference\n" +": A request that [Make](#make) substitutes the name of a\n" +" [variable](#variable) for its value." +msgstr "" + +#: make-novice/reference.md:334 +msgid "rule\n" +": A specification of a [target](#target)'s\n" +" [dependencies](#dependency) and what [actions](#action) need to be\n" +" executed to build or update the target." +msgstr "" + +#: make-novice/reference.md:339 +msgid "stem\n" +": The part of the target that was matched by the pattern rule. If\n" +" the target is `file.dat` and the target pattern was `%.dat`, then\n" +" the stem `$*` is `file`." +msgstr "" + +#: make-novice/reference.md:344 +msgid "target\n" +": A thing to be created or updated, for example a file. Targets can\n" +" have [dependencies](#dependency) that must exist, and be\n" +" up-to-date, before the target itself can be built or updated." +msgstr "" + +#: make-novice/reference.md:349 +msgid "variable\n" +": A symbolic name for something in a [Makefile](#makefile)." +msgstr "" + +#: make-novice/reference.md:352 +msgid "wildcard\n" +": A pattern that can be specified in [dependencies](#dependency) and\n" +" [targets](#target). If [Make](#make) finds a dependency matching\n" +" the pattern, then the pattern is substituted into the\n" +" target. wildcards are often used in [pattern\n" +" rules](#pattern-rule). The Make wildcard is `%`." +msgstr "" + +#: make-novice/reference.md:359 +msgid "[automatic-variables]: https://www.gnu.org/software/make/manual/html_node/Automatic-Variables.html\n" +"[gnu-make-manual]: https://www.gnu.org/software/make/manual/\n" +"[options-summary]: https://www.gnu.org/software/make/manual/html_node/Options-Summary.html\n" +"[quick-reference]: https://www.gnu.org/software/make/manual/html_node/Quick-Reference.html\n" +"[special-targets]: https://www.gnu.org/software/make/manual/html_node/Special-Targets.html" +msgstr "" + +#: make-novice/setup.md:1 +# Front Matter +msgid "---\n" +"layout: page\n" +"title: \"Setup\"\n" +"root: .\n" +"---" +msgstr "" + +#: make-novice/setup.md:7 +# header +msgid "## Files" +msgstr "" + +#: make-novice/setup.md:9 +msgid "You need to download some files to follow this lesson:" +msgstr "" + +#: make-novice/setup.md:11 +# ordered list +msgid "1. Download [make-lesson.zip][zip-file]." +msgstr "" + +#: make-novice/setup.md:13 +# ordered list +msgid "2. Move `make-lesson.zip` into a directory which you can access via your bash shell." +msgstr "" + +#: make-novice/setup.md:15 +# ordered list +msgid "3. Open a Bash shell window." +msgstr "" + +#: make-novice/setup.md:17 +# ordered list +msgid "4. Navigate to the directory where you downloaded the file." +msgstr "" + +#: make-novice/setup.md:19 +# ordered list +msgid "5. Unpack `make-lesson.zip`:" +msgstr "" + +#: make-novice/setup.md:21 +msgid " ~~~\n" +" $ unzip make-lesson.zip\n" +" ~~~" +msgstr "" + +#: make-novice/setup.md:24 +#: make-novice/setup.md:31 +# SC/DC Template label +msgid " {: .source}" +msgstr "" + +#: make-novice/setup.md:26 +# ordered list +msgid "6. Change into the `make-lesson` directory:" +msgstr "" + +#: make-novice/setup.md:28 +msgid " ~~~\n" +" $ cd make-lesson\n" +" ~~~" +msgstr "" + +#: make-novice/setup.md:35 +msgid "You also need to have the following software installed on your computer to\n" +"follow this lesson:" +msgstr "" + +#: make-novice/setup.md:38 +# header +msgid "### GNU Make" +msgstr "" + +#: make-novice/setup.md:40 +# header +msgid "#### Linux" +msgstr "" + +#: make-novice/setup.md:42 +msgid "Make is a standard tool on most Linux systems and should already be available.\n" +"Check if you already have Make installed by typing `make -v` into a terminal." +msgstr "" + +#: make-novice/setup.md:45 +msgid "One exception is Debian, and you should install Make from the terminal using\n" +"`sudo apt-get install make`." +msgstr "" + +#: make-novice/setup.md:48 +# header +msgid "#### OSX" +msgstr "" + +#: make-novice/setup.md:50 +msgid "You will need to have Xcode installed (download from the\n" +"[Apple website](https://developer.apple.com/xcode/)).\n" +"Check if you already have Make installed by typing `make -v` into a terminal. " +msgstr "" + +#: make-novice/setup.md:54 +# header +msgid "#### Windows" +msgstr "" + +#: make-novice/setup.md:55 +msgid "Use the Software Carpentry [Windows installer](https://github.com/swcarpentry/windows-installer)." +msgstr "" + +#: make-novice/setup.md:57 +# header +msgid "### Python" +msgstr "" + +#: make-novice/setup.md:59 +msgid "Python2 or Python3, Numpy and Matplotlib are required.\n" +"They can be installed separately, but the easiest approach is to install \n" +"[Anaconda](https://www.anaconda.com/distribution/) which includes all of the\n" +"necessary python software." +msgstr "" + +#: make-novice/setup.md:64 +msgid "[zip-file]: {{ page.root }}/files/make-lesson.zip" +msgstr "" + diff --git a/po/python-novice-gapminder.ja.po b/po/python-novice-gapminder.ja.po index 6a2a6307..1b86c7d5 100644 --- a/po/python-novice-gapminder.ja.po +++ b/po/python-novice-gapminder.ja.po @@ -1,7 +1,7 @@ # Japanese translation of the Software Carpentry Plotting and Programming in Python Lesson -# Copyright (C) 2018 Software Carpentry Foundation; Japanese Translation Team +# Copyright (C) 2019 Software Carpentry Foundation; Japanese Translation Team # This file is distributed under the same license as the PACKAGE package. -# Software-Carpentry Japanese-Team , 2018. +# Software-Carpentry Japanese-Team , 2019, 2020. # msgid "" msgstr "" diff --git a/po/python-novice-inflammation.ja.po b/po/python-novice-inflammation.ja.po index a1edd5c5..25ccc694 100644 --- a/po/python-novice-inflammation.ja.po +++ b/po/python-novice-inflammation.ja.po @@ -1,7 +1,7 @@ # Japanese translation of the Software Carpentry Programming with Python Lesson -# Copyright (C) 2018 Software Carpentry Foundation; Japanese Translation Team +# Copyright (C) 2019 Software Carpentry Foundation; Japanese Translation Team # This file is distributed under the same license as the PACKAGE package. -# Software-Carpentry Japanese-Team , 2018. +# Software-Carpentry Japanese-Team , 2019, 2020. # msgid "" msgstr "" diff --git a/po/r-novice-gapminder.ja.po b/po/r-novice-gapminder.ja.po index cc432717..9935219b 100644 --- a/po/r-novice-gapminder.ja.po +++ b/po/r-novice-gapminder.ja.po @@ -1,13 +1,14 @@ # Japanese translation of the Software Carpentry R for Reproducible Scientific Analysis Lesson -# Copyright (C) 2018 Software Carpentry Foundation; Japanese Translation Team +# Copyright (C) 2019 Software Carpentry Foundation; Japanese Translation Team # This file is distributed under the same license as the PACKAGE package. -# Software-Carpentry Japanese-Team , 2018. +# Software-Carpentry Japanese-Team , 2019, 2020. # msgid "" msgstr "" "Project-Id-Version: i18n\n" "Report-Msgid-Bugs-To: https://github.com/haiwen/seafile-docs/issues\n" "POT-Creation-Date: 2018-09-15 22:59:57+0900\n" +"PO-Revision-Date: 2019-08-09 06:17+0900\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -15,8 +16,6 @@ msgstr "" "Last-Translator: \n" "Language-Team: Japanese \n" "Language: ja\n" -"X-Generator: Poedit 2.2.3\n" -"PO-Revision-Date: \n" # Front Matter #: r-novice-gapminder/CODE_OF_CONDUCT.md:1 @@ -2187,7 +2186,7 @@ msgstr "" "> 以外では、2数の比較に決して `==` を使わないこと。\n" ">\n" "> コンピュータは、小数点以下の数を限られた精度でしか示せません。\n" -"> なので、二つの数がRで同じように表示されても\n" +"> かもしれません。すると、二つの数がRで同じように表示されても\n" "> 実際は、その背後で異なる形で表されており、したがって\n" "> ごくわずかな誤差(機械の数値許容範囲)があるかもしれません。\n" ">\n" @@ -3349,7 +3348,7 @@ msgid "" "that has been used to generate it;" msgstr "" "1. どれが原本でどれが修正した版のデータか判別するのがとても難しくなる\n" -"2. 幾つもの拡張ファイルを一緒に混ぜ合わせるため、\n" +"2. 幾つもの拡張子の異なるファイルを一緒に混ぜ合わせるため、\n" "とてもごちゃごちゃしてくる\n" "3. 探しているものを見つけたり、正しい図とその図を出力する\n" "コードの対応が分かるようになるのに、時間がかかる" @@ -3433,7 +3432,7 @@ msgstr "" # header #: r-novice-gapminder/_episodes/02-project-intro.md:76 msgid "## Best practices for project organization" -msgstr "## プロジェクト整理の最適なやり方" +msgstr "## プロジェクト管理の最適なやり方" #: r-novice-gapminder/_episodes/02-project-intro.md:78 msgid "" @@ -3446,7 +3445,7 @@ msgstr "" # header #: r-novice-gapminder/_episodes/02-project-intro.md:81 msgid "### Treat data as read only" -msgstr "### データは読み込むだけにしましょう" +msgstr "### データは読み込み専用にしましょう" #: r-novice-gapminder/_episodes/02-project-intro.md:83 msgid "" @@ -3477,9 +3476,9 @@ msgid "" msgstr "" "多くの場合、データは「汚れて」います:\n" "R(または、他のプログラミング言語)が使える形にするためには、かなりの前処理が必要となるでしょう。\n" -"この作業は、「データ・マンジング」と呼ばれることもあります。 前処理で書いたものは、\n" -"違うフォルダに保存し、「きれいにした」データセットを持つ2つめの「読み込むだけ」のデータを\n" -"置くフォルダを作ると便利です。" +"この作業は、「データ・マンジング」と呼ばれることもあります。 前処理で書いたコードは、\n" +"違うフォルダに保存し、「きれいにした」データセットをこのフォルダに\n" +"置くと便利です。" # header #: r-novice-gapminder/_episodes/02-project-intro.md:97 @@ -3530,7 +3529,7 @@ msgstr "" "> 1. それぞれのプロジェクトを独自のディレクトリに置き、プロジェクトから取った名前をつける\n" "> 2. プロジェクトに関連するテキスト文書を `doc` ディレクトリに置く\n" "> 3. 生のデータとメタデータを`data`のディレクトリに置き、クリーンアップで生成されたファイルと分析に使ったファイルを `results` ディレクトリに置く\n" -"> 4. プロジェクトで書いたスクリプトとプログラムのソースは、`src` ディレクトリに、違うところから持ってきた、またはローカルで編集されたものは `bin` ディレクトリに置く\n" +"> 4. プロジェクトで書いたスクリプトとプログラムのソースは、`src` ディレクトリに、違うところから持ってきた、またはローカルで変換されたものは `bin` ディレクトリに置く\n" "> 5. 全てのファイルを中身や機能を反映する形で名づけること\n" ">" @@ -3573,7 +3572,7 @@ msgid "" "> use the `mklink` command from the windows terminal." msgstr "" ">\n" -"> 複数のプロジェクトで、同じデータや分析を使っていることに気づくことがあるかもしれません\n" +"> 複数のプロジェクトで、同じデータや分析のスクリプトを使っていることに気づくことがあるかもしれません\n" "> 普通は、複数の場所でコードを更新しなければいけない状況を避ける、または省スペースのため、重複を避けようとするでしょう。\n" ">\n" "> この場合、ファイルシステム上で別の場所にあるファイルへのショートカットとして「symbolic links」を使うとよいでしょう。\n" @@ -3592,7 +3591,7 @@ msgstr "よいディレクトリ構造ができた後は、データファイル # blockquote, which can be cascaded #: r-novice-gapminder/_episodes/02-project-intro.md:147 msgid "> Download the gapminder data from [here](https://raw.githubusercontent.com/swcarpentry/r-novice-gapminder/gh-pages/_episodes_rmd/data/gapminder_wide.csv)." -msgstr "> ギャップマインダーのデータを[ここ](https://raw.githubusercontent.com/swcarpentry/r-novice-gapminder/gh-pages/_episodes_rmd/data/gapminder_wide.csv)ここからダウンロードしましょう" +msgstr "> ギャップマインダーのデータを[ここから](https://raw.githubusercontent.com/swcarpentry/r-novice-gapminder/gh-pages/_episodes_rmd/data/gapminder_wide.csv)ダウンロードしましょう" #: r-novice-gapminder/_episodes/02-project-intro.md:148 msgid "" @@ -3604,11 +3603,11 @@ msgid "" "> We will load and inspect these data later." msgstr "" ">\n" -"> 1. ファイルをダウンロードする(CTRL + S、右マウスクリック -> 「名前を付けて保存する」、またはファイル -> 「べーじを名前を付けて保存する」)\n" +"> 1. ファイルをダウンロードする(CTRL + S、右マウスクリック -> 「名前を付けて保存する」、またはファイル -> 「ページを名前を付けて保存する」)\n" "> 2. 確実に `gapminder_data.csv` という名前で保存しましょう\n" "> 3. プロジェクトの中にある `data/` フォルダに保存しましょう\n" ">\n" -"> このデータを後で読み込んで色々見てみます" +"> このデータは後で読み込んで色々調べます" # blockquote, which can be cascaded #: r-novice-gapminder/_episodes/02-project-intro.md:157 @@ -3618,12 +3617,12 @@ msgstr "> Rに読み込む前に、コマンドラインから直接、データ # blockquote, which can be cascaded #: r-novice-gapminder/_episodes/02-project-intro.md:158 msgid "> command line, before loading it into R. Understanding the dataset better" -msgstr "> データセットをよりよく理解しておくと、データセットをどうRに読み込むか決める際にそれが役に立ちます。" +msgstr "> データセットをよりよく理解しておくと、データセットをどうRに読み込むか決める際に役に立ちます。" # blockquote, which can be cascaded #: r-novice-gapminder/_episodes/02-project-intro.md:159 msgid "> will come in handy when making decisions on how to load it in R. Use the command-line" -msgstr "> 次の疑問に回答するために、シェルのコマンドラインを使いましょう:" +msgstr "> シェルのコマンドラインを使って、次の問題に答えて下さい:" # blockquote, which can be cascaded #: r-novice-gapminder/_episodes/02-project-intro.md:160 @@ -3633,17 +3632,17 @@ msgstr ">" # blockquote, which can be cascaded #: r-novice-gapminder/_episodes/02-project-intro.md:161 msgid "> 1. What is the size of the file?" -msgstr "> 1. ファイルのサイズは何か" +msgstr "> 1. ファイルのサイズは何ですか?" # blockquote, which can be cascaded #: r-novice-gapminder/_episodes/02-project-intro.md:162 msgid "> 2. How many rows of data does it contain?" -msgstr "> 2. 列がいくつあるデータを持っているのか" +msgstr "> 2. データは何列入っていますか?" # blockquote, which can be cascaded #: r-novice-gapminder/_episodes/02-project-intro.md:163 msgid "> 3. What kinds of values are stored in this file?" -msgstr "> 3. このファイルには、どのような値が保存されているか" +msgstr "> 3. ファイルには、どのような値が保存されていますか?" #: r-novice-gapminder/_episodes/02-project-intro.md:164 msgid "" @@ -3705,7 +3704,7 @@ msgstr "" ">\n" "> > ## チャレンジ2の解答\n" "> >\n" -"> > これらのコマンドをシェルで走らせる:\n" +"> > 以下のコマンドをシェルで実行すれば答えられます:\n" "> > \n" "> > ~~~\n" "> > ls -lh data/gapminder_data.csv\n" @@ -3733,7 +3732,7 @@ msgstr "" "> > 1705 data/gapminder_data.csv\n" "> > ~~~\n" "> > {: .output}\n" -"> > 1705行あり、データは次のような形をしている:\n" +"> > 1705行あり、データは次のような形をしています:\n" "> > \n" "> > ~~~\n" "> > head data/gapminder_data.csv\n" @@ -3768,7 +3767,7 @@ msgid "" "> You can quickly open up a shell in RStudio using the **Tools -> Shell...** menu item." msgstr "" ">\n" -"> RStudioでは、メニュー項目の**Tools -> Shell...**を使って、シェルを素早く開くことができる。" +"> RStudioでは、メニュー項目の**Tools -> Shell...**を使って、シェルを素早く開くことができます。" # header #: r-novice-gapminder/_episodes/02-project-intro.md:226 @@ -3777,7 +3776,7 @@ msgstr "### バージョン・コントロール" #: r-novice-gapminder/_episodes/02-project-intro.md:228 msgid "It is important to use version control with projects. Go [here for a good lesson which describes using Git with RStudio](https://swcarpentry.github.io/git-novice/14-supplemental-rstudio/)." -msgstr "プロジェクトでは、バージョン・コントロールを使うことが重要です。 次のリンクを参照 [RStudioでGitを使う良いレッスン](https://swcarpentry.github.io/git-novice/14-supplemental-rstudio/)." +msgstr "プロジェクトでは、バージョン・コントロールを使うことが重要です。 [RStudioでGitを使う良いレッスン](https://swcarpentry.github.io/git-novice/14-supplemental-rstudio/)を参照して下さい。" # Front Matter #: r-novice-gapminder/_episodes/03-seeking-help.md:1 @@ -3827,9 +3826,9 @@ msgid "" "function, \"function_name\", from a specific function that is in a package loaded into your\n" "namespace (your interactive R session):" msgstr "" -"Rには、他のパッケージでもそうですが、関数についてヘルプファイルが用意されています。\n" -"一般的に関数のヘルプを検索する構文は、(インタラクティブなRセッションで)自分の名前空間に読み込まれた\n" -"パッケージに存在する特定の関数が「function_name」の場合:" +"R、そしてその他のパッケージには、関数のヘルプファイルが用意されています。\n" +"一般的な関数のヘルプを検索する構文は、(インタラクティブなRセッションで)自分の名前空間に読み込まれた\n" +"パッケージに存在する特定の関数名、「function_name」を以下のように使って下さい:" # code block #: r-novice-gapminder/_episodes/03-seeking-help.md:27 @@ -3846,7 +3845,7 @@ msgstr "" #: r-novice-gapminder/_episodes/03-seeking-help.md:33 msgid "This will load up a help page in RStudio (or as plain text in R by itself)." -msgstr "これで、RStudioのヘルプページ(Rの場合は、画面に簡素なテキスト)が表示されます" +msgstr "これで、RStudioにヘルプページ(Rの場合は、画面に簡素なテキスト)が表示されます" #: r-novice-gapminder/_episodes/03-seeking-help.md:35 msgid "Each help page is broken down into sections:" @@ -3885,7 +3884,7 @@ msgstr " - See Also(ついでにこっちも):他に役立ちそうな関 # unordered list #: r-novice-gapminder/_episodes/03-seeking-help.md:43 msgid " - Examples: Some examples for how to use the function." -msgstr " - Examples(例):関数をどうやって使うかの例" +msgstr " - Examples(例):関数の使い方の例" #: r-novice-gapminder/_episodes/03-seeking-help.md:45 msgid "Different functions might have different sections, but these are the main ones you should be aware of." @@ -3905,9 +3904,9 @@ msgid "" "> mean you don't have to!" msgstr "" ">\n" -"> Rの気が滅入る点は、かなり多くの使える関数があるという点です\n" +"> Rの気が滅入る点は、多くの関数があるという点です。\n" "> 自分が使う全ての関数の正しい使い方を覚えるのは不可能とまでは言いませんが、かなり大変でしょう。\n" -"> 嬉しいことに、ヘルプファイルのおかげで、そんなことをせずに済むのです。" +"> ありがたいことに、ヘルプファイルのおかげで、そんなことをせずに済むのです。" # header #: r-novice-gapminder/_episodes/03-seeking-help.md:55 @@ -3941,7 +3940,7 @@ msgid "" "`vignette(package=\"package-name\")` will list all available vignettes for\n" "`package-name`, and `vignette(\"vignette-name\")` will open the specified vignette." msgstr "" -"多くのパッケージには、「ビニエット」があります。これは、使い方の説明や詳細な例を掲載する資料です。\n" +"多くのパッケージには、「ビニエット(vignette)」があります。これは、使い方の説明や詳細な例を掲載する資料です。\n" "引数なしに、`vignette()` と入力すると、インストールされているパッケージの全てのビニエットの一覧が表示されます。\n" "`vignette(package=\"package-name\")` と入力すると、`package-name`についての全てのビニエットの一覧が表示され、\n" "`vignette(\"vignette-name\")` と入力すると、指定されたビニエットが開きます。" @@ -3984,14 +3983,14 @@ msgid "" "is a specially maintained list of packages grouped into\n" "fields. This can be a good starting point." msgstr "" -"関数やパッケージが分からない場合、分野ごとにまとめられたパッケージリストがまとめられている\n" -"[CRAN Task Views](http://cran.at.r-project.org/web/views)を使うべきです。\n" -"ここから始めてみましょう。" +"関数やパッケージが分からない場合、[CRAN Task Views](http://cran.at.r-project.org/web/views)という\n" +"分野ごとにまとめられたパッケージのリストがあります。\n" +"このページから探し始めるといいかもしれません。" # header #: r-novice-gapminder/_episodes/03-seeking-help.md:92 msgid "## When your code doesn't work: seeking help from your peers" -msgstr "## コードがうまく動かない、つまり人の助けが必要なとき" +msgstr "## コードがうまく動作しない:仲間の助けが必要な場合" #: r-novice-gapminder/_episodes/03-seeking-help.md:94 msgid "" @@ -4009,8 +4008,8 @@ msgid "" "If you can't find the answer, there are a few useful functions to\n" "help you ask a question from your peers:" msgstr "" -"もし答えが見つからない場合、人に質問するのを助けるときに\n" -"使える関数がいくつかあります:" +"もし答えが見つからない場合、仲間に質問をする際に\n" +"役に立つ関数がいくつかあります:" # code block #: r-novice-gapminder/_episodes/03-seeking-help.md:103 @@ -4028,8 +4027,8 @@ msgid "" "Will dump the data you're working with into a format so that it can\n" "be copy and pasted by anyone else into their R session." msgstr "" -"これで、使っているデータを誰でもコピー・アンド・ペーストしてRセッションで使える\n" -"形式に落とすことができます。" +"これで、あなたが使っているデータを誰にでもコピー・アンド・ペーストしてRセッションで使える\n" +"形式にすることができます。" # code block #: r-novice-gapminder/_episodes/03-seeking-help.md:112 @@ -4097,8 +4096,8 @@ msgid "" "have loaded. This can be useful for others to help reproduce and debug\n" "your issue." msgstr "" -"これは、現在使っている R のバージョンを、読み込んでいるパッケージと共に表示させるものです。\n" -"他の人が問題点を再現し、バグを見つける際に、この情報が役立つこともあります。" +"これは、現在使っている R のバージョン、そして読み込まれている全てのパッケージを表示させる関数です。\n" +"他の人が問題点を再現し、バグを見つける際にこの情報が役立つこともあります。" #: r-novice-gapminder/_episodes/03-seeking-help.md:148 msgid "" @@ -4132,8 +4131,8 @@ msgstr "" "> > ## Solution to Challenge 1\n" "> >\n" "> > この `c()` 関数は、全ての要素が同じ型になるようにベクトルを生成します。\n" -"> > 最初の事例では、要素は、整数型で、二番目の例では、文字列型、\n" -"> > 三番目の例は、文字列です。つまり、整数値は、「強制的に」\n" +"> > 最初の事例では、要素は整数型で、二番目の例では文字列型、\n" +"> > 三番目の例は文字列です。つまり、整数値は「強制的に」\n" "> > 文字列に変換されるのです。" #: r-novice-gapminder/_episodes/03-seeking-help.md:168 @@ -4219,7 +4218,7 @@ msgid "" msgstr "" ">\n" "> `paste` 関数のヘルプを見てみましょう。後でこれが必要になります。\n" -"> `sep` と `collapse` の引数には、どんな違いがあるのでしょうか。\n" +"> `sep` と `collapse` の引数の違いは何でしょうか?\n" ">\n" "> > ## チャレンジ2の解答\n" "> >\n" @@ -4231,7 +4230,7 @@ msgstr "" "> > ~~~\n" "> > {: .language-r}\n" "> > `sep` と `collapse` の違いは、少しややこしいです。\n" -"> > `paste`の関数は、長さも異なる引数をいくつも持つことができます。\n" +"> > `paste`の関数は、それぞれの長さには関係なく、引数をいくつも受け入れることができます。\n" "> > `sep` の引数は、結合した文字の間に入る文字列を指定するもので、デフォルトはスペースです。\n" "> > その結果、`paste` に与えられた一番長い引数の長さを持つベクトルが表示されます。\n" "> > 一方、`collapse` は、指定された区切り値を用いて、結合された後の要素が*連結される*ことを指します。\n" @@ -4298,7 +4297,7 @@ msgstr "" # blockquote, which can be cascaded #: r-novice-gapminder/_episodes/03-seeking-help.md:250 msgid "> Use help to find a function (and its associated parameters) that you could" -msgstr "> ある関数(及び関連する母数を)を見つけるために、ヘルプを使いましょう。" +msgstr "> ヘルプを使って、列が「\t」(タブ)で区切られ、小数点が「.」(ピリオド)で分けられているcsvファイルを読み込む関数(及び関連する母数)を見つけて下さい。" # blockquote, which can be cascaded #: r-novice-gapminder/_episodes/03-seeking-help.md:251 @@ -4308,17 +4307,17 @@ msgstr "> csv fileファイルからデータを読み込むもので、列が # blockquote, which can be cascaded #: r-novice-gapminder/_episodes/03-seeking-help.md:252 msgid "> (tab) and the decimal point is a \".\" (period). This check for decimal" -msgstr "> 小数点は、「.」(ピリオド)となる関数です。この小数点以下を分けてる記号は、" +msgstr "> 国によって小数点を表す記号(コンマかピリオドか)が違うため、" # blockquote, which can be cascaded #: r-novice-gapminder/_episodes/03-seeking-help.md:253 msgid "> separator is important, especially if you are working with international" -msgstr "> 特に様々な国の人達と作業をする場合、重要です。" +msgstr "> 小数点以下を分けている記号をチェックするのは、" # blockquote, which can be cascaded #: r-novice-gapminder/_episodes/03-seeking-help.md:254 msgid "> colleagues, because different countries have different conventions for the" -msgstr "> その理由は、国によって小数点を表す記号が違う" +msgstr "> 様々な国の人達と作業をする際など、特に重要になります。" # blockquote, which can be cascaded #: r-novice-gapminder/_episodes/03-seeking-help.md:255 @@ -4358,7 +4357,7 @@ msgstr "> > `read.table(file, sep=\"\\t\")` を使うことができます。`re # blockquote, which can be cascaded #: r-novice-gapminder/_episodes/03-seeking-help.md:262 msgid "> > separator for `read.table()`, although you may have to change" -msgstr "> > *デフォルト*となっていますが、`comment.char` の引数を変更する必要があることもあります。" +msgstr "> > *デフォルト*となっていますが、データにハッシュ(#)の文字がある場合などは、`comment.char` の引数を変更する必要があることもあります。" # blockquote, which can be cascaded #: r-novice-gapminder/_episodes/03-seeking-help.md:263 @@ -4499,11 +4498,11 @@ msgid "" msgstr "" ">\n" "> あるいは、テキストエディタ(Nano)またはをRStudioのメニューから**File -> New File -> Text File**を使って\n" -"> `data/feline-data.csv` を作成する。" +"> `data/feline-data.csv` を作成することができます。" #: r-novice-gapminder/_episodes/04-data-structures-part1.md:52 msgid "We can load this into R via the following:" -msgstr "これを、以下を使ってRへ読み込ませる:" +msgstr "以下を使って作ったデータをRへ読み込ませることができます:" # code block #: r-novice-gapminder/_episodes/04-data-structures-part1.md:55 @@ -4549,22 +4548,22 @@ msgid "" "delimiting punctuation marks for both `read.csv` and `read.delim`." msgstr "" "この`read.table`関数は、CSVファイル(csv = comma-separated values)のように、\n" -"データの列が区読文字で分けられたテキストファイルに収められた表形式データを、\n" +"データの列が区読文字で分けられたテキストファイルに収められた表形式データを\n" "読み込むために使われます。\n" -"タブとカンマは、csvファイルでデータ点を区切る、又は分けるために使われる\n" +"タブとコンマは、csvファイルでデータ点を区切る、又は分けるために使われる\n" "最も一般的な句読文字です。\n" "便宜上、Rでは、他に2つの`read.table`のバージョンが提供されています。\n" "ひとつは、データがコンマで分けられているファイルのための `read.csv` 、\n" "データがタブで分けられているファイルのための `read.delim` です。\n" -"この `read.csv` の3つの関数が最も広く使われています。\n" -"必要があれば、 `read.csv` と `read.delim` の両方で、\n" +"これら3つの関数のうち、`read.csv` が最も広く使われています。\n" +"必要であれば、 `read.csv` と `read.delim`、両方の\n" "デフォルトの句読記号を置き換えることができます。" #: r-novice-gapminder/_episodes/04-data-structures-part1.md:82 msgid "" "We can begin exploring our dataset right away, pulling out columns by specifying\n" "them using the `$` operator:" -msgstr "演算子 `$` を使って列を指定することで、列を抜き出し、すぐにデータセットを探索し始めることができます:" +msgstr "演算子 `$` を使って列を指定し、列を抜き出すことで、すぐにデータセットの探索を始めることができます:" # code block #: r-novice-gapminder/_episodes/04-data-structures-part1.md:86 @@ -4628,7 +4627,7 @@ msgid "" "~~~" msgstr "" "~~~\n" -"## 計測された重さが2キロ少なかったことを発見したとしたら:\n" +"## 計測器が実際の重さより2キロ少なく測っていることが分かったとしたら:\n" "cats$weight + 2\n" "~~~" @@ -4722,7 +4721,7 @@ msgid "" msgstr "" "最後のコマンドがエラーを返すのは `2.1` 足す `\"black\"` はナンセンスだからだろうと思ったとしたら、\n" "それは正解で、既にプログラミングにおける*データ型*という重要な概念をある程度分かっていると言えます。\n" -"データ型が何かを聞くには:" +"データ型が何かを知るには、以下を使います:" # code block #: r-novice-gapminder/_episodes/04-data-structures-part1.md:176 @@ -4933,7 +4932,7 @@ msgid "" "Oh no, our weights aren't the double type anymore! If we try to do the same math\n" "we did on them before, we run into trouble:" msgstr "" -"なんと。この weight は、double型ではありません。 前にしたのと同じ計算をしようとすると、\n" +"なんと、この weight はdouble型ではないじゃありませんか! 前と同じように計算をしようとすると、\n" "やっかいなことになります:" # code block @@ -4979,11 +4978,11 @@ msgid "" "structure* - that is, a structure which R knows how to build out of the basic\n" "data types." msgstr "" -"何が起こったのでしょうか。Rは、csvファイルをこれらの表のひとつに読み込む際、\n" -"列にある全てのものが同じ基本の型であるべきと主張します。もし、列の*全て*が、\n" +"何が起こったのでしょう?Rは、csvファイルを読み込む際、\n" +"列にある全てのものが同じ基本の型であるべきだと主張します。もし、列の*全て*が、\n" "double型であることが確認できない場合、その列の*だれも*double型にならないのです。\n" -"Rがあの猫のデータに読み込んだ表は、*data.frame(データフレーム)*と呼ばれるものでした。\n" -"最初の例は、*data structure(データ構造)*、つまりRが基本的なデータ型から\n" +"Rが読み込んだ猫のデータ表は、*data.frame(データフレーム)*と呼ばれるもので、\n" +"*data structure(データ構造)*、つまりRが基本的なデータ型から構築できるデータの最初の例です。\n" "どう作成すればよいか知っているものでした。" #: r-novice-gapminder/_episodes/04-data-structures-part1.md:331 @@ -5018,8 +5017,8 @@ msgid "" "data structures are, and how they behave. For now, let's remove that extra line\n" "from our cats data and reload it, while we investigate this behavior further:" msgstr "" -"データをうまくRで使うためには、何が基礎的なデータ構造か、それがどうふるまうか\n" -"を理解する必要があります。とりあえず、このことを掘り下げるために、あの猫のデータから\n" +"データをうまくRで使うためには、基礎的なデータ構造、そしてその構造がどう作用するか\n" +"を理解する必要があります。より理解を深めるために、とりあえず猫のデータから\n" "追加した1行を削除し、再読み込みしましょう。" #: r-novice-gapminder/_episodes/04-data-structures-part1.md:350 @@ -5067,7 +5066,7 @@ msgstr "## ベクトル及び型強制" msgid "" "To better understand this behavior, let's meet another of the data structures:\n" "the *vector*." -msgstr "このふるまいをより理解するために、もう一つのデータ構造*ベクトル*を紹介します。" +msgstr "この動作をより理解するために、もう一つのデータ構造*ベクトル*を紹介します。" # code block #: r-novice-gapminder/_episodes/04-data-structures-part1.md:376 @@ -5102,7 +5101,7 @@ msgid "" msgstr "" "Rのベクトルは、本来、*ベクトルの中の全てのものは同じ基本データ型でなければいけない*という特別な条件のある、\n" "順番を付けられたもののリストです。\n" -"もし、データ型を選ばなければ、デフォルトは、`logical`ですが、好きなデータ型を持つ空のベクトルを\n" +"もし、データ型を選ばなければ、デフォルトで`logical`になりますが、好きなデータ型を持つ空のベクトルを\n" "宣言することもできます。" # code block @@ -5131,7 +5130,7 @@ msgstr "" #: r-novice-gapminder/_episodes/04-data-structures-part1.md:409 msgid "You can check if something is a vector:" -msgstr "ベクトルかどうかは:" +msgstr "以下を使えばベクトルかどうかを確かめられます:" # code block #: r-novice-gapminder/_episodes/04-data-structures-part1.md:412 @@ -5163,10 +5162,10 @@ msgid "" "case `[1:3]`; and a few examples of what's actually in the vector - in this case\n" "empty character strings. If we similarly do" msgstr "" -"このコマンドからの暗号みたいなアウトプットでは、このベクトルの基本データ型(ここでは `chr` つまり文字型)、\n" +"このコマンドから出てきた暗号みたいなアウトプットによると、このベクトルの基本データ型(ここでは `chr` (文字型))、\n" "数(実際には、ベクトルの添字、この場合 `[1:3]` )、\n" "そして中身のいくつかの例示(この場合、空の文字列)が示されています。\n" -"もし単純にすると" +"`cats$weight`に同じようなことをすると:" # code block #: r-novice-gapminder/_episodes/04-data-structures-part1.md:431 @@ -5199,8 +5198,8 @@ msgid "" "a column to be the same basic data type." msgstr "" "ここで`cats$weight` もまたベクトルであることが分かります。 \n" -"*Rに読み込んだデータの列data.framesは全てベクトル*で、\n" -"なぜRが、全ての列を同じ基本データ型にするのかの原因です。" +"*Rのデータフレームに読み込まれたデータの列は全てベクトル*で、\n" +"Rが全ての列を同じ基本データ型にする理由です。" # blockquote, which can be cascaded #: r-novice-gapminder/_episodes/04-data-structures-part1.md:447 @@ -5231,8 +5230,8 @@ msgstr "" "> > 列の全てを同じにすることで、データについて簡単に仮定することができます。\n" "> > 列のひとつを数値と解釈できたら、 *全て* を数値と解釈することができるのです。\n" "> > つまり、毎回確認する必要がないのです。\n" -"> > この整合性が、*きれいなデータ*と人々が言うときに意味していることなのです。\n" -"> > 長期的には、厳格な整合性が、後にRを使うのが楽になることに繋がります。 " +"> > 人々が*きれいなデータ*と話している時は、このように整合性のあるデータであることを意味しているのです。\n" +"> > 長期的には、この厳格な整合性が後にRを使うのが楽になることに繋がります。 " # SC/DC Template label #: r-novice-gapminder/_episodes/04-data-structures-part1.md:461 @@ -5291,7 +5290,7 @@ msgid "" "type. Consider:" msgstr "" "これは、*型強制*と言われるものです。これが多くの驚きの素であり、\n" -"なぜデータの基本データ型と、Rがそれをどう解釈しているかを知っておくべきかの理由です。\n" +"なぜ起こるのか、理解するには基本データ型とRがそれをどう解釈するかを知っておく必要があります。\n" "Rが複数の型(ここでは、数値と文字型)がひとつのベクトルに合わさる場面に遭遇した際、\n" "全てを強制的に同じ型にします。例えば:" @@ -5435,8 +5434,8 @@ msgid "" msgstr "" "ご覧のとおり、Rがある基本のデータ型を他へ変換すると、驚くことが起こります。\n" "型強制の核心はさておき、ポイントは:もし、データが思っていたものと違っている場合、\n" -"型強制が原因かもしれない。ベクトルの中、data.frameの列を全て同じ型にすること、\n" -"さもなくば、いやなサプライズが待っているだろう。" +"型強制が原因かもしれないという事です。ベクトルの中、データフレームの列を全て同じ型にすること、\n" +"さもなくば、いやなサプライズに会う羽目になるかもしれません。" #: r-novice-gapminder/_episodes/04-data-structures-part1.md:576 msgid "" @@ -5447,10 +5446,10 @@ msgid "" "exactly what our data represents. We can 'coerce' this column to be `logical` by\n" "using the `as.logical` function:" msgstr "" -"しかし、強制がとても役立つこともあります。例えば、あの`cats` データの中にある、\n" -"`likes_string` は数値型ですが、1と0が `TRUE` と `FALSE` (一般的に示しているもの)だと知っています。\n" -"ここで、データが将に意味するところの`TRUE` 又は `FALSE` を持つ `logical` データ型を使わなければならないところ、 \n" -" `as.logical` 関数を使い、この列を `logical` へ '強制' できます:" +"しかし、型強制が役に立つこともあります。例えば、あの猫のデータの中にある、\n" +"`likes_string` は数値型ですが、私達は1と0が 一般的に`TRUE` と `FALSE`を示すことを知っています。\n" +"ここで、データが将に意味するところの`TRUE` 又は `FALSE` を持つ `logical` データ型を使ったほうがいいに決まっています。 \n" +" `as.logical` 関数を使い、この列を `logical` へ 「強制」 できます:" # code block #: r-novice-gapminder/_episodes/04-data-structures-part1.md:584 @@ -5811,7 +5810,7 @@ msgstr "## データフレーム" #: r-novice-gapminder/_episodes/04-data-structures-part1.md:817 msgid "We said that columns in data.frames were vectors:" -msgstr "先ほど、お伝えしたとおり、data.framesの列はベクトルです:" +msgstr "先ほどお伝えしたとおり、データフレームの列はベクトルです:" # code block #: r-novice-gapminder/_episodes/04-data-structures-part1.md:834 @@ -5985,9 +5984,9 @@ msgid "" "with numbered indices under the hood, this is necessary as many statistical\n" "calculations utilise such numerical representations for categorical data:" msgstr "" -"ここでRは、我々のデータに3つのカテゴリーのどれかがあてはまるだろうことを知りました。\n" -"しかし、それと同時に意外なこともしました、つまり、入力した文字列が表示される代わりに、\n" -"数字の塊がでてきたのです。Rは、人が読めるカテゴリーを、 内部で番号を振られた添字に変換したのです。\n" +"ここでRは、我々のデータに3つのカテゴリーが存在することに気づきました。\n" +"しかし、それと同時に意外なこともしました。入力した文字列が表示される代わりに、\n" +"数字の羅列が出てきました。Rは、人が読めるカテゴリーを、 内部で番号を振られた添字に変換したのです。\n" "こうする必要があるのは、統計的な計算で、カテゴリーデータをこのように数字として表して扱うからです。" # code block @@ -6046,10 +6045,10 @@ msgid "" "> > even if they aren't sure." msgstr "" ">\n" -"> 我々の `cats` data.frameは、順序なし因子でしょうか。名前は何でしょうか。\n" -"> 試しに `?read.csv` を使って、どうやって文字の列を、順序なし因子ではなく、文字型ベクトルのまま\n" -"> とするかを見てみましょう。そして、`cats`の中の順序なし因子が、この方法で読み込まれたとき、\n" -"> 文字型ベクトルになることを、ひとつかふたつコマンドを書いて示してみましょう。\n" +"> 我々の `cats` データフレームには、順序なし因子がありますか?列の名前は何ですか?\n" +"> `?read.csv` を使って、どうしたら文字の列を順序なし因子ではなく、文字型ベクトルのまま\n" +"> 読み込む方法を見つけ出して下さい。そして、`cats`の中の順序なし因子がこの方法で読み込まれたとき、\n" +"> 順序なし因子ではなく文字型ベクトルであることを証明するコマンドを、ひとつかふたつ書いて下さい。\n" ">\n" "> > ## チャレンジ2の解答\n" "> >\n" @@ -6072,7 +6071,7 @@ msgstr "" "> > ~~~\n" "> > {: .language-r}\n" "> >\n" -"> > 補足:新しい学習者は、ヘルプファイルを難しく感じるかもしれません。これはよくあることですので、\n" +"> > 補足:初めての方は、ヘルプファイルを難しく感じるかもしれません。これはよくあることですので、\n" "> > 自信がなくても、書かれたことの意味をうまく予測してみるようにしましょう。" #: r-novice-gapminder/_episodes/04-data-structures-part1.md:994 @@ -6081,9 +6080,9 @@ msgid "" "is assumed to be the first factor, but by default factors are labelled in\n" "alphabetical order. You can change this by specifying the levels:" msgstr "" -"関数をモデリングする際、基準となっている水準の順位が何かを知っておくことが大事です。\n" -"最初の順序なし因子であると仮定されていますが、デフォルトでは、順序なし因子は、\n" -"アルファベット順に並べられています。水準の順位を指定することで、これを変更できます:" +"モデリングの関数を使う際、基準となっている水準の順位がどれかを知っておくことが大事です。\n" +"最初の順序なし因子が基準値であると仮定されていますが、デフォルトでは、順序なし因子は\n" +"アルファベット順に並べられています。水準の順位を指定することで、順序なし因子の順位を変更できます:" # code block #: r-novice-gapminder/_episodes/04-data-structures-part1.md:999 @@ -6118,7 +6117,7 @@ msgid "" "results of statistical models!" msgstr "" "ここでは、 \"control\" は1、\"case\" は2で表されるべきであるとRにはっきり示しています。\n" -"この指定が、統計モデルの結果を解釈する際、本当にとても重要になりえます。" +"この指定が、統計モデルの結果を解釈する際、とても重要になります。" # header #: r-novice-gapminder/_episodes/04-data-structures-part1.md:1017 @@ -6131,8 +6130,8 @@ msgid "" "is simpler in some ways than the other types, because you can put anything you\n" "want in it:" msgstr "" -"小技袋に入れておきたいと思うはずのもう一つのデータ構造は、 `list` です。\n" -"リストは、他の種類よりも、ある意味シンプルです。その理由は、入れたいものを、\n" +"覚えておきたいもう一つのデータ構造は、 `list` です。\n" +"リストは、他の種類よりも、ある意味シンプルです。その理由は、入れたいものを\n" "なんでも入れることができるからです:" # code block @@ -6219,7 +6218,7 @@ msgstr "" #: r-novice-gapminder/_episodes/04-data-structures-part1.md:1069 msgid "We can now understand something a bit surprising in our data.frame; what happens if we run:" -msgstr "ここで、我々のdata.frameの少し驚くことが分かります。もし以下を走らせたらどうなるでしょう:" +msgstr "これで、data.frameの驚くべき特徴を理解することができます。もし以下を走らせたらどうなるでしょう:" # code block #: r-novice-gapminder/_episodes/04-data-structures-part1.md:1072 @@ -6254,18 +6253,18 @@ msgid "" "columns together into a familiar table. In other words, a `data.frame` is a\n" "special list in which all the vectors must have the same length." msgstr "" -"data.frame は、 'under the hood' のリストと同じように見えるでしょう。これは、data.frame が、\n" -"実際のところベクトルと順序なし因子のリストであり、そうでなくてはならないからです。\n" -"ベクトルと順序なし因子が混ざった列を含むために、data.frame は、全ての列をひとまとめにし、\n" -"なじみのある表にするために、ベクトルよりも、もう少しやや柔軟である必要があるのです。\n" -"つまり、 `data.frame` は、全ての列の長さが同じでなければならない特別なリストなのです。" +"data.frame は、 実際のところリストと同じように見えます。data.frame は、\n" +"実際のところベクトルと順序なし因子のリストであり、これらから形成しなければならないからです。\n" +"data.frame が、ベクトルと順序なし因子が混ざった列を含む全ての列をひとまとめにし、\n" +"なじみのある表にするためには、ベクトルよりも柔軟な構造が必要だったのです。\n" +"つまり、 `data.frame` は、全てのベクトルの長さが同じでなければならない特別なリストなのです。" #: r-novice-gapminder/_episodes/04-data-structures-part1.md:1091 msgid "" "In our `cats` example, we have an integer, a double and a logical variable. As\n" "we have seen already, each column of data.frame is a vector." msgstr "" -"我々の `cats` の例では、整数、浮動小数、論理変数があります。\n" +"我々の `cats` の例では、整数型(integer)、浮動小数型(double)、論理型(logical)の変数があります。\n" "既に見たように、data.frame のそれぞれの列はベクトルです。" # code block @@ -6507,7 +6506,7 @@ msgid "" "> values in the first row." msgstr "" ">\n" -"> data.frames から、変数、観測値、要素を呼び出す方法はいくつかあります:\n" +"> data.frame から、変数、観測値、要素を呼び出す方法はいくつかあります:\n" ">\n" "> - `cats[1]`\n" "> - `cats[[1]]`\n" @@ -6517,9 +6516,9 @@ msgstr "" "> - `cats[, 1]`\n" "> - `cats[1, ]`\n" ">\n" -"> 上記の例を試してみて、それぞれで何が返ってくるかを説明してみましょう。\n" +"> 上記の例を試してみて、それぞれの例で何が返ってくるかを説明してみましょう。\n" ">\n" -"> *ヒント:* 何がそれぞれ返ってくるかを確かめるために、関数 `typeof()` を使いましょう。\n" +"> *ヒント:* どういった値が返ってくるかを確かめるために、関数 `typeof()` を使いましょう。\n" ">\n" "> > ## チャレンジ3の解答\n" "> > \n" @@ -6633,7 +6632,7 @@ msgstr "" "> > 1 calico 2.1 TRUE\n" "> > ~~~\n" "> > {: .output}\n" -"> > また、行と列の座標の入った角括弧を使いましょう。列の座標は\n" +"> > 同じ様に、行と列の座標の入った角括弧を使っています。列の座標は\n" "> 指定されていません。返ってくる値は、最初の行にある全ての値の_リスト_\n" "> です。" @@ -6644,7 +6643,7 @@ msgstr "## 行列" #: r-novice-gapminder/_episodes/04-data-structures-part1.md:1336 msgid "Last but not least is the matrix. We can declare a matrix full of zeros:" -msgstr "最後に、重要な、行列を紹介します。全てが0の行列を宣言することができます:" +msgstr "最後に、行列を紹介します。全てが0の行列を宣言できます:" # code block #: r-novice-gapminder/_episodes/04-data-structures-part1.md:1339 @@ -6838,7 +6837,7 @@ msgstr "" "> 次の結果は何になるでしょうか。\n" "> `length(matrix_example)`?\n" "> 試してみて下さい。\n" -"> あっていましたか?なぜ(そうならなかった)でしょうか?\n" +"> 合っていましたか?なぜ答えが合っていた・合っていなかったのでしょうか?\n" ">\n" "> > ## チャレンジ4の解答\n" "> >\n" @@ -6859,7 +6858,7 @@ msgstr "" "> > ~~~\n" "> > {: .output}\n" "> >\n" -"> > 行列は、属性の次元が追加されたベクトルですから、`length`は、\n" +"> > 行列は、次元が追加されたベクトルですので、`length`は\n" "> > 行列の総要素数を教えてくれます。" #: r-novice-gapminder/_episodes/04-data-structures-part1.md:1473 @@ -6891,16 +6890,16 @@ msgstr "" ">\n" "> もう一つ行列を作ってみましょう、今回は、1:50の数を含むもので、\n" "> 5行、10列を持つ行列にしましょう。\n" -"> この `matrix` 関数は、デフォルトのように、行または列ごとに\n" +"> この `matrix` 関数は、デフォルトでは、行か列、どちらから\n" "> 行列を埋めましたか?\n" -"> これがどう変化したか理解したか確認してみましょう。\n" +"> どうしたらこのデフォルト動作を変更できるか探してみて下さい。\n" ">(ヒント: `matrix` のドキュメントを読んでみましょう!)\n" ">\n" "> > ## チャレンジ5の解答\n" "> >\n" "> > もう一つ行列を作ってみましょう、今回は、1:50の数を含むもので、\n" "> > 5行、10列を持つ行列にしましょう。\n" -"> > この `matrix` 関数は、デフォルトのように、行または列ごとに\n" +"> > この `matrix` 関数は、デフォルトでは、行か列、どちらから\n" "> > 行列を埋めましたか?\n" "> > これがどう変化したか理解したか確認してみましょう。\n" "> > (ヒント: `matrix` のドキュメントを読んでみましょう!)\n" @@ -6921,7 +6920,7 @@ msgstr "> ## チャレンジ6" # blockquote, which can be cascaded #: r-novice-gapminder/_episodes/04-data-structures-part1.md:1501 msgid "> Create a list of length two containing a character vector for each of the sections in this part of the workshop:" -msgstr "> ワークショップのこのあたりで、それぞれのセクションのための文字型ベクトルを含む長さ2のリストを作ってみましょう:" +msgstr "> ワークショップの現パート、それぞれのセクションのために、二つの文字型ベクトルが含まれるリストを作って下さい:" #: r-novice-gapminder/_episodes/04-data-structures-part1.md:1502 msgid "" @@ -6950,7 +6949,7 @@ msgstr "" "> - データ構造\n" ">\n" "> それぞれの文字ベクトルをこれまでみてきたデータ型と\n" -"> データ構造で埋めてみましょう。\n" +"> データ構造で埋めてください。\n" ">\n" "> > ## チャレンジ6の解答\n" "> > \n" @@ -6960,9 +6959,9 @@ msgstr "" "> > answer <- list(dataTypes, dataStructures)\n" "> > ~~~\n" "> > {: .language-r}\n" -"> > 補足:ボードに長文のリストを作成したり、全ての型と構造を列挙したものを壁に\n" +"> > 補足:ボードや壁に、全ての型と構造を大きな文字で列挙したものを\n" "> > 貼っておくのは良い方法です -これらの基本の重要性をみなさんに繰り返し伝えるため、\n" -"> > これを残りのワークショップのために残しておきましょう。\n" +"> > ワークショップが終わるまで残しておきましょう。\n" "> >" # blockquote, which can be cascaded @@ -7140,9 +7139,9 @@ msgid "" "those tools. But most of the time, the star of the show is the data frame—the table that we created by loading information from a csv file. In this lesson, we'll learn a few more things\n" "about working with data frames." msgstr "" -"これで全て見たことになります。つまり、このレッスンで、Rの基本的なデータ型、データ構造をお示ししました。\n" -"これからすることの全てが、これらの道具を用いた操作となります。\n" -"しかし大抵の場合、一番の人気者はデータフレーム(CSVファイルから情報を読み込み作成する表)です。\n" +"これでRの基礎を全て見たことになります。このレッスンで、Rの基本的なデータ型、データ構造を習いました。\n" +"これからすることの全ては、これらの道具を用いた操作となります。\n" +"しかし大抵の場合、主演はデータフレーム(CSVファイルから情報を読み込み作成した表)です。\n" "このレッスンでは、データフレームを使ってどう作業していくかについて更に学んでいきましょう。" # header @@ -7157,7 +7156,7 @@ msgid "" "new column, we can start by making a new vector:" msgstr "" "既に学んだとおり、データフレームの列はベクトルですから、列にあるデータには一貫性があります。\n" -"ですので、新しい列を加えたい場合は、新しいベクトルを作ることあら始めることになります:" +"ですので、新しい列を加えたい場合は、新しいベクトルを作ることから始めることになります:" # code block #: r-novice-gapminder/_episodes/05-data-structures-part2.md:44 @@ -7486,7 +7485,7 @@ msgstr "> 2. `human_age`を順序なし因子型に変換しましょう" # blockquote, which can be cascaded #: r-novice-gapminder/_episodes/05-data-structures-part2.md:241 msgid "> 3. Convert `human_age` back to a numeric vector using the `as.numeric()` function. Now divide it by 7 to get the original ages back. Explain what happened." -msgstr "> 3. `human_age` を、`as.numeric()` 関数を用いて、数値型に戻しましょう。そして、もともとの年に戻すために7で割りましょう。何が起こるでしょうか。" +msgstr "> 3. `human_age` を、`as.numeric()` 関数を用いて、数値型に戻しましょう。そして、もともとの年に戻すために7で割りましょう。何が起こったか説明して下さい。" #: r-novice-gapminder/_episodes/05-data-structures-part2.md:242 msgid "" @@ -7499,8 +7498,8 @@ msgstr "" ">\n" "> > ## チャレンジ1の解答\n" "> > 1. `human_age <- cats$age * 7`\n" -"> > 2. `human_age <- factor(human_age)`. `as.factor(human_age)` このままで、うまくいきます\n" -"> > 3. `as.numeric(human_age)` からは、`1 2 3 4 4` が返ってきます。なぜなら、順序なし文字型は、それぞれが、ラベル(ここでは、28、35、56、63)に紐づけられた整数型(ここでは、1:4)として蓄積されているからです。順序なし文字型を数値型に変換する際は、ラベルの値ではなく、裏にある整数に変換されるのです。もとの数が欲しい場合は、`human_age`を文字型にしてから、文字ベクトルにする必要があります(なぜこれでうまくいくのでしょう?)。これは、実際に、csvファイルの中で、数だけを持つはずの列のどこかにうっかり文字を入れてしまい、データを読み込むとき`stringsAsFactors=FALSE`を設定し忘れてしまったときに使えます。" +"> > 2. `human_age <- factor(human_age)`. `as.factor(human_age)` でもうまくいきます\n" +"> > 3. `as.numeric(human_age)` からは、`1 2 3 4 4` が返ってきます。なぜなら、順序なし文字型は、それぞれが、ラベル(ここでは、28、35、56、63)に紐づけられた整数型(ここでは、1:4)として蓄積されているからです。順序なし文字型を数値型に変換する際は、ラベルの値ではなく、裏にある整数に変換されるのです。もとの数が欲しい場合は、`human_age`を文字ベクトルにしてから、数値ベクトルにする必要があります(なぜこれでうまくいくのでしょう?)。この問題は、csvファイルの中で数だけを持つはずの列のどこかにうっかり文字を入れてしまい、データを読み込むとき`stringsAsFactors=FALSE`を設定し忘れてしまったときなどに起こります。" # header #: r-novice-gapminder/_episodes/05-data-structures-part2.md:250 @@ -7513,7 +7512,7 @@ msgid "" "first attempt to add a \"tortoiseshell\" cat to the data frame we have accidentally\n" "added a garbage row:" msgstr "" -"Rのデータフレームに行列を加える方法は分かりましたが、「錆」猫データフレームに加える最初の試みで、\n" +"Rのデータフレームに行列を加える方法は分かりましたが、猫データフレームに\"tortoiseshell\"を加える最初の試みで、\n" "うっかり不要な行を加えてしまいました。" # code block @@ -7591,7 +7590,7 @@ msgstr "コンマの後に何もないのは、4番目の行の全部を削除 msgid "" "Note: we could also remove both new rows at once by putting the row numbers\n" "inside of a vector: `cats[c(-4,-5), ]`" -msgstr "注意:ベクトルの中に行番号を入れれば、新しく追加した行の両方を削除することもできました:`cats[c(-4,-5), ]`" +msgstr "注意:ベクトルの中に行番号を入れれば、新しく追加した行を両方削除することもできす:`cats[c(-4,-5), ]`" #: r-novice-gapminder/_episodes/05-data-structures-part2.md:298 msgid "Alternatively, we can drop all rows with `NA` values:" @@ -7630,7 +7629,7 @@ msgstr "## 列の削除 " #: r-novice-gapminder/_episodes/05-data-structures-part2.md:327 msgid "We can also remove columns in our data frame. What if we want to remove the column \"age\". We can remove it in two ways, by variable number or by index. " -msgstr "データフレームの中で、列を削除することもできます。列「age」を削除したい場合はどうなるでしょう。この場合、要素番号か見出しを使う2つの方法があります。" +msgstr "データフレームから列を削除することもできます。列「age」を削除したい場合、どうすれば削除できるのでしょう。この場合、要素番号か見出しを使う2つの方法があります。" # code block #: r-novice-gapminder/_episodes/05-data-structures-part2.md:330 @@ -7687,7 +7686,7 @@ msgstr "" # header #: r-novice-gapminder/_episodes/05-data-structures-part2.md:368 msgid "## Appending to a data frame" -msgstr "## データフレームの追加" +msgstr "## データフレームへの追加" #: r-novice-gapminder/_episodes/05-data-structures-part2.md:370 msgid "" @@ -7695,7 +7694,7 @@ msgid "" "vectors and rows are lists.* We can also glue two data frames\n" "together with `rbind`:" msgstr "" -"データフレームんデータを加えるときに覚えておくべき重要なことは、*列は、ベクトルで、行はリスト* であることです。\n" +"データフレームにデータを加えるときに覚えておくべき重要なことは、*列はベクトルで、行はリスト* であることです。\n" "2つのデータフレームを `rbind` を使ってくっつけることもできます:" # code block @@ -7742,7 +7741,7 @@ msgstr "" msgid "" "But now the row names are unnecessarily complicated. We can remove the rownames,\n" "and R will automatically re-name them sequentially:" -msgstr "しかし、いまや行の名前は必要以上に複雑です。この列名を削除することができ、そうするとRは自動的に連続する名称をつけます。" +msgstr "しかし、いまや行の名前は必要以上に複雑です。この列名は削除することができます。削除すると、Rは自動的に連続する名称をつけます。" # code block #: r-novice-gapminder/_episodes/05-data-structures-part2.md:399 @@ -7917,7 +7916,7 @@ msgstr "" "> ~~~\n" "> {: .language-r}\n" ">\n" -"> * または、`read.csv` のファイルパスをウェブドレスに置き換えることでインターネットからRへ直接読み込むこともできます。こうすると、csvファイルのローカルコピーが、最初に自分のコンピューターに保存されないことに留意する必要があります。例えば、\n" +"> * または、`read.csv` のファイルパスをウェブアドレスに置き換えることで、インターネットからRへ直接読み込むこともできます。こうすると、csvファイルのローカルコピーが、最初に自分のコンピューターに保存されないことに留意する必要があります。例えば、\n" "> \n" "> ~~~\n" "> gapminder <- read.csv(\"https://raw.githubusercontent.com/swcarpentry/r-novice-gapminder/gh-pages/_episodes_rmd/data/gapminder_data.csv\")\n" @@ -7933,7 +7932,7 @@ msgid "" "out what the data looks like with `str`:" msgstr "" "gapminderを少し見てみましょう。いつも、まずしなければいけないことは、\n" -"データがどうなっている`str`で見てみることです:" +"データがどうなっているかを`str`で見てみることです:" # code block #: r-novice-gapminder/_episodes/05-data-structures-part2.md:494 @@ -8026,9 +8025,9 @@ msgid "" "remembering that `str(gapminder)` said there were 1704 observations of 6\n" "variables in gapminder, what do you think the following will produce, and why?" msgstr "" -"データフレームを、その次元についての情報のために、色々見てみることもできます。\n" +"データフレームの次元について見てみることもできます。\n" " `str(gapminder)` が、gapminderには、6変数について1704の標本があると言っていたことを念頭に置き、\n" -"以下から何が出てくると思いますか。それはなぜですか。" +"以下から何が出てくると思いますか?それはなぜですか?" # code block #: r-novice-gapminder/_episodes/05-data-structures-part2.md:560 @@ -8047,7 +8046,7 @@ msgid "" "number of rows it has (1704), but this is not the case; remember, a data frame\n" "is a *list of vectors and factors*:" msgstr "" -"うまい予想は、データフレームの長さは行数(1704)だとするものですが、実はそうではありません。\n" +"予想としては、データフレームの長さは行数(1704)だと思うものですが、実はそうではありません。\n" "データフレームは、*ベクトルと順序なし因子型のリストである*ということを思い出しましょう:" # code block @@ -8135,7 +8134,7 @@ msgstr "" msgid "" "We'll also likely want to know what the titles of all the columns are, so we can\n" "ask for them later:" -msgstr "全ての列のタイトルを知り合いと思うことも多いでしょう、その場合、その後聞くこともできます:" +msgstr "全ての列のタイトルを知りたいと思うことも多いと思うので、後で聞いてみましょう:" # code block #: r-novice-gapminder/_episodes/05-data-structures-part2.md:638 @@ -8169,17 +8168,17 @@ msgid "" "interprets data, and the importance of *strict consistency* in how we record our\n" "data." msgstr "" -"この段階で、Rが伝える構造が自分の直感や予想に合っているかを自問することが大切です。\n" -"それぞれの列の基本定なデータ型は、納得できるか、もしできないなら、今後、悪い驚きをもたらさないように、\n" -"今の時点で、問題を解決しておく必要があります。そのためには、これまでRがどのようにデータを解釈するか学んだこと、\n" -"そして*厳格な整合性*がデータを記録する際に重要であることが生かせます。" +"この段階で、Rが伝える構造が自分の直感や予想と合っているかを自問することが大切です。\n" +"それぞれの列の基本的なデータ型は、思った通りのデータ型になってますか?もしなっていないのなら、今後、予想外の事態を引き起こさないように、\n" +"今の時点で、問題を解決しておく必要があります。そのためには、これまでに学んだ、Rがどのようにデータを解釈するか、\n" +"そしてデータを記録する際の*厳格な整合性*の重要性といった知識を活かしましょう。" #: r-novice-gapminder/_episodes/05-data-structures-part2.md:657 msgid "" "Once we're happy that the data types and structures seem reasonable, it's time\n" "to start digging into our data proper. Check out the first few lines:" msgstr "" -"データ型と構造は納得できると満足することができたら、データをちゃんと見てみる時間が始まります。\n" +"データ型と構造に満足することができたら、データを詳しく見始めることができます。\n" "最初のいくつかの行を見てみましょう:" # code block @@ -8244,7 +8243,7 @@ msgid "" "> > {: .r}" msgstr "" ">\n" -"> 最後と中間のいくつかの行を確認するのは良い習慣です。なぜそうする必要があるのでしょうか。\n" +"> 最後と中間のいくつかの行を確認するのは良い習慣です。どうしたらこれらの行を見ることができるのでしょう?\n" ">\n" "> ちょうど真ん中にあるものを探すことは、難しくはありません。しかし、いくつかの行を無作為に尋ねることもできます。これはどうコードにすればよいでしょうか。\n" ">\n" @@ -8300,7 +8299,7 @@ msgstr "" ">\n" "> まず、file -> new file -> R scriptへ行き、gapminder データセットを\n" "> 読み込むR scriptを書きましょう。それを、 `scripts/` ディレクトリに置き、\n" -"> バージョン管理を追加しましょう。\n" +"> バージョン管理に追加しましょう。\n" ">\n" "> そのスクリプトを `source` 関数を使って走らせましょう。ファイルパスを引数にしましょう\n" "> (または、RStudioで「source」ボタンを押しましょう).\n" @@ -8402,20 +8401,20 @@ msgid "" "R has many powerful subset operators. Mastering them will allow you to\n" "easily perform complex operations on any kind of dataset." msgstr "" -"Rには、かなり使える部分集合の演算子があります。もし、それをマスターできたら、\n" -"どんなデータセットで複雑な演算をすることも簡単になります。" +"Rには便利な部分集合の演算子が多く含まれています。これらをマスターできれば、\n" +"どんなデータセットにも複雑な演算を楽に行えます。" #: r-novice-gapminder/_episodes/06-data-subsetting.md:27 msgid "" "There are six different ways we can subset any kind of object, and three\n" "different subsetting operators for the different data structures." msgstr "" -"There are six different ways we can subset any kind of object, and three\n" -"different subsetting operators for the different data structures." +"オブジェクトを部分集合する方法は6つあり、データ構造を\n" +"部分集合する方法は3つあります。" #: r-novice-gapminder/_episodes/06-data-subsetting.md:30 msgid "Let's start with the workhorse of R: a simple numeric vector." -msgstr "Rの働き頭から始めましょう:簡単な数値ベクトル" +msgstr "Rの働き頭、数値ベクトルから始めましょう。" # code block #: r-novice-gapminder/_episodes/06-data-subsetting.md:33 @@ -8456,13 +8455,13 @@ msgid "" "> In R, simple vectors containing character strings, numbers, or logical values are called *atomic* vectors because they can't be further simplified." msgstr "" ">\n" -"> Rでは、文字列、数値、論理値を含む単純なベクトルは、*原子(atomic)* ベクトルと呼ばれています。その理由は、それ以上、単純化できないベクトルだからです。" +"> Rでは、文字列、数値、論理値を含む単純なベクトルは、*原子(atomic)* ベクトルと呼ばれています。その理由は、原子ベクトルはそれ以上単純化できないからです。" #: r-novice-gapminder/_episodes/06-data-subsetting.md:53 msgid "" "So now that we've created a dummy vector to play with, how do we get at its\n" "contents?" -msgstr "ちょっと触ってみるためのダミーベクトルを作ることができましたので、この中身をどういじってみましょうか。" +msgstr "練習用のベクトルを作ることができたのですが、どうやってベクトルの中身を使うのでしょう?" # header #: r-novice-gapminder/_episodes/06-data-subsetting.md:56 @@ -8473,7 +8472,7 @@ msgstr "## 要素番号で要素を使う" msgid "" "To extract elements of a vector we can give their corresponding index, starting\n" "from one:" -msgstr "ベクトルの要素を抽出するためには、対応する1から始まる要素番号が使えます:" +msgstr "ベクトルの要素を抽出するためには、対応する1から始まる要素番号を使います:" # code block #: r-novice-gapminder/_episodes/06-data-subsetting.md:62 @@ -8529,7 +8528,7 @@ msgid "" "It may look different, but the square brackets operator is a function. For vectors\n" "(and matrices), it means \"get me the nth element\"." msgstr "" -"違うふうに見えるかもしれませんが、各括弧の演算子は、関数なのです。ベクトル(及び行列)の場合は、\n" +"違うふうに見えるかもしれませんが、各括弧の演算子は関数です。ベクトル(及び行列)の場合は、\n" "「n番目の要素をちょうだい」ということを意味しています。" #: r-novice-gapminder/_episodes/06-data-subsetting.md:92 @@ -8591,7 +8590,7 @@ msgstr "" #: r-novice-gapminder/_episodes/06-data-subsetting.md:124 msgid "the `:` operator creates a sequence of numbers from the left element to the right." -msgstr "この演算子 `:` は、左から右の要素の一連番号を作ります。" +msgstr "この `:` 演算子は、左から右の要素の一連番号を作ります。" # code block #: r-novice-gapminder/_episodes/06-data-subsetting.md:126 @@ -8657,7 +8656,7 @@ msgstr "" #: r-novice-gapminder/_episodes/06-data-subsetting.md:169 msgid "If we ask for an index beyond the length of the vector, R will return a missing value:" -msgstr "もしベクトルの長さ以上の要素番号を頼んだ場合、Rは、欠測値を返します:" +msgstr "もしベクトルの長さ以上の要素番号を頼んだ場合、Rは欠測値を返します:" # code block #: r-novice-gapminder/_episodes/06-data-subsetting.md:171 @@ -8726,7 +8725,7 @@ msgid "" msgstr "" ">\n" "> 多くのプログラミング言語(例えば、C、Python)では、ベクトルの最初の\n" -"> 要素の要素番号は0です。Rでは、最初の要素番号は1なのです。" +"> 要素の要素番号は0です。Rでは、最初の要素番号は1です。" # header #: r-novice-gapminder/_episodes/06-data-subsetting.md:207 @@ -8738,7 +8737,7 @@ msgid "" "If we use a negative number as the index of a vector, R will return\n" "every element *except* for the one specified:" msgstr "" -"もし、負の番号をベクトルの要素番号として使った場合、Rは、指定された番号\n" +"もし、負の番号をベクトルの要素番号として使った場合、Rは指定された番号\n" " *以外の* 全ての要素を返します:" # code block @@ -8819,8 +8818,8 @@ msgid "" "> ~~~" msgstr "" ">\n" -"> 初心者のよくある失敗は、ベクトルのスライスを飛ばしてしまうことです。\n" -"> 数列に負の符号を付けようとするとき、次のようにすることはありがちです:\n" +"> 初心者によく見られるのが、ベクトルのスライスを飛ばそうとする時に起こる間違いです。\n" +"> 数列をベクトルから削除しようとする場合、次のようにして削除しようとします:\n" ">\n" "> \n" "> ~~~\n" @@ -8828,7 +8827,7 @@ msgstr "" "> ~~~\n" "> {: .language-r}\n" ">\n" -"> This gives a somewhat cryptic error:\n" +"> すると、なんだか複雑なエラーが返ってきます:\n" ">\n" "> \n" "> ~~~\n" @@ -8864,11 +8863,11 @@ msgid "" "> ~~~" msgstr "" ">\n" -"> でも、演算の順番を思い出してみて下さい。`:` は、実際には、関数なのです。\n" -"> 最初の引数を-1、次のを3として認識し、次のような数列を生成します。\n" +"> 演算の順番を思い出してみましょう。`:` は、実際には関数なのです。\n" +"> 最初の引数を-1、次の引数を3として認識し、次のような数列を生成します。\n" "> `c(-1, 0, 1, 2, 3)`\n" ">\n" -"> 正解は、関数を呼ぶ部分を括弧で囲むことで、\n" +"> 正解は、関数を呼ぶ部分を括弧で囲むことです。\n" "> そうすると関数の結果全てに`-` の演算子が適応されます:\n" ">\n" "> \n" @@ -8967,7 +8966,7 @@ msgid "" "> ~~~" msgstr "" ">\n" -"> 以下のアウトプットを得るために、少なくとも2つの異なるコマンドを思い出しましょう:\n" +"> 以下の出力を得るために、少なくとも2つの異なるコマンドを考えてください:\n" ">\n" "> \n" "> ~~~\n" @@ -9024,7 +9023,7 @@ msgid "" "> >" msgstr "" ">\n" -"> 2つの異なるコマンドを見つけた後、隣の人と結果を比べましょう。自分には違う案がありましたか?\n" +"> 2つの異なるコマンドを考えた後、隣の人と結果を比べましょう。自分とは違う案でしたか?\n" ">\n" "> > ## チャレンジ1の解答\n" "> >\n" @@ -9097,9 +9096,9 @@ msgid "" "position of various elements can often change when chaining together\n" "subsetting operations, but the names will always remain the same!" msgstr "" -"オブジェクトの部分集合を作るには、この方法が通常より信頼できます:色々な要素の場所は、\n" -"部分集合の演算子を繋いで使うことで、よく変わります。\n" -"でも、名前はいつも同じです!" +"オブジェクトの部分集合を作るには、この方法の方が確実です:要素の場所は、\n" +"部分集合の演算子を繋いで使うことでよく変わるのですが、\n" +"名前は絶対に変わりません。" # header #: r-novice-gapminder/_episodes/06-data-subsetting.md:402 @@ -9108,7 +9107,7 @@ msgstr "## 他の論理演算子を使って部分集合を作る" #: r-novice-gapminder/_episodes/06-data-subsetting.md:404 msgid "We can also use any logical vector to subset:" -msgstr "論理ベクトルならどれでも部分集合を作ることができます:" +msgstr "どんな論理ベクトルでも部分集合を作ることができます:" # code block #: r-novice-gapminder/_episodes/06-data-subsetting.md:407 @@ -9141,7 +9140,8 @@ msgid "" "use them to succinctly subset vectors: the following statement gives\n" "the same result as the previous one." msgstr "" -"比較演算子(例えば、 `>`、`<`、 `==`)は、その結果が論理ベクトルになるので、簡潔にベクトルの部分集合を作ることができます。\n" +"比較演算子(例えば、 `>`、`<`、 `==`)は、その結果が論理ベクトルになるので、\n" +"簡潔にベクトルの部分集合を作ることができます。\n" "つまり、以下の宣言は、前と同じ結果を返します。" # code block @@ -9161,9 +9161,9 @@ msgid "" "a logical vector `c(FALSE, FALSE, TRUE, FALSE, TRUE)`, and then\n" "selects the elements of `x` corresponding to the `TRUE` values." msgstr "" -"分割することで、この宣言は、最初に `x>7` を計算し、論理ベクトル\n" +"分割すると、この宣言は最初に `x>7` を計算し、論理ベクトル\n" "`c(FALSE, FALSE, TRUE, FALSE, TRUE)` を作ります。それから、\n" -"`TRUE` の値に対応する `x` 要素を選択します。" +"`TRUE` の値に対応する要素を `x` から選択しています。" #: r-novice-gapminder/_episodes/06-data-subsetting.md:442 msgid "" @@ -9171,7 +9171,7 @@ msgid "" "(remember you have to use `==` rather than `=` for comparisons):" msgstr "" "名前で特定するという既出の方法を真似するため、 `==` を使うこともできます。\n" -"(比較には、 `=` ではなく、 `==` を使わないといけなかったですよね):" +"(比較には、 `=` ではなく、 `==` を使わないといけません):" # code block #: r-novice-gapminder/_episodes/06-data-subsetting.md:446 @@ -9219,19 +9219,19 @@ msgid "" "> vector are `TRUE`)." msgstr "" ">\n" -"> 複数の論理基準を組み合わせたい場合がよくあります。\n" -"> 例えば、アジア**または** ヨーロッパに位置し、なお**かつ** ある一定の範囲の平均余命\n" +"> 複数の論理基準を組み合わせたい場合はよくあります。\n" +"> 例えば、アジア**または** ヨーロッパに位置し、**なおかつ** ある一定の範囲の平均余命\n" "> の国を見つけたいとします。\n" -"> Rにある論理ベクトルを複数組み合わせると:\n" +"> Rにが論理ベクトルを複数組み合わせる演算子があります:\n" ">\n" "> * `&`、「論理積」演算子:もし左と右の両方が `TRUE` であれば、`TRUE`\n" "> * `|`、「論理和」 演算子:もし左と右のどちらか(または両方)が `TRUE` であれば、`TRUE`\n" ">\n" "> `&` 及び `|` の代わりに、 `&&` 及び `||` を見かけることもあるでしょう。\n" "> この二重になっている演算子は、それぞれのベクトルの最初の要素だけを見て、残りを無視するものです。\n" -"> 一般的に、この二重になっている演算子は、データ分析では使わずに、\n" -"> プログラミングの際(つまり、ある宣言を実行するかどうかを決める際に)\n" -"> だけ使うことがおすすめです。\n" +"> 一般的に、この二重になっている演算子はデータ分析では使わずに、\n" +"> プログラミングの際に(つまり、ある宣言を実行するかどうかを決める際に)\n" +"> 使うことをおすすめします。\n" ">\n" "> * `!`、「論理否定」演算子:`TRUE` を `FALSE` に、 `FALSE` を`TRUE`に変換します。\n" "> 否定できるのは、一つの論理条件(例 `!TRUE` が `FALSE`へ)\n" @@ -9312,8 +9312,8 @@ msgid "" msgstr "" ">\n" "> ベクトルの中の要素に、同じ名前を持つものがあるかもしれないということを知っておく必要があります。\n" -"> (データフレームでは、--- Rは避けようとしますが、--- 列に同じ名前を付けることもできます。\n" -"> 一方で、行の名前は、全て違う必要があります)\n" +"> (データフレームでは、--- Rは避けようとしますが --- 列に同じ名前を付けることもできます。\n" +"> 一方で、行の名前は全て違う必要があります)\n" "> これらの例を考えてみましょう:\n" ">\n" ">\n" @@ -9392,7 +9392,7 @@ msgstr "" ">\n" ">\n" ">~~~\n" -"> x['a'] # only returns first value\n" +"> x['a'] # 最初の値しか返さない\n" ">~~~\n" ">{: .language-r}\n" ">\n" @@ -9448,7 +9448,7 @@ msgid "" ">" msgstr "" ">\n" -"> 演算子を引用符で囲むことで、演算子についてのヘルプが探せることを覚えておきましょう:\n" +"> 演算子を引用符で囲むことで、演算子についてのヘルプを検索できることを覚えておきましょう:\n" "> `help(\"%in%\")` または `?\"%in%\"`.\n" ">" @@ -9470,7 +9470,7 @@ msgid "" "~~~" msgstr "" "~~~\n" -"x <- c(a=5.4, b=6.2, c=7.1, d=4.8, e=7.5) # まず、ベクトルにその場で名前を付けることから、また始めます\n" +"x <- c(a=5.4, b=6.2, c=7.1, d=4.8, e=7.5) # まず、ベクトルにその場で名前を付けることから始めます\n" "x[-\"a\"]\n" "~~~" @@ -9516,7 +9516,7 @@ msgstr "" #: r-novice-gapminder/_episodes/06-data-subsetting.md:639 msgid "Skipping multiple named indices is a little bit harder still. Suppose we want to drop the `\"a\"` and `\"c\"` elements, so we try this:" -msgstr "複数の名前のある要素番号を飛ばすことは、それでも少し難しくなります。`\"a\"` と`\"c\"` の要素を削除したいとき、これを試してみます:" +msgstr "複数の名前のある要素番号を飛ばすことは、少しですが、さらに難しくなります。`\"a\"` と`\"c\"` の要素を削除したいとき、以下を試したとしましょう:" # code block #: r-novice-gapminder/_episodes/06-data-subsetting.md:642 @@ -9545,11 +9545,11 @@ msgstr "" #: r-novice-gapminder/_episodes/06-data-subsetting.md:663 msgid "R did *something*, but it gave us a warning that we ought to pay attention to - and it apparently *gave us the wrong answer* (the `\"c\"` element is still included in the vector)!" -msgstr "Rは *何か* をしましたが、注意しなければいけないという警告を出し、その結果はどうやら、*間違った回答*(`\"c\"` の要素が、ベクトルに含まれている)のようです!" +msgstr "Rは *何か* をしたのですが、私達が注目しなければならない警告も出しました。結果としては、どうやら *間違った回答* が帰ってきたみたいです(`\"c\"` の要素が、ベクトルに含まれています)!" #: r-novice-gapminder/_episodes/06-data-subsetting.md:665 msgid "So what does `!=` actually do in this case? That's an excellent question." -msgstr "ではいったい、 `!=` は、ここで実際に何をしたのでしょう。これは非常に素晴らしい質問です。" +msgstr "ではいったい、 `!=` は、ここで実際に何をしたのでしょう。これは素晴らしい質問です。" # header #: r-novice-gapminder/_episodes/06-data-subsetting.md:667 @@ -9589,9 +9589,9 @@ msgid "" "of the left argument with the corresponding element of its right\n" "argument. What happens when you compare vectors of different lengths?" msgstr "" -"Rは、`names(x)[3] != \"c\"` が明らかに間違いであるときに、このベクトルの3番目の要素として、なぜ`TRUE` にしたのでしょうか。\n" -"`!=` を使うとき、Rは、左側の引数のそれぞれの要素を、右側のそれぞれの要素と比較しようとします。\n" -"違う長さのベクトルを比較しようとすると、何が起こるでしょうか?" +"Rは、`names(x)[3] != \"c\"` が明らかに間違いであるときに、このベクトルの3番目の要素をなぜ`TRUE` にしたのでしょうか。\n" +"`!=` を使うとき、Rは左側の引数のそれぞれの要素を右側のそれぞれの要素と比較しようとします。\n" +"違う長さのベクトルを比較しようとすると、何が起こるのでしょう?" #: r-novice-gapminder/_episodes/06-data-subsetting.md:697 msgid "![Inequality testing](../fig/06-rmd-inequality.1.png)" @@ -9599,7 +9599,7 @@ msgstr "![Inequality testing](../fig/06-rmd-inequality.1.png)" #: r-novice-gapminder/_episodes/06-data-subsetting.md:699 msgid "When one vector is shorter than the other, it gets *recycled*:" -msgstr "もし、もう一つのベクトルよりも短いベクトルがあったとき、そのベクトルは、*再利用されます*:" +msgstr "もし、もう一つのベクトルよりも短いベクトルがあったとき、そのベクトルは*再利用されます*:" #: r-novice-gapminder/_episodes/06-data-subsetting.md:701 msgid "![Inequality testing: results of recycling](../fig/06-rmd-inequality.2.png)" @@ -9611,13 +9611,13 @@ msgid "" "doesn't match the third element of `names(x)`, the value of `!=` is `TRUE`.\n" "Because in this case the longer vector length (5) isn't a multiple of the shorter vector length (2), R printed a warning message. If we had been unlucky and `names(x)` had contained six elements, R would *silently* have done the wrong thing (i.e., not what we intended it to do). This recycling rule can can introduce hard-to-find and subtle bugs!" msgstr "" -"この場合、Rは `c(\"a\", \"c\")` を `names(x)` に合わせるのに必要なだけ**繰り返します**。つまり、`c(\"a\",\"c\",\"a\",\"c\",\"a\")`となります。\n" +"この場合、Rは `c(\"a\", \"c\")` を `names(x)` に合わせるのに必要な分だけ**繰り返します**。つまり、`c(\"a\",\"c\",\"a\",\"c\",\"a\")`となります。\n" "再利用された`\"a\"` は、 `names(x)` の3番目の要素と一致しないため、 `!=` の値は、`TRUE` なのです。\n" -"この場合、長い方のベクトルの長さ(5)は、短い方のベクトルの長さ(2)と一致しないので、Rは、警告メッセージを出力しました。もし、不運なことに、`names(x)` が、6つの要素を持っていたならば、Rは、*ひっそり* 間違った(意図していなかった)ことを行っていたでしょう。この再利用のルールは、見つけるのがとても難しく、とらえがたいバグをもたらすことがあります!" +"この場合、長い方のベクトルの長さ(5)は、短い方のベクトルの長さ(2)と一致しないので、Rは、警告メッセージを出力しました。もしも運悪く`names(x)` が6つの要素を持っていた場合、Rは*警告せずに* 間違った(意図していなかった)ことを行っていたでしょう。この再利用のルールは、見つけるのがとても難しく、とらえがたいバグをもたらすことがあります!" #: r-novice-gapminder/_episodes/06-data-subsetting.md:707 msgid "The way to get R to do what we really want (match *each* element of the left argument with *all* of the elements of the right argument) it to use the `%in%` operator. The `%in%` operator goes through each element of its left argument, in this case the names of `x`, and asks, \"Does this element occur in the second argument?\". Here, since we want to *exclude* values, we also need a `!` operator to change \"in\" to \"not in\":" -msgstr "Rに本当にやってもらいたいこと(左の引数の *それぞれの* 要素を、右の引数の要素の *全て* にマッチさせこと)を、してもらうには、 `%in%` 演算子を使う必要があります。`%in%` 演算子は、左の引数のそれぞれの要素、ここでは `x` の名前にひとつづつ 「この要素は、2番目の引数にあるかな」と尋ねていきます。ここで、値を *除く* ため、「中にある(in)」を「中にない(not in)」に変える `!` 演算子が必要です。" +msgstr "Rに本当にやってもらいたいこと(左の引数の *それぞれの* 要素を、右の引数の要素の *全て* にマッチさせること)をしてもらうには、 `%in%` 演算子を使う必要があります。`%in%` 演算子は、左の引数のそれぞれの要素、ここでは `x` の名前にひとつずつ 「この要素は、2番目の引数にあるかな」と尋ねていきます。ここで、値を *除く* ため、「中にある(in)」を「中にない(not in)」に変える `!` 演算子が必要です。" # code block #: r-novice-gapminder/_episodes/06-data-subsetting.md:710 @@ -9691,12 +9691,12 @@ msgid "" "> > is both correct and easy to type (and read)." msgstr "" ">\n" -"> ベクトルの要素を選びましょう、要素のリストのどれかに該当するベクトルの要素を選ぶのは、\n" -"> データ分析のタスクで、とてもよくあることです。例えば、gapminderのデータセットには、\n" -"> `国(country)` 及び `大陸(continent)` 変数があるけれども、これら2つのものさし\n" -"> をつなぐ情報はありません。東南アジアの情報をひっぱってきたいとき、\n" +"> データ分析をするにあたって、リスト内にある要素をベクトルの中から選択するのは\n" +"> よくあることです。例えば、gapminderのデータセットには、\n" +"> `国(country)` 及び `大陸(continent)` 変数があるけれども、これら2つの目盛りの間\n" +"> をつなぐ情報はありません。例えば東南アジアの情報を引き出したい場合、\n" "> 全ての東南アジアの国を `TRUE` とし、その他を`FALSE`とする論理ベクトルを作る処理を\n" -"> どのように構築できるでしょうか。\n" +"> どのように構築するのでしょう?\n" ">\n" "> 次のようなデータを持っているとします:\n" "> \n" @@ -9711,10 +9711,10 @@ msgstr "" "> ~~~\n" "> {: .language-r}\n" ">\n" -"> 警告が出てくる間違った方法( `==` のみを使う)、\n" +"> 警告が出てくる、間違った方法( `==` のみを使う)、\n" "> 粗削りな方法(論理演算子 `==` 及び `|` を使う)、\n" -"> 洗練された方法( `%in%` を使う)方法があります。\n" -"> この3つ全てを思いつき、それぞれがどう動く(動かない)か説明できたかを確認してみましょう。\n" +"> 洗練された方法( `%in%` を使う)があります。\n" +"> これら3つの方法それぞれの例を考え、それぞれがどう動く(動かない)か説明してください。\n" "> \n" "> > ## チャレンジ3の解答\n" "> >\n" @@ -9730,10 +9730,10 @@ msgstr "" "> > ~~~\n" "> > {: .language-r}\n" "> > (または `countries==seAsia[1] | countries==seAsia[2] | ...`)。\n" -"> > これは、正しい値を与えますが、これがどんなに変なものかが分かるといいのですが\n" -"> > (もし、もっと長いリストから国を選びたかったとしたら、どうすればよかったでしょう)。\n" +"> > これは正しい値を返すのですが、この方法がどれだけ不格好であるか理解できれば上出来です\n" +"> > (もっと長いリストから国を選ぶ場合は、この方法だったらどうなっていたでしょう?)。\n" "> > - この問題に対する一番良い方法は、`countries %in% seAsia` で、\n" -"> > これは、正しいし、タイプする(読む)のも楽です。" +"> > 正しい回答でもあり、タイプする(読む)のも楽です。" # header #: r-novice-gapminder/_episodes/06-data-subsetting.md:771 @@ -9753,7 +9753,7 @@ msgstr "データをフィルターするために使える特別な関数がい # unordered list #: r-novice-gapminder/_episodes/06-data-subsetting.md:778 msgid " * `is.na` will return all positions in a vector, matrix, or data.frame" -msgstr " * `is.na` は、ベクトル、行列、データフレームで、 全ての`NA` (または `NaN` )を含む位置を返します" +msgstr " * `is.na` は、ベクトル、行列、データフレームで、" #: r-novice-gapminder/_episodes/06-data-subsetting.md:779 msgid "" @@ -9763,9 +9763,11 @@ msgid "" " that do not contain `NA`, `NaN` or `Inf`.\n" " * `na.omit` will filter out all missing values from a vector" msgstr "" +" 全ての`NA` (または `NaN` )を含む位置を返します\n" " * これと同じことを `NaN` 及び `Inf` にするのが `is.nan` 及び `is.infinite` です\n" -" * `is.finite` は、ベクトル、行列、データフレームで、 全ての`NA`, `NaN` または `Inf`を含まない位置を返します\n" -" * `na.omit` は、ベクトルから欠損値をフィルターし除きます" +" * `is.finite` は、ベクトル、行列、データフレームで、\n" +" 全ての`NA`, `NaN` または `Inf`を含まない位置を返します\n" +" * `na.omit` は、ベクトルから欠損値をフィルターし、除きます" # header #: r-novice-gapminder/_episodes/06-data-subsetting.md:785 @@ -9776,7 +9778,9 @@ msgstr "## 順序のない因子の部分集合を作る" msgid "" "Now that we've explored the different ways to subset vectors, how\n" "do we subset the other data structures?" -msgstr "これまで部分集合ベクトルを作る色々な方法をやってみましたが、他のデータ構造の部分集合を作るにはどうすればいいでしょう。" +msgstr "" +"これまで部分集合ベクトルを作る色々な方法をやってみましたが、\n" +"他のデータ構造の部分集合を作るにはどうすればいいでしょう。" #: r-novice-gapminder/_episodes/06-data-subsetting.md:790 msgid "Factor subsetting works the same way as vector subsetting." @@ -9934,7 +9938,7 @@ msgstr "" msgid "" "You can leave the first or second arguments blank to retrieve all the\n" "rows or columns respectively:" -msgstr "それぞれ全ての列または行を取ってくるために、この最初または2番目の引数を空のままにしておくこともできます:" +msgstr "それぞれ全ての列または行を取ってくるためには、最初または2番目の引数を空のままにしておきましょう:" # code block #: r-novice-gapminder/_episodes/06-data-subsetting.md:881 @@ -9974,7 +9978,7 @@ msgstr "" msgid "" "If we only access one row or column, R will automatically convert the result\n" "to a vector:" -msgstr "1つの列または行にアクセスした場合、Rは、結果を自動的にベクトルに変換します:" +msgstr "1つの列または行にアクセスした場合、Rは結果を自動的にベクトルに変換します:" # code block #: r-novice-gapminder/_episodes/06-data-subsetting.md:903 @@ -10034,7 +10038,7 @@ msgstr "" msgid "" "Unlike vectors, if we try to access a row or column outside of the matrix,\n" "R will throw an error:" -msgstr "ベクトルと違って、行列の外の行や列にアクセスしようとしたとき、Rはエラーを返します:" +msgstr "ベクトルと違って、行列の外の行や列にアクセスしようとすると、Rはエラーを返します:" # code block #: r-novice-gapminder/_episodes/06-data-subsetting.md:936 @@ -10080,7 +10084,7 @@ msgstr "" msgid "" "Because matrices are vectors, we can\n" "also subset using only one argument:" -msgstr "行列は、ベクトルなので、1つの引数だけを使って部分集合を作ることもできます:" +msgstr "行列はベクトルなので、1つの引数だけを使って部分集合を作ることもできます:" # code block #: r-novice-gapminder/_episodes/06-data-subsetting.md:960 @@ -10110,8 +10114,8 @@ msgid "" "are laid out in *column-major format* by default. That is the elements of the\n" "vector are arranged column-wise:" msgstr "" -"これは、普通、役に立たず、読むのがわずらわしいです。しかし、行列は *列順序(column-major format)* で\n" -"デフォルトは配置されることに注意しておくといいでしょう。つまり、ベクトルの要素は、列にある順番で配置されています。" +"これは、普段使うには役に立たず、読むときにも混乱を招きます。ですが、行列は *列順序(column-major format)* で\n" +"デフォルト配置されるということを覚えておくといいでしょう。つまり、ベクトルの要素は、列にある順番で配置されています。" # code block #: r-novice-gapminder/_episodes/06-data-subsetting.md:978 @@ -10141,7 +10145,7 @@ msgstr "" #: r-novice-gapminder/_episodes/06-data-subsetting.md:992 msgid "If you wish to populate the matrix by row, use `byrow=TRUE`:" -msgstr "もし、行列を、行の順番で埋めていきたい場合は、 `byrow=TRUE` が使えます:" +msgstr "もし、行列を行の順番で埋めていきたい場合は、 `byrow=TRUE` を使います:" # code block #: r-novice-gapminder/_episodes/06-data-subsetting.md:995 @@ -10197,7 +10201,7 @@ msgid "" "> ~~~" msgstr "" ">\n" -"> 以下のコードがあるとしましょう:\n" +"> 以下のコードがあるとします:\n" ">\n" "> \n" "> ~~~\n" @@ -10233,7 +10237,7 @@ msgid "" "> > D" msgstr "" ">\n" -"> 1. 次のうち、どのコマンドが、11と14を抜き出すことができるでしょうか\n" +"> 1. 次のコマンドのうち、11と14を抜き出すことができるコマンドはどれでしょう?\n" ">\n" "> A. `m[2,4,2,5]`\n" ">\n" @@ -10257,7 +10261,7 @@ msgid "" "Now we'll introduce some new subsetting operators. There are three functions\n" "used to subset lists. We've already seen these when learning about atomic vectors and matrices: `[`, `[[`, and `$`." msgstr "" -"ここで新しい部分集合を作る演算子を御紹介しましょう。リストの部分集合を作る関数は3つあります。\n" +"ここで新しい部分集合を作る演算子を紹介します。リストの部分集合を作る関数は3つあります。\n" "原子ベクトルと行列について学んだ時に、既に見たものです: `[` 、 `[[` 、`$`" #: r-novice-gapminder/_episodes/06-data-subsetting.md:1055 @@ -10306,8 +10310,8 @@ msgid "" "in each element of the list, not the individual elements within those\n" "data structures." msgstr "" -"`[` を使い原子ベクトルを作ったのと全く同じ方法で、リストの要素から部分集合を作ることができます。\n" -"しかし、比較処理は、 反復的ではないため、使えません。比較処理は、リストのそれぞれの要素のデータ構造にある、個々の要素ではなく、\n" +"`[` を使って原子ベクトルを作ったのと全く同じ方法で、リストの要素から部分集合を作ることができます。\n" +"しかし、比較処理は反復的ではないため、使えません。比較処理は、リストのそれぞれの要素のデータ構造にある、個々の要素ではなく、\n" "データ構造に条件付けをしようとするからです。" # code block @@ -10401,7 +10405,7 @@ msgstr "" #: r-novice-gapminder/_episodes/06-data-subsetting.md:1131 msgid "Nor use it to skip elements:" -msgstr "または要素を飛ばすこともできません:" +msgstr "また、要素を飛ばすこともできません:" # code block #: r-novice-gapminder/_episodes/06-data-subsetting.md:1134 @@ -10481,7 +10485,7 @@ msgstr "" # blockquote, which can be cascaded #: r-novice-gapminder/_episodes/06-data-subsetting.md:1183 msgid "> Given the following list:" -msgstr "> 以下のリストがあるとしましょう:" +msgstr "> 以下のリストがあるとします:" #: r-novice-gapminder/_episodes/06-data-subsetting.md:1184 msgid "" @@ -10586,7 +10590,7 @@ msgstr "" # blockquote, which can be cascaded #: r-novice-gapminder/_episodes/06-data-subsetting.md:1237 msgid "> Given a linear model:" -msgstr "> 線形モデルを考えてみましょう:" +msgstr "> 以下のような線形モデルあるとします:" #: r-novice-gapminder/_episodes/06-data-subsetting.md:1238 msgid "" @@ -10644,16 +10648,16 @@ msgid "" "Remember the data frames are lists underneath the hood, so similar rules\n" "apply. However they are also two dimensional objects:" msgstr "" -"データフレームの中身は、リストなので、同じようなルールがあてはまることを覚えておきましょう。\n" -"しかし、データフレームは、2次元のオブジェクトでもあります。" +"データフレームの中身は実はリストなので、リストと同じようなルールがあてはまることを覚えておきましょう。\n" +"しかし、データフレームは2次元のオブジェクトでもあります。" #: r-novice-gapminder/_episodes/06-data-subsetting.md:1268 msgid "" "`[` with one argument will act the same way as for lists, where each list\n" "element corresponds to a column. The resulting object will be a data frame:" msgstr "" -"1つの引数しかない `[` は、リストと同じような働きがあります、つまり、それぞれのリストの要素が列に対応します。\n" -"その結果のオブジェクトは、データフレームになるものです:" +"1つの引数しかない `[` は、リストと同じような働きがあり、それぞれのリストの要素が列に対応します。\n" +"その結果、返されるオブジェクトはデータフレームになります:" # code block #: r-novice-gapminder/_episodes/06-data-subsetting.md:1272 @@ -10743,7 +10747,7 @@ msgstr "" #: r-novice-gapminder/_episodes/06-data-subsetting.md:1320 msgid "With two arguments, `[` behaves the same way as for matrices:" -msgstr "2つの引数で、 `[` は、行列と同じような働きをします:" +msgstr "2つの引数を使えば、 `[` は、行列と同じような働きをします:" # code block #: r-novice-gapminder/_episodes/06-data-subsetting.md:1323 @@ -10778,8 +10782,8 @@ msgid "" "If we subset a single row, the result will be a data frame (because\n" "the elements are mixed types):" msgstr "" -"もし、1つの行を部分集合とする場合、結果は、データフレームになります\n" -"(理由は、要素には色々な型があるからです):" +"もし、1つの行を部分集合する場合、結果はデータフレームになります\n" +"(理由は、要素には色々なデータ型が混ざっているからです):" # code block #: r-novice-gapminder/_episodes/06-data-subsetting.md:1342 @@ -11036,15 +11040,15 @@ msgid "" "> > {: .language-r}" msgstr "" ">\n" -"> 1. なぜ、 `gapminder[1:20]` は、エラーを返すのでしょうか。 `gapminder[1:20, ]` とどう違うのでしょうか。\n" +"> 1. なぜ、 `gapminder[1:20]` は、エラーを返すのでしょうか? `gapminder[1:20, ]` とどう違うのでしょう?\n" ">\n" ">\n" -"> 2. 新しい `gapminder_small` という1から9の行だけを含む `data.frame` を作りましょう。\n" +"> 2. 新しく `gapminder_small` という、1から9の行だけを含む `data.frame` を作ってください。\n" "> これは、1つまたは2つの手順でできます。\n" ">\n" "> > ## チャレンジ8の解答\n" "> >\n" -"> > 1. `gapminder` は、データフレームなので、2つの次元の部分集合を作る必要があります。 `gapminder[1:20, ]` は、最初から20番目の行までについて全ての列を与えるでしょう。\n" +"> > 1. `gapminder` は、データフレームなので、2つの次元の部分集合を作る必要があります。 `gapminder[1:20, ]` は、最初から20番目の行までについて全ての列を引き出します。\n" "> >\n" "> > 2. \n" "> >\n" @@ -11099,9 +11103,9 @@ msgid "" "by setting actions to occur only if a condition or a set of conditions are met.\n" "Alternatively, we can also set an action to occur a particular number of times." msgstr "" -"コードを書くとき、実行の流れを制御したくなります。\n" -"これは、ある条件、または一連の条件が満たされたときに、実行されるようにすればできます。\n" -"あるいは、決まった回数、実行されるよう設定することもできます。" +"コードを書く際、実行の流れを制御する必要がよくあります。\n" +"これは、ある条件、または一連の条件が満たされたときに実行されるようにすればできます。\n" +"あるいは、決まった回数実行されるよう設定することもできます。" #: r-novice-gapminder/_episodes/07-control-flow.md:25 msgid "" @@ -11109,7 +11113,7 @@ msgid "" "For conditional statements, the most commonly used approaches are the constructs:" msgstr "" "Rでは、流れを制御する方法がいくつかあります。\n" -"条件付きの宣言で、最もよく使われる方法は、設計です:" +"条件付きの宣言で、最もよく使われるのが構文(constructs)です:" # code block #: r-novice-gapminder/_episodes/07-control-flow.md:29 @@ -11135,16 +11139,16 @@ msgstr "" "}\n" "\n" "# if ... else\n" -"if (condition is true) {\n" -" perform action\n" -"} else { # that is, if the condition is false,\n" -" perform alternative action\n" +"if (condition is true) { # 条件が満たされた場合\n" +" アクションを行う\n" +"} else { # つまり、条件が満たされなかった場合\n" +" 別のアクションを行う\n" "}\n" "~~~" #: r-novice-gapminder/_episodes/07-control-flow.md:44 msgid "Say, for example, that we want R to print a message if a variable `x` has a particular value:" -msgstr "例えば、Rに、もし変数 `x` が、特定の値を持っていた場合、メッセージを表示させたいとします。" +msgstr "例えばRに、もし変数 `x` が特定の値を持っていた場合、メッセージを表示させたいとします。" # code block #: r-novice-gapminder/_episodes/07-control-flow.md:47 @@ -11182,7 +11186,7 @@ msgstr "" #: r-novice-gapminder/_episodes/07-control-flow.md:65 msgid "The print statement does not appear in the console because x is not greater than 10. To print a different message for numbers less than 10, we can add an `else` statement." -msgstr "xは、10より大きくないため、表示された宣言は、コンソール上に表示されません。10より小さい場合に、違ったメッセージを表示させるためには、 `else` 宣言をいれなければなりません。" +msgstr "xは10より大きくないため、表示された宣言はコンソール上に表示されません。10より小さい場合に違ったメッセージを表示させるためには、 `else` 宣言を追加しなければなりません。" # code block #: r-novice-gapminder/_episodes/07-control-flow.md:68 @@ -11266,8 +11270,8 @@ msgid "" "looking for a logical element, i.e., `TRUE` or `FALSE`. This can cause some\n" "headaches for beginners. For example:" msgstr "" -"**重要:** Rが `if()` 宣言の中の条件を計算する際、論理要素( `TRUE` or `FALSE` )を探します。\n" -"これが、初心者にとって頭の痛いことをもららすこともあります。例えば:" +"**重要:** Rが `if()` 宣言の中の条件を計算する際、論理要素( `TRUE` か `FALSE` )を探します。\n" +"初心者には複雑なので、混乱してしまうかもしれません。例えば:" # code block #: r-novice-gapminder/_episodes/07-control-flow.md:114 @@ -11303,7 +11307,7 @@ msgstr "" #: r-novice-gapminder/_episodes/07-control-flow.md:131 msgid "As we can see, the not equal message was printed because the vector x is `FALSE`" -msgstr "ここで見たように、ベクトルxが `FALSE` であるので、不等号のメッセージが表示されたのです。" +msgstr "ここで見られるように、ベクトル x が `FALSE` であるため、不等号のメッセージが表示されました。" # code block #: r-novice-gapminder/_episodes/07-control-flow.md:134 @@ -11378,12 +11382,12 @@ msgid "" msgstr "" ">\n" "> `if()` 宣言を使って、`gapminder` のデータセットに2002年の記録があるかどうかを伝える\n" -"> 適当なメッセージを表示しましょう。\n" -"> 2012年について、同じことをしてみましょう。\n" +"> 適当なメッセージを表示してください。\n" +"> 2012年についても、同じことをしてください。\n" ">\n" "> > ## チャレンジ1の解答\n" "> > `any()` を使わないチャレンジ1の解答をまず見てみましょう。\n" -"> > 最初に、`gapminder$year` 中、どの要素が、 `2002` と等しいかを記した論理ベクトルを手に入れます:\n" +"> > 最初に、`gapminder$year` の内、どの要素が `2002` と等しいかを記した論理ベクトルを手に入れます:\n" "> > \n" "> > ~~~\n" "> > gapminder[(gapminder$year == 2002),]\n" @@ -11395,13 +11399,13 @@ msgstr "" "> > rows2002_number <- nrow(gapminder[(gapminder$year == 2002),])\n" "> > ~~~\n" "> > {: .language-r}\n" -"> > 2002年の記録が存在するということは、 `rows2002_number` が1以上あることと同じことです:\n" +"> > 2002年の記録が存在するということは、 `rows2002_number` が1以上あるということです:\n" "> > \n" "> > ~~~\n" "> > rows2002_number >= 1\n" "> > ~~~\n" "> > {: .language-r}\n" -"> > 全てを一緒にすると、次の得ます:\n" +"> > 全てを合わせると、以下になります:\n" "> > \n" "> > ~~~\n" "> > if(nrow(gapminder[(gapminder$year == 2002),]) >= 1){\n" @@ -11422,7 +11426,7 @@ msgstr "" #: r-novice-gapminder/_episodes/07-control-flow.md:196 msgid "Did anyone get a warning message like this?" -msgstr "次のようなメッセージをもらった人はいますか。" +msgstr "次のような警告メッセージをもらった人はいますか?" # code block #: r-novice-gapminder/_episodes/07-control-flow.md:199 @@ -11444,7 +11448,7 @@ msgid "" "element. Here you need to make sure your condition is of length 1." msgstr "" "もし、1つ以上の要素を持つベクトルを評価する条件の場合、\n" -"関数 `if()` は、走りますが、最初の要素の条件だけを評価するでしょう。\n" +"関数 `if()` は実行されるのですが、最初の要素の条件しか評価しません。\n" "ここでは、確実に条件の長さは1であるようにする必要があります。" # blockquote, which can be cascaded @@ -11462,16 +11466,16 @@ msgid "" "> the vector are `TRUE`." msgstr "" ">\n" -"> `any()` 関数は、少なくとも1つ `TRUE` の値がある場合、 `TRUE` を返し、\n" +"> `any()` 関数は、ベクトルの中に少なくとも1つ `TRUE` の値がある場合、 `TRUE` を返し、\n" "> そうでない場合は、 `FALSE` を返します。\n" "> これは、 `%in%` 演算子でも同様に使えます。\n" -"> 関数 `all()` は、その名前が示唆しているように、全ての値が `TRUE` である時のみ、\n" -"> ベクトルは `TRUE` となります。" +"> 関数 `all()` は、その名前が示唆しているように、ベクトル内の全ての値が `TRUE` である時のみ、\n" +"> `TRUE` となります。" # header #: r-novice-gapminder/_episodes/07-control-flow.md:218 msgid "## Repeating operations" -msgstr "## 繰り返し処理" +msgstr "## 繰り返し行う処理" #: r-novice-gapminder/_episodes/07-control-flow.md:220 msgid "" @@ -11483,13 +11487,13 @@ msgid "" "correctly. Avoid using `for()` loops unless the order of iteration is important:\n" "i.e. the calculation at each iteration depends on the results of previous iterations." msgstr "" -"一連の値の間、繰り返しをしたい場合、\n" -"繰り返す順番が重要で、それぞれに同じ演算を行うときは、 \n" -" `for()` ループが、それをしてくれます。\n" +"一連の値に繰り返し同じ演算をしたい場合、\n" +"そして繰り返す順番も重要である場合は、 \n" +" `for()` ループを使いましょう。\n" " `for()` ループは、先ほどシェルのレッスンで見ましたね。これは、最も柔軟な\n" "ループの演算子ですが、それゆえ、正しく使うのが最も難しいです。\n" -"繰り返す順番が重要(つまり直前の繰り返しの結果をもとに、次々と\n" -"繰り返しの演算行われる形)でない限り、 `for()` ループを使うのを避けましょう。" +"繰り返す順番が重要(つまり直前の繰り返しの結果をもとに、次\n" +"の演算を行う場合)でない限り、 `for()` ループを使うのを避けましょう。" #: r-novice-gapminder/_episodes/07-control-flow.md:228 msgid "The basic structure of a `for()` loop is:" @@ -11512,7 +11516,7 @@ msgstr "" #: r-novice-gapminder/_episodes/07-control-flow.md:238 msgid "For example:" -msgstr "例:" +msgstr "例えば:" # code block #: r-novice-gapminder/_episodes/07-control-flow.md:241 @@ -11562,13 +11566,17 @@ msgstr "" msgid "" "The `1:10` bit creates a vector on the fly; you can iterate\n" "over any other vector as well." -msgstr " `1:10` の部分は、ベクトルをその場で作るもので、他のベクトルの間中、繰り返すこともできます。" +msgstr "" +"`1:10` の部分は、ベクトルをその場で作るものです。\n" +"他のベクトルの中身を繰り返すこともできます。" #: r-novice-gapminder/_episodes/07-control-flow.md:267 msgid "" "We can use a `for()` loop nested within another `for()` loop to iterate over two things at\n" "once." -msgstr " `for()` ループを、もうひとつの `for()` ループと入れ子となる形にして、2つのことを同時に繰り返すこともできます。" +msgstr "" +"`for()` ループを、もうひとつの `for()` ループと入れ子となる形にすれば、\n" +"2つ同時に繰り返すこともできます。" # code block #: r-novice-gapminder/_episodes/07-control-flow.md:271 @@ -11650,7 +11658,7 @@ msgstr "" #: r-novice-gapminder/_episodes/07-control-flow.md:311 msgid "Rather than printing the results, we could write the loop output to a new object." -msgstr "結果を表示させずに、ループの結果を新しいオブジェクトとして書くこともできました。" +msgstr "結果を表示させずに、ループの結果を新しいオブジェクトに書き込むこともできます。" # code block #: r-novice-gapminder/_episodes/07-control-flow.md:314 @@ -11699,8 +11707,8 @@ msgid "" "it when you are iterating through a lot of values." msgstr "" "このアプローチが役に立つこともありますが、'結果を太らせる' (結果のオブジェクトを\n" -"段々積み上げる)と、演算する上で非効率になります。\n" -"ゆえに、多くの値の間、繰り返すときは、避けましょう。" +"徐々に積み上げる)と、演算する上で非効率になります。\n" +"ゆえに、多くの値の間を繰り返すときは避けましょう。" # blockquote, which can be cascaded #: r-novice-gapminder/_episodes/07-control-flow.md:339 @@ -11721,15 +11729,15 @@ msgid "" "> store the results in the appropriate location." msgstr "" ">\n" -"> とてもよくありがちな、初心者と経験のあるRユーザーの両方の足を引っ張ることのひとつに、\n" -"> 結果のオブジェクト(ベクトル、リスト、行列、データフレーム)をループ処理で作ろうとする\n" -"> ことがあります。\n" -"> コンピュータは、これを扱うのがとても下手で、計算が、速攻で\n" -"> のろのろ遅くなります。適当な次元を持つ空の結果オブジェクトを\n" -"> 前もって宣言しておく方が絶対いいです。\n" -"> もし、上記の行列に蓄積される最後の結果が何になるかを知っていたら、\n" -"> 5行、5列の数列を作成しておいて、それぞれの繰り返しで、適切な場所へ結果を\n" -"> 蓄積しましょう。" +"> 初心者、そして経験のあるRユーザーがよくつまずいてしまう\n" +"> ループの使い方の一つが、結果のオブジェクト\n" +">(ベクトル、リスト、行列、データフレームなど)をループするたびに作ってしまうことです。\n" +"> コンピュータはこれを扱うのがとても下手で、すぐに計算が\n" +"> 遅くなってしまいます。適当な次元を持つ空の結果オブジェクトを\n" +"> 前もって宣言しておく方が効率的です。\n" +"> もし、上記のように、最後の結果が行列に蓄積されるのを知っていたら、\n" +"> 5行、5列の数列を作成しておいて、それぞれの繰り返しで適切な場所へ結果を\n" +"> 保存しましょう。" #: r-novice-gapminder/_episodes/07-control-flow.md:352 msgid "" @@ -11737,7 +11745,7 @@ msgid "" "For this example, it looks more involved, but is still more efficient." msgstr "" "よりよい方法は、(空の)出力オブジェクトを、値を埋める前に宣言することです。\n" -"この例では、より複雑に見えますが、それでもより効率的です。" +"この例では、より複雑に見えますが、より効率的です。" # code block #: r-novice-gapminder/_episodes/07-control-flow.md:356 @@ -11819,7 +11827,7 @@ msgid "" msgstr "" ">\n" ">\n" -"> ときには、ある条件が満たされるまで繰り返す必要がある場合に出くわすこともあるでしょう。\n" +"> 時には、ある条件が満たされるまで繰り返す必要があります。\n" "> これは、 `while()` ループを使えばできます。\n" ">\n" "> \n" @@ -11830,8 +11838,9 @@ msgstr "" "> ~~~\n" "> {: .language-r}\n" ">\n" -"> 例として、一様分布(`runif()` 関数)から0.1よりも小さい数を得るまで、\n" -"> 0から1の間で乱数を生成するwhile ループをここで示しましょう。\n" +"> 例として、このwhileループは\n" +"> 一様分布(`runif()` 関数)から0.1よりも小さい数を得るまで、\n" +"> 0から1の間で乱数を生成します。\n" ">\n" "> ~~~\n" "> z <- 1\n" @@ -11854,7 +11863,7 @@ msgid "" msgstr "" ">\n" "> `while()` ループは、いつも適当であるとは言えません。特に、条件が決して満たされないことによる\n" -"> 無限ループに陥らないように特に注意する必要があります。" +"> 無限ループに陥らないように注意する必要があります。" #: r-novice-gapminder/_episodes/07-control-flow.md:413 msgid "" @@ -11914,9 +11923,9 @@ msgid "" "> > {: .language-r}" msgstr "" ">\n" -"> `output_vector` と `output_vector2` のオブジェクトを比較しましょう。\n" -"> 同じですか。もし違ったら、なぜそうなったのでしょうか。\n" -"> `output_vector2` の最後のコードのかたまりを、 `output_vector` と同じにするには、どう変えればよいでしょうか?\n" +"> `output_vector` と `output_vector2` のオブジェクトを比較してみましょう。\n" +"> 同じですか?もし違ったら、なぜそうなったのでしょう?\n" +"> `output_vector2` の最後のコードのかたまりを `output_vector` と同じにするには、どう変えればいいのでしょうか?\n" ">\n" "> > ## チャレンジ2の解答\n" "> > 2つのベクトルが同じかを調べるために、 `all()` 関数を使いましょう:\n" @@ -11937,30 +11946,30 @@ msgstr "" "> > all(output_vector2 %in% output_vector)\n" "> > ~~~\n" "> > {: .language-r}\n" -"> > それゆえ、`output_vector` と `output_vector2` の要素は、違う順番で蓄積されただけです。\n" -"> > この理由は、 `as.vector()` は列ごとに行列に要素を入力する形で出力するからです。\n" -"> > `output_matrix` を見てみると、要素を行ごとに欲しいということに気づくでしょう。\n" -"> > 解決方法は、 `output_matrix` を転置することです。転置関数 `t()` を呼ぶか、\n" +"> > ですので、`output_vector` と `output_vector2` の要素は、違う順番で蓄積されただけみたいです。\n" +"> > 理由は、 `as.vector()` は列ごとに行列から要素を出力するからです。\n" +"> > `output_matrix` を見てみると、要素を行ごとに出力して欲しいことに気づくでしょう。\n" +"> > 解決方法は、 `output_matrix` を転置することです。転置関数 `t()` を使うか、\n" "> > 要素を正しい順番で入力するか、いずれかの方法で対応可能です。\n" -"> > 最初の解決方法は、もともとのものを次の形で変更する必要があります:\n" +"> > 最初の解決方法は、元の形である\n" "> > \n" "> > ~~~\n" "> > output_vector2 <- as.vector(output_matrix)\n" "> > ~~~\n" "> > {: .language-r}\n" -"> > を、以下へ\n" +"> > を、次のように変えないといけません:\n" "> > \n" "> > ~~~\n" "> > output_vector2 <- as.vector(t(output_matrix))\n" "> > ~~~\n" "> > {: .language-r}\n" -"> > 二番目の解決方法は、次のように変える必要があります:\n" +"> > 二番目の解決方法は、以下を:\n" "> > \n" "> > ~~~\n" "> > output_matrix[i, j] <- temp_output\n" "> > ~~~\n" "> > {: .language-r}\n" -"> > を、以下へ。\n" +"> > 次のように変えます:\n" "> > \n" "> > ~~~\n" "> > output_matrix[j, i] <- temp_output\n" @@ -12031,7 +12040,7 @@ msgstr "" ">\n" "> > ## チャレンジ3の解答\n" "> >\n" -"> > **手順1**:大陸ベクトルから、確実に全ての唯一無二な値を抜き出せるかを是非確かめましょう。\n" +"> > **手順1**:大陸ベクトルから、確実に全ての固有の値を抜き出せるかを確かめましょう。\n" "> > \n" "> > ~~~\n" "> > gapminder <- read.csv(\"data/gapminder_data.csv\")\n" @@ -12040,10 +12049,10 @@ msgstr "" "> > {: .language-r}\n" "> >\n" "> > **手順2**:これらの大陸のそれぞれにループをし、その `部分集合` データごとに平均余命を出す必要があります。\n" -"> > それは次の形でできます:\n" +"> > それは次のようにすればできます:\n" "> >\n" -"> > 1. '大陸(continent)' の唯一無二の値のそれぞれについてループする\n" -"> > 2. 大陸のそれぞれの値ごとに、この部分集合の平均余命を蓄積する一時的な変数を作る\n" +"> > 1. '大陸(continent)' の固有の値のそれぞれについてループする\n" +"> > 2. 大陸のそれぞれの値ごとに、部分集合の平均余命を蓄積する一時的な変数を作る\n" "> > 3. 計算した平均余命を返し、 出力を表示させる:\n" "> >\n" "> > \n" @@ -12056,11 +12065,11 @@ msgstr "" "> > ~~~\n" "> > {: .language-r}\n" "> >\n" -"> > **手順3**:演習は、平均余命が50歳以上かどうかの結果だけを出力したいというものでした。\n" -"> > ゆえに、 `if` 条件を、表示させる前につける必要があります。これは、演算された平均余命が、基準値以上か、未満かを判別し、結果によって、出力を表示させる必要があります。\n" -"> > 上から (3) を修正する必要があります:\n" +"> > **手順3**:この演習では、平均余命が50歳以上かどうかの結果だけを出力するものでした。\n" +"> > ゆえに、結果を表示させる前に `if` 条件をつけて、演算された平均余命が基準値以上か、基準値未満かを判別し、結果によって正しい出力を表示させる必要があります。\n" +"> > これを踏まえて、上の (3) を修正する必要があります:\n" "> >\n" -"> > 3a. もし計算された平均余命が、ある基準(50歳)未満の場合、大陸と、平均余命は基準未満であるという宣言を、そうでない場合は、大陸と、平均余命は基準値以上であるという宣言を返しなさい:\n" +"> > 3a. もし計算された平均余命が、ある基準(50歳)未満の場合、大陸と平均余命は基準未満であるという宣言を、そうでない場合は、大陸と平均余命は基準値以上であるという宣言を返す:\n" "> >\n" "> > \n" "> > ~~~\n" @@ -12113,8 +12122,8 @@ msgid "" "> > {: .language-r}" msgstr "" ">\n" -"> チャレンジ3のスクリプトをそれぞれの国とごとにループする形で修正しなさい。\n" -"> 今回は、平均余命は、50歳未満か、50歳以上70歳未満か、70歳以上か\n" +"> チャレンジ3のスクリプトをそれぞれの国ごとにループする形に直してください。\n" +"> 今回は、平均余命は50歳未満か、50歳以上70歳未満か、70歳以上かを\n" "> 表示しましょう。\n" ">\n" "> > ## チャレンジ4の解答\n" @@ -12206,14 +12215,14 @@ msgid "" msgstr "" ">\n" "> `gapminder` データセットで、それぞれの国ごとにループするスクリプトを書き、\n" -">国が 'B' で始まるかどうかをテストし、平均余命が50歳以下の場合、平均余命を\n" +"> 国が 'B' で始まるかどうかをテストし、平均余命が50歳以下の場合、平均余命を\n" "> 時間ごとの移り変わりで示した線グラフを書きましょう。\n" ">\n" "> > ## チャレンジ5の解答\n" "> >\n" -"> > ユニックス・シェルのレッスンで紹介した`grep` コマンドを「B」で始まる国を見つけるために使います。\n" -"> > まず、これをどういうふうにするかを理解しましょう。\n" -"> > ユニックス・シェル節に従って、以下を試してみたいと思うかもしれません:\n" +"> > シェルのレッスンで紹介した`grep` コマンドを「B」で始まる国を見つけるために使います。\n" +"> > まず、これをどうやって使うかを理解しましょう。\n" +"> > シェル節に従って、以下を試してみようと思うかもしれません:\n" "> > \n" "> > ~~~\n" "> > grep(\"^B\", unique(gapminder$country))\n" @@ -12221,7 +12230,7 @@ msgstr "" "> > {: .language-r}\n" "> >\n" "> > でも、このコマンドを演算すると、順序なし因子変数 `country` の「B」で始まる要素番号を返します。\n" -"> > 値を得るためには、 `grep` コマンドの、`value=TRUE` オプションを加える必要があります:\n" +"> > 値を得るためには、 `grep` コマンドの`value=TRUE` オプションを加える必要があります:\n" "> >\n" "> > \n" "> > ~~~\n" @@ -12229,7 +12238,7 @@ msgstr "" "> > ~~~\n" "> > {: .language-r}\n" "> >\n" -"> > これらの国々をcandidateCountriesと呼ぶ変数に蓄積し、その変数のそれぞれでループするようにしましょう。\n" +"> > これらの国々をcandidateCountriesと呼ぶ変数に蓄積し、その変数のそれぞれをループするようにしましょう。\n" "> > そのループの中で、それぞれの国の平均余命を演算子、もし平均余命が50歳未満でったら、平均余命の進展をみるために、`with()` と`subset()`を使い、base-plotを用いてプロットしましょう:\n" "> >\n" "> > \n" @@ -12285,20 +12294,20 @@ msgstr "" "---\n" "# Please do not edit this file directly; it is auto generated.\n" "# Instead, please edit 08-plot-ggplot2.md in _episodes_rmd/\n" -"title: Creating Publication-Quality Graphics with ggplot2\n" -"teaching: 60\n" -"exercises: 20\n" -"questions:\n" -"- \"How can I create publication-quality graphics in R?\"\n" -"objectives:\n" -"- \"To be able to use ggplot2 to generate publication quality graphics.\"\n" -"- \"To apply geometry, aesthetic, and statisics layers to a ggplot plot.\"\n" -"- \"To manipulate the aesthetics of a plot usng different colors, shapes, and lines.\"\n" -"- \"To improve data visualization through transforming scales and paneling by group.\"\n" -"- \"To save a plot created with ggplot to disk.\"\n" -"keypoints:\n" -"- \"Use `ggplot2` to create plots.\"\n" -"- \"Think about graphics in layers: aesthetics, geometry, statistics, scale transformation, and grouping.\"\n" +"タイトル: ggplot2を用いた出版品質のグラフィックス作成\n" +"講義: 60\n" +"練習: 20\n" +"質問:\n" +"- \"Rで出版品質のグラフィックを作成するにはどうすればよいでしょうか?\"\n" +"目標:\n" +"- \"ggplot2を用いた出版品質のグラフィックスの生成\"\n" +"- \"ジオメトリ(点、線などの形状)、エステティック(審美)、および統計のレイヤーをggplotプロットに適用\"\n" +"- \"様々な色、形、線を用いた、プロットの審美面の操作\"\n" +"- \"スケール変換とグループ化による、より良いデータ視覚化\"\n" +"- \"ggplotで作成したプロットのディスク保存\"\n" +"キーポイント:\n" +"- \"プロットを作成するために`ggplot2`を用います\"\n" +"- \"エステティック、ジオメトリ、統計、スケール変換、グループ化など、レイヤー単位でグラフィックスを考えてみましょう。\"\n" "source: Rmd\n" "---" @@ -12307,10 +12316,7 @@ msgid "" "Plotting our data is one of the best ways to\n" "quickly explore it and the various relationships\n" "between variables." -msgstr "" -"Plotting our data is one of the best ways to\n" -"quickly explore it and the various relationships\n" -"between variables." +msgstr "データをプロットすることは、データとその変数間の様々な関係をクイックに探索する最良の方法の一つです。" #: r-novice-gapminder/_episodes/08-plot-ggplot2.md:27 msgid "" @@ -12318,9 +12324,9 @@ msgid "" "the [base plotting system][base], the [lattice][lattice]\n" "package, and the [ggplot2][ggplot2] package." msgstr "" -"There are three main plotting systems in R,\n" -"the [base plotting system][base], the [lattice][lattice]\n" -"package, and the [ggplot2][ggplot2] package." +"Rには、主に3つのプロットシステムがあります。\n" +"[R組み込みplot関数][base]、 [lattice][lattice]\n" +"パッケージ、[ggplot2][ggplot2] パッケージです。" #: r-novice-gapminder/_episodes/08-plot-ggplot2.md:31 msgid "" @@ -12338,9 +12344,8 @@ msgid "" "it is the most effective for creating publication quality\n" "graphics." msgstr "" -"Today we'll be learning about the ggplot2 package, because\n" -"it is the most effective for creating publication quality\n" -"graphics." +"今回、私たちはggplt2パッケージについて学んでいきます。\n" +"なぜなら、ggplot2パッケージは出版品質並のグラフィック作成に最も効果的だからです。" #: r-novice-gapminder/_episodes/08-plot-ggplot2.md:39 msgid "" @@ -12349,10 +12354,9 @@ msgid "" "**coordinate system**, and a set of **geoms**--the visual representation of data\n" "points." msgstr "" -"ggplot2 is built on the grammar of graphics, the idea that any plot can be\n" -"expressed from the same set of components: a **data** set, a\n" -"**coordinate system**, and a set of **geoms**--the visual representation of data\n" -"points." +"ggplot2はthe grammar of graphics(グラフィックス文法)に基づいており、\n" +"一貫した構成記述体系(データセット、座標系、そして一連の配置)でプロットを\n" +"表現することができます。" #: r-novice-gapminder/_episodes/08-plot-ggplot2.md:44 msgid "" @@ -12360,13 +12364,12 @@ msgid "" "This idea may be familiar to you if you have used image editing programs like Photoshop, Illustrator, or\n" "Inkscape." msgstr "" -"The key to understanding ggplot2 is thinking about a figure in layers.\n" -"This idea may be familiar to you if you have used image editing programs like Photoshop, Illustrator, or\n" -"Inkscape." +"ggplot2を理解するための鍵は、レイヤーについて考えることです。\n" +"このアイディアは、Photoshop、Illustrator、Inkscapeなどの画像編集ソフトを使用する場面でお馴染みかもしれません。" #: r-novice-gapminder/_episodes/08-plot-ggplot2.md:48 msgid "Let's start off with an example:" -msgstr "Let's start off with an example:" +msgstr "それでは、例題から始めましょう。:" # code block #: r-novice-gapminder/_episodes/08-plot-ggplot2.md:51 @@ -12394,10 +12397,9 @@ msgid "" "`ggplot` function are the *global* options for the plot: they apply to all\n" "layers on the plot." msgstr "" -"So the first thing we do is call the `ggplot` function. This function lets R\n" -"know that we're creating a new plot, and any of the arguments we give the\n" -"`ggplot` function are the *global* options for the plot: they apply to all\n" -"layers on the plot." +"最初に行うことは`ggplot`関数を呼び出すことです。\n" +"この関数は、新しいプロットを作成していることをRに知らせます。\n" +"`ggplot`関数に与える引数は、いずれもそのプロットのグローバルオプションであり、すべてのレイヤーに適用されます。" #: r-novice-gapminder/_episodes/08-plot-ggplot2.md:65 msgid "" @@ -12411,19 +12413,19 @@ msgid "" "pass `aes` these columns (e.g. `x = gapminder[, \"gdpPercap\"]`), this is because\n" "`ggplot` is smart enough to know to look in the **data** for that column!" msgstr "" -"We've passed in two arguments to `ggplot`. First, we tell `ggplot` what data we\n" -"want to show on our figure, in this example the gapminder data we read in\n" -"earlier. For the second argument we passed in the `aes` function, which\n" -"tells `ggplot` how variables in the **data** map to *aesthetic* properties of\n" -"the figure, in this case the **x** and **y** locations. Here we told `ggplot` we\n" -"want to plot the \"gdpPercap\" column of the gapminder data frame on the x-axis, and\n" -"the \"lifeExp\" column on the y-axis. Notice that we didn't need to explicitly\n" -"pass `aes` these columns (e.g. `x = gapminder[, \"gdpPercap\"]`), this is because\n" -"`ggplot` is smart enough to know to look in the **data** for that column!" +"ggplotに2つの引数を渡しました。\n" +"一つ目の引数は、`ggplot`に、どのデータを図に表示するかを示します。この例は、前に読み込んだgapminderデータです。\n" +"二つ目の引数には、`aes` 関数を渡しました。\n" +"この関数は、データの変数が図のエステティック属性にどのようにマッピングされるか`ggplot`に指示します。\n" +"この場合では、**x** と**y**を指定しています。\n" +"ここでは、`ggplot`に対して、x軸にgapminderデータフレームの“gdpPercap”列を、\n" +"y軸には“lifeExp”列をプロットするように指示しました。\n" +"`ggplot`がその列のデータを調べるのに十分な知識を持っているため、これらの列に明示的に`aes`を渡す必要はありません。\n" +"(例えば`x = gapminder [、 \"gdpPercap\"]`など。)" #: r-novice-gapminder/_episodes/08-plot-ggplot2.md:75 msgid "By itself, the call to `ggplot` isn't enough to draw a figure:" -msgstr "By itself, the call to `ggplot` isn't enough to draw a figure:" +msgstr "以下のように、ggplotを呼び出すだけでは図を描くことはできません。" # code block #: r-novice-gapminder/_episodes/08-plot-ggplot2.md:78 @@ -12447,10 +12449,10 @@ msgid "" "tells `ggplot` we want to visually represent the relationship between **x** and\n" "**y** as a scatterplot of points:" msgstr "" -"We need to tell `ggplot` how we want to visually represent the data, which we\n" -"do by adding a new **geom** layer. In our example, we used `geom_point`, which\n" -"tells `ggplot` we want to visually represent the relationship between **x** and\n" -"**y** as a scatterplot of points:" +"`ggplot`にデータを視覚的に表現する方法を指示する必要があります。\n" +"これは新しい**geom**レイヤを追加することで行います。\n" +"この例では、`geom_point`を使用しました。\n" +"これは`ggplot`に点の散布図としてxとyの関係を視覚的に表現するように指示します。" # code block #: r-novice-gapminder/_episodes/08-plot-ggplot2.md:91 @@ -12498,7 +12500,7 @@ msgid "" "> >" msgstr "" ">\n" -"> Modify the example so that the figure shows how life expectancy has\n" +"> 次の例を変更して、時間とともに平均余命がどのように変化しているかを図示して下さい。\n" "> changed over time:\n" ">\n" "> \n" @@ -12507,12 +12509,13 @@ msgstr "" "> ~~~\n" "> {: .language-r}\n" ">\n" -"> Hint: the gapminder dataset has a column called \"year\", which should appear\n" -"> on the x-axis.\n" +"> ヒント:gapminderデータセットには「year」という列がありますので、\n" +">「year」列をx軸に指定して下さい。\n" ">\n" -"> > ## Solution to challenge 1\n" +"\n" +"> > ## チャレンジ1の回答例\n" "> >\n" -"> > Here is one possible solution:\n" +"> > これは1つの回答例です。:\n" "> >\n" "> > \n" "> > ~~~\n" @@ -12553,21 +12556,21 @@ msgid "" "> >" msgstr "" ">\n" -"> ## Challenge 2\n" +"> ## チャレンジ 2\n" ">\n" -"> In the previous examples and challenge we've used the `aes` function to tell\n" -"> the scatterplot **geom** about the **x** and **y** locations of each point.\n" -"> Another *aesthetic* property we can modify is the point *color*. Modify the\n" -"> code from the previous challenge to **color** the points by the \"continent\"\n" -"> column. What trends do you see in the data? Are they what you expected?\n" +">先の例題とチャレンジでは、`aes` 関数を使用して、各点の**x**と**y**の位置について散布図**geom**を指定しました。\n" +">修正できるもう1つのエステティック属性は、点の色です。\n" +">先のチャレンジのコードを修正して、“continent” 列で点に色付けして下さい。\n" +">データにどはどのような傾向が見られますか?\n" +">それらの傾向は、あなたが期待したものですか?\n" ">\n" -"> > ## Solution to challenge 2\n" +"> > ## チャレンジ 2の回答例\n" "> >\n" -"> > In the previous examples and challenge we've used the `aes` function to tell\n" -"> > the scatterplot **geom** about the **x** and **y** locations of each point.\n" -"> > Another *aesthetic* property we can modify is the point *color*. Modify the\n" -"> > code from the previous challenge to **color** the points by the \"continent\"\n" -"> > column. What trends do you see in the data? Are they what you expected?\n" +">>先の例題とチャレンジでは、`aes` 関数を使用して、各点の**x**と**y**の位置について散布図**geom**を指定しました。\n" +">>修正できるもう1つのエステティック属性は、点の色です。\n" +">>先のチャレンジのコードを修正して、“continent” 列で点に色付けして下さい。\n" +">>データにどはどのような傾向が見られますか?\n" +">>それらの傾向は、あなたが期待したものですか?\n" "> >\n" "> > \n" "> > ~~~\n" @@ -12582,15 +12585,15 @@ msgstr "" # header #: r-novice-gapminder/_episodes/08-plot-ggplot2.md:158 msgid "## Layers" -msgstr "## Layers" +msgstr "## レイヤー" #: r-novice-gapminder/_episodes/08-plot-ggplot2.md:160 msgid "" "Using a scatterplot probably isn't the best for visualizing change over time.\n" "Instead, let's tell `ggplot` to visualize the data as a line plot:" msgstr "" -"Using a scatterplot probably isn't the best for visualizing change over time.\n" -"Instead, let's tell `ggplot` to visualize the data as a line plot:" +"散布図を使用することは、時間経過による変化を視覚化するのに、おそらく最適ではありません。\n" +"代わりに、データを線グラフとして可視化するようggplotに指示しましょう。" # code block #: r-novice-gapminder/_episodes/08-plot-ggplot2.md:164 @@ -12615,17 +12618,16 @@ msgid "" "added the **by** *aesthetic*, which tells `ggplot` to draw a line for each\n" "country." msgstr "" -"Instead of adding a `geom_point` layer, we've added a `geom_line` layer. We've\n" -"added the **by** *aesthetic*, which tells `ggplot` to draw a line for each\n" -"country." +"`geom_point`レイヤーを追加する代わりに、`geom_line`レイヤーを追加しました。\n" +"*by**エステティックを追加し、各国ごとに線を描くよう`ggplot`に指示します。" #: r-novice-gapminder/_episodes/08-plot-ggplot2.md:176 msgid "" "But what if we want to visualize both lines and points on the plot? We can\n" "simply add another layer to the plot:" msgstr "" -"But what if we want to visualize both lines and points on the plot? We can\n" -"simply add another layer to the plot:" +"しかし、線と点の両方をプロット上に視覚化したい場合はどうすればよいでしょうか?\n" +"プロットに別のレイヤーを追加するだけです。" # code block #: r-novice-gapminder/_episodes/08-plot-ggplot2.md:180 @@ -12650,9 +12652,8 @@ msgid "" "this example, the points have been drawn *on top of* the lines. Here's a\n" "demonstration:" msgstr "" -"It's important to note that each layer is drawn on top of the previous layer. In\n" -"this example, the points have been drawn *on top of* the lines. Here's a\n" -"demonstration:" +"各レイヤーは、前のレイヤーの上に描画されることに注意することが重要です。\n" +"この例では、点は線の上に描画されています。これはデモです。" # code block #: r-novice-gapminder/_episodes/08-plot-ggplot2.md:193 @@ -12678,15 +12679,14 @@ msgid "" "to the points. Now we can clearly see that the points are drawn on top of the\n" "lines." msgstr "" -"In this example, the *aesthetic* mapping of **color** has been moved from the\n" -"global plot options in `ggplot` to the `geom_line` layer so it no longer applies\n" -"to the points. Now we can clearly see that the points are drawn on top of the\n" -"lines." +"この例では、**color**エステティックマッピングが、`ggplot`のグローバルプロットオプションから`geom_line`レイヤーに移動されたため、\n" +"点には色が適用されなくなりました。\n" +"これで、点が線の上に描画されていることがわかります。" # blockquote, which can be cascaded #: r-novice-gapminder/_episodes/08-plot-ggplot2.md:206 msgid "> ## Tip: Setting an aesthetic to a value instead of a mapping" -msgstr "> ## Tip: Setting an aesthetic to a value instead of a mapping" +msgstr "> ## ヒント:エステティック属性に、マッピングの代わりに値を設定する" #: r-novice-gapminder/_episodes/08-plot-ggplot2.md:207 msgid "" @@ -12694,7 +12694,10 @@ msgid "" "> So far, we've seen how to use an aesthetic (such as **color**) as a *mapping* to a variable in the data. For example, when we use `geom_line(aes(color=continent))`, ggplot will give a different color to each continent. But what if we want to change the colour of all lines to blue? You may think that `geom_line(aes(color=\"blue\"))` should work, but it doesn't. Since we don't want to create a mapping to a specific variable, we simply move the color specification outside of the `aes()` function, like this: `geom_line(color=\"blue\")`." msgstr "" ">\n" -"> So far, we've seen how to use an aesthetic (such as **color**) as a *mapping* to a variable in the data. For example, when we use `geom_line(aes(color=continent))`, ggplot will give a different color to each continent. But what if we want to change the colour of all lines to blue? You may think that `geom_line(aes(color=\"blue\"))` should work, but it doesn't. Since we don't want to create a mapping to a specific variable, we simply move the color specification outside of the `aes()` function, like this: `geom_line(color=\"blue\")`." +"> これまでは、データの変数のマッピングとしてエステティック属性(**color**など)を使用する方法を見てきました。たとえば、`geom_line(aes(color = continent))`を使用すると、`ggplot`は各大陸に異なる色を与えます。\n" +"しかし、すべての線の色を青に変更したい場合はどうすればよいでしょうか?\n" +"'geom_line(aes(color = \"blue\"))'で動作すると思うかもしれませんが、そうではありません。\n" +"特定の変数へのマッピングを作成したくないので、`geom_line(color=\"blue\")`のように`aes()`関数を除いて色の指定をします。" #: r-novice-gapminder/_episodes/08-plot-ggplot2.md:212 msgid "" @@ -12720,13 +12723,11 @@ msgid "" "> >" msgstr "" ">\n" -"> Switch the order of the point and line layers from the previous example. What\n" -"> happened?\n" +"> 先の例の点と線のレイヤーの順序を入れ替えてみましょう。何が起こりますか?\n" ">\n" -"> > ## Solution to challenge 3\n" +"> > ## チャレンジ 3の回答例\n" "> >\n" -"> > Switch the order of the point and line layers from the previous example. What\n" -"> > happened?\n" +"> > 先の例の点と線のレイヤーの順序を入れ替えてみましょう。何が起こりますか?\n" "> >\n" "> > \n" "> > ~~~\n" @@ -12743,15 +12744,15 @@ msgstr "" # header #: r-novice-gapminder/_episodes/08-plot-ggplot2.md:235 msgid "## Transformations and statistics" -msgstr "## Transformations and statistics" +msgstr "## 変換と統計" #: r-novice-gapminder/_episodes/08-plot-ggplot2.md:237 msgid "" "Ggplot also makes it easy to overlay statistical models over the data. To\n" "demonstrate we'll go back to our first example:" msgstr "" -"Ggplot also makes it easy to overlay statistical models over the data. To\n" -"demonstrate we'll go back to our first example:" +"ggplot2を使用すると、統計モデルをデータに適用することが容易になります。\n" +"デモのために、最初の例に戻ります。" # code block #: r-novice-gapminder/_episodes/08-plot-ggplot2.md:241 @@ -12779,12 +12780,11 @@ msgid "" "points, using the *alpha* function, which is especially helpful when you have\n" "a large amount of data which is very clustered." msgstr "" -"Currently it's hard to see the relationship between the points due to some strong\n" -"outliers in GDP per capita. We can change the scale of units on the x axis using\n" -"the *scale* functions. These control the mapping between the data values and\n" -"visual values of an aesthetic. We can also modify the transparency of the\n" -"points, using the *alpha* function, which is especially helpful when you have\n" -"a large amount of data which is very clustered." +"現在、1人当たりGDPのいくつかの強い外れ値により、点と点の関係性を見ることが難しくなっています。\n" +"*scale*関数を用いて、x軸上の単位のスケールを変更することができます。\n" +"これらは、データの値とエステティックな視覚的値との間のマッピングを制御します。\n" +"また、*alpha*関数を使用して点の透明度を変更することができます。\n" +"これは、大量のデータが非常に密集している場合、特に役立ちます。" # code block #: r-novice-gapminder/_episodes/08-plot-ggplot2.md:257 @@ -12812,17 +12812,15 @@ msgid "" "axis and so on. This makes it easier to visualize the spread of data on the\n" "x-axis." msgstr "" -"The `log10` function applied a transformation to the values of the gdpPercap\n" -"column before rendering them on the plot, so that each multiple of 10 now only\n" -"corresponds to an increase in 1 on the transformed scale, e.g. a GDP per capita\n" -"of 1,000 is now 3 on the y axis, a value of 10,000 corresponds to 4 on the y\n" -"axis and so on. This makes it easier to visualize the spread of data on the\n" -"x-axis." +"gdpPercap列の値をプロットに描画する前に、`log10`関数による変換を適用したので、\n" +"10の各倍数は変換されたスケールの1の増加に対応します。\n" +"例えば、1人当たりGDPの値1,000はy軸の3、10,000はy軸の4に対応します。\n" +"これにより、x軸上のデータの広がりを視覚化することが容易になります。" # blockquote, which can be cascaded #: r-novice-gapminder/_episodes/08-plot-ggplot2.md:272 msgid "> ## Tip Reminder: Setting an aesthetic to a value instead of a mapping" -msgstr "> ## Tip Reminder: Setting an aesthetic to a value instead of a mapping" +msgstr "> ## ヒントのリマインダ:エステティック属性に、マッピングの代わりに値を設定する" #: r-novice-gapminder/_episodes/08-plot-ggplot2.md:273 msgid "" @@ -12830,15 +12828,16 @@ msgid "" "> Notice that we used `geom_point(alpha = 0.5)`. As the previous tip mentioned, using a setting outside of the `aes()` function will cause this value to be used for all points, which is what we want in this case. But just like any other aesthetic setting, *alpha* can also be mapped to a variable in the data. For example, we can give a different transparency to each continent with `geom_point(aes(alpha = continent))`." msgstr "" ">\n" -"> Notice that we used `geom_point(alpha = 0.5)`. As the previous tip mentioned, using a setting outside of the `aes()` function will cause this value to be used for all points, which is what we want in this case. But just like any other aesthetic setting, *alpha* can also be mapped to a variable in the data. For example, we can give a different transparency to each continent with `geom_point(aes(alpha = continent))`." +"> `geom_point(alpha = 0.5)`を使用したことに注目してください。\n" +"先のヒントで触れたように、`aes()`関数以外の設定を使用すると、この値がすべての点で使用されます。\n" +"この場合、この値が必要です。しかし、他のエステティック設定と同様に、*alpha*はデータ内の変数にマッピングすることもできます。\n" +"たとえば、`geom_point(aes(alpha = continent))`を使用して、各大陸に異なる透明度を与えることができます。" #: r-novice-gapminder/_episodes/08-plot-ggplot2.md:277 msgid "" "We can fit a simple relationship to the data by adding another layer,\n" "`geom_smooth`:" -msgstr "" -"We can fit a simple relationship to the data by adding another layer,\n" -"`geom_smooth`:" +msgstr "`geom_smooth`という別のレイヤーを追加することで、データに単純な関係を当てはめることができます。" # code block #: r-novice-gapminder/_episodes/08-plot-ggplot2.md:281 @@ -12862,8 +12861,8 @@ msgid "" "We can make the line thicker by *setting* the **size** aesthetic in the\n" "`geom_smooth` layer:" msgstr "" -"We can make the line thicker by *setting* the **size** aesthetic in the\n" -"`geom_smooth` layer:" +"`geom_smooth`レイヤーで**size**エステティック属性を設定することによって、\n" +"線を太くすることができます。" # code block #: r-novice-gapminder/_episodes/08-plot-ggplot2.md:293 @@ -12889,15 +12888,14 @@ msgid "" "lesson we've used the `aes` function to define a *mapping* between data\n" "variables and their visual representation." msgstr "" -"There are two ways an *aesthetic* can be specified. Here we *set* the **size**\n" -"aesthetic by passing it as an argument to `geom_smooth`. Previously in the\n" -"lesson we've used the `aes` function to define a *mapping* between data\n" -"variables and their visual representation." +"エステティック属性を指定する方法は2つあります。\n" +"ここでは、**size**エステティック属性の設定を'geom_smooth'の引数として渡しています。\n" +"これまでのレッスンでは、データの変数とその視覚表現の間のマッピングを定義するために`aes`関数を使用しました。" # blockquote, which can be cascaded #: r-novice-gapminder/_episodes/08-plot-ggplot2.md:306 msgid "> ## Challenge 4a" -msgstr "> ## Challenge 4a" +msgstr "> ## チャレンジ 4a" #: r-novice-gapminder/_episodes/08-plot-ggplot2.md:307 msgid "" @@ -12925,17 +12923,17 @@ msgid "" "> > \"plot" msgstr "" ">\n" -"> Modify the color and size of the points on the point layer in the previous\n" -"> example.\n" +">前の例を用いて、点レイヤー上の点の色とサイズを変更して下さい。\n" ">\n" -"> Hint: do not use the `aes` function.\n" ">\n" -"> > ## Solution to challenge 4a\n" +">ヒント:'aes'関数を使用しないでください。\n" +">\n" +"> > ## チャレンジ 4aの回答例\n" "> >\n" -"> > Modify the color and size of the points on the point layer in the previous\n" -"> > example.\n" +"> >前の例を用いて、点レイヤー上の点の色とサイズを変更して下さい。\n" "> >\n" -"> > Hint: do not use the `aes` function.\n" +"> >\n" +"> > ヒント:'aes'関数を使用しないでください。\n" "> >\n" "> > \n" "> > ~~~\n" @@ -12950,7 +12948,7 @@ msgstr "" # blockquote, which can be cascaded #: r-novice-gapminder/_episodes/08-plot-ggplot2.md:333 msgid "> ## Challenge 4b" -msgstr "> ## Challenge 4b" +msgstr "> ## チャレンジ 4b" #: r-novice-gapminder/_episodes/08-plot-ggplot2.md:334 msgid "" @@ -12977,16 +12975,16 @@ msgid "" "> >\"plot" msgstr "" ">\n" -"> Modify your solution to Challenge 4a so that the\n" -"> points are now a different shape and are colored by continent with new\n" -"> trendlines. Hint: The color argument can be used inside the aesthetic.\n" +"> 点を異なる形にし、また大陸毎に色分けと傾向線の描画をするために、\n" +"> チャレンジ4aの回答を変更して下さい。\n" +"> ヒント:color引数は、aes関数内で使用することができます。\n" ">\n" -"> > ## Solution to challenge 4b\n" +"> > ## チャレンジ 4bの回答例\n" "> >\n" -"> > Modify Challenge 4 so that the points are now a different shape and are\n" -"> > colored by continent with new trendlines.\n" +"> > 点を異なる形にし、また大陸毎に色分けと傾向線の描画をするために、\n" +"> > チャレンジ4aの回答を変更して下さい。\n" "> >\n" -"> > Hint: The color argument can be used inside the aesthetic.\n" +"> > ヒント:color引数は、aes関数内で使用することができます。\n" "> >\n" "> >\n" "> >~~~\n" @@ -13001,7 +12999,7 @@ msgstr "" # header #: r-novice-gapminder/_episodes/08-plot-ggplot2.md:359 msgid "## Multi-panel figures" -msgstr "## Multi-panel figures" +msgstr "## 複数パネルの図" #: r-novice-gapminder/_episodes/08-plot-ggplot2.md:361 msgid "" @@ -13010,17 +13008,16 @@ msgid "" "by adding a layer of **facet** panels. Focusing only on those countries with\n" "names that start with the letter \"A\" or \"Z\"." msgstr "" -"Earlier we visualized the change in life expectancy over time across all\n" -"countries in one plot. Alternatively, we can split this out over multiple panels\n" -"by adding a layer of **facet** panels. Focusing only on those countries with\n" -"names that start with the letter \"A\" or \"Z\"." +"先の例では、すべての国の平均余命の変化を1つのプロットで視覚化しました。\n" +"一方、**facet**パネルのレイヤーを追加することで、複数のパネルに分割することができます。\n" +"名前が“A”または“Z”で始まる国にのみ焦点を当てます。" # blockquote, which can be cascaded #: r-novice-gapminder/_episodes/08-plot-ggplot2.md:366 #: r-novice-gapminder/_episodes/10-functions.md:92 #: r-novice-gapminder/_episodes/10-functions.md:631 msgid "> ## Tip" -msgstr "> ## Tip" +msgstr "> ## ヒント" #: r-novice-gapminder/_episodes/08-plot-ggplot2.md:367 msgid "" @@ -13034,13 +13031,11 @@ msgid "" "> `starts.with == \"A\" | starts.with == \"Z\"`)" msgstr "" ">\n" -"> We start by subsetting the data. We use the `substr` function to\n" -"> pull out a part of a character string; in this case, the letters that occur\n" -"> in positions `start` through `stop`, inclusive, of the `gapminder$country`\n" -"> vector. The operator `%in%` allows us to make multiple comparisons rather\n" -"> than write out long subsetting conditions (in this case,\n" -"> `starts.with %in% c(\"A\", \"Z\")` is equivalent to\n" -"> `starts.with == \"A\" | starts.with == \"Z\"`)" +">データのサブセットからスタートします。 \n" +">`substr`関数を使って文字列の一部を抜き出します。\n" +">この場合、`gapminder$country`ベクトルの`start`から`stop`の位置にある文字が抜き出されます。\n" +">演算子`%in%`では、長いサブセット条件を書き出すのではなく、複数の比較を行うことができます。\n" +">(この場合、`starts.with %in% c(\"A\", \"Z\")`は`starts.with == \"A\" | starts.with == \"Z\"`です。)" # code block #: r-novice-gapminder/_episodes/08-plot-ggplot2.md:379 @@ -13069,14 +13064,13 @@ msgid "" "(~). This tells R to draw a panel for each unique value in the country column\n" "of the gapminder dataset." msgstr "" -"The `facet_wrap` layer took a \"formula\" as its argument, denoted by the tilde\n" -"(~). This tells R to draw a panel for each unique value in the country column\n" -"of the gapminder dataset." +"`facet_wrap`レイヤーは引数として“formula”をとり、チルダ(~)で表記されます。\n" +"これは、gapminderデータセットのcountry列にある各々の一意な値のパネルを描画するようRに指示します。" # header #: r-novice-gapminder/_episodes/08-plot-ggplot2.md:393 msgid "## Modifying text" -msgstr "## Modifying text" +msgstr "## テキストの変更" #: r-novice-gapminder/_episodes/08-plot-ggplot2.md:395 msgid "" @@ -13084,9 +13078,8 @@ msgid "" "elements. The x-axis is too cluttered, and the y axis should read\n" "\"Life expectancy\", rather than the column name in the data frame." msgstr "" -"To clean this figure up for a publication we need to change some of the text\n" -"elements. The x-axis is too cluttered, and the y axis should read\n" -"\"Life expectancy\", rather than the column name in the data frame." +"分析結果の発表に向けてこの図を整理するにあたり、いくつかのテキスト要素を変更する必要があります。 \n" +"x軸はあまりにも雑然としており、y軸はデータフレームの列名ではなく、“Life expectancy”と読み替えるべきです。" #: r-novice-gapminder/_episodes/08-plot-ggplot2.md:399 msgid "" @@ -13097,12 +13090,12 @@ msgid "" "the color legend title is set using `color = \"Continent\"`, while the title \n" "of a fill legend would be set using `fill = \"MyTitle\"`. " msgstr "" -"We can do this by adding a couple of different layers. The **theme** layer\n" -"controls the axis text, and overall text size. Labels for the axes, plot \n" -"title and any legend can be set using the `labs` function. Legend titles\n" -"are set using the same names we used in the `aes` specification. Thus below\n" -"the color legend title is set using `color = \"Continent\"`, while the title \n" -"of a fill legend would be set using `fill = \"MyTitle\"`. " +"これを行うには、いくつかのレイヤーを追加する必要があります。\n" +"**theme** レイヤーは、軸テキストと全体のテキストサイズを制御します。\n" +"軸、プロットタイトル、および任意の凡例のラベルは、`labs`関数を使用して設定できます。\n" +"凡例のタイトルは、`aes`関数で使用したものと同じ名前を設定します。\n" +"したがって、color凡例のタイトルは`color = \"Continent\"`を用いて設定され、\n" +"fill凡例のタイトルは`fill = \"任意のタイトル\"`を使用して設定されます。" # code block #: r-novice-gapminder/_episodes/08-plot-ggplot2.md:407 @@ -13138,11 +13131,17 @@ msgstr " > \"plot" msgstr "" ">\n" -"> Create a density plot of GDP per capita, filled by continent.\n" +"> 大陸で塗りつぶされた、1人当たりGDPの密度プロットを作成して下さい。\n" ">\n" -"> Advanced:\n" -"> - Transform the x axis to better visualise the data spread.\n" -"> - Add a facet layer to panel the density plots by year.\n" +"> 上級編\n" +"> - データの広がりをより良く視覚化するためにx軸を変換して下さい。\n" +"> - 1年毎の密度プロットをパネルに追加して下さい。\n" ">\n" -"> > ## Solution to challenge 5\n" +"> > ## チャレンジ 5の回答例\n" "> >\n" -"> > Create a density plot of GDP per capita, filled by continent.\n" +"> > 大陸で塗りつぶされた、1人当たりGDPの密度プロットを作成して下さい。\n" "> >\n" -"> > Advanced:\n" -"> > - Transform the x axis to better visualise the data spread.\n" -"> > - Add a facet layer to panel the density plots by year.\n" +"> >上級編\n" +">> - データの広がりをより良く視覚化するためにx軸を変換して下さい。\n" +">> - 1年毎の密度プロットをパネルに追加して下さい。\n" "> >\n" "> > \n" "> > ~~~\n" @@ -13285,15 +13287,15 @@ msgstr "" "---\n" "# Please do not edit this file directly; it is auto generated.\n" "# Instead, please edit 09-vectorization.md in _episodes_rmd/\n" -"title: Vectorization\n" -"teaching: 10\n" -"exercises: 15\n" -"questions:\n" -"- \"How can I operate on all the elements of a vector at once?\"\n" -"objectives:\n" -"- \"To understand vectorized operations in R.\"\n" -"keypoints:\n" -"- \"Use vectorized operations instead of loops.\"\n" +"タイトル: ベクトル化\n" +"講義: 10\n" +"練習: 15\n" +"質問:\n" +"- \"どうやってベクトルの全要素をまとめて操作するの?\"\n" +"目的:\n" +"- \"R におけるベクトル化された操作を理解しましょう。\"\n" +"要点:\n" +"- \"ループの代わりにベクトル化を利用します。\"\n" "source: Rmd\n" "---" @@ -13304,10 +13306,8 @@ msgid "" "and act on each element one at a time. This makes writing code more\n" "concise, easy to read, and less error prone." msgstr "" -"Most of R's functions are vectorized, meaning that the function will\n" -"operate on all elements of a vector without needing to loop through\n" -"and act on each element one at a time. This makes writing code more\n" -"concise, easy to read, and less error prone." +"Rの関数はほとんどがベクトル化されており、関数はベクトルの全ての要素を最初から操作してくれるので、ベクトルの要素ごとにいちいちループする必要がありません。\n" +"おかげで簡潔で読み易く、エラーの少ないコードを書くことができます。" # code block #: r-novice-gapminder/_episodes/09-vectorization.md:25 @@ -13335,11 +13335,11 @@ msgstr "" #: r-novice-gapminder/_episodes/09-vectorization.md:38 msgid "The multiplication happened to each element of the vector." -msgstr "The multiplication happened to each element of the vector." +msgstr "積はベクトルの要素ごとに実行されました。" #: r-novice-gapminder/_episodes/09-vectorization.md:40 msgid "We can also add two vectors together:" -msgstr "We can also add two vectors together:" +msgstr "2つのベクトルを足し合わせることもできます:" # code block #: r-novice-gapminder/_episodes/09-vectorization.md:43 @@ -13367,7 +13367,7 @@ msgstr "" #: r-novice-gapminder/_episodes/09-vectorization.md:56 msgid "Each element of `x` was added to its corresponding element of `y`:" -msgstr "Each element of `x` was added to its corresponding element of `y`:" +msgstr "この場合 `x` の各要素が対応する `y`の要素に足されます。" # code block #: r-novice-gapminder/_episodes/09-vectorization.md:59 @@ -13428,21 +13428,17 @@ msgid "" "> > {: .output}" msgstr "" ">\n" -"> Let's try this on the `pop` column of the `gapminder` dataset.\n" +"> `gapminder` データセットの `pop` 列でこれに挑戦してみましょう。\n" ">\n" -"> Make a new column in the `gapminder` data frame that\n" -"> contains population in units of millions of people.\n" -"> Check the head or tail of the data frame to make sure\n" -"> it worked.\n" +"> `gapminder` データフレームに百万人単位の人口を示す列を追加しましょう。\n" +"> データフレームの先頭か最後を確認して、追加に成功したか確認しましょう。\n" ">\n" -"> > ## Solution to challenge 1\n" +"> > ## チャレンジ1の解答\n" "> >\n" -"> > Let's try this on the `pop` column of the `gapminder` dataset.\n" +"> > `gapminder` データセットの `pop` 列でこれをやってみましょう。\n" "> >\n" -"> > Make a new column in the `gapminder` data frame that\n" -"> > contains population in units of millions of people.\n" -"> > Check the head or tail of the data frame to make sure\n" -"> > it worked.\n" +"> > `gapminder` データフレームに百万人単位の人口を示す列を追加しましょう。\n" +"> > データフレームの先頭か最後を確認して、追加に成功したか確認しましょう。\n" "> >\n" "> > \n" "> > ~~~\n" @@ -13498,16 +13494,16 @@ msgid "" "> > \"plot" msgstr "" ">\n" -"> On a single graph, plot population, in\n" -"> millions, against year, for all countries. Don't worry about\n" -">identifying which country is which.\n" +"> 一つの図に、100万人単位の人口を年ごとにプロットしてみましょう。\n" +"> 国ごとの区別はつかなくていいです。\n" ">\n" -"> Repeat the exercise, graphing only for China, India, and\n" -">Indonesia. Again, don't worry about which is which.\n" +"> 練習を繰り返して、中国とインドとインドネシアだけを含む図を\n" +"> 作ってみましょう。\n" +"> 先程と同じく、国ごとの区別はつかなくていいです。\n" ">\n" -"> > ## Solution to challenge 2\n" +"> > ## チャレンジ2の解答\n" "> >\n" -"> > Refresh your plotting skills by plotting population in millions against year.\n" +"> > 100万人単位の人口を年ごとにプロットして、作図方法を復習しましょう。\n" "> >\n" "> > \n" "> > ~~~\n" @@ -13532,13 +13528,11 @@ msgstr "" msgid "" "Comparison operators, logical operators, and many functions are also\n" "vectorized:" -msgstr "" -"Comparison operators, logical operators, and many functions are also\n" -"vectorized:" +msgstr "比較演算子や論理演算子に加え、多くの関数もベクトル化されています。" #: r-novice-gapminder/_episodes/09-vectorization.md:149 msgid "**Comparison operators**" -msgstr "**Comparison operators**" +msgstr "**比較演算子**" # code block #: r-novice-gapminder/_episodes/09-vectorization.md:152 @@ -13564,7 +13558,7 @@ msgstr "" #: r-novice-gapminder/_episodes/09-vectorization.md:164 msgid "**Logical operators**" -msgstr "**Logical operators**" +msgstr "**論理演算子**" # code block #: r-novice-gapminder/_episodes/09-vectorization.md:166 @@ -13575,7 +13569,7 @@ msgid "" "~~~" msgstr "" "~~~\n" -"a <- x > 3 # or, for clarity, a <- (x > 3)\n" +"a <- x > 3 # より明確な書き方は a <- (x > 3)\n" "a\n" "~~~" @@ -13593,7 +13587,7 @@ msgstr "" # blockquote, which can be cascaded #: r-novice-gapminder/_episodes/09-vectorization.md:179 msgid "> ## Tip: some useful functions for logical vectors" -msgstr "> ## Tip: some useful functions for logical vectors" +msgstr "> ## Tip: 論理ベクトルに使える便利な関数" #: r-novice-gapminder/_episodes/09-vectorization.md:180 msgid "" @@ -13602,16 +13596,16 @@ msgid "" "> `all()` will return `TRUE` if *all* elements of a vector are `TRUE`" msgstr "" ">\n" -"> `any()` will return `TRUE` if *any* element of a vector is `TRUE`\n" -"> `all()` will return `TRUE` if *all* elements of a vector are `TRUE`" +"> `any()` はベクトルの要素に一つでも `TRUE` があれば `TRUE` を返します。\n" +"> `all()` はベクトルの要素が全て `TRUE` であれば `TRUE` を返します。" #: r-novice-gapminder/_episodes/09-vectorization.md:185 msgid "Most functions also operate element-wise on vectors:" -msgstr "Most functions also operate element-wise on vectors:" +msgstr "ほとんどの関数はベクトルを要素ごとに処理します。" #: r-novice-gapminder/_episodes/09-vectorization.md:187 msgid "**Functions**" -msgstr "**Functions**" +msgstr "**関数**" # code block #: r-novice-gapminder/_episodes/09-vectorization.md:189 @@ -13639,7 +13633,7 @@ msgstr "" #: r-novice-gapminder/_episodes/09-vectorization.md:202 msgid "Vectorized operations work element-wise on matrices:" -msgstr "Vectorized operations work element-wise on matrices:" +msgstr "ベクトル化された操作は行列を要素ごとに処理します:" # code block #: r-novice-gapminder/_episodes/09-vectorization.md:205 @@ -13674,7 +13668,7 @@ msgstr "" # blockquote, which can be cascaded #: r-novice-gapminder/_episodes/09-vectorization.md:222 msgid "> ## Tip: element-wise vs. matrix multiplication" -msgstr "> ## Tip: element-wise vs. matrix multiplication" +msgstr "> ## Tip: 要素ごとの積 vs. 行列の積" #: r-novice-gapminder/_episodes/09-vectorization.md:223 msgid "" @@ -13698,8 +13692,8 @@ msgid "" "> ~~~" msgstr "" ">\n" -"> Very important: the operator `*` gives you element-wise multiplication!\n" -"> To do matrix multiplication, we need to use the `%*%` operator:\n" +"> 非常に重要: `*` 演算子は要素ごとの積を行います!\n" +"> 行列の積を行うには `%*%` 演算子を使う必要があります:\n" ">\n" "> \n" "> ~~~\n" @@ -13761,8 +13755,8 @@ msgid "" "> guide](http://www.statmethods.net/advstats/matrix.html)" msgstr "" ">\n" -"> For more on matrix algebra, see the [Quick-R reference\n" -"> guide](http://www.statmethods.net/advstats/matrix.html)" +"> 更に行列代数について知るには [Quick-R reference guide](http://www.statmethods.net/advstats/matrix.html)\n" +"> を参照して下さい" #: r-novice-gapminder/_episodes/09-vectorization.md:264 msgid "" @@ -13786,7 +13780,7 @@ msgid "" "> ~~~" msgstr "" ">\n" -"> Given the following matrix:\n" +"> 以下の行列が与えられたとします:\n" ">\n" "> \n" "> ~~~\n" @@ -13875,18 +13869,18 @@ msgid "" "> >" msgstr "" ">\n" -"> Write down what you think will happen when you run:\n" +"> 以下を実行すると何が起きるか書いて下さい:\n" ">\n" "> 1. `m ^ -1`\n" "> 2. `m * c(1, 0, -1)`\n" "> 3. `m > c(0, 20)`\n" "> 4. `m * c(1, 0, -1, 2)`\n" ">\n" -"> Did you get the output you expected? If not, ask a helper!\n" +"> 思った通りの出力が得られましたか?違っていたことがあれば、ヘルパーになぜ間違っていたか聞いてみましょう。\n" ">\n" -"> > ## Solution to challenge 3\n" +"> > ## チャレンジ3の解答\n" "> >\n" -"> > Given the following matrix:\n" +"> > 以下の行列が与えられたとします:\n" "> >\n" "> > \n" "> > ~~~\n" @@ -13906,7 +13900,7 @@ msgstr "" "> > {: .output}\n" "> >\n" "> >\n" -"> > Write down what you think will happen when you run:\n" +"> > 以下を実行すると何が起きるか書き出して下さい:\n" "> >\n" "> > 1. `m ^ -1`\n" "> >\n" @@ -14064,8 +14058,7 @@ msgid "" "> >" msgstr "" ">\n" -"> We're interested in looking at the sum of the\n" -"> following sequence of fractions:\n" +"> 以下の分数の数列の総和が知りたいとします:\n" ">\n" "> \n" "> ~~~\n" @@ -14073,14 +14066,13 @@ msgstr "" "> ~~~\n" "> {: .language-r}\n" ">\n" -"> This would be tedious to type out, and impossible for high values of\n" -"> n. Use vectorisation to compute x when n=100. What is the sum when\n" -"> n=10,000?\n" +"> これをタイプするのは面倒な上に、nが大きいと不可能です。\n" +"> ベクトル化を用いて n = 100 の場合を計算しましょう。\n" +"> n = 10,000 の時の総和はいくつでしょうか?\n" ">\n" -"> > ## Challenge 4\n" +"> > ## チャレンジ4\n" "> >\n" -"> > We're interested in looking at the sum of the\n" -"> > following sequence of fractions:\n" +"> > 以下の分数の数列の総和が知りたいとします:\n" "> >\n" "> > \n" "> > ~~~\n" @@ -14088,10 +14080,9 @@ msgstr "" "> > ~~~\n" "> > {: .language-r}\n" "> >\n" -"> > This would be tedious to type out, and impossible for\n" -"> > high values of n.\n" -"> > Can you use vectorisation to compute x, when n=100?\n" -"> > How about when n=10,000?\n" +"> > これをタイプするのは面倒な上に、nが大きいと不可能です。\n" +"> > ベクトル化を用いて n = 100 の場合を計算しましょう。\n" +"> > n = 10,000 の時の総和はいくつでしょうか?\n" "> >\n" "> > \n" "> > ~~~\n" @@ -14135,7 +14126,7 @@ msgstr "" "> > ~~~\n" "> > {: .output}\n" "> >\n" -"> > We can also obtain the same results using a function:\n" +"> > 同じ結果を関数を利用して得ることもできます:\n" "> > \n" "> > ~~~\n" "> > inverse_sum_of_squares <- function(n) {\n" @@ -14211,23 +14202,23 @@ msgstr "" "---\n" "# Please do not edit this file directly; it is auto generated.\n" "# Instead, please edit 10-functions.md in _episodes_rmd/\n" -"title: Functions Explained\n" -"teaching: 45\n" -"exercises: 15\n" -"questions:\n" -"- \"How can I write a new function in R?\"\n" -"objectives:\n" -"- \"Define a function that takes arguments.\"\n" -"- \"Return a value from a function.\"\n" -"- \"Check argument conditions with `stopifnot()` in functions.\"\n" -"- \"Test a function.\"\n" -"- \"Set default values for function arguments.\"\n" -"- \"Explain why we should divide programs into small, single-purpose functions.\"\n" -"keypoints:\n" -"- \"Use `function` to define a new function in R.\"\n" -"- \"Use parameters to pass values into functions.\"\n" -"- \"Use `stopifnot()` to flexibly check function arguments in R.\"\n" -"- \"Load functions into programs using `source()`.\"\n" +"title: 関数について\n" +"講義: 45\n" +"練習: 15\n" +"質問:\n" +"- \"R で関数はどう書くの?\"\n" +"目標:\n" +"- \"引数を持つ関数を定義しましょう。\"\n" +"- \"関数から値を返しましょう。\"\n" +"- \"関数の中で `stopifnot()` を使って引数の状態を検査しましょう。\"\n" +"- \"関数をテストしましょう。\"\n" +"- \"関数の引数に既定値を指定しましょう。\"\n" +"- \"なぜプログラムを小さな一つの目的を持つ関数に分けるべきか説明しましょう。\"\n" +"要点:\n" +"- \"`function` を使って R で新しい関数を定義します。\"\n" +"- \"パラメーターを用いて関数に値を渡します。\"\n" +"- \"`stopifnot()` を使って R の関数の引数を柔軟に検査します。\"\n" +"- \"`source()` を使ってプログラムに関数を読み込みます。\"\n" "source: Rmd\n" "---" @@ -14239,24 +14230,20 @@ msgid "" "information later and re-run our analysis again. We may also obtain similar data\n" "from a different source in the future." msgstr "" -"If we only had one data set to analyze, it would probably be faster to load the\n" -"file into a spreadsheet and use that to plot simple statistics. However, the\n" -"gapminder data is updated periodically, and we may want to pull in that new\n" -"information later and re-run our analysis again. We may also obtain similar data\n" -"from a different source in the future." +"分析したいデータセットが一つだけなら、ファイルを表計算ソフトで読み込み、単純な統計値をプロットした方が早いでしょう。\n" +"しかし、gapmider データは定期的に更新されるので、後から新しい情報を読み込み分析し直したくなります。\n" +"また、将来的には似たようなデータを違う場所から入手することもあるでしょう。" #: r-novice-gapminder/_episodes/10-functions.md:33 msgid "" "In this lesson, we'll learn how to write a function so that we can repeat\n" "several operations with a single command." -msgstr "" -"In this lesson, we'll learn how to write a function so that we can repeat\n" -"several operations with a single command." +msgstr "この講義では関数の書き方を学ぶことで、同じ操作を一つのコマンドで繰り返せるようになります。" # blockquote, which can be cascaded #: r-novice-gapminder/_episodes/10-functions.md:36 msgid "> ## What is a function?" -msgstr "> ## What is a function?" +msgstr "> ## 関数とは何でしょう?" #: r-novice-gapminder/_episodes/10-functions.md:37 msgid "" @@ -14274,30 +14261,28 @@ msgid "" "> you have written a function, you are a computer programmer." msgstr "" ">\n" -"> Functions gather a sequence of operations into a whole, preserving it for\n" -"> ongoing use. Functions provide:\n" +"> 関数は連続した操作を一つに纏め、後から使うときのために保存しておきます。\n" +"> 関数は以下の機能を提供します。:\n" ">\n" -"> * a name we can remember and invoke it by\n" -"> * relief from the need to remember the individual operations\n" -"> * a defined set of inputs and expected outputs\n" -"> * rich connections to the larger programming environment\n" -">\n" -"> As the basic building block of most programming languages, user-defined\n" -"> functions constitute \"programming\" as much as any single abstraction can. If\n" -"> you have written a function, you are a computer programmer." +"> * 記憶可能で実行可能な名前\n" +"> * 各操作を覚える必要性からの解放\n" +"> * 入力と出力の組み合わせを定義\n" +"> * より大規模なプログラミング環境への接続性の高さ\n" +">\n" +"> ほとんどのプログラミング言語における基本的なブロックの構築がそうであるように\n" +"> ユーザーが定義する関数はどんな単純なことであれ抽象化する「プログラミング」により成り立ちます。\n" +"> 関数を書いた時点であなたはコンピュータープログラマーです。" # header #: r-novice-gapminder/_episodes/10-functions.md:51 msgid "## Defining a function" -msgstr "## Defining a function" +msgstr "## 関数を定義しましょう。" #: r-novice-gapminder/_episodes/10-functions.md:53 msgid "" "Let's open a new R script file in the `functions/` directory and call it\n" "functions-lesson.R." -msgstr "" -"Let's open a new R script file in the `functions/` directory and call it\n" -"functions-lesson.R." +msgstr "`functions/` ディレクトリ内に新しく functions-lesson.R と名付けた R スクリプトを作成して開きましょう。" # code block #: r-novice-gapminder/_episodes/10-functions.md:57 @@ -14320,9 +14305,7 @@ msgstr "" msgid "" "Let's define a function `fahr_to_kelvin()` that converts temperatures from\n" "Fahrenheit to Kelvin:" -msgstr "" -"Let's define a function `fahr_to_kelvin()` that converts temperatures from\n" -"Fahrenheit to Kelvin:" +msgstr "華氏をケルビンに変換する `fahr_to_kelvin()` という関数を定義しましょう。" # code block #: r-novice-gapminder/_episodes/10-functions.md:69 @@ -14351,16 +14334,21 @@ msgid "" "(`{}`). The statements in the body are indented by two spaces. This makes the\n" "code easier to read but does not affect how the code operates." msgstr "" -"We define `fahr_to_kelvin()` by assigning it to the output of `function`. The\n" -"list of argument names are contained within parentheses. Next, the\n" -"[body]({{ page.root }}/reference/#function-body) of the function--the\n" -"statements that are executed when it runs--is contained within curly braces\n" -"(`{}`). The statements in the body are indented by two spaces. This makes the\n" -"code easier to read but does not affect how the code operates." +"`fahr_to_kelvin()` を定義するには、`fahr_to_kelvin` に `function` の出力を指定します。\n" +"引数名の一覧は括弧の中に書きます。\n" +"次に関数の[本文 (body)]({{ page.root }}/reference/#function-body) として\n" +"走らせた時の実行内容を波括弧 (`{}`) の中に記述します。\n" +"本文はスペース二つでインデントしておきます。\n" +"これによりコードの操作内容を変更せずに可読性を向上させます。" #: r-novice-gapminder/_episodes/10-functions.md:84 msgid "It is useful to think of creating functions like writing a cookbook. First you define the \"ingredients\" that your function needs. In this case, we only need one ingredient to use our function: \"temp\". After we list our ingredients, we then say what we will do with them, in this case, we are taking our ingredient and applying a set of mathmatical operators to it. " -msgstr "It is useful to think of creating functions like writing a cookbook. First you define the \"ingredients\" that your function needs. In this case, we only need one ingredient to use our function: \"temp\". After we list our ingredients, we then say what we will do with them, in this case, we are taking our ingredient and applying a set of mathmatical operators to it. " +msgstr "" +"関数を作ることは料理本を書くようなものだと思うといいでしょう。\n" +"まず、必要な「材料」を決めます。\n" +"今回の関数に必要な材料は「temp」一つだけです。\n" +"材料を列挙したら、材料を使って何をするかを決めます。\n" +"今回は材料に対して数学的な演算を行います。" #: r-novice-gapminder/_episodes/10-functions.md:86 msgid "" @@ -14370,11 +14358,9 @@ msgid "" "statement]({{ page.root }}/reference/#return-statement) to send a result back to\n" "whoever asked for it." msgstr "" -"When we call the function, the values we pass to it as arguments are assigned to\n" -"those variables so that we can use them inside the function. Inside the\n" -"function, we use a [return\n" -"statement]({{ page.root }}/reference/#return-statement) to send a result back to\n" -"whoever asked for it." +"関数を呼び出す時、引数に指定した値は関数内で用いられる変数に与えられます。\n" +"関数の中では関数を呼び出した相手に結果を送るために [return\n" +"文]({{ page.root }}/reference/#return-statement) を用います。" #: r-novice-gapminder/_episodes/10-functions.md:93 msgid "" @@ -14385,18 +14371,17 @@ msgid "" "> return statement." msgstr "" ">\n" -"> One feature unique to R is that the return statement is not required.\n" -"> R automatically returns whichever variable is on the last line of the body\n" -"> of the function. But for clarity, we will explicitly define the\n" -"> return statement." +"> return 文が不要なことは R の変わった特徴の一つです。\n" +"> R では関数の本文の最終行に記述された変数が自動的に返り値になります。\n" +"> しかし、わかりやすくするために return 文を明示的に記述します。" #: r-novice-gapminder/_episodes/10-functions.md:101 msgid "" "Let's try running our function.\n" "Calling our own function is no different from calling any other function:" msgstr "" -"Let's try running our function.\n" -"Calling our own function is no different from calling any other function:" +"関数を実行してみましょう。\n" +"自分の関数を呼び出す方法は他の関数を呼び出す方法と同じです。" # code block #: r-novice-gapminder/_episodes/10-functions.md:105 @@ -14407,7 +14392,7 @@ msgid "" "~~~" msgstr "" "~~~\n" -"# freezing point of water\n" +"# 水の凝固点\n" "fahr_to_kelvin(32)\n" "~~~" @@ -14432,7 +14417,7 @@ msgid "" "~~~" msgstr "" "~~~\n" -"# boiling point of water\n" +"# 水の沸点\n" "fahr_to_kelvin(212)\n" "~~~" @@ -14470,15 +14455,13 @@ msgid "" "> > {: .language-r}" msgstr "" ">\n" -"> Write a function called `kelvin_to_celsius()` that takes a temperature in\n" -"> Kelvin and returns that temperature in Celsius.\n" +"> ケルビンを入力するとセ氏を返す `kelvin_to_celsius()` という関数を書いて下さい。\n" ">\n" -"> Hint: To convert from Kelvin to Celsius you subtract 273.15\n" +"> ヒント: ケルビンをセ氏に換算するには 273.15 を引きます。\n" ">\n" -"> > ## Solution to challenge 1\n" +"> > ## チャレンジ1の解答\n" "> >\n" -"> > Write a function called `kelvin_to_celsius` that takes a temperature in Kelvin\n" -"> > and returns that temperature in Celsius\n" +"> > ケルビンを入力するとセ氏を返す `kelvin_to_celsius()` という関数を書いて下さい。\n" "> >\n" "> > \n" "> > ~~~\n" @@ -14492,23 +14475,19 @@ msgstr "" # header #: r-novice-gapminder/_episodes/10-functions.md:155 msgid "## Combining functions" -msgstr "## Combining functions" +msgstr "## 関数を組み合わせましょう" #: r-novice-gapminder/_episodes/10-functions.md:157 msgid "" "The real power of functions comes from mixing, matching and combining them\n" "into ever-larger chunks to get the effect we want." -msgstr "" -"The real power of functions comes from mixing, matching and combining them\n" -"into ever-larger chunks to get the effect we want." +msgstr "関数の真髄を発揮するのは、関数を混ぜ合わせ組み合わせてより多きな塊にすることで、望み通りの効果を得る時です。" #: r-novice-gapminder/_episodes/10-functions.md:160 msgid "" "Let's define two functions that will convert temperature from Fahrenheit to\n" "Kelvin, and Kelvin to Celsius:" -msgstr "" -"Let's define two functions that will convert temperature from Fahrenheit to\n" -"Kelvin, and Kelvin to Celsius:" +msgstr "華氏をケルビンに変換する関数とケルビンをセ氏に変換する関数の2つを定義しましょう。" # code block #: r-novice-gapminder/_episodes/10-functions.md:164 @@ -14562,15 +14541,13 @@ msgid "" "> > {: .language-r}" msgstr "" ">\n" -"> Define the function to convert directly from Fahrenheit to Celsius,\n" -"> by reusing the two functions above (or using your own functions if you\n" -"> prefer).\n" +"> 先の2つの関数を再利用するか自分で定義した関数を利用して\n" +"> 華氏を直接セ氏に変換する関数を定義して下さい。\n" ">\n" ">\n" -"> > ## Solution to challenge 2\n" +"> > ## チャレンジ2の解答\n" "> >\n" -"> > Define the function to convert directly from Fahrenheit to Celsius,\n" -"> > by reusing these two functions above\n" +"> > 先の2つの関数を再利用して華氏を直接セ氏に変換する関数を定義して下さい。\n" "> >\n" "> >\n" "> > \n" @@ -14586,7 +14563,7 @@ msgstr "" # header #: r-novice-gapminder/_episodes/10-functions.md:202 msgid "## Interlude: Defensive Programming" -msgstr "## Interlude: Defensive Programming" +msgstr "## 幕間: 防衛的プログラミング" #: r-novice-gapminder/_episodes/10-functions.md:204 msgid "" @@ -14600,28 +14577,25 @@ msgid "" "They make it easier to debug because they give us a better idea of where the\n" "errors originate." msgstr "" -"Now that we've begun to appreciate how writing functions provides an efficient\n" -"way to make R code re-usable and modular, we should note that it is important\n" -"to ensure that functions only work in their intended use-cases. Checking\n" -"function parameters is related to the concept of _defensive programming_.\n" -"Defensive programming encourages us to frequently check conditions and throw an\n" -"error if something is wrong. These checks are referred to as assertion\n" -"statements because we want to assert some condition is `TRUE` before proceeding.\n" -"They make it easier to debug because they give us a better idea of where the\n" -"errors originate." +"関数を書くことで R のコードを効率的に再利用したりモジュール化する方法を理解し始めたところですが、\n" +"関数は想定した用途でのみ機能するように確実に設計することが重要です。\n" +"関数の引数を検査することは*防衛的プログラミング*の考え方に繋がります。\n" +"防衛的プログラミングでは状況を頻繁に検査し何かおかしなことがあればエラーを返すことを推奨します。\n" +"このような検査は、プログラム実行を継続する前に現状が `TRUE` であることをアサート(表明・断言)するので、アサーション文と呼ばれます。\n" +"アサーション文により、エラーがどこで起きているか分かりやすくなりデバッグが容易になります。" # header #: r-novice-gapminder/_episodes/10-functions.md:214 msgid "### Checking conditions with `stopifnot()`" -msgstr "### Checking conditions with `stopifnot()`" +msgstr "### `stopifnot()` を用いて状態を検査しましょう" #: r-novice-gapminder/_episodes/10-functions.md:216 msgid "" "Let's start by re-examining `fahr_to_kelvin()`, our function for converting\n" "temperatures from Fahrenheit to Kelvin. It was defined like so:" msgstr "" -"Let's start by re-examining `fahr_to_kelvin()`, our function for converting\n" -"temperatures from Fahrenheit to Kelvin. It was defined like so:" +"華氏をケルビンに変換する `fahr_to_kelvin()` 関数について再検討してみましょう。\n" +"この関数の定義は以下の通りです。" #: r-novice-gapminder/_episodes/10-functions.md:228 msgid "" @@ -14632,12 +14606,12 @@ msgid "" "could check for this condition with an `if` statement and throw an error if the\n" "condition was violated. We could augment our function above like so:" msgstr "" -"For this function to work as intended, the argument `temp` must be a `numeric`\n" -"value; otherwise, the mathematical procedure for converting between the two\n" -"temperature scales will not work. To create an error, we can use the function\n" -"`stop()`. For example, since the argument `temp` must be a `numeric` vector, we\n" -"could check for this condition with an `if` statement and throw an error if the\n" -"condition was violated. We could augment our function above like so:" +"この関数が意図した通りに機能するには、`temp` 引数は数値でなければなりません。\n" +"さもなくば、片方の温度の尺度からもう一方へ変換する計算過程が機能しません。\n" +"エラーを返すためには、`stop` 関数を使います。\n" +"例えば、`temp` 引数は数値ベクトルである必要があるので、\n" +"`if` 文により `temp` が数値ベクトルであるか確認し、違反していればエラーを返すようにします。\n" +"先述の関数の場合は以下のように増補します。" # code block #: r-novice-gapminder/_episodes/10-functions.md:236 @@ -14671,28 +14645,27 @@ msgid "" "conditions also serves a secondary purpose as extra documentation for the\n" "function." msgstr "" -"If we had multiple conditions or arguments to check, it would take many lines\n" -"of code to check all of them. Luckily R provides the convenience function\n" -"`stopifnot()`. We can list as many requirements that should evaluate to `TRUE`;\n" -"`stopifnot()` throws an error if it finds one that is `FALSE`. Listing these\n" -"conditions also serves a secondary purpose as extra documentation for the\n" -"function." +"複数の状態や引数を検査する必要があると、全てを検査するためのコードは何行にも渡ります。\n" +"幸いなことに R は `stopifnot` という便利な関数を提供しています。\n" +"`TRUE` と評価されるべき要件を必要なだけ列挙すると、\n" +"`stopifnot()` は一つでも `FALSE` がある場合にエラーを返します。\n" +"検査項目を列挙すると、追加のドキュメント化という2つ目の目的としても機能します。" #: r-novice-gapminder/_episodes/10-functions.md:254 msgid "" "Let's try out defensive programming with `stopifnot()` by adding assertions to\n" "check the input to our function `fahr_to_kelvin()`." msgstr "" -"Let's try out defensive programming with `stopifnot()` by adding assertions to\n" -"check the input to our function `fahr_to_kelvin()`." +"`stopifnot()` を用いて `fahr_to_kelvin()` に入力を検査するアサーション文を追加し、\n" +"防衛的プログラミングに挑戦しましょう。" #: r-novice-gapminder/_episodes/10-functions.md:257 msgid "" "We want to assert the following: `temp` is a numeric vector. We may do that like\n" "so:" msgstr "" -"We want to assert the following: `temp` is a numeric vector. We may do that like\n" -"so:" +"`temp` が数値ベクトルであることをアサートしたいとします。\n" +"以下のようにしましょう。" # code block #: r-novice-gapminder/_episodes/10-functions.md:261 @@ -14715,7 +14688,7 @@ msgstr "" #: r-novice-gapminder/_episodes/10-functions.md:270 msgid "It still works when given proper input." -msgstr "It still works when given proper input." +msgstr "入力が適切であればこれでも機能します。" # code block #: r-novice-gapminder/_episodes/10-functions.md:273 @@ -14726,13 +14699,13 @@ msgid "" "~~~" msgstr "" "~~~\n" -"# freezing point of water\n" +"# 水の凝固点\n" "fahr_to_kelvin(temp = 32)\n" "~~~" #: r-novice-gapminder/_episodes/10-functions.md:286 msgid "But fails instantly if given improper input." -msgstr "But fails instantly if given improper input." +msgstr "しかし不適切な入力があるとすぐに失敗します。" # code block #: r-novice-gapminder/_episodes/10-functions.md:289 @@ -14786,17 +14759,15 @@ msgid "" "> > {: .language-r}" msgstr "" ">\n" -"> Use defensive programming to ensure that our `fahr_to_celsius()` function\n" -"> throws an error immediately if the argument `temp` is specified\n" -"> inappropriately.\n" +"> 防衛的プログラミングにより、`fahr_to_celsius()` 関数の `temp` 引数に不適切な\n" +"> 値が指定されたらすぐにエラーを返すよう念押しして下さい。\n" ">\n" ">\n" -"> > ## Solution to challenge 3\n" +"> > ## チャレンジ3の解答\n" "> >\n" -"> > Extend our previous definition of the function by adding in an explicit call\n" -"> > to `stopifnot()`. Since `fahr_to_celsius()` is a composition of two other\n" -"> > functions, checking inside here makes adding checks to the two component\n" -"> > functions redundant.\n" +"> > 明示的に `stopifnot()` を呼ぶことで先述の関数の定義を拡張しましょう。\n" +"> > `fahr_to_celsius()` は2つの他の関数から構成されているので、\n" +">> ここでの検査は2つの関数の検査に追加され冗長になります。\n" "> >\n" "> >\n" "> > \n" @@ -14813,15 +14784,13 @@ msgstr "" # header #: r-novice-gapminder/_episodes/10-functions.md:330 msgid "## More on combining functions" -msgstr "## More on combining functions" +msgstr "## もっと関数を組み合わせましょう" #: r-novice-gapminder/_episodes/10-functions.md:332 msgid "" "Now, we're going to define a function that calculates the Gross Domestic Product\n" "of a nation from the data available in our dataset:" -msgstr "" -"Now, we're going to define a function that calculates the Gross Domestic Product\n" -"of a nation from the data available in our dataset:" +msgstr "ここで我々のデータセットで利用できるデータからある国の国内総生産を計算するための関数を定義します。" # code block #: r-novice-gapminder/_episodes/10-functions.md:336 @@ -14836,8 +14805,7 @@ msgid "" "~~~" msgstr "" "~~~\n" -"# Takes a dataset and multiplies the population column\n" -"# with the GDP per capita column.\n" +"# データセットを受け取り、人口の列と一人あたりのGDPをかけます。\n" "calcGDP <- function(dat) {\n" " gdp <- dat$pop * dat$gdpPercap\n" " return(gdp)\n" @@ -14851,26 +14819,25 @@ msgid "" "-- the statements executed when you call the function -- is contained within\n" "curly braces (`{}`)." msgstr "" -"We define `calcGDP()` by assigning it to the output of `function`. The list of\n" -"argument names are contained within parentheses. Next, the body of the function \n" -"-- the statements executed when you call the function -- is contained within\n" -"curly braces (`{}`)." +"`calcGDP()` を定義するために、`function` の結果を `calcGDP` に代入します。\n" +"引数の名前の一覧は括弧に中に書きます。\n" +"次に、本文 -- 関数を読んだ時に実行される命令文 -- は波括弧 (`{}`) の中に書きます。" #: r-novice-gapminder/_episodes/10-functions.md:351 msgid "" "We've indented the statements in the body by two spaces. This makes the code\n" "easier to read but does not affect how it operates." msgstr "" -"We've indented the statements in the body by two spaces. This makes the code\n" -"easier to read but does not affect how it operates." +"本文中の命令文は2つのスペースでインデントしました。\n" +"これにより関数の動作に影響を及ぼさずに可読性を向上できます。" #: r-novice-gapminder/_episodes/10-functions.md:354 msgid "" "When we call the function, the values we pass to it are assigned to the\n" "arguments, which become variables inside the body of the function." msgstr "" -"When we call the function, the values we pass to it are assigned to the\n" -"arguments, which become variables inside the body of the function." +"関数を呼び出す時に、関数に渡した値は引数に指定され、\n" +"関数の本文中における変数になります。" #: r-novice-gapminder/_episodes/10-functions.md:357 msgid "" @@ -14878,9 +14845,8 @@ msgid "" "This `return()` function is optional: R will automatically return the results of\n" "whatever command is executed on the last line of the function." msgstr "" -"Inside the function, we use the `return()` function to send back the result.\n" -"This `return()` function is optional: R will automatically return the results of\n" -"whatever command is executed on the last line of the function." +"関数の中では `return()` 関数を用いて結果を返します。\n" +"`return()` 関数は必須ではなく、R は 関数の最終行で実行されたコマンドの結果を自動的に返します。" # code block #: r-novice-gapminder/_episodes/10-functions.md:363 @@ -14908,9 +14874,7 @@ msgstr "" msgid "" "That's not very informative. Let's add some more arguments so we can extract\n" "that per year and country." -msgstr "" -"That's not very informative. Let's add some more arguments so we can extract\n" -"that per year and country." +msgstr "これでは情報に乏しいです。いくつか引数を追加して、年ごとと国ごとの情報を得られるようにしましょう。" # code block #: r-novice-gapminder/_episodes/10-functions.md:379 @@ -14934,8 +14898,7 @@ msgid "" "~~~" msgstr "" "~~~\n" -"# Takes a dataset and multiplies the population column\n" -"# with the GDP per capita column.\n" +"# データセットを受け取り、人口の列と一人あたりのGDPの列をかけます。\n" "calcGDP <- function(dat, year=NULL, country=NULL) {\n" " if(!is.null(year)) {\n" " dat <- dat[dat$year %in% year, ]\n" @@ -14956,9 +14919,8 @@ msgid "" "(a good idea!), you can load in the functions into our R session by using the\n" "`source()` function:" msgstr "" -"If you've been writing these functions down into a separate R script\n" -"(a good idea!), you can load in the functions into our R session by using the\n" -"`source()` function:" +"もしこれらの関数を別の R スクリプトに書いているなら (グッドアイディア!)、\n" +"`source()` 関数を使って関数を R セッションに読み込むことができます。" # code block #: r-novice-gapminder/_episodes/10-functions.md:402 @@ -14981,17 +14943,16 @@ msgid "" "this as the final result. You can see that the output is much more informative\n" "than a vector of numbers." msgstr "" -"Ok, so there's a lot going on in this function now. In plain English, the\n" -"function now subsets the provided data by year if the year argument isn't empty,\n" -"then subsets the result by country if the country argument isn't empty. Then it \n" -"calculates the GDP for whatever subset emerges from the previous two steps. The \n" -"function then adds the GDP as a new column to the subsetted data and returns\n" -"this as the final result. You can see that the output is much more informative\n" -"than a vector of numbers." +"さて、この関数の中では色々なことが起きています。\n" +"平文にすると、この関数は `year` 引数を指定されている場合に、指定した値でデータを絞り込みます。\n" +"次にその結果を、`country` 引数が指定されている場合に指定した値で絞り込みます。\n" +"そしてこの2つの段階を経て現れたデータに対してGDPを計算します。\n" +"更にこの関数は、絞り込んだデータに新しくGDPの列を追加し、最終結果として返します。\n" +"出力が単に数値のベクトルだった時よりもはるかに情報に富んでいることがわかるでしょう。" #: r-novice-gapminder/_episodes/10-functions.md:415 msgid "Let's take a look at what happens when we specify the year:" -msgstr "Let's take a look at what happens when we specify the year:" +msgstr "`year` を指定した時に何が起きるか見てみましょう。" # code block #: r-novice-gapminder/_episodes/10-functions.md:418 @@ -15029,7 +14990,7 @@ msgstr "" #: r-novice-gapminder/_episodes/10-functions.md:436 msgid "Or for a specific country:" -msgstr "Or for a specific country:" +msgstr "また `country` を指定するとどうなるでしょうか。" # code block #: r-novice-gapminder/_episodes/10-functions.md:439 @@ -15079,7 +15040,7 @@ msgstr "" #: r-novice-gapminder/_episodes/10-functions.md:463 msgid "Or both:" -msgstr "Or both:" +msgstr "あるいは両方指定してみましょう。" # code block #: r-novice-gapminder/_episodes/10-functions.md:466 @@ -15107,7 +15068,7 @@ msgstr "" #: r-novice-gapminder/_episodes/10-functions.md:479 msgid "Let's walk through the body of the function:" -msgstr "Let's walk through the body of the function:" +msgstr "関数の本文を順番に見ていきましょう。" # code block #: r-novice-gapminder/_episodes/10-functions.md:482 @@ -15127,10 +15088,9 @@ msgid "" "in the function definition. This means that those arguments will\n" "take on those values unless the user specifies otherwise." msgstr "" -"Here we've added two arguments, `year`, and `country`. We've set\n" -"*default arguments* for both as `NULL` using the `=` operator\n" -"in the function definition. This means that those arguments will\n" -"take on those values unless the user specifies otherwise." +"ここで `year` と `country` の二つの引数を追加しました。\n" +"`=` 演算子を関数定義時に用いることで、両者の*既定値*には `NULL` を指定しています。\n" +"これにより、ユーザーが値を指定しない限り、これらの引数の値は `NULL` になることを意味します。" # code block #: r-novice-gapminder/_episodes/10-functions.md:493 @@ -15159,50 +15119,47 @@ msgid "" "they're not `null` overwrite the dataset stored in `dat` with a subset given by \n" "the non-`null` argument." msgstr "" -"Here, we check whether each additional argument is set to `null`, and whenever\n" -"they're not `null` overwrite the dataset stored in `dat` with a subset given by \n" -"the non-`null` argument." +"ここでは、追加した引数それぞれについて値が `NULL` であるか確認し、\n" +"`NULL` でなければ `dat` に格納されたデータセットを非 `NULL` な引数の値を用いて絞り込み上書きします。" #: r-novice-gapminder/_episodes/10-functions.md:507 msgid "" "I did this so that our function is more flexible for later. We can ask it to\n" "calculate the GDP for:" msgstr "" -"I did this so that our function is more flexible for later. We can ask it to\n" -"calculate the GDP for:" +"こうして関数を柔軟なものにすることで、後々使いやすくしました。\n" +"この関数を用いて、以下の様々な場合のGDPを計算できます。" # unordered list #: r-novice-gapminder/_episodes/10-functions.md:510 msgid " * The whole dataset;" -msgstr " * The whole dataset;" +msgstr " * データセット全体" # unordered list #: r-novice-gapminder/_episodes/10-functions.md:511 msgid " * A single year;" -msgstr " * A single year;" +msgstr " * ある年" # unordered list #: r-novice-gapminder/_episodes/10-functions.md:512 msgid " * A single country;" -msgstr " * A single country;" +msgstr " * ある国" # unordered list #: r-novice-gapminder/_episodes/10-functions.md:513 msgid " * A single combination of year and country." -msgstr " * A single combination of year and country." +msgstr " * ある年とある国の組み合わせ" #: r-novice-gapminder/_episodes/10-functions.md:515 msgid "" "By using `%in%` instead, we can also give multiple years or countries to those\n" "arguments." -msgstr "" -"By using `%in%` instead, we can also give multiple years or countries to those\n" -"arguments." +msgstr "代わりに `%in%` を使うことによって、`year` と `country` に複数の値を指定できるようになっています。" # blockquote, which can be cascaded #: r-novice-gapminder/_episodes/10-functions.md:518 msgid "> ## Tip: Pass by value" -msgstr "> ## Tip: Pass by value" +msgstr "> ## Tip: 値渡し" #: r-novice-gapminder/_episodes/10-functions.md:519 msgid "" @@ -15217,19 +15174,18 @@ msgid "" "> body of the function, stay inside the body of the function." msgstr "" ">\n" -"> Functions in R almost always make copies of the data to operate on\n" -"> inside of a function body. When we modify `dat` inside the function\n" -"> we are modifying the copy of the gapminder dataset stored in `dat`,\n" -"> not the original variable we gave as the first argument.\n" +"> R の関数は関数本文中で操作するためのデータを、ほぼ必ずコピーします。\n" +"> 関数の中で `dat` を変更するということは、\n" +"> `dat` に格納された gapminder データセットのコピーを変更するということであり、\n" +"> 第一引数に指定した元の変数を変更することはありません。\n" ">\n" -"> This is called \"pass-by-value\" and it makes writing code much safer:\n" -"> you can always be sure that whatever changes you make within the\n" -"> body of the function, stay inside the body of the function." +"> この挙動は \"値渡し\" と呼ばれ、コードの記述をより安全なものにします。\n" +"> つまり、関数内での変更は常に関数内での出来事に留まります。" # blockquote, which can be cascaded #: r-novice-gapminder/_episodes/10-functions.md:530 msgid "> ## Tip: Function scope" -msgstr "> ## Tip: Function scope" +msgstr "> ## Tip: 関数のスコープ" #: r-novice-gapminder/_episodes/10-functions.md:531 msgid "" @@ -15241,13 +15197,12 @@ msgid "" "> have variables of the same name in our interactive R session, they are\n" "> not modified in any way when executing a function." msgstr "" -">\n" -"> Another important concept is scoping: any variables (or functions!) you\n" -"> create or modify inside the body of a function only exist for the lifetime\n" -"> of the function's execution. When we call `calcGDP()`, the variables `dat`,\n" -"> `gdp` and `new` only exist inside the body of the function. Even if we\n" -"> have variables of the same name in our interactive R session, they are\n" -"> not modified in any way when executing a function." +"> スコープはもう一つの重要な概念です。\n" +"> 関数の本文中で作成したり変更したいかなる変数 (関数を含む!) は、\n" +"> 関数を実行している間だけ存在します。`calcGDP()` を呼んだ時に、\n" +"> `dat`、`gdp`、そして `new` という変数は関数の本文中でのみ存在します。\n" +"> 対話的な R のセッションにおいて同名の変数が存在していたとして、\n" +"> それらは関数実行時に変更されることはありません。" # code block #: r-novice-gapminder/_episodes/10-functions.md:541 @@ -15273,10 +15228,9 @@ msgid "" "the context for the returned GDP values, which is much better than in our first \n" "attempt where we got a vector of numbers." msgstr "" -"Finally, we calculated the GDP on our new subset, and created a new data frame\n" -"with that column added. This means when we call the function later we can see\n" -"the context for the returned GDP values, which is much better than in our first \n" -"attempt where we got a vector of numbers." +"最終的に、絞り込んだデータからGDPを計算し、その結果を列に追加した新しいデータフレームを作成しました。\n" +"これは関数を呼び出した後でも返り値のGDPの値が持つ文脈がわかることを意味します。\n" +"従って、最初に試した数値のベクトルを返す方法よりもずっと良いものです。" #: r-novice-gapminder/_episodes/10-functions.md:555 msgid "" @@ -15296,19 +15250,19 @@ msgid "" "> > GDP for New Zealand in 1952: 21058193787" msgstr "" ">\n" -"> Test out your GDP function by calculating the GDP for New Zealand in 1987. How\n" -"> does this differ from New Zealand's GDP in 1952?\n" +"> GDP を計算する関数をテストするため、1987年の New Zealand の GDP を計算して下さい。\n" +"> 1952 年の New Zealand の GDP とはどう違いますか?\n" ">\n" -"> > ## Solution to challenge 4\n" +"> > ## チャレンジ4の解答\n" "> >\n" "> > \n" "> > ~~~\n" "> > calcGDP(gapminder, year = c(1952, 1987), country = \"New Zealand\")\n" "> > ~~~\n" "> > {: .language-r}\n" -"> > GDP for New Zealand in 1987: 65050008703\n" +"> > 1987年の New Zealand の GDP: 65050008703\n" "> >\n" -"> > GDP for New Zealand in 1952: 21058193787" +"> > 1952年の New Zealand の GDP: 21058193787" #: r-novice-gapminder/_episodes/10-functions.md:574 msgid "" @@ -15329,7 +15283,7 @@ msgid "" "> ~~~" msgstr "" ">\n" -"> The `paste()` function can be used to combine text together, e.g:\n" +"> `paste()` 関数を使うと文字列を一繋ぎにできます。例えば\n" ">\n" "> \n" "> ~~~\n" @@ -15386,8 +15340,7 @@ msgid "" "> > {: .output}" msgstr "" ">\n" -"> Write a function called `fence()` that takes two vectors as arguments, called\n" -"> `text` and `wrapper`, and prints out the text wrapped with the `wrapper`:\n" +"> `text` と `wrapper` という引数を持ち、`text` を `wapper` で囲む `fence()` という関数を定義して下さい。\n" ">\n" "> \n" "> ~~~\n" @@ -15395,15 +15348,12 @@ msgstr "" "> ~~~\n" "> {: .language-r}\n" ">\n" -"> *Note:* the `paste()` function has an argument called `sep`, which specifies\n" -"> the separator between text. The default is a space: \" \". The default for\n" -"> `paste0()` is no space \"\".\n" +"> *Note:* `paste()` 関数では `sep` 引数を用いて文字列の間に入る文字列を指定できます。\n" +"> `paste0()` の場合 `sep` の既定値は \"\" です。\n" ">\n" -"> > ## Solution to challenge 5\n" +"> > ## チャレンジ5の解答\n" "> >\n" -"> > Write a function called `fence()` that takes two vectors as arguments,\n" -"> > called `text` and `wrapper`, and prints out the text wrapped with the\n" -"> > `wrapper`:\n" +"> > `text` と `wrapper` という引数を持ち、`text` を `wapper` で囲む `fence()` という関数を定義して下さい。\n" "> >\n" "> > \n" "> > ~~~\n" @@ -15435,12 +15385,11 @@ msgid "" "> [Advanced R Programming][adv-r] by Hadley Wickham." msgstr "" ">\n" -"> R has some unique aspects that can be exploited when performing more\n" -"> complicated operations. We will not be writing anything that requires\n" -"> knowledge of these more advanced concepts. In the future when you are\n" -"> comfortable writing functions in R, you can learn more by reading the\n" -"> [R Language Manual][man] or this [chapter][] from\n" -"> [Advanced R Programming][adv-r] by Hadley Wickham." +"> R より複雑な演算を行う時に利用できる変わった機能があります。\n" +"> ここでは発展的な概念を知っておく必要のあることは書きません。\n" +"> 将来的に R で関数を書くことに慣れたら、\n" +"> [R Language Manual][man] や Hadley Wickham による\n" +"> [Advanced R Programming][adv-r] のこの[章][]を読んで学んで下さい。" #: r-novice-gapminder/_episodes/10-functions.md:641 msgid "" @@ -15449,13 +15398,13 @@ msgid "" "[adv-r]: http://adv-r.had.co.nz/" msgstr "" "[man]: http://cran.r-project.org/doc/manuals/r-release/R-lang.html#Environment-objects\n" -"[chapter]: http://adv-r.had.co.nz/Environments.html\n" +"[章]: http://adv-r.had.co.nz/Environments.html\n" "[adv-r]: http://adv-r.had.co.nz/" # blockquote, which can be cascaded #: r-novice-gapminder/_episodes/10-functions.md:646 msgid "> ## Tip: Testing and documenting" -msgstr "> ## Tip: Testing and documenting" +msgstr "> ## Tip: テストとドキュメント" #: r-novice-gapminder/_episodes/10-functions.md:647 msgid "" @@ -15487,31 +15436,26 @@ msgid "" "> Formal automated tests can be written using the [testthat][] package." msgstr "" ">\n" -"> It's important to both test functions and document them:\n" -"> Documentation helps you, and others, understand what the\n" -"> purpose of your function is, and how to use it, and its\n" -"> important to make sure that your function actually does\n" -"> what you think.\n" -">\n" -"> When you first start out, your workflow will probably look a lot\n" -"> like this:\n" +"> 関数をテストし、ドキュメントを整備することは重要です。\n" +"> ドキュメントはあなたや他の人が関数の用途や用法を理解する助けになります。\n" +"> また、関数が意図した通りに動作することを確認することは重要です。\n" +"> 始めるにあたって、作業手順は多くの場合以下のようなものになるでしょう。\n" ">\n" -"> 1. Write a function\n" -"> 2. Comment parts of the function to document its behaviour\n" -"> 3. Load in the source file\n" -"> 4. Experiment with it in the console to make sure it behaves\n" -"> as you expect\n" -"> 5. Make any necessary bug fixes\n" -"> 6. Rinse and repeat.\n" +"> 1. 関数を書く\n" +"> 2. 関数の部分的な挙動についてドキュメント代わりにコメントする\n" +"> 3. ソースファイルを読み込む\n" +"> 4. コンソール上で実験し、意図した通りに動作するか確認する\n" +"> 5. 適宜バグの修正を行う\n" +"> 6. これらを繰り返す。\n" ">\n" -"> Formal documentation for functions, written in separate `.Rd`\n" -"> files, gets turned into the documentation you see in help\n" -"> files. The [roxygen2][] package allows R coders to write documentation\n" -"> alongside the function code and then process it into the appropriate `.Rd`\n" -"> files. You will want to switch to this more formal method of writing\n" -"> documentation when you start writing more complicated R projects.\n" +"> 別途 `.Rd` ファイルに記述された正式な関数のドキュメントは、\n" +"> ヘルプファイルを見た時のドキュメントになります。\n" +"> [roxygen2][] パッケージを使うと、開発者は R の関数のすぐ側にドキュメントを書き、\n" +"> 適切な `.Rd` ファイルに加工することができます。\n" +"> より複雑なプロジェクトを R で扱うようになると、このようにより正式な手法を使って\n" +"> ドキュメントを整備したくなるでしょう。\n" ">\n" -"> Formal automated tests can be written using the [testthat][] package." +"> 正式な自動化されたテストを書くには [testthat][] パッケージを使います。." #: r-novice-gapminder/_episodes/10-functions.md:675 msgid "" @@ -15543,31 +15487,31 @@ msgstr "" "---\n" "# Please do not edit this file directly; it is auto generated.\n" "# Instead, please edit 11-writing-data.md in _episodes_rmd/\n" -"title: Writing Data\n" -"teaching: 10\n" -"exercises: 10\n" -"questions:\n" -"- \"How can I save plots and data created in R?\"\n" -"objectives:\n" -"- \"To be able to write out plots and data from R.\"\n" -"keypoints:\n" -"- \"Save plots from RStudio using the 'Export' button.\"\n" -"- \"Use `write.table` to save tabular data.\"\n" +"title: データの出力\n" +"講義: 10\n" +"練習: 10\n" +"質問:\n" +"- \"Rで作った図を保存するにはどうしますか?\"\n" +"目標:\n" +"- \"R から図やデータを 出力出来るようになりましょう。\"\n" +"要点:\n" +"- \"RStudio のエクスポートボタンを使って図を保存しましょう。\"\n" +"- \"`write.table` を使って表形式のデータを保存しましょう。\"\n" "source: Rmd\n" "---" # header #: r-novice-gapminder/_episodes/11-writing-data.md:20 msgid "## Saving plots" -msgstr "## Saving plots" +## 図の保存 #: r-novice-gapminder/_episodes/11-writing-data.md:22 msgid "" "You have already seen how to save the most recent plot you create in `ggplot2`,\n" "using the command `ggsave`. As a refresher:" msgstr "" -"You have already seen how to save the most recent plot you create in `ggplot2`,\n" -"using the command `ggsave`. As a refresher:" +"`ggsave` 関数を使って、`ggplot2` を用いて作った直近の図を保存する方法は既に学んだ通りです。\n" +"おさらいしておきましょう。" # code block #: r-novice-gapminder/_episodes/11-writing-data.md:26 @@ -15586,9 +15530,8 @@ msgid "" "in the 'Plot' window. This will give you the option of saving as a\n" ".pdf or as .png, .jpg or other image formats." msgstr "" -"You can save a plot from within RStudio using the 'Export' button\n" -"in the 'Plot' window. This will give you the option of saving as a\n" -".pdf or as .png, .jpg or other image formats." +"RStudio から図を保存するには \"Plot\" ウィンドウにある \"Export\" ボタンを使います。\n" +"この機能を使うと、図を .pdf や .png、.jpg など様々な画像形式で保存することができます。 #: r-novice-gapminder/_episodes/11-writing-data.md:35 msgid "" @@ -15599,12 +15542,10 @@ msgid "" "each subset, and you want to save each plot, but obviously can't stop\n" "the loop to click 'Export' for each one." msgstr "" -"Sometimes you will want to save plots without creating them in the\n" -"'Plot' window first. Perhaps you want to make a pdf document with\n" -"multiple pages: each one a different plot, for example. Or perhaps\n" -"you're looping through multiple subsets of a file, plotting data from\n" -"each subset, and you want to save each plot, but obviously can't stop\n" -"the loop to click 'Export' for each one." +"図を \"Plot\" ウィンドウに表示することなく保存したいこともあるでしょう。\n" +"ページごとに一つの図を含むような複数のページから成る PDF を出力したいこともあるでしょう。\n" +"あるいはループを使ってファイル中のデータの絞り込み条件を変えながら複数の図を作成していて、\n" +"一つずつ保存するためにいちいちループを止めて \"Export\" ボタンを押すことが不可能な場合もあるでしょう。" #: r-novice-gapminder/_episodes/11-writing-data.md:42 msgid "" @@ -15612,9 +15553,9 @@ msgid "" "`pdf` creates a new pdf device. You can control the size and resolution\n" "using the arguments to this function." msgstr "" -"In this case you can use a more flexible approach. The function\n" -"`pdf` creates a new pdf device. You can control the size and resolution\n" -"using the arguments to this function." +"このような場合、より柔軟な方法を使います。\n" +"`pdf` 関数は新たに PDF デバイスを作ります。\n" +"この関数に引数を指定することで、サイズや解像度を調整できます。" # code block #: r-novice-gapminder/_episodes/11-writing-data.md:47 @@ -15636,14 +15577,14 @@ msgstr "" " geom_line() +\n" " theme(legend.position = \"none\")\n" "\n" -"# You then have to make sure to turn off the pdf device!\n" +"# PDF デバイスを確実に終了しておく必要があります!\n" "\n" "dev.off()\n" "~~~" #: r-novice-gapminder/_episodes/11-writing-data.md:59 msgid "Open up this document and have a look." -msgstr "Open up this document and have a look." +msgstr "このドキュメントを開いて内容を確認してみましょう。" #: r-novice-gapminder/_episodes/11-writing-data.md:62 msgid "" @@ -15666,10 +15607,12 @@ msgid "" "> > {: .language-r}" msgstr "" ">\n" -"> Rewrite your 'pdf' command to print a second\n" -"> page in the pdf, showing a facet plot (hint: use `facet_grid`)\n" -"> of the same data with one panel per continent.\n" + +"> `pdf` コマンドを書き直して、2ページ目に同じデータを `continent` ごとにファセットした図を出力してみましょう (ヒント: `facet_grid` を使います)。\n" +"> > ## チャレンジ1の解答\n" "> > ## Solution to challenge 1\n" +"> `pdf` コマンドを書き直して、2ページ目に同じデータを `continent` ごとにファセットした図を出力してみましょう (ヒント: `facet_grid` を使います)。\n" +"> > ## チャレンジ1の解答\n" "> >\n" "> > \n" "> > ~~~\n" @@ -15688,36 +15631,40 @@ msgid "" "The commands `jpeg`, `png` etc. are used similarly to produce\n" "documents in different formats." msgstr "" -"The commands `jpeg`, `png` etc. are used similarly to produce\n" -"documents in different formats." +"同様にして `jepg` や `png` などのコマンドを使うことで、他の形式のドキュメントを作成できます。" # header #: r-novice-gapminder/_episodes/11-writing-data.md:86 msgid "## Writing data" -msgstr "## Writing data" +msgstr "## データの出力" #: r-novice-gapminder/_episodes/11-writing-data.md:88 msgid "At some point, you'll also want to write out data from R." -msgstr "At some point, you'll also want to write out data from R." +msgstr "R からデータを出力したいこともあります。" #: r-novice-gapminder/_episodes/11-writing-data.md:90 msgid "" "We can use the `write.table` function for this, which is\n" "very similar to `read.table` from before." msgstr "" -"We can use the `write.table` function for this, which is\n" -"very similar to `read.table` from before." +"これには、既に使った `read.table` 関数とよく似た `write.table` 関数を使います。" #: r-novice-gapminder/_episodes/11-writing-data.md:93 msgid "" "Let's create a data-cleaning script, for this analysis, we\n" "only want to focus on the gapminder data for Australia:" msgstr "" -"Let's create a data-cleaning script, for this analysis, we\n" -"only want to focus on the gapminder data for Australia:" +"データを綺麗にするスクリプトを書きましょう。\n" +"今回の分析では、gapminder データの中のオーストラリアに該当する部分だけを使います。" # code block #: r-novice-gapminder/_episodes/11-writing-data.md:97 +"Let's switch back to the shell to take a look at the data to make sure it looks\n" +"OK:" +msgstr "" +"シェルに戻ってデータが正しく出力されているか確認しましょう。" +"OK:" + msgid "" "~~~\n" "aust_subset <- gapminder[gapminder$country == \"Australia\",]\n" @@ -15742,11 +15689,20 @@ msgid "" "Let's switch back to the shell to take a look at the data to make sure it looks\n" "OK:" msgstr "" -"Let's switch back to the shell to take a look at the data to make sure it looks\n" +"シェルに戻ってデータが正しく出力されているか確認しましょう" "OK:" # code block #: r-novice-gapminder/_episodes/11-writing-data.md:111 +msid "" +"Hmm, that's not quite what we wanted. Where did all these\n" +"quotation marks come from? Also the row numbers are\n" +"meaningless." +msgstr "" +"どうやら望んだ通りに出力されていません。引用符はどこから来たのでしょうか。\n" +"また、行番号には意味がありません。" + + #: r-novice-gapminder/_episodes/11-writing-data.md:165 msgid "" "~~~\n" @@ -15792,17 +15748,15 @@ msgid "" "quotation marks come from? Also the row numbers are\n" "meaningless." msgstr "" -"Hmm, that's not quite what we wanted. Where did all these\n" -"quotation marks come from? Also the row numbers are\n" -"meaningless." +"どうやら望んだ通りに出力されていません。引用符はどこから来たのでしょうか。\n" +"また、行番号には意味がありません。" #: r-novice-gapminder/_episodes/11-writing-data.md:137 msgid "" "Let's look at the help file to work out how to change this\n" "behaviour." msgstr "" -"Let's look at the help file to work out how to change this\n" -"behaviour." +msgstr "ヘルプファイルを見てこの動作を変更しましょう。" # code block #: r-novice-gapminder/_episodes/11-writing-data.md:141 @@ -15821,13 +15775,12 @@ msgid "" "when writing out to file. It will also write out the row and\n" "column names." msgstr "" -"By default R will wrap character vectors with quotation marks\n" -"when writing out to file. It will also write out the row and\n" -"column names." +"既定では、R は文字列をファイルに出力する時に引用符で囲みます。\n" +"また、行と列の名前も出力します。" #: r-novice-gapminder/_episodes/11-writing-data.md:150 msgid "Let's fix this:" -msgstr "Let's fix this:" +msgstr "以下のように修正しましょう。" # code block #: r-novice-gapminder/_episodes/11-writing-data.md:153 @@ -15850,7 +15803,7 @@ msgstr "" #: r-novice-gapminder/_episodes/11-writing-data.md:162 msgid "Now lets look at the data again using our shell skills:" -msgstr "Now lets look at the data again using our shell skills:" +msgstr "もう一度シェルを使ってデータを確認してみましょう。" # code block #: r-novice-gapminder/_episodes/11-writing-data.md:173 @@ -15883,7 +15836,7 @@ msgstr "" #: r-novice-gapminder/_episodes/11-writing-data.md:187 msgid "That looks better!" -msgstr "That looks better!" +msgstr "よくなりました!" #: r-novice-gapminder/_episodes/11-writing-data.md:190 msgid "" @@ -15906,12 +15859,10 @@ msgid "" "> > {: .language-r}" msgstr "" ">\n" -"> Write a data-cleaning script file that subsets the gapminder\n" -"> data to include only data points collected since 1990.\n" +"> gapminder データを1990年以降のデータのみに絞り込むスクリプトを書いて下さい。\n" ">\n" -"> Use this script to write out the new subset to a file\n" -"> in the `cleaned-data/` directory.\n" -"> > ## Solution to challenge 2\n" +"> このスクリプトを使って絞り込んだ結果を `cleaned-data/` ディレクトリ中のファイルに出力しましょう。\n" +"> > ## チャレンジ2の解答\n" "> >\n" "> > \n" "> > ~~~\n" @@ -19194,7 +19145,7 @@ msgid "" msgstr "" "私が始めたばかりの頃は、全ての仕事についてRスクリプトを書いて、\n" "結果を説明し、様々なグラフを添付したメールを協力者に送信していました。\n" -"結果を議論する際、どれがどのグラフが混乱してしまうこともよくありました。" +"結果を議論する際、どのグラフについて話しているのか混乱してしまうことがよくありました。" #: r-novice-gapminder/_episodes/15-knitr-markdown.md:37 msgid "" @@ -19202,9 +19153,9 @@ msgid "" "spend a lot of time getting the figures to look right. Mostly, the\n" "concern is about page breaks." msgstr "" -"WordやLaTeXで正式な報告を書く段階に移りましたが、図が正しく見えるように\n" -"するために、かなり多くの時間を費やしました。大抵の場合、ページ分けが、\n" -"悩ましかったです。" +"WordやLaTeXで正式な報告を書く様になったのですが、図を正しく表示\n" +"するためにかなり多くの時間を費やしました。大抵の場合、ページ分けで\n" +"つまずきました。" #: r-novice-gapminder/_episodes/15-knitr-markdown.md:41 msgid "" @@ -19212,9 +19163,9 @@ msgid "" "file). It can be one long stream, so I can use tall figures that\n" "wouldn't ordinary fit on one page. Scrolling is your friend." msgstr "" -"今では、ウェブページ(htmlファイル)を作るようになり全てが簡単になりました。\n" -"ひとつの長くつづくページなりますので、普通の1ページに収まらないような高さがある図\n" -"でも全て入れることができます。味方は、スクロールですね。" +"今では、ウェブページ(htmlファイル)を作るようになり全てが楽になりました。\n" +"ひとつの長いページなるので、普通ではひとつのページに収まらないような高さの図\n" +"でもはみ出さずに入れることができます。「スクロールは友達」ですね。" # header #: r-novice-gapminder/_episodes/15-knitr-markdown.md:46 @@ -19230,10 +19181,10 @@ msgid "" "a Word document, and further hand-edit various detailed results)." msgstr "" "分析報告書のようなものは、_再現できる_ 文書であることが理想です。つまり、\n" -"エラーが見つかった場合や、データに追加があった場合、単に報告書を\n" -"再コンパイルすれば、新しい、または正しい結果が得られるという形です。\n" -"(その反対は、図を再作成し、Word文書に貼り付け、更に手作業で\n" -"様々な詳細結果に手を加えなえればならないという形です)" +"エラーが見つかった場合や、データに追加があった場合など、単に報告書を\n" +"再コンパイルすることで、新しい、または正しい結果が得られるという形です\n" +"(再現できない文書の場合、図を再作成し、Word文書に貼り付け、更に手作業で\n" +"様々な詳細結果に手を加えなえればなりません)。" #: r-novice-gapminder/_episodes/15-knitr-markdown.md:54 msgid "" @@ -19243,13 +19194,13 @@ msgid "" "be executed, and graphs or other results inserted." msgstr "" "Rでカギとなるツールは [knitr](http://yihui.name/knitr/) です。これは、\n" -"コードの塊と文章が混ざった文書を作成してくれるものです。\n" -"文書が、knitrで処理される際に、Rコードの塊が実行され、\n" -"グラフと他の結果が挿入されます。" +"コードと文章が混ざった文書を作成してくれるものです。\n" +"文書がknitrで処理される際にRコードが実行され、\n" +"グラフや他の結果が文書に挿入されます。" #: r-novice-gapminder/_episodes/15-knitr-markdown.md:59 msgid "This sort of idea has been called \"literate programming\"." -msgstr "こういうものを「読み書きできるプログラミン(literate programming)」と呼びます。" +msgstr "こういうものを「読み書きできるプログラミング(literate programming)」と呼びます。" #: r-novice-gapminder/_episodes/15-knitr-markdown.md:61 msgid "" @@ -19258,9 +19209,9 @@ msgid "" "with R. Markdown is a light-weight mark-up language for creating web\n" "pages." msgstr "" -"knitrは、基本的にどんなテキストでも、どんなコードでも、一緒に使えますが、\n" -"お勧めは、RにMarkdownを合体させた、R Markdownです。\n" -"Markdownは、ウェブページを作るための軽いマークアップ言語です。" +"knitrは、基本的にどんなテキストやコードでも組み合わせられるのですが、\n" +"RにMarkdownを合体させた、R Markdownがお勧めです。\n" +"Markdownは、ウェブページを作るための軽量なマークアップ言語です。" # header #: r-novice-gapminder/_episodes/15-knitr-markdown.md:67 @@ -19326,16 +19277,16 @@ msgid "" "They're mostly needed if you want to include a colon in the title." msgstr "" "入れたくなければ、これらのフィールドのいずれも消すことができます。\n" -"この場合、この二重引用符は、厳密には _必須_ ではありません。\n" -"必要になる時は、大抵、タイトルにコロンを含めたいというときです。" +"二重引用符は、厳密には _必須_ ではありません。\n" +"大抵は、タイトルにコロンを含めたいときに使います。" #: r-novice-gapminder/_episodes/15-knitr-markdown.md:96 msgid "" "RStudio creates the document with some example text to get you\n" "started. Note below that there are chunks like" msgstr "" -"RStudioは、始めやすいように、テキストの例の文書を作成します。\n" -"以下にあるように、塊はこんな感じです:" +"RStudioは、始めやすいように、例がいくつか入れられてある文書を作成します。\n" +"以下のような「チャンク(chunk)」がすでにあるかと思います:" # inline html #: r-novice-gapminder/_episodes/15-knitr-markdown.md:99 @@ -19357,7 +19308,7 @@ msgid "" "These are chunks of R code that will be executed by knitr and replaced\n" "by their results. More on this later." msgstr "" -"knitrが実行するRコードの塊があり、それは結果に置き換えられます。\n" +"これらはRコードの「チャンク」(塊)で、knitrによってコードが実行され、結果に置き換えられます。\n" "また後ほど、詳しくお伝えします。" #: r-novice-gapminder/_episodes/15-knitr-markdown.md:108 @@ -19366,8 +19317,8 @@ msgid "" "well as the double-asterisks in `**Knit**`. This is\n" "[Markdown](http://daringfireball.net/projects/markdown/syntax)." msgstr "" -"`**Knit**` の中にある、二重アスタリスクと、かぎ括弧( `< >` )の間に置かれているウェブアドレスが\n" -"あるのが分かるでしょう。これが、[Markdown](http://daringfireball.net/projects/markdown/syntax)なのです。" +"`**Knit**` の中にある、二重アスタリスクとかぎ括弧( `< >` )の間に置かれているウェブアドレスが\n" +"あるのが分かるでしょうか。これが、[Markdown](http://daringfireball.net/projects/markdown/syntax)なのです。" # header #: r-novice-gapminder/_episodes/15-knitr-markdown.md:112 @@ -19381,8 +19332,8 @@ msgid "" "text gets _converted_ to html, replacing the marks with the proper\n" "html code." msgstr "" -"Markdownは、htmlコードを書くというよりも、メールを書くときにするような形で、\n" -"テキストに印をつけていきながらウェブページを書く体系のひとつです。印がつけられた(marked-up)\n" +"Markdownは、メールを書くような感覚でテキストに印をつけていきながら、htmlコードを使わずに\n" +"ウェブページを書くための言語です。印がつけられた(marked-up)\n" "テキストは、マークが指し示す正しいhtmlコードに置き換えられながら、htmlに _変換_ されます。" #: r-novice-gapminder/_episodes/15-knitr-markdown.md:119 @@ -19398,7 +19349,7 @@ msgid "" "`_italics_`." msgstr "" "二重アスタリスクを使って、 **太字** に(例 `**bold**`)、\n" -"下線を使って、 _斜体_ にすることもできます(例 `_italics_`)。" +"下線を使って、 _斜体_ にすることができます(例 `_italics_`)。" #: r-novice-gapminder/_episodes/15-knitr-markdown.md:126 msgid "" @@ -19536,10 +19487,10 @@ msgid "" "Reference\" (with the Markdown syntax) as well to the RStudio\n" "documentation on R Markdown." msgstr "" -"左上にある「Knit HTML」をクリックすることで、R Markdown文書を、html ウェブサイトへ _コンパイル_ する\n" +"左上にある「Knit HTML」をクリックすることで、R Markdown文書をhtml ウェブサイトへ _コンパイル_ する\n" "ことができます。その隣に、小さな疑問符があるのが分かると思います。その疑問符をクリックしてみると、\n" "R MarkdownについてのRStudio文書と、「Markdown Quick Reference」(Markdownのシンタックス付き)\n" -"が出てくることでしょう。" +"が出てきます。" # blockquote, which can be cascaded #: r-novice-gapminder/_episodes/15-knitr-markdown.md:182 @@ -19559,7 +19510,7 @@ msgid "" "> Convert the document to a webpage." msgstr "" ">\n" -"> 新しいR Markdown文書を作りましょう。Rコードの塊を全て消して、\n" +"> 新しいR Markdown文書を作りましょう。Rコードのチャンクを全て消して、\n" "> Markdown(いくつかの文節、斜体テキスト、箇条書き)\n" "> を書いてみましょう。\n" ">\n" @@ -19586,7 +19537,7 @@ msgstr "このようなイメージを含めることもできます:`![captio msgid "" "You can do subscripts (e.g., F~2~) with `F~2` and superscripts (e.g.,\n" "F^2^) with `F^2^`." -msgstr "下付き文字 (例 F~2~)も `F~2` で、上付き文字(例 F^2^)も `F^2^` でできます。" +msgstr "下付き文字 (例 F~2~)は `F~2` で、上付き文字(例 F^2^)は `F^2^` でできます。" #: r-novice-gapminder/_episodes/15-knitr-markdown.md:202 msgid "" @@ -19595,8 +19546,8 @@ msgid "" "you can use `$ $` and `$$ $$` to insert math equations, like\n" "`$E = mc^2$` and" msgstr "" -"もし、[LaTeX](http://www.latex-project.org/)の等式の書き方を知っていれば、\n" -"`$ $` と `$$ $$` が数式を挿入するのに使えると知って嬉しいことでしょう。\n" +"[LaTeX](http://www.latex-project.org/)の等式の書き方を知っていれば、\n" +"`$ $` と `$$ $$` で数式を挿入することができます。\n" "例えば、 `$E = mc^2$` や、" # code block @@ -19613,7 +19564,7 @@ msgstr "" # header #: r-novice-gapminder/_episodes/15-knitr-markdown.md:213 msgid "## R code chunks" -msgstr "## Rコードの塊" +msgstr "## Rコードの「チャンク(塊)」" #: r-novice-gapminder/_episodes/15-knitr-markdown.md:215 msgid "" @@ -19622,12 +19573,12 @@ msgid "" "processed, the R code will be executed; if they produce figures, the\n" "figures will be inserted in the final document." msgstr "" -"Markdownは、面白く役に立つものですが、ミソは、Rコードの塊とMarkdownが混ぜられることなのです。\n" -"それが、R Markdownですね。処理すると、Rコードが実行され、図が作られ、最終的な文書に挿入されます。" +"Markdownは役に立つし、興味深くもあるのですが、一番重要な機能は、RコードとMarkdownを組み合わせられることなのです。\n" +"それが、R Markdownです。処理すると、Rコードが実行され、図が作られ、最終的な文書に挿入されます。" #: r-novice-gapminder/_episodes/15-knitr-markdown.md:220 msgid "The main code chunks look like this:" -msgstr "メインコードの塊は、こんな感じです:" +msgstr "メインのコードチャンクは、こんな感じです:" # inline html #: r-novice-gapminder/_episodes/15-knitr-markdown.md:222 @@ -19652,9 +19603,9 @@ msgid "" "produced, the file names are based on the name of the code chunk that\n" "produced them." msgstr "" -"つまり、Rコードの塊を```{r chunk_name}\n" -"と```の間に置くのです。それぞれの重複しない名前を付けておくといいでしょう。\n" -"そうすると、エラーを修正するときに役立ちますし、グラフのファイル名は、それが生成されたコードの塊の名前に基づいて付けられるからです。" +"つまり、Rコードを```{r chunk_name}\n" +"と```の間に置くことでコードの「チャンク(chunk・塊)」を作ります。それぞれのチャンクに重複しない名前を付けておくといいでしょう。\n" +"そうすると、エラーを修正するときに役立ちますし、グラフのファイル名は、生成されたコードのチャンクの名前に基づいて付けられるからです。" #: r-novice-gapminder/_episodes/15-knitr-markdown.md:235 msgid "" @@ -19666,7 +19617,7 @@ msgid "" "> - Create a plot" msgstr "" ">\n" -"> 以下を行うコードの塊を加えましょう\n" +"> 以下を行うコードチャンクを加えましょう\n" ">\n" "> - ggplot2 パッケージの読み込み\n" "> - gapminder データの読み込み\n" @@ -19685,9 +19636,9 @@ msgid "" "and replaced by both the input and the output; if figures are\n" "produced, links to those figures are included." msgstr "" -"「Knit HTML」ボタンを押すと、R Markdown文書は、[knitr](http://yihui.name/knitr)\n" +"「Knit HTML」ボタンを押すと、R Markdown文書は[knitr](http://yihui.name/knitr)\n" "によって処理され、単純なMarkdown文書が(一連の図のファイルと共に)生成されます。\n" -"Rコードは、実行され、入力と出力に置き換わります。図が生成された場合、\n" +"Rコードは実行され、入力と出力に置き換えられます。図が生成された場合、\n" "これらの図へのリンクが挿入されます。" #: r-novice-gapminder/_episodes/15-knitr-markdown.md:251 @@ -19697,7 +19648,7 @@ msgid "" "html file, with the figures embedded." msgstr "" "Markdownと図の文書は、[pandoc](http://pandoc.org/) というツールで処理され、\n" -"Markdownファイルが、図が埋め込まれたhtmlファイルに変換されます。" +"Markdownファイルは、図の埋め込まれたhtmlファイルに変換されます。" #: r-novice-gapminder/_episodes/15-knitr-markdown.md:255 msgid "\"plot" @@ -19706,13 +19657,13 @@ msgstr " code." msgstr "" ">\n" -"> 図の大きさを管理し、コードを隠す塊のオプションを使ってみましょう。" +"> 図の大きさを管理し、コードを隠すチャンクのオプションを使ってみましょう。" # header #: r-novice-gapminder/_episodes/15-knitr-markdown.md:308 @@ -19828,14 +19780,14 @@ msgid "" "like so: `r round(some_value, 2)`. The code will be\n" "executed and replaced with the _value_ of the result." msgstr "" -"報告書にある、_それぞれの_ 数を再現可能なものにすることができます。\n" -"`r` を文中のコードの塊に使ってみましょう。\n" -"例えば: `r round(some_value, 2)`。コードは、\n" +"報告書にある、_全て_ の数を再現可能なものにすることができます。\n" +"`r` を文中のコードのチャンクに入れてみましょう。\n" +"例えば、 `r round(some_value, 2)`。このコードはコンパイル時に\n" "実行され、結果の _値_ に置き換えられます。" #: r-novice-gapminder/_episodes/15-knitr-markdown.md:315 msgid "Don't let these in-line chunks get split across lines." -msgstr "この文中の塊を、複数の行に分けて入れないようにしましょう。" +msgstr "この文中のチャンクを、複数の行に分けて入れないようにしましょう。" #: r-novice-gapminder/_episodes/15-knitr-markdown.md:317 msgid "" @@ -19843,16 +19795,17 @@ msgid "" "calculations and defines things, with `include=FALSE` for that larger\n" "chunk (which is the same as `echo=FALSE` and `results=\"hide\"`)." msgstr "" -"パラグラフの前には、 おそらく、`include=FALSE` と設定された(これは `echo=FALSE` と `results=\"hide\"` と同じ)\n" -"より大きな物事の定義や演算を行うコードの塊があるはずです。" +"こういう場合は、パラグラフの前に`include=FALSE`\n" +"( `echo=FALSE` と `results=\"hide\"` の組み合わせと同じ)のオプションを設定した、\n" +"定義や演算を行うコードチャンクを作っておきましょう。" #: r-novice-gapminder/_episodes/15-knitr-markdown.md:321 msgid "" "I'm very particular about rounding in such situations. I may want\n" "`2.0`, but `round(2.03, 1)` will give just `2`." msgstr "" -"このような場合、出力された数の丸め方によって違いがでることがあります。\n" -"`2.0` が欲しくても、`round(2.03, 1)` では、ただの `2` が出てきてしまいます。" +"私は四捨五入に関しては、神経質になりがちです。\n" +"`2.0` が欲しくても、`round(2.03, 1)` ではただの `2` が出てきてしまいます。" #: r-novice-gapminder/_episodes/15-knitr-markdown.md:324 msgid "" @@ -19876,7 +19829,7 @@ msgstr "" # header #: r-novice-gapminder/_episodes/15-knitr-markdown.md:335 msgid "## Other output options" -msgstr "## 他の出力オプション" +msgstr "## その他の出力オプション" #: r-novice-gapminder/_episodes/15-knitr-markdown.md:337 msgid "" @@ -19887,7 +19840,7 @@ msgid "" msgstr "" "R MarkdownをPDFやWord文書に変換することもできます。\n" "ドロップダウンメニューを表示させるために、「Knit HTML」の横にある小さい三角をクリックしましょう。\n" -"または、 `pdf_document` や `word_document` をファイルの最初のヘッダーに入れておくこともできます。" +"または、 `pdf_document` や `word_document` をファイルの最初のヘッダー(header)に入れておくこともできます。" # blockquote, which can be cascaded #: r-novice-gapminder/_episodes/15-knitr-markdown.md:342 @@ -19904,8 +19857,8 @@ msgid "" "> - [TeX installers for macOS](https://tug.org/mactex)." msgstr "" ">\n" -"> .pdf文書を作成するためには、いくつかソフトウェアをインストールしなければいけないかもしれません。\n" -"> もし、必要な場合、エラーメッセージの中に詳細が述べられています。\n" +"> `.pdf` 文書を作成するためには、いくつかソフトウェアをインストールしなければいけないかもしれません。\n" +"> これらのソフトが必要な場合は、エラーメッセージの中に詳細が述べられています。\n" ">\n" "> - [Windows向けのTeXインストーラー](https://miktex.org/2.9/setup).\n" "> - [macOS向けのTeXインストーラー](https://tug.org/mactex)." @@ -20007,12 +19960,12 @@ msgstr "## プロジェクトフォルダーを構造化する" #: r-novice-gapminder/_episodes/16-wrap-up.md:24 msgid "Keep your project folder structured, organized and tidy, by creating subfolders for your code files, manuals, data, binaries, output plots, etc. It can be done completely manually, or with the help of RStudio's `New Project` functionality, or a desginated package, such as `ProjectTemplate`." -msgstr "プロジェクトフォルダーを、コードファイル、マニュアル、データ、バイナリー、プロットの出力などのサブフォルダーを作ることで、構造化し、整理し、片づいた形にしておきましょう。全部、手作業でできますが、RStudioの `New Project` 機能、または、`ProjectTemplate` のように、その目的で作られたパッケージの助けを借りることもできます。" +msgstr "プロジェクトフォルダーを、コードファイル、マニュアル、データ、バイナリー、プロットの出力などのサブフォルダーを作ることで、構造化し、整理し、片づけておきましょう。全部手作業でできますが、RStudioの `New Project` 機能、または、`ProjectTemplate` のように、その目的で作られたパッケージの助けを借りることもできます。" # blockquote, which can be cascaded #: r-novice-gapminder/_episodes/16-wrap-up.md:26 msgid "> ## Tip: ProjectTemplate - a possible solution" -msgstr "> ## ヒント:ProjectTemplateという使える解決策" +msgstr "> ## ヒント:解決策の一つ:ProjectTemplate" #: r-novice-gapminder/_episodes/16-wrap-up.md:27 msgid "" @@ -20038,10 +19991,10 @@ msgid "" "> home page [ProjectTemplate](http://projecttemplate.net/index.html)" msgstr "" ">\n" -"> プロジェクトの管理を自動化する方法のひとつは、第三者パッケージである `ProjectTemplate` をインストールする方法です。\n" +"> プロジェクトの管理を自動化する方法のひとつは、第三者パッケージである `ProjectTemplate` をインストールすることです。\n" "> このパッケージは、プロジェクト管理に理想的なディレクトリ構造を作成します。\n" "> 自分の分析パイプライン(またはワークフロー)が整理、構造化されるので、これはとても役に立ちます。\n" -"> RStudioのデフォルトプロジェクト機能とGitでも、自分の作業の履歴を保存し、他の共同作業者と作ったものをシェアできます。\n" +"> RStudioのデフォルトプロジェクト機能とGitと組み合わせれば、自分の作業の履歴を保存し、他の共同作業者とシェアすることもできます。\n" ">\n" "> 1. `ProjectTemplate` をダウンロードする\n" "> 2. ライブラリを読み込む\n" @@ -20054,8 +20007,8 @@ msgstr "" "> create.project(\"../my_project\", merge.strategy = \"allow.non.conflict\")\n" "> ```\n" ">\n" -"> ProjectTemplate及びその機能についてのについての更なる情報は、\n" -"> 次のホームページから入手可能です [ProjectTemplate](http://projecttemplate.net/index.html)" +"> ProjectTemplate及びその機能についての更なる情報は、\n" +"> 次のホームページから入手可能です: [ProjectTemplate](http://projecttemplate.net/index.html)" # header #: r-novice-gapminder/_episodes/16-wrap-up.md:50 @@ -20069,15 +20022,15 @@ msgid "" "what it does: more often than not this someone will be you 6 months down the line,\n" "who will otherwise be cursing past-self." msgstr "" -"コードを書く際に一番重要なのが、それが読めて理解できるようにすることです。\n" -"他の誰が自分のコードを取り上げ、何をするものか理解してほしいと思うでしょう。\n" -"多くの場合、この誰かさんは、6か月後の自分で、もしコードが読めない、\n" +"コードを書く際に一番重要なのが、読みやすくて理解のしやすくすることです。\n" +"他の誰が自分のコードを取り上げ、何をするものかを理解してもらわなければなりません。\n" +"多くの場合、この誰かさんは、6か月後の自分なので、もしコードが読めない、\n" "理解できない場合は、昔の自分に悪態をつくことになるでしょう。" # header #: r-novice-gapminder/_episodes/16-wrap-up.md:57 msgid "## Documentation: tell us what and why, not how" -msgstr "## 文書化:何、なぜ、どのようにを伝えて下さい" +msgstr "## 文書化:「どうやって」ではなく「なぜ」を伝えて下さい" #: r-novice-gapminder/_episodes/16-wrap-up.md:59 msgid "" @@ -20089,11 +20042,11 @@ msgid "" "that is. The *how* can come after that: it's an implementation detail you ideally\n" "shouldn't have to worry about." msgstr "" -"初めて始めたばかりのころは、コメントには、そのコマンドが何をするかを記したものが多いです。\n" +"初めのころは、コメントにそのコマンドが何をするかを記したものが多いはずです。\n" "なぜならば、学び始めたばかりで、概念をはっきりさせるのに役立ち、後で思い出せるからです。\n" "しかしながら、後々、それらのコメントは、コードがどんな問題を解決しようとしていたのかを思い出そうと\n" -"する際、そんなに役に立ちません。 自分は*何* の問題を、 *なぜ* 解こうとしているのかも、コメントに含めるようにしましょう。\n" -"*どのように* については、その後の話です。導入の詳細は、理想的にはそこまで心配する必要はありません。" +"する際には役に立ちません。 自分は*何* の問題を、 *なぜ* 解こうとしているのかを、コメントに含めるようにしましょう。\n" +"*どうやって* 問題を解いたのかについては、その後の話です。導入の詳細は、理想的にはそこまで心配する必要はありません。" # header #: r-novice-gapminder/_episodes/16-wrap-up.md:67 @@ -20109,11 +20062,11 @@ msgid "" "loaded into any analysis script in your project. It also lets you group related\n" "functions together easily." msgstr "" -"おすすめは、関数を分析スクリプトと分けておk、別のファイルに保存しておき、\n" -"プロジェクトでRのセッションを開いたときに、 `source` することです。\n" -"このアプローチを取ると、分析スクリプトがちらからず、プロジェクトにある、どの分析スクリプトでも\n" -"使える関数の貯蔵庫ができるので、良いと思います。\n" -"また、同じような関数をまとめるが簡単になります。" +"関数を分析スクリプトと分けて、別のファイルに保存しておき、\n" +"プロジェクトでRのセッションを開いたときに、 `source` することをオススメします。\n" +"このアプローチを取ると、分析スクリプトに無駄がなくなり、プロジェクト内のどの分析スクリプトでも\n" +"使える関数をストックする場所ができるので、便利です。\n" +"また、同じような関数をまとめるのが簡単になります。" # header #: r-novice-gapminder/_episodes/16-wrap-up.md:76 @@ -20128,25 +20081,25 @@ msgid "" "keep breaking down the problem into smaller and smaller functions until you\n" "reach a point where you can code a solution, and build back up from there." msgstr "" -"初めて始めたときは、問題解決と関数の記述は、気が滅入るタスクで、\n" -"コードの経験不足から分けることができないと思うかもしれません。問題を消化できる塊に分け、\n" -"導入の詳細についての心配は、後回しにしましょう:\n" -"問題を、解決方法をコード化できるまで、どんどん小さい関数に分けていきしましょう。\n" -"そして、そこからまた積み上げるのです。" +"初めは、問題解決と関数の記述は気が滅入るタスクで、\n" +"コードの経験不足とは別の問題として分けることができないと思うかもしれません。問題を消化できる塊に分け、\n" +"導入の詳細についての心配は後回しにしましょう:\n" +"問題をコードで解決できるまで、どんどん小さい関数に分けていきしましょう。\n" +"そして、解決されたものを積み上げていけば、問題を解決できるでしょう。" # header #: r-novice-gapminder/_episodes/16-wrap-up.md:84 msgid "## Know that your code is doing the right thing" -msgstr "## コードが正しいことをしていること知りましょう" +msgstr "## コードが正しいことをしているか確かめましょう" #: r-novice-gapminder/_episodes/16-wrap-up.md:86 msgid "Make sure to test your functions!" -msgstr "関数をテストすることを、くれぐれも忘れないように。" +msgstr "関数をテストすることを、くれぐれも忘れないように!" # header #: r-novice-gapminder/_episodes/16-wrap-up.md:88 msgid "## Don't repeat yourself" -msgstr "## 同じことを繰り返さないようにしましょう!" +msgstr "## 同じことを繰り返さないようにしましょう" #: r-novice-gapminder/_episodes/16-wrap-up.md:90 msgid "" @@ -20154,8 +20107,8 @@ msgid "" "lines of code through your project, those are usually candidates for being\n" "moved into functions." msgstr "" -"関数は、プロジェクトの中で簡単に再利用できます。もし、プロジェクトで、同じようなコードの行の塊を\n" -"見つけたら、大抵、それが関数に移す候補たちです。" +"関数は、プロジェクトの中で簡単に再利用できます。もし、プロジェクトで同じようなコードの行の塊を\n" +"見つけたら、それらを関数に移す候補にしましょう。" #: r-novice-gapminder/_episodes/16-wrap-up.md:94 msgid "" @@ -20163,8 +20116,8 @@ msgid "" "project becomes more modular and easier to change. This is especially the case\n" "for which a particular input always gives a particular output." msgstr "" -"もし一連の関数で演算が行われていた場合、プロジェクトは、よりモジュール化され、変更するのが簡単になります。\n" -"これは、特定のインプットが必ず特定のアウトプットを返す場合に特にあてはまります。" +"もし、計算が一連の関数で行われていた場合、プロジェクトはよりモジュール化され、変更するのが簡単になります。\n" +"これは、特定のインプットが必ず特定のアウトプットを返す場合など、特にそうです。" # header #: r-novice-gapminder/_episodes/16-wrap-up.md:98 @@ -21778,37 +21731,37 @@ msgstr "" # header #: r-novice-gapminder/reference.md:187 msgid "## [Vectorization]({{ page.root }}/09-vectorization/)" -msgstr "## [Vectorization]({{ page.root }}/09-vectorization/)" +msgstr "## [ベクトル化]({{ page.root }}/09-vectorization/)" # unordered list #: r-novice-gapminder/reference.md:189 msgid "- Most functions and operations apply to each element of a vector" -msgstr "- Most functions and operations apply to each element of a vector" +msgstr "- ほとんどの関数や演算はベクトルの要素ごとに実行されます。" # unordered list #: r-novice-gapminder/reference.md:190 msgid "- `*` applies element-wise to matrices" -msgstr "- `*` applies element-wise to matrices" +msgstr "- `*` は行列に対して要素ごとに実行されます。" # unordered list #: r-novice-gapminder/reference.md:191 msgid "- `%*%` for true matrix multiplication" -msgstr "- `%*%` for true matrix multiplication" +msgstr "- 本来の行列の積を求めるには `%*%` を使います。" # unordered list #: r-novice-gapminder/reference.md:192 msgid "- `any()` will return `TRUE` if any element of a vector is `TRUE`" -msgstr "- `any()` will return `TRUE` if any element of a vector is `TRUE`" +msgstr "- `any()` はベクトルの要素の中に一つでも `TRUE` があれば `TRUE` を返します。" # unordered list #: r-novice-gapminder/reference.md:193 msgid "- `all()` will return `TRUE` if *all* elements of a vector are `TRUE`" -msgstr "- `all()` will return `TRUE` if *all* elements of a vector are `TRUE`" +msgstr "- `all()` はベクトルの要素が*全て* `TRUE` であれば `TRUE` を返します。" # header #: r-novice-gapminder/reference.md:195 msgid "## [Functions explained]({{ page.root }}/10-functions/)" -msgstr "## [Functions explained]({{ page.root }}/10-functions/)" +msgstr "## [関数について]({{ page.root }}/10-functions/)" # unordered list #: r-novice-gapminder/reference.md:197 @@ -21818,7 +21771,7 @@ msgstr " - `?\"function\"`" # unordered list #: r-novice-gapminder/reference.md:198 msgid " - Put code whose parameters change frequently in a function, then call it with" -msgstr " - Put code whose parameters change frequently in a function, then call it with" +msgstr " - 何度もパラメータを変えながら実行するコードを関数にし、" #: r-novice-gapminder/reference.md:199 msgid "" @@ -21827,25 +21780,24 @@ msgid "" " - Any code written in the body of the function will preferably look for variables defined inside the function.\n" " - Document Why, then What, then lastly How (if the code isn't self explanatory)" msgstr "" -" different parameter values to customize its behavior.\n" -" - The last line of a function is returned, or you can use `return` explicitly\n" -" - Any code written in the body of the function will preferably look for variables defined inside the function.\n" -" - Document Why, then What, then lastly How (if the code isn't self explanatory)" +" 作った関数をパラメータの値を変えることで挙動を変更しながら呼び出しましょう。\n" +" - 関数の最終行か、明示的に `return` を用いた部分が返り値になります。\n" +" - 関数の本文中に記述したコードはいずれも、関数内で定義された変数から探し始めます。\n" +" - コードの内容が自明ではない時は、ドキュメントに「なぜ」、次に「何」、そして最後に「どう」を記述しましょう。" # header #: r-novice-gapminder/reference.md:204 msgid "## [Writing data]({{ page.root }}/11-writing-data/)" -msgstr "## [Writing data]({{ page.root }}/11-writing-data/)" +msgstr "## [データの出力]({{ page.root }}/11-writing-data/)" # unordered list #: r-novice-gapminder/reference.md:206 msgid " - `write.table` to write out objects in regular format" -msgstr " - `write.table` to write out objects in regular format" - +msgstr " - `write.table` を使ってオブジェクトを一般的な形式に出力しましょう。" # unordered list #: r-novice-gapminder/reference.md:207 msgid " - set `quote=FALSE` so that text isn't wrapped in `\"` marks" -msgstr " - set `quote=FALSE` so that text isn't wrapped in `\"` marks" +msgstr " - `quote=FALSE` を指定して文字列が引用符に囲われないようにしましょう。" # header #: r-novice-gapminder/reference.md:209 diff --git a/po/r-novice-inflammation.ja.po b/po/r-novice-inflammation.ja.po index 2282277f..2019c9ce 100644 --- a/po/r-novice-inflammation.ja.po +++ b/po/r-novice-inflammation.ja.po @@ -1,7 +1,7 @@ # Japanese translation of the Software Carpentry Programming with R Lesson -# Copyright (C) 2018 Software Carpentry Foundation; Japanese Translation Team +# Copyright (C) 2019 Software Carpentry Foundation; Japanese Translation Team # This file is distributed under the same license as the PACKAGE package. -# Software-Carpentry Japanese-Team , 2018. +# Software-Carpentry Japanese-Team , 2019, 2020. # msgid "" msgstr "" diff --git a/po/shell-novice.ja.po b/po/shell-novice.ja.po index b0bf2e93..5e0c16e9 100644 --- a/po/shell-novice.ja.po +++ b/po/shell-novice.ja.po @@ -1,7 +1,7 @@ # Japanese translation of the Software Carpentry Unix Shell Lesson -# Copyright (C) 2018 Software Carpentry Foundation; Japanese Translation Team +# Copyright (C) 2019 Software Carpentry Foundation; Japanese Translation Team # This file is distributed under the same license as the PACKAGE package. -# Software-Carpentry Japanese-Team , 2018. +# Software-Carpentry Japanese-Team , 2019, 2020. # msgid "" msgstr "" diff --git a/po/sql-novice-survey.ja.po b/po/sql-novice-survey.ja.po index d610d079..bdd09e78 100644 --- a/po/sql-novice-survey.ja.po +++ b/po/sql-novice-survey.ja.po @@ -1,7 +1,7 @@ # Japanese translation of the Software Carpentry Using Databases and SQL Lesson -# Copyright (C) 2018 Software Carpentry Foundation; Japanese Translation Team +# Copyright (C) 2019 Software Carpentry Foundation; Japanese Translation Team # This file is distributed under the same license as the PACKAGE package. -# Software-Carpentry Japanese-Team , 2018. +# Software-Carpentry Japanese-Team , 2019, 2020. # msgid "" msgstr "" diff --git a/po4gitbook b/po4gitbook index fae13ae3..3d211a23 160000 --- a/po4gitbook +++ b/po4gitbook @@ -1 +1 @@ -Subproject commit fae13ae378a21d5201cb48520225ffb2e791e387 +Subproject commit 3d211a231167b62e1f94cb53ea1853ac11af3836 diff --git a/quickstart.md b/quickstart.md index e5968066..47c88a62 100644 --- a/quickstart.md +++ b/quickstart.md @@ -18,20 +18,85 @@ git clone git@github.com:/i18n.git ``` 4. Add remote so you can pull changes from original repo: ``` -git remote add ja git@github.com:swcarpentry-ja/i18n.git +git remote add upstream git@github.com:swcarpentry-ja/i18n.git ``` 5. Make changes to your local repo - make sure to commit often: ``` git add -u git commit -m "" ``` -6. When you're ready to submit changes, pull all the changes from the `swcarpentry-ja` repo and push to **your** remote: +6. When you're ready to submit changes, first pull all the changes from the `swcarpentry-ja` repo: ``` -git pull ja ja -git pull # This is to pull changes from your remote -git push # This is to push changes to your remote +git pull upstream ja +``` +7. Fix any conflicts that arise when pulling and merging changes from the `swcarpentry-ja` repo. +8. Now push your changes to your remote repo : +``` +git push +``` +9. In GitHub, submit a Pull Request with your changes to the `swcarpentry-ja` repo. +10. When additional changes are requested, repeat steps 5 and 8 in your repo - Pull Request will be updated automatically: +``` +git add -u +git commit -m "" +git pull +git push +``` + +## Tips and recommendations for a better workflow (intermediate Git user) + +These are some tips and recommendations to make your workflow more smooth and easier for you to work on multiple edits. +If you intend to follow these steps, here are the sequence of steps to follow (in order): + +* Steps 1-4 as above +* Step 1 as below +* Step 5 as above +* Step 2 as below, instead of step 6 as above +* Step 7 as above +* Step 3 as below, instead of step 8 as above +* Step 4 as below, instead of step 9 as above +* Step 10 as above + +### Steps + +1. When you are starting a new edit, create a new branch for your edit (separate editing branch will make things easier for Pull Request as well). +Creating a branch will allow you to edit files without messing up changes that are being made on other branches. +``` +git checkout -b -edit + +# Examples: +git checkout -b rikutakei-edit +git checkout -b git-edit2 +git checkout -b readme-edit +``` +2. Use the `--rebase` option when you are pulling from the `swcarpentry-ja` repo. +The `--rebase` option is used to make sure your edit is *in addition* to the changes made in the `swcarpentry-ja` repo, and also allows you to prevent unnecessary merge commits, if possible. +Take a look at this [article](http://kernowsoul.com/blog/2012/06/20/4-ways-to-avoid-merge-commits-in-git/) and this [article](https://codeinthehole.com/tips/pull-requests-and-other-good-practices-for-teams-using-github/) for more explanation. +``` +git pull --rebase upstream ja +``` +3. When you are pushing your editing branch for the first time, make sure to set the upstream of the branch to the same name (note that your editing branch will not be on the remote repo when you made it, so you need to push to your remote **and** create that branch): +``` +# Pushing the editing branch for the first time +git push -u origin + +# Updating for the subsequent changes: +git pull +git push +``` +4. When you are making a Pull Request, use your editing branch for it. +This allows you to edit other files (on a different branch) without adding commits/changes that are not related to your Pull Request. +For example, if you want to work on different files, either create a new branch or move to a different branch: +``` +# List all branches: +git branch + +# Create another branch to edit a different file: +git checkout -b + +# Go to a diferent branch to work on different edits: +git checkout ``` -7. In GitHub, submit a Pull Request to the `swcarpentry-ja` repo ## Guide for Translators diff --git a/quickstart_ja.md b/quickstart_ja.md new file mode 100644 index 00000000..965db9c8 --- /dev/null +++ b/quickstart_ja.md @@ -0,0 +1,125 @@ +# クイックススタート(取説) + +このファイルは、[README](README.md)から必要最低限の情報をまとめたものです。 + +## 始める前に + +* このレポジトリにあるファイルは削除しないようにして下さい +* このプロジェクトに貢献したい場合、このレポジトリをフォーク(コピー)して、プルリクエストにて変更点を提出して下さい +* 問題点・質問などがあれば、イシュー(Issue)を開いて下さい + +## Git の設定、及び貢献の仕方 + +1. Gitの最新バージョンをダウンロード、そしてインストールして下さい +2. 右上にあるフォーク(Fork)ボタンを使って、このレポジトリのコピーを自身のアカウントに作って下さい +3. フォークしたレポジトリを自身のパソコンにダウンロードして下さい(この操作をクローン(clone)と呼びます): +``` +git clone git@github.com:/i18n.git +``` +4. オリジナルのレポジトリをリモート(remote)として追加して下さい: +``` +git remote add upstream git@github.com:swcarpentry-ja/i18n.git +``` +5. 自由にファイルの内容を変更・翻訳して下さい。 +変更点はこまめにコミット(commit)することをお勧めします: +``` +git add -u +git commit -m "" +``` +6. 変更点を提出する準備ができたら、オリジナルのレポジトリから最新のバージョンを「引き入れて」(プル(pull)して)下さい: +``` +git pull upstream ja +``` +7. コンフリクト(conflict;統合不能な変更点のこと)があれば、修正して下さい +8. 変更点を自身のリモートにプッシュ(push)して下さい: +``` +git push +``` +9. 自身のGitHubからプルリクエストを`swcarpentry-ja`へ提出して下さい +10. 新しい変更点を追加する場合は、ステップ5と8を自身のレポジトリで繰り返して下さい - 自動的にプルリクエストの内容が変更されます: +``` +git add -u +git commit -m "" +git pull +git push +``` + +## コツ・オススメのワークフロー(Git 中級者向け) + +Gitを使ったワークフローをより便利にするためのコツを紹介します。 +ここに記載されているコツを使う場合、上記のワークフローを以下のように変更して使って下さい: + +* 上記ステップ1から4 +* 下記ステップ1 +* 上記ステップ5 +* 上記ステップ6の代わりに、下記ステップ2 +* 上記ステップ7 +* 上記ステップ8の代わりに、下記ステップ3 +* 上記ステップ9の代わりに、下記ステップ4 +* 上記ステップ10 + +### ステップ + +1. 新しくファイル内容を変更・翻訳する場合、新しいブランチ(branch;「枝」)を使って下さい。 +新しいブランチを作ることによって、プルリクエストがより楽になり、更に他のブランチにあるファイルの変更点などを気にせずにファイルを編集することができます。 +``` +git checkout -b -edit + +# Examples: +git checkout -b rikutakei-edit +git checkout -b git-edit2 +git checkout -b readme-edit +``` +2. `swcarpentry-ja`のレポジトリからプルする際に、`--rebase`オプションを使って下さい。 +`--rebase`を使うことによって、自身の変更点を`swcarpentry-ja`レポジトリにある変更点の*後に*持ってくることができます。 +これによって、マージ・コミット(merge commit;変更点を統合する時に使われるコミットの事)をできるだけ省くことができます。 +英文ですが、 [こちら](http://kernowsoul.com/blog/2012/06/20/4-ways-to-avoid-merge-commits-in-git/)と[こちら](https://codeinthehole.com/tips/pull-requests-and-other-good-practices-for-teams-using-github/)の記事を参考にして下さい。 +``` +git pull --rebase upstream ja +``` +3. 初めてブランチをリモートにプッシュする際は、ブランチのアップストリーム(upstream;「上流」)を同じ名前に設定することをオススメします(これは、リモートに表示されるブランチ名に反映されるからです)。 +``` +# 初めてリモートにプッシュする際: +git push -u origin + +# それ以降は普通にプッシュ・プルすることが可能です: +git pull +git push +``` +4. プルリクエストを提出する際は、編集していたブランチから変更点を提出して下さい。 +ブランチからプルリクエストを送ることによって、別のブランチで他のファイルを編集してコミットしても、プルリクエストにそのコミットが反映されることがなくなります。 +例えば、別のファイルを編集する場合、新しくブランチを作るか、すでにあるブランチへ移動してからファイルを編集して下さい: +``` +# すでにあるブランチを表示する: +git branch + +# 新しくブランチを作る: +git checkout -b + +# すでにあるブランチに移動する: +git checkout +``` + +## 翻訳者のためのガイド + +### 翻訳ガイドライン + +[翻訳ガイドライン](TranslatorGuidelines.md)を参考に、翻訳内容を統一して下さい。 + +[単語リスト](https://github.com/swcarpentry-ja/i18n/wiki/Glossary-for-technical-terms) +専門用語の翻訳は、統一性を維持するために[単語リスト](https://github.com/swcarpentry-ja/i18n/wiki/Glossary-for-technical-terms)を使ってください。 +記載されていない場合は随時追加して下さい。 + +### 全レッスン共通のファイル + +以下のファイルは全てのレッスンに共通しています: + +``` +CODE_OF_CONDUCT.md +CONTRIBUTING.md +LICENSE.md +README.md +``` + +POファイルの初めにこれらのファイルの内容が記載されていますが、翻訳は無視して、READMEの後にあるレッスン内容を翻訳して下さい。 + diff --git a/r-novice-gapminder b/r-novice-gapminder index 755bbf2f..2312f70a 160000 --- a/r-novice-gapminder +++ b/r-novice-gapminder @@ -1 +1 @@ -Subproject commit 755bbf2fb332237cb372d043d3bd0f4c337da175 +Subproject commit 2312f70a46fd80d0eab8561e4a5078d60c08d1ad diff --git a/rules.md b/rules.md new file mode 100644 index 00000000..5323e7c2 --- /dev/null +++ b/rules.md @@ -0,0 +1,34 @@ +# Rules of conduct + +* Please do not remove the files for other languages (currently Spanish) from the repository. +These need to be retained to merge the lessons with the main i18n repository and existing lessons. + +* Please do not delete the archived files for translation of previous versions of the English lessons. + These will be needed to merge translations with updated English files for future releases of the + main Software Carpentry lessons. This means that we will only need to translate updated sections and + translations to sections that have not been updated will be migrated to new releases. + +* Please only submit changes specific to Japanese language translations to this repository as Pull Requests. + Please submit issues specific to the English lessons to the main lesson repository. If you have a suggestion + for a change to the content or examples, we cannot change these in the Japanese lesson and the main lessons + need to be updated in English. We ask that these changes be raised as an Issue in Japanese rather than a + Pull Request if you prefer not to submit an Issue or Pull Request in English. + +* Please contact us if you wish to join the core translation team. Any contributions to the Japanese lessons + are welcome as Pull Requests but please make sure you understand the English version of the lesson if + you are able to. + +* Please commit and push changes to a fork of the repository on your personal GitHub account and + submit a Pull Request. In this way, suggested changes can be reviewed and discussed. Please raise + any matters that you are unsure of or want help with when submitting a Pull Request. + +* Please track changes to all files needed to generate the translated lessons. This way we can combine + all changes from contributors and track our progress. All contributions will be attributed to each + contributor. + +* Please contact us via an Issue if anything is unclear in the guides to set up or use the + translation tools in this repository so we can update the README and guides. + +* Please commit often and discuss issues on github to ensure that we are not repeating each other. + +* Add your name to the translation team if you wish (unless you want to remain anonymous). diff --git a/updating.md b/updating.md new file mode 100644 index 00000000..830748e4 --- /dev/null +++ b/updating.md @@ -0,0 +1,72 @@ +### Contributing to translation of an updated lesson with a new release of the main English lessons + +If there is an existing (complete) translation of the lesson in your language but + there has a new release of the main English lessons, the new updated version + of the English lessons needs to be merged with the current translated. This way + the sections have not been changed and have already been translated will be migrated + to the new version of the lessons and only the sections that have been changed remain + to be translated. + +1. Create a "Fork" for this repository on your personal GitHub account. (Click "Fork" in the top right + corner of the `https://github.com/swcarpentry-ja/i18n` webpage) + +2. Clone this repository from your personal account (e.g., GitHubUser). This is your local copy to manage your version of + the translation files. + +``` +cd directory +git clone git@github.com:GitHubUser/i18n.git +cd i18n +``` + +If you already have a fork of translation repository, please pull changes for the current + version from the organisation repository: + +``` +git checkout ja +git remote add swc-ja git@github.com:swcarpentry-ja/i18n.git +git pull swc-ja ja +``` + +3. Import the current version of the main English lessons. + +Update the submodule for the lesson that you want to translate + +``` +git submodule add https://github.com/swcarpentry/git-novice.git +``` + +Alternatively, you can update the submodules for every lesson: + +``` +git submodule foreach git pull origin master +``` + +4. Create translation files for the updated version of the lessons + +Run `po4gitbook/update.sh` - That creates/updates the `po` directory with the `.pot` files to use in translations. + +For an update: existing translations will be merged into an updated file. +```bash +cd po +ls git-novice.ja.po +``` + +5. This creates an updated `po` file with updated sections ready to translate. + + + - Edit the file with your favourite po editor ([PoEdit](http://www.poedit.net), + [GTranslator](https://wiki.gnome.org/Apps/Gtranslator), [Lokalize](https://userbase.kde.org/Lokalize), ...) + Note: + - "`Language`" field is needed to add to the header (at least with gtranslator), the rest is put by the tool. + - "`Language-Team:`" needs the first letter in upper case (e.g., `Es`) + - Create `po/LINGUAS` + - Run `po4gitbook/compile.sh` - This creates a `locale//` tree directory + +This generates a translated version of the lessons with your changes. You can add and commit + changes to the PO files and submit changes as a Pull Request on GitHub as described in the + "Guide for Translators". + + Please do not create a git repository within this repository. You can copy these files to another repository + as described in the "Guide for Maintainers and Administrators" and submit changes to translated + lesson repository to update the webpages hosted on GitHub. diff --git a/wrapper.sh b/wrapper.sh new file mode 100644 index 00000000..74f885d7 --- /dev/null +++ b/wrapper.sh @@ -0,0 +1,490 @@ +#! /bin/bash + +### example +# sh wrapper.sh --repo make-novice --create +# sh wrapper.sh --repo make-novice --import +# sh wrapper.sh --repo make-novice --account GitHubUser --import +# sh wrapper.sh --repo r-novice-gapmnder --account swcarpentry-ja --import --webpages + +# create (implemented): subroutine to create new PO files from an English lesson not currently being translated +# import (testing): subroutine to pull a lesson being translated from remote to make changes locally +# webpages (testing): subroutine to render webpages from current PO files and export Japanese lessons to remote repos +# update (to-do later): subroutine to pull updates from remote English lesson and merge based on archived ancestor (only new sections need to be translated) + + +pc_user=`whoami` +echo $pc_user account for pc `hostname` +git_user=`git config user.name` +remote_user=$git_user +git_email=`git config user.email` +remote_account=$git_user +echo $git_user \<${git_email}\> account detected for git +next=false +create=false +import=false +render=false +for op in "$@"; do + if $next; then + next=false; + continue; + fi + case "$op" in + -u|--user) + shift + if [[ $1 != "" ]]; then + # pass different git user name to local account + git_user="${1/%\//}" + # keep username case-sensitive + # git_user=`echo "$git_user" | tr '[:upper:]' '[:lower:]'` + next=true + shift + else + git_user=`git config user.name` + next=true + fi + ;; + -c|--create) + shift + create=true + next=true + ;; + -i|--import) + shift + import=true + next=true + ;; + -a|--account) + shift + if [[ $1 != "" ]]; then + remote_user="${1/%\//}" + next=true + else + echo "specify remote account for: $git_user" + remote_user=$git_user + next=true + fi + ;; + -r|--repo) + shift + if [[ $1 != "" ]]; then + repo="${1/%\//}" + next=true + else + all_repo=true + next=true + fi + ;; + -w|--webpages) + shift + render=true + next=true + ;; + -u|--update) + shift + update=true + next=true + ;; + -*) + echo "Error: Invalid option: $op" + exit 1 + ;; + esac +done + +if [[ $import == true ]]; then + if [[ $create == true ]]; then + echo "Warning: it is not recommended to --create and --import at the same time" + fi + create=$create +fi + +if [[ $import == true ]] || [[ $create == true ]]; then + if [[ -z $repo ]]; then + echo all available repos to import: $all_repos + else + echo repo to create or import: $repo + fi +fi + + +echo create ${repo} : $create +echo import ${repo} : $import +echo render webpages : $render + +#check if remote i18n repo exists +root_dir=`git ls-remote https://github.com/${remote_user}/i18n.git | grep "ja" | wc -l` +echo i18 repo: $root_dir +if [ $root_dir -eq 1 ]; then + echo "remote found: https://github.com/${remote_user}/i18n.git" +elif [ $root_dir -eq 0 ]; then + echo remote not found for user repo: https://github.com/${remote_user}/i18n.git \n please create a fork + exit 1 +else + echo ambiguous repo: + git ls-remote https://github.com/${remote_user}/i18n.git + exit 1 +fi + +#check if remote repo exists +root_dir=`git ls-remote https://github.com/${remote_user}/${repo}.git | grep "ja" | wc -l` +echo i18 repo: $root_dir +if [ $root_dir -eq 1 ]; then + echo "remote found: https://github.com/${remote_user}/${repo}.git" +elif [ $root_dir -eq 0 ]; then + echo remote not found for user repo: https://github.com/${remote_user}/${repo}.git \n please create a fork + exit 1 +else + echo ambiguous repo: + git ls-remote https://github.com/${remote_user}/${repo}.git + exit 1 +fi + + +if [[ $create == true ]]; then + echo "runnning" + if [[ -d i18n ]]; then + cd i18n + fi + #check if current working directory is i18n + wd="${PWD##*/}" + echo $wd + + if [[ $wd != "i18n" ]]; then + echo "create i18n directory" + git clone https://github.com/${git_user}/i18n.git + cd i18n + fi + + #checkout Japanese branch + git checkout ja + git remote add swc-ja git@github.com:swcarpentry-ja/i18n.git + git pull swc-ja ja + + #import submodules + git submodule init + git submodule import + + echo "update local submodules" + #git submodule update --recursive --merge + + #remove _locale directory (only translate English lessons) + for dir in `git submodule | grep "^+" | cut -d" " -f2` + do + if [ -d $dir ] + then + cd $dir + if [ `git remote -v | grep "swc-ja" | wc -l` -ge 1 ] + then + git remote remove swc-ja + fi + #reset all repos to remote + url=https://github.com/swcarpentry-ja/${dir}.git + git remote add swc-ja $url + if [[ `git branch -v | grep "master" | wc -l` -ge 1 ]] + then + git pull master -f + fi + git remote add swc-ja $url + if [[ `git branch -v | grep "gh-pages" | wc -l` -ge 1 ]] + then + git branch -D gh-pages + fi + git checkout -b gh-pages `git rev-list HEAD | tail -n 1` + git pull swc-ja gh-pages -f + git add -u + git commit -m "reset branch" + git checkout HEAD + rm -rf _locale + cd .. + fi + done + + + if [[ ! -z $repo ]]; then + if [[ -d $repo ]]; then + echo submodule $repo found + else + git submodule add https://github.com/swcarpentry/${repo}.git + fi + fi + if [[ -z $repo ]];then + echo "warning $repo not found, specify --repo --create" + exit 1 + fi + + echo "run import on po4gitbook" + po4gitbook/import.sh > /dev/null 2>&1 + echo "upated PO files exported" + if [[ -f po/${repo}.ja.po ]]; then + echo "Warning: file po/${repo}.ja.po already exists: check for conflicts and import" + exit 1 + else + echo "creating PO file for $repo" + cp po/${repo}.pot po/${repo}.ja.po + git add po/${repo}.ja.po + #archive PO file from English lessons for merging updates + if [[ -f po/.ancestors/.${repo}.jp.po.ancestor ]]; then + echo "Warning file po/${repo}.ja.po already archived in po/.ancestors" + else + echo "archiving PO file for $repo" + mkdir -p po/.ancestors + cp po/${repo}.pot po/.ancestors/.${repo}.ja.po.ancestor + git add po/.ancestors/.${repo}.ja.po.ancestor + fi + + #fill in missing information for Japanese + year=`date +%Y` + sed -i '1s/# SOME DESCRIPTIVE TITLE./# Japanese translation of the Software Carpentry ${repo} Lesson/g' po/${repo}.ja.po + sed -i "2s/# Copyright \(C\) YEAR THE PACKAGE\'S COPYRIGHT HOLDER/# Copyright \(C\) ${year} Software Carpentry Foundation; Japanese Translation Team/g" po/${repo}.ja.po + sed -i '3s/# This file is distributed under the same license as the PACKAGE package./# This file is distributed under the same license as the git4pobook package./g' po/${repo}.ja.po + sed -i '4s/# FIRST AUTHOR , YEAR./# ${git_user} <${git_email}>, ${year}./g' po/${repo}.ja.po + sed -i '12s/"Last-Translator: FULL NAME \n"/"Last-Translator: ${git_user} <${git_email}>\n"/g' po/${repo}.ja.po + sed -i '13s/Language-Team: LANGUAGE \n/Language-Team: Japanese \n/g' po/${repo}.ja.po + sed -i '14 i "Language: ja\n"' po/${repo}.ja.po + #remove Japanese from LINGUAS if already exists + sed -i '1s/ ja//g' po/LINGUAS + #add Japanese to LINGUAS + sed -i '1s/$/ ja/g' po/LINGUAS + fi + git add po/${repo}.ja.po + echo "removing extraneous PO files" + rm po/*.pot + echo "run compile on po4gitbook to create new lessson" + po4gitbook/compile.sh > /dev/null 2>&1 + echo lesson $repo created in locale/ja/$repo + + #restore _locale directory (only translate English lessons) + for dir in `git submodule | grep "^+" | cut -d" " -f2` + do + if [ -d $dir ] + then + cd $dir + git reset --hard + cd .. + fi + done + +fi + +if [[ $import == true ]]; then + echo "runnning" + if [[ -d i18n ]]; then + cd i18n + fi + #check if current working directory is i18n + wd="${PWD##*/}" + echo $wd + + if [[ $wd != "i18n" ]]; then + echo "create i18n directory" + git clone https://github.com/${git_user}/i18n.git + cd i18n + fi + + #checkout Japanese branch + git checkout ja + git remote add swc-ja git@github.com:swcarpentry-ja/i18n.git + git pull swc-ja ja + + #import submodules + git submodule init + git submodule import + + echo "update local submodules" + git submodule update --recursive --remote --merge + + #remove _locale directory (only translate English lessons) + for dir in `git submodule | grep "^+" | cut -d" " -f2` + do + if [ -d $dir ] + then + cd $dir + if [ `git remote -v | grep "swc-ja" | wc -l` -ge 1 ] + then + git remote remove swc-ja + fi + #reset all repos to remote + url=https://github.com/swcarpentry-ja/${dir}.git + git remote add swc-ja $url + if [[ `git branch -v | grep "master" | wc -l` -ge 1 ]] + then + git pull master -f + fi + git remote add swc-ja $url + if [[ `git branch -v | grep "gh-pages" | wc -l` -ge 1 ]] + then + git branch -D gh-pages + fi + git checkout -b gh-pages `git rev-list HEAD | tail -n 1` + git pull swc-ja gh-pages -f + git add -u + git commit -m "reset branch" + git checkout HEAD + rm -rf _locale + cd .. + fi + done + + + if [[ ! -z $repo ]]; then + if [[ -d $repo ]]; then + echo "lesson repo found: ${repo} found" + else + echo "lesson repo ${repo} not found, run:\n sh wrapper.sh --repo ${repo} --create" + fi + fi + if [[ -z $repo ]];then + echo "warning $repo not found, specify --repo --import" + exit 1 + fi + + if [[ -f po/${repo}.ja.po ]]; then + echo "Warning: file po/${repo}.ja.po exists: please edit file and submit pull request" + exit 0 + else + echo "Warning: file po/${repo}.ja.po not found, run:\n sh wrapper.sh --repo ${repo} --create" + exit 1 + fi +fi + +if [[ $render == true ]]; then + echo "runnning" + if [[ -d i18n ]]; then + cd i18n + fi + #check if current working directory is i18n + wd="${PWD##*/}" + echo $wd + + if [[ $wd != "i18n" ]]; then + echo "create i18n directory" + git clone https://github.com/${git_user}/i18n.git + cd i18n + fi + + #checkout Japanese branch + git checkout ja + git remote add swc-ja git@github.com:swcarpentry-ja/i18n.git + git pull swc-ja ja + + #import submodules + git submodule init + git submodule import + + echo "import local submodules" + git submodule import --recursive --remote --merge + + if [[ ! -z $repo ]]; then + if [[ -d $repo ]]; then + echo "lesson repo found: ${repo} found" + else + echo "lesson repo ${repo} not found, run:\n sh wrapper.sh --repo ${repo} --create" + fi + fi + if [[ -z $repo ]];then + echo "warning $repo not found, specify --repo --import" + exit 1 + fi + + if [[ -f po/${repo}.ja.po ]]; then + echo "File po/${repo}.ja.po exists: exporting translated lesson" + else + echo "Warning: file po/${repo}.ja.po not found, run:\n sh wrapper.sh --repo ${repo} --create" + exit 1 + fi + + #correct dates in headers + year=`date +%Y` + past_year=$(( $year-1 )) + #replace past year with current year + sed -i '2s/$past_year/$year/g" po/*.po + # append current year if different to previous year + sed -i "4s/, ${past_year}\./, ${past_year}, ${year}./g" po/*po + + #create all Japanese lessons + echo "run compile on po4gitbook" + po4gitbook/compile.sh > /dev/null 2>&1 + + #commite updates to source PO files + git add -u po/*ja.po + git commit -m "update PO files" + git push swc-ja ja + + echo "translated lessons from po/${repo}.ja.po exported to locale/ja/$repo" + + #check if remote translated lesson exists + lesson_dir=`git ls-remote https://github.com/${git_user}/${repo}-ja.git | grep "master" | wc -l` + echo ${repo}-ja repo: $lesson_dir + if [ $lesson_dir -eq 1 ]; then + echo "remote found: https://github.com/${git_user}/${repo}-ja.git" + elif [ $root_dir -eq 0 ]; then + echo remote not found for user repo: https://github.com/${git_user}/${repo}-ja.git please create a new empty repo + exit 1 + else + echo ambiguous repo: + git ls-remote https://github.com/${git_user}/${repo}-ja.git + exit 1 + fi + + #create as submodule + ##git submodule add https://github.com/${git_user}/${repo}-ja.git locale/ja/$repo + ##git submodule absorbgitdirs + + #move to external repo + mkdir -p ../${repo}-ja + rsync -ru locale/ja/${repo}/* ../${repo}-ja + + #add update lessons to remote + cd ../${repo}-ja + git init + remotes=`git remote | grep "swc-ja" | wc -l` + if [[ remotes -le 0 ]]; then + git remote add swc-ja https://github.com/$remote_user/$repo-ja.git + fi + git pull swc-ja master + + # remove files provided by template + rm -rf bin/boilerplate + rm -rf _layouts _includes _episodes_rmd assets bin code + + git add * + git commit -m "update lesson files" + git push swc-ja master + + #update original lesson to import translated content + cd ../i18n # or English lesson + git submodule foreach git pull origin master + + #restore locale lessons (only English lessons translated) + for dir in `git submodule | grep "^+" | cut -d" " -f2` + do + if [ -d $dir ] + then + cd $dir + git reset --hard + cd .. + fi + done + + cd ${repo} + git add -u + + #create lesson in locale if not existing or update + if [ -d ./locale/ja ] + then + cd locale/ja + git pull origin master + cd ../.. + else + mkdir -p locale + url="https://github.com/$remote_user/${repo}-ja.git" + git submodule add $url ./locale/ja + fi + + #push updated locale lessons to English lesson + git add -u + git commit -m "update Japanese lessons" + git push swc-ja gh-pages + + cd .. +fi